Rearchitecting: Redis to SQLite
The SQLite hype train continues. Love to be Excited About Benchmarks.
My own little curated list of links to creative works, news articles, software tools and other resources I've found on the web. This is a mixture of things I've found useful, or thought-provoking, or fun, or that maybe hold some kind of special meaning to me.
The SQLite hype train continues. Love to be Excited About Benchmarks.
Quite a weird experience to read something that's primarily about EBITDA and yet find it as engaging as this.
Find most rollercoasters terrifying to even look at personally, but this writing makes the author's passion for them contagious.
This article focuses on back end development but the same principle also applies to front end. It's why I recommend avoiding Sass's parent selector in many cases.
It's really common to see Sass written like this.
.Card {
display: flex;
&__heading {
font-family: bold;
}
}
That parent selector saves one engineer one or two seconds of typing work. The trade-off is that it makes Card__heading
impossible to find via code search. So I think the above is better written like this.
.Card {
display: flex;
}
.Card__heading {
font-family: bold;
}
The initial work of typing in the code takes a moment or two longer. In exchange for that, anyone who works on the application in future can copypaste any element class like Card__heading
into a code search tool and immediately find its CSS source code.
Playwright is so fast that it forces you to write UI tests correctly on day one. Selenium isn't.
Interesting!!! I've done a bunch of work with both of these over the years and I gotta admit I've found Playwright less flaky.
I am disabling AWS access to my on-prem servers (at least mostly). This is partly an experiment and partly an expediency, as I will explain. (As a technical side note, I'm mostly concerned with TCP traffic and it is possible to distinguish which is the client and which is the server from the initial handshake. I'm blocking connection attempts to my services from clients in AWS. Clients on my network can still establish connections to services hosted in AWS.)
What a concept. It's got me rethinking abuse problems I've dealt with over the years and whether just blocking us-east-1 might have been a quicker way to fix them. Would've definitely tidied up the UX analytics for one site I've worked on.
Kim Öberg said something that stuck with me during Arbetsvärlden's panel discussion on the Swedish tech industry's anti-union stance at this year's Almedalsveckan.
The first two years in Sweden, your work visa is linked to your employer. That means if you lose your job in those first two years you have two months to find a new job with an employer who'll sponsor your visa, otherwise you have to leave Sweden. It raises the stakes a lot if you're thinking of “irritating” your employer. So that's one factor. I decided I'd worked at Klarna a few years, I'd done a good job, people were happy with my work, so I figured OK, I have enough “points” to get involved with unionising, because my technical work is appreciated enough.
The “points” thing! It's real! I made a similar calculation before the Spotify campaign!
This entire event was wonderfully insightful. Well worth a look if your Swedish skills are up to the challenge.
The amazing feeling when someone puts words to something and you immediately recognise it a dozen times over in your own memories.
Ethicswishing (in tech) is the belief that if you are committed to being ethical and understand technology, then you are well-equipped to build technology for social good. But the truth is that building tech for social good is a lot like having sex in a bathtub: if you don't understand the first thing about sex, it won't help that you're a world-class expert in bathtubs.
Wholeheartedly obsessed with this.
While it's fun to discuss whether an application should be implemented in Ruby or Clojure, to write beautiful and succinct code, to see how far purely functional programming can be taken, these are all secondary to defining the user experience, to designing a comfortable interface, to keeping things simple and understandable, to making sure you're building something that's actually usable by the people you're designing it for. Those are more important decisions.
Facts. Same thing applies when choosing what problems to solve and how to solve them. Ever see a team rush to add a new bit of tech to their process, hoping it'll solve a collaboration problem for them without anyone needing to have any difficult conversations with anyone? Mmhmmm.
Keeping an eye on the backlash against some of the tech world's latest abuses. This is an interesting example.
Google is not a huge source of traffic and visibility. I get most of my visits from RSS readers, other people’s links including fellow bloggers, or websites like Hacker News
Hadn't thought about this at all but it's actually an interesting idea. I'm probably not going to copy this, at least not right now, but it's fascinating how many of the old assumptions are being reevaluated lately.
Especially liked this bit from the intro.
If what we don’t want from the web is increasingly clear, perhaps it’s time to identify what kind of web we do want.
Love anything about reclaiming wasted effort from reacting to the outrages of the business world and focusing it on a positive agenda of our own. Seeing more and more of it now too.
One of those things where I'm chucking this on here as a bookmark so I'll remember it exists and find it easier when I need it. Unlabeled icons and disappearing text continuing their winning streak in the league of inaccessible designs.
Agree with about most of these. Especially the part about formulating a complete understanding of a responsive layout before trying to code it. Would add that coding it is a valid way of building that understanding. Just gotta be a little bit present in the creative process, notice when it's time to cut your losses on that first draft, and try again from scratch.
This line in particular caught my eye.
This is gonna make the Bahamas look like a hostile regulatory environment.
Been thinking about this a bit for a while. When you see these market fundamentalist types critique a given regulation, or a jurisdiction they feel is over-regulated, there's a temptation to read that critique in a generous way. Business talk about creating favourable conditions for entrepreneurs can be really compelling.
But then if you zoom out and look at the wider context, there's basically no jurisdiction deregulated enough to satisfy this worldview.
Elon Musk orders the Swedish Tesla subsidiary not to sign a union deal with its workforce under any circumstances, and you instinctively try to adopt a middle-ground perspective on his stance. "Well", you think, "I suppose Sweden is a bit of an outlier in terms of trade unionism and its impact on society. It's understandable for an American business to be hesitant".
Then you find out he's also a key player in a legal campaign to destroy the precious few labour rights American workers still enjoy, and you realise "Aha, so there's… no satisfactorily large amount of unilateral power for this person?"
If you're not convinced this is a serious problem, I'd suggest reading Marc Andreessen's Techno-Optimist Manifesto for yourself in full. My personal favourite aspect of it is how the section entitled "The Enemy" begins with a disclaimer that "Our enemies are not bad people – but rather bad ideas", and then with each passing sentence becomes more and more clear it's referring to some very specific people the author considers bad. Count how many times he refers to a movement you're a member of as his enemy, then think about how influential his VC firm is in the industry you depend on to make a living.
I think it might be a bit of a strategic booboo to let these wannabe Bond villains actually build their own volcano lairs.
In this post Johan has touched on something very powerful. In allowing reactionaries to frame the debate about inclusive language, we’ve empowered them to portray themselves as the committed realists and us as the sheltered crybabies.
Johan turns this on its head.
if you have no gay friends, if you don’t know any parents with a disabled kid, then who’s really in that cotton-ball cocoon?
I think this reframing is very exciting.
Gay people are being beaten up and murdered every day with nobody reporting on it, while every single instance of someone walking up to a professor and being “triggered” has been quickly snatched up and reported to absolute death by the ever-present modern outrage industry because the story is just too good to pass up. If you’ve fallen for that… well, again, I have to ask: who has the soft and overprotected mind here? Who’s too quick to take offense?
You can see little instances of this kind of idea here and there in all kinds of progressive spaces. For whatever reason this one has caught my attention in a new way.
I’m very interested in all the various ways the reactionary right has succeeded at promoting itself as the assertive, positive freedom-fighter, and all the ways the progressive left has conceded that ground and retreated into passive critique and negativity.
This right here is a piece of the puzzle.
Got a bit of a shock this week when I logged into the admin panel for 666a and noticed it hadn't send a single email alert in over a week. Glad it's become so hands-off that I can go this long without checking in from time to time but it's given me some new ideas about monitoring and alerting for sure.
Love the feeling of stumbling on a new blog and finding out it’s someone with a vast back catalogue of interesting writing. Got that with this one.
It’s a fun post. I think I agree with the main point it makes too. Bit concerned about the material damage being inflicted on peoples lives by this phenomenon though.
Thinking a lot about the old quote “The market can stay irrational longer than you can stay solvent” a lot lately. What do all these people do whose industries are going through a demand slump while the market experiments with not buying human labour? I don’t reckon their landlords will accept “the VC firm whose portfolio AI company is currently half-assing my old job has a post on their blog about UBI” as a rent payment.
Stuff like this is why I still think there’s some magic left in tech.
This is why the simplicity of HTML and CSS now feels like a radical act. To build a website with just these tools is a small protest against platform capitalism: a way to assert sustainability, independence, longevity.
Worth bookmarking just for the bundle open gem
tip. But also full of other little bits of wisdom.
The obvious benefit of a test is to make sure that the code still works after making a change. However, another hidden benefit is that a test can help us get familiar with the codebase quickly. You can execute the code without launching the application in the browser or running the complete program.
This is an underrated upside of having lots of unit tests and it's an onboarding hack I use a lot myself for learning new codebases quickly.
Love anything about UUIDs and ULIDs. The base58 stuff here was a new one on me.
Base58 encoding uses a larger character set and avoids ambiguous characters, such as upper case I and lower case l resulting in shorter identifier strings without compromising readability.
Genius. Love it.
This paragraph really jumped out at me here.
Additionally, students in the Codex group were more eager and excited to continue learning about programming, and felt much less stressed and discouraged during the training.
There’s a lot to think about in the overall issue of the role of LLMs in education. This factor is easy to miss.
The hardest thing with learning to code is persevering through all the constant getting stuck. If you’re young, childless and have lots of time and computer access, it’s always been easier to overcome.
The equation’s changed I guess.
Sometimes you stumble on something that seems to be written to call you out personally somehow. This is one of those things. I have definitely been doing an awful lot of magical thinking when working with database indexes and this post is my intervention.
The AGPL is so goddamn great. The commit log on GitHub is an interesting read too.
Quite a comprehensive historical perspective. I remember this!
My guess, then, is that the push for CSS 3 really began when Firefox took off and designers discovered -moz-border-radius. Suddenly, built-in rounded corners were available! No more fucking around in Photoshop; you only needed to write a single line! Practically overnight, everything everywhere had its corners filed down.
This is another Raspberry Pi cluster writeup that I sometimes read mournfully and wish I had the time & resources to do this myself.
Raspberry Pi clusters are one of my weird little obsessions. Want to start gathering up some of the examples I've seen, so here's the one.
We use tmux. Mainly so we can see a big clock. We have a custom prompt. It tells us how many minutes until our JavaScript framework becomes obsolete.
💀💀💀💀💀💀
Wish I would do more with this. Bookmarking it in case doing so helps me remember to make some time to do so.
The Ink have published an excerpt from an archived interview with Jane McAlevey as a mark of respect for everything's she's achieved. I hadn't read this before.
Heartbroken about this. Been expecting it for a while, but it makes no difference. Jane's work has had a profound influence on me. The world will be a darker place without her.
Very compelling LLM critique based on a comparison with how psychics operate.
Taken together, these flaws make LLMs look less like an information technology and more like a modern mechanisation of the psychic hotline.
Delegating your decision-making, ranking, assessment, strategising, analysis, or any other form of reasoning to a chatbot becomes the functional equivalent to phoning a psychic for advice.
The impact of the technology is undeniable in my opinion but there’s also an alarming golden hammer syndrome associated with it and I think this is a good mental model for that.
Im finding there’s a strong correlation with how prominent the AI contribution to something is and the likelihood of it being crappy. I think it’s at its best when used as a very effective new form of autocomplete, and I personally see a lot of emperor’s new clothes hype about what it achieves when it takes centre stage.
Will definitely be referring back to the diagram in this with the two triangles stacked on top of each other and the rectangle around them. Amazing.
These are great. For most of my career I've used a bunch of personal git aliases like git a
for add and git s
for status. Only took a couple of weeks to unlearn them in favour of these.
There’s more of me in this post than I’d prefer.
The reason I learned vim wasn't because I felt particularly inhibited by my editing speed in graphical environments, it's because it conferred authority.
There’s a truth to this. I do also definitely think there’s a magic in injecting meaning into the boring mechanical aspects of your work but it’s undeniable that these tool choices are also at least partly social.
It’s time I looked into this again. Wonder if they made any progress on the accessibility problems yet.
Nice one Richard, really useful write-up. Helped me do my first restore-from-backup practice run for 666a.
Compelling argument!
There is a small problem here. We are not suppliers. All the people writing and maintaining these projects, we are not suppliers. We do not have a business relationship with all these organisations. We are volunteers, writing code and putting it online under these Licenses. And yes, we put it online for people to use them. But we do not get anything from it.
As a certified trees-disliker I loved to stumble on this. I don't even bother with tags though. Chronological order is plenty. My ~/Documents folder is 5GB and contains zero folders. Sort by date. It's plenty.
Think I'm gonna use this for something.
Surprised by some of this. The location stuff in particular.
The remote work trends definitely have effected where jobs are located. The term "San Francisco" fell off a cliff in 2020. The term "New York" fell off too, but a little less. It looks like "Europe" and "European" have been steadily increasing over time.
Will always bookmark a SQLite in production post. Learned something I didn't love in this one!
SQLite doesn't keep statistics about its indexes, unlike PostgreSQL, so COUNT queries are slow, even when using a WHERE clause on an indexed field: SQLite has to scan for all the matching records.
Bloody hell, SQLite.
Static analysis for CSS.
Enjoyed this a lot. Very fun mix of different media.
Nice sentence here that perfectly captures early days immigrant alienation.
My sensation after spending almost eight months here is that everyone is invited to a party that you are not.
Love anything about incident response. Fun post.
The Collective Action In Tech folks are brilliant and this post is bursting with inspiration and wisdom.
Rest in peace Bram lad. This article stuck with me from early on and had a big impact on my approch to the everyday labour of coding.
There's something magic in injecting meaning into the boring mechanical aspects of your work. Since reading this post I've lost count of how many times I've heard "But the typing isn't the bottleneck" from people who get less than half as much work done as I do.
Love a good conspiracy theory. This one feels mundane enough to be credible.
Very interesting perspective. Some of the pessimism is a little bit undermined by the software quality crisis stuff in my opinion (I simply don't buy that premise at all), but I found this an insightful piece all the same.
This paragraph in particular will stick with me I think.
Historically, whenever management adopts an adversarial attitude towards labour, the only recourse labour has is to unionise. Collective action limits the abuses of management and unionised industries tend to be more stable. This might have been a detriment to the sharply growing tech industry of a decade ago (if you believe anti-union messaging, that is), but today we are facing being outright cut out of the success of the industry. Why should we care if unionising hypothetically dampens the overall growth of the industry? It definitely dampens the downturns and since we are being cut out of the upside anyway, we might as well take measures to increase our job security.
Back in 2012 when I hadn’t discovered Ruby yet I was already basically trying to make the languages I did know work like Ruby.
Enjoyed reading a critique like this from outside the software industry.
When we enter into business with a company whose boss takes delight in the mass layoffs of tech workers because it disempowers those who might speak out against their company keeping a list of non-Anglophone names that some members of the team find hilarious, we have a decent sense of who we’re dealing with.
Can’t help wondering if their much-publicized “cloud exit” cost-cutting exercise might have been related to lost business like this.
Fascinating discussion initiated by an engineer preparing for vision loss resulting from an Usher syndrome diagnosis. This reply has stuck with me:
You'll become the fastest and most proficient proof reader on your team. Typos will be easily spotted as they just won't "sound right". It will be like listening to a familiar song and then hitting an off note in the melody. And this includes code. Also, because code is no longer represented visually as blocks, you'll find you're building an increasingly detailed memory model of your code. Sighted people do this, too, but they tend to visualize in their mind. When you abandon this two dimensional representation, your non-visual mental map suffers no spatial limits. You'll be amazed how good your memory will get without the crutch of sight. Good luck.
In the beginning there was NCSA Mosaic, and Mosaic called itself NCSA_Mosaic/2.0 (Windows 3.1), and Mosaic displayed pictures along with text, and there was much rejoicing.
Adore this post.
Follow-ups on incidents are one of my fav topics and this is a very cool alternative perspective to bring to them.
Ridiculously excited about this. From a quick glance at the Picotron BBS, the community is already in full flow porting coreutils etc to this.
Absolute classic piece of data journalism.
Words like "join" and "tomorrow", and times like "7pm", also came only from the iPhone. The iPhone is clearly responsible for event announcements like this one ("Join me in Houston, Texas tomorrow night at 7pm!")
A lot of "emotionally charged" words, like "badly", "crazy", "weak", and "dumb", were overwhelmingly more common on Android. This supports the original hypothesis that this is the "angrier" or more hyperbolic account.
Haunting alternative history fiction about a nuclear war in the 1980s.
The Controller was trying to avoid the Food Officer as much as possible - yes, he was a bit abrasive, but who wasn't after a week in a shoebox? The more pressing reason was the fact that both men had signed the order denying food stocks to Category 2 and 3 survivors (i.e those who can't work). The Controller had almost been able to keep it together after telling the Food Officer, and the rest of the bunker, that 'babies can't work'. The words had echoed in the silence yesterday and they echoed in his head every single second today.
There's a few things in here I'm installing right away and a few I'm bookmarking this so that I can revisit it later to try them out when I'm less busy. Embarassed I didn't already know about the I still don't care about cookies extension.
Interesting old story about the Oracle source code.
These patches are kind of my fav thing about Lua. Like the fact that this thing exists in this form where it can have these little patches in this way.
Fantastic post. Alerting is such a delicate balance. You start to involuntarily develop Opinions about it once you've been paged in the night a few times due to some bullshit like Googlebot indexing the site and tipping CPU usage just above the alerting threshold. Or for downtime on an unimportant page that could realistically have stayed down until morning without consequence.
I'm always sending people this. Permanently stuck in my head since whenever I first read it.
Gatsby's decline makes me sad because I have so many happy memories of working with it. I hope they figure out a way forward.
A surprising statistic about Hotwire's bundle size, a fun what-if scenario about React, a refreshing sociotechnical perspective on why the frontend JS ecosystem looks the way it does, and some good old fashioned cautious optimism about web components. Lovely post.
Nothing but stone cold facts here.
Design itself is typically conflated with frontend, and design has long been colored as a “feminine” pursuit. The deep technical challenges of frontend functionality are often mistakenly regarded more as a sort of painting with pixels; making things look right, rather than work correctly.
Incidentally, folks involved in UI and design tend to be hit harder in layoffs than their peers, who are perceived as “more technical.” Women, too, are often laid off in greater numbers than men. So it’s hard not to see frontend devaluation and sexism as intertwined. (If they’re even separate things at all, that is.)
I read Clean Code myself sometime in the early 2010s. It kicked off a years-long phase of obsessing over things like DRY and refactoring methods into shorter and shorter pieces.
It took until around 2017 for it to wear off and it harmed my career along the way. I was always very grateful to Dan for writing this post. It explains the problem with Clean Code so clearly, and his reputation gives the words a lot of power.
The phenomemon of Clean Code was a net negative for the software industry and the cleanup work is still ongoing.
I love Ruby, and I love this post. Very happy 666a returned this language and its community to my everyday life.
The O.G. "falsehoods progammers believe" post. It's currently impossible to tag me in a post on LinkedIn, and I suspect it's due to a bug related to one of these.
A useful perspective that had an important influence on me early in my career.
Martin's been doing some excellent writing since stepping down as president of Unionen. Lately he's been focusing on AI and it's warmed my heart to see someone with his level of influence digging so deep into this issue. He's correct to describe the discourse around the topic within Sweden as naive and I'm glad someone like him is going deeper than the listicle clickbait angle.
What the hell? I had no idea this was in there all this time. Very cool.
One of the articles that helped me get 666a up and running using SQLite.
Saw this talk live and it had a profound influence on me. Grateful I was exposed to this message so early in my career.
Thoughtfully written piece by Avdi exploring the trade-offs of various software licensing models.
The controversy around the Chef ICE contract was a watershed moment in tech and Shanley doesn't get the credit she deserves for breaking the story.
An absolute classic.
The controversy around Tailwind in the front-end community is a personal fixation of mine. Personally I have a foot in both camps and I'm not realy rooting for either side to win. It's just a super interesting debate to follow.
I've often daydreamed about how typing would work for me if I lost mobility in one of my arms. This article is a fun exploration of a variant of that scenario where the author had several months of advance warning and was able to prepare.
Love this post from tef. Instant classic.
Love this list. So inspiring.
The infamous Zalgo answer about parsing HTML with regex on Stack Overflow. I'm decently sure this answer was how I first discovered Zalgo.
One of the easiest contrast accessibility checker tools out there. This is a great option if you can't or don't want to install something on your computer. My favourite thing about this one is how pedagogical it is. If you spot a problematic use of colour and then stick the hex values into this thing and take a screenshot of it, that screenshot contains everything you need to make your point to whatever colleagues and stakeholders need convincing.
A post from nearly 10 years ago about abuse and harassment in the tech industry. 2014 was more or less when started learning about things like capitalism and misogyny. This post is a good representative example of the kind of stuff I was reading at the time.
An old favourite and still a valuable learning resource nearly a decade later. Learned some of my first ever flexbox skills here and still find myself sharing this link frequently today.
Fun short science fiction story about a tech company layoff 1:1 meeting conducted by an AI. Xe also wrote a fascinating follow-up post about the story that's worth a read.
An accessibility-oriented reimagining of caniuse.com providing information about which browser semantics are supported by which assistive technologies.
Part of the SQLite in production hype train of summer 2023, this article helped motivate me to give the stack a serious try.
Some interesting ideas in this. This is a lot more config than I do for my own computers and I'm mainly bookmarking this so that I can remember to revisit it someday and see if there's anything I should borrow.
Came across this Next.js functionality while trying to get something else working. I'd never heard of it before but could immediately think of a bunch of different examples where it would've been useful. Bookmarking so that I remember to come back and try it out.
Oron gjorde fysiskt ont, det var som att det gick vågor av smärta genom kroppen som gjorde mig helt tom.
The blog post that inspired me and showed me how to use ULIDs with SQLite in a Rails app. I shipped ULID primary keys in 666a because of this post.
To agree to be randomly awoken in the night to urgently defend your employer's business is to take a level of responsibility more commonly associated with a parent of a newborn baby. It's fair for workers willing to invest this much of themselves in a business to expect their employer to respect them as an equal counterpart in negotiations about working conditions and the like.
A quick incident write-up about a mistake I made that caused 666a to over-alert for a day or so.
I take operating this service really seriously and wanted to get in touch and explain. I’ve been tweaking the diarium update algorithm this week to try to avoid missing documents if they’re filed late and then backdated to earlier in the week. While doing so I made a small coding mistake that turned on email notifications for all documents.
Announcing a linkable web-based version of the unofficial English translations of Swedish laws that the Swedish government sometimes produce.
The data entry work that's gone into creating this resource was gruelling. The reason it was worth the trouble is simple. I saw first-hand during the Spotify campaign how the absence of this kind of resource is a strategic weakness for Sweden's labour movement, with its dreams of organising the country's influential tech immigrant workforce.
Launch announcement for my new work environment email alerts service.
The idea for this tool comes from personal experience with union involvement in the workplace. As a union representative at Spotify, a problem I often encountered in my work was the difficulty of keeping up to date with public filings at the Work Environment Authority, which was information that was crucial to our campaign to secure a collective bargaining agreement.
I was in Soundtrap so this was the end of the Spotify campaign for me. I exercised my right under Section 6b of the Employment Protection Act to oppose the transfer of my employment, but a transfer of business like this one doesn't leave much legal scope after that to avoid redundancy under Swedish employment law.
Faily standard American-style anti-union tactics really.
"Fair play to them on this, they stayed out of it. They left it to us, which I think is the right thing to do," Catalini Smith recalls. "They haven't tried to stop us. You hear about in America, these meetings they have, these consultants they bring in. They play these silly games. And it's not really the way things are done in Sweden. They've become a bit of an American company in some ways over the years, but they've held on to some core Swedish values."
Ingen förstår arbetstagarna bättre än vi själva och vi vill ta plats vid bordet där beslut som påverkar vår arbetsvardag fattas. Vi ser en enorm möjlighet både för oss själva och för arbetsgivaren. Facket gör företag bättre, säger Henry Catalini Smith.
Det är otroligt skrämmande att få erbjudande om att bli utköpt. Men Sen Kanner, klubbordföranden på Klarna tackade nej till sitt erbjudande och därför gör jag det också. Jag vill inte vara sämre.
When they said they’d told the police I absolutely bricked it. I ran home to check if the police had raided the house or something.
True story.