news
Free, Libre, and Open Source Software and Standards
-
Rui Carmo ☛ Friction - Tao of Mac
Friction is a cross-platform motion graphics application for building vector and raster animations for the web and for video. It sits somewhere between a compositing tool and an animation editor, with a timeline-based workflow, SVG/SMIL output for the web, shader/raster effects, expressions, and enough structure to tackle more than one scene at a time.
It is open source, built around Qt and Skia, and published under the GPL-3.0-only license. The upstream project currently distributes builds for Linux, macOS, and Windows, with documentation and source build instructions hosted on the project site.
-
Sacha Chua ☛ Emacs PDF View: Replace current page with file using PDFtk
I needed to replace a page in a PDF with another PDF. This was a bit of an annoying process on my iPad involving copying and pasting pages in Noteful and then re-exporting them as a PDF, but it was easy to do in Emacs thanks to pdf-tools and PDFtk.
-
Rachel Kaufman ☛ 30 Days of Coreutils: Wrapup
I meant to post this a few days ago, but the beginning of June found me at iJS San Diego talking about React animations. The talk went well! I appreciate all the people who came out to hear me - I’ll have a more formal conference writeup eventually.
-
University of Toronto ☛ 'Vim' has many faces
One of the problems I have when talking about 'vim' is that in practice, there are several versions of 'vim'. I don't mean 'version' in the sense of release numbers (although Vim has lots of releases and things change in them over time), but more in how people approach and use Vim. Even more than GNU Emacs, I feel that Vim has turned into an editor that has multiple faces, so the 'vim' that you use may not be the 'vim' that I use.
(Which version or face of Vim you see depends in part on what your system decided to set as Vim defaults, unless you're advanced enough in Vim things to have a personal configuration that overrides them all.)
-
Web Browsers/Web Servers/Feed Readers
-
Dan Q ☛ So Unbelievable it Sounds Like you Googled It
Apparently the kids these days don’t “Google it”. At least, not in their colloquialisms: they’re still probably using the search engine.
They say that they’ll “search it up”.
And this presents us with an opportunity: [...]
-
-
SaaS/Back End/Databases
-
Remy Wang ☛ Passing DBs Through Continuations
Suppose you want to write a database. You'd probably start by implementing relational algebra operators — projection, filter, join, etc. The easy way is to implement them as functions that take in tables and return tables, and assemble them into a larger expression. That was how Prela worked in its first incarnation. The code was clean, but it was hella slow! Which was not surprising, because every operator materialized every intermediate result. The standard solution to this is the iterator model, where each operator implements an Iterator interface that streams intermediate tables row by row instead of materializing them. But implementing the iterator model naively still incurs overhead: every call to Iterator.next() triggers a dynamic dispatch, which costs vtable lookups and destroys cache locality. There are two standard remedies: vectorization and compilation. A vectorized database amortizes the overhead by implementing Iterator.next_batch() which returns a whole batch of data that can be processed together; a compiled database, well, compiles the incoming query directly to fast machine code that runs without any dynamic dispatch. Either approach takes a lot of very smart people spending their entire working life to build, and it's why systems like DuckDB and Umbra exist. I'm moderately smart but don't have a lot of time, so I was looking for a shortcut. The shortcut I stumbled upon was so beautiful that I literally cried1 when I finally understood it, and I hope my explanation below will make you cry too :' )
-
-
Content Management Systems (CMS) / Static Site Generators (SSG)
-
Redowan Delowar ☛ Putting this blog on ATProto with standard.site
standard.site is a set of shared ATProto lexicons . The two that matter here are site.standard.publication and site.standard.document. The publication record describes the blog: name, URL, icon. Each post becomes a document record that lives in my own data repository on a PDS and points back at the publication. To prove the records are actually mine, there’s a /.well-known/site.standard.publication file on my domain and a link-rel tag in every post’s HTML pointing at the matching record. The two ends point at each other, with no central registry in between.
-
Jack Baty ☛ Yep, I'm back to using Ghost
I'm not even going to apologize. I was experiencing SSG fatigue and thought I'd see what it would take to migrate all of Eleventy's Markdown posts to Ghost. Claude made it surprisingly easy. So easy that I just went for it. So here we are.
-
-
Standards/Consortia
-
Digital Camera World ☛ You may have heard of screen calibration, but did you know you should calibrate your photo printer too?
Screen calibration may not be one of most interesting topics within photography, but it's an absolutely vital one if you're looking for accurate colors. Calibration ensures that your audience sees your photographs exactly the way that you edited and color graded them.
-
[Old] Internet Archive ☛ Groklaw - Peter Quinn's First Interview
I'm sure you'd like to hear from Peter Quinn, formerly CIO of the Commonwealth of Massachusetts, wouldn't you? Would you like to ask him why he quit, and who inspired The Boston Globe to investigate Quinn (which in turn instigated a Commonwealth investigation clearing Quinn completely), and what will happen to ODF? I felt the same way, and so I asked him. Here are his answers, the most important being: [...]
-