Something I said to a coworker recently. Largely inspired by listening to Cortex, and I felt like giving it a slightly more visual treatment.
Author: Grey
Default Values in Vapor Fluent
My recent tinkering has been with Vapor, and while I mostly like their Fluent ORM, it has some rough edges and semi-undocumented behavior. At some point, I’ll feel confident enough in what I’ve learned through trial and error (combined with reading the source code – open source!) to actually make some contributions to the documentation, but for now, I’m going to throw some of the things I struggled with up here.
If you’re using a migration to add a column, and specifically want it to be non-null, you’ll need a default value. My first approach was to do a three-step migration, adding the column as nullable, then filling the default value on all rows, and then setting the column to be non-null, but that didn’t feel right. Eventually, though, I figured out how to express a DEFAULT
constraint in Fluent:
let defaultValueConstraint = SQLColumnConstraintAlgorithm.default(/* your default value here */)
Then, in your actual schema builder call:
.field("column_name", /* your type */, .sql(defaultValueConstraint), .required)
Note that SQLColumnConstraintAlgorithm
isn’t available from the Fluent module, you’ll need to import SQLKit
first.
And here, a full worked example:
import Vapor
import Fluent
import SQLKit
struct DemoMigration: Migration {
func prepare(on database: Database) -> EventLoopFuture<Void> {
let defaultValueConstraint = SQLColumnConstraintAlgorithm.default(false)
return database.schema(DemoModel.schema)
.field(DemoModel.FieldKeys.hasBeenTouched, .bool, .sql(defaultValueConstraint), .required)
.update()
}
func revert(on database: Database) -> EventLoopFuture<Void> {
database.schema(DemoModel.schema)
.deleteField(DemoModel.FieldKeys.hasBeenTouched)
.update()
}
}
(For context, I’m in the habit of having a static var schema: String { "demo_model" }
and a struct FieldKeys { static var hasBeenTouched: FieldKey { "has_been_touched" } }
within each of my Fluent models – it keeps everything nice and organized, and avoids having stringly-typed issues all over the place.)
“The Last Thing He Wanted”
This book took a while to really capture my attention, in terms of time. In terms of how far into the book it took, I suspect it was about the usual amount of time it takes a book to grab me. The distinction being, usually I read books like I’ve got a grudge, like I’m trying to see how fast I can cram all these words into my brain. Not so, with this one — I’d read a chapter or two, and put it down. Sometimes for a couple minutes, so I could sit and process a bit, and then pick it up and continue; other times, it’d be a day or two before I tried again.
All in all, this isn’t the kind of book I tend to go for. It feels much more Literary than my default — which is largely the writing style, but something about the paper and the typesetting makes it feel like the kind of book I’d read for English class in high school, filling it with notes and highlights and a ridiculous amount of sticky notes.
By the end, it feels… semi-coherent. Which, by then, you’ve grown used to, because at the beginning it’s entirely incoherent. The writing style is “first draft of a book by somebody who got a doctorate on a specific week of history and has no grasp of the concept of expert blind spot.”
At the end, though, I liked the book. Apparently it’s been developed into a Netflix film, the cover tells me; I may watch it, because I can’t imagine the film adaptation at all feeling like the book.
In writing this, I can also tell just how much Didion’s writing style has influenced mine, at least at the moment. Consider this a cheap knock-off of a demo. And then go read the real thing, instead.
Playlist of the Month: February 2021
I’ve had a very eventful month, which combined with this being the shortest month, has made the whole thing feel like a whirlwind.
Cologne – Haux on Something to Remember – EP
Angel – H. Kenneth on Angel – Single
Somewhere (feat. Octavian) – The Blaze on Somewhere (feat. Octavian) – Single
Slowly – ODIE on Slowly – Single
How It Was – Yoste on A Few Brief Moments – EP
Call Him – Noah Cunane on Call Him – Single
The Dark – SYML on The Dark – Single
Come On – Will Young on Echoes
We’ll Be Alright – Yoste on A Few Brief Moments – EP
DON’T TELL THE BOYS – Petey on Checkin’ Up on Buds – EP
Spaces – Jaymes Young on Spaces – Single
FOR THE REST OF MY LIFE – Zack Villere on FOR THE REST OF MY LIFE
Almost Heaven – Isak Danielson on Almost Heaven – Single
Get My Fix – Adam Oh on Get My Fix – Single
Apple Juice – Dan D’Lion & Feder on Apple Juice – Single
Anticipation – Steve Benjamins on Anticipation – Single
New Air – Richard Walters on New Air – Single
Young & Sad – Tom Boy on Young & Sad – Single
Guillotine – Mansionair & NoMBe on Guillotine – Single
Nuke the Moon – Epic Mountain on Nuke the Moon – Single
Falling Fire – Forester on A Range of Light
One Last, Last Time – Armen Paul on One Last, Last Time – Single
Crash Into Me – Petey on Crash Into Me – Single
The Light – Richard Walters on The Light – Single
Cold Mine – Fil Bo Riva on Cold Mine – Single
Parachute (Piano Sessions) – Seafret on Parachute (Piano Sessions) – Single
Killer Queen – Fil Bo Riva on If You’re Right, It’s Alright – EP
Moon River – Au/Ra on Moon River – Single
A Rapture Coming – AJIMAL on As It Grows Dark / Light
miss u tonight (feat. Edwin Raphael) – it’s matt on miss u tonight (feat. Edwin Raphael) – Single
SIMPLE LIFE – Jake Miller on SIMPLE LIFE – Single
Night Drives – Devan on Night Drives – EP
THE END – Alesso & Charlotte Lawrence on THE END – Single
None Too Deep – Atlas in Motion & Sofia Caterina on None Too Deep – Single
dramatic – Cat & Calmell on dramatic – Single
I Took a Pill in Ibiza – Mike Posner on At Night, Alone.
Winter Rain – Winona Oak on Winter Rain – Single
Lo Vas A Olvidar – Billie Eilish & ROSALÍA on Lo Vas A Olvidar – Single
Cold Sets In – World’s First Cinema on Cold Sets In – Single
Drowning – Armen Paul on Drowning – Single
Time to Sink – Edwin Raphael on Time to Sink – Single
Arcade – Duncan Laurence on Arcade – Single1
pink party – Isaac Dunbar on pink party – Single
In the End (feat. Fleurie) [Mellen Gi Remix] – Tommee Profitt on In the End – Single
Stronger (feat. Kesha) – Sam Feldt on Stronger (feat. Kesha) – Single
Throw Me a Line – HAEVN on Throw Me a Line – Single
5AM – Amber Run on 5AM (Deluxe) WEB
Kill V. Maim – Grimes on Art Angels
Blinding Lights – The Weeknd on Blinding Lights – Single
Barrio – Mahmood on Barrio – Single
Face My Fears – Isak Danielson on Face My Fears – Single
Unconfident – Spencer William on Unconfident – Single
You Don’t Feel Like Home – Jack in Water on You Don’t Feel Like Home – Single
I’m Worried About You – Addict., REWiND & Achex on I’m Worried About You – Single2
STAY CLOSE – SYML on STAY CLOSE – Single
Red Run Cold – World’s First Cinema on Red Run Cold – Single3
Inuyasha – Mahmood on Inuyasha – Single
Breakout – Sloane & Josh Jacobson on Breakout – Single
twentyfive – Yoste on twentyfive – Single
Broken – Star Seed & Meggie York on Broken – Single
I Took a Pill in Ibiza (Seeb Remix) – Mike Posner on At Night, Alone.
Technologic – Daft Punk on Human After All4
Derezzed – Daft Punk on Tron: Legacy (Amazon MP3 Exclusive Version)
Alejandro – Lady Gaga on The Fame Monster (Deluxe Edition)
Dandelion – Galantis & JVKE on Dandelion – Single
Daisy – Ashnikko on DEMIDEVIL5
Boy on the Moon – GROUNDSTROEM on Boy on the Moon – EP
ilomilo (Live From the Film – Billie Eilish: The World’s A Little Blurry) – Billie Eilish on ilomilo (Live From the Film – Billie Eilish: The World’s A Little Blurry) – Single6
cheers – blackbear & Wiz Khalifa on cheers – Single
Loves You Like I Couldn’t Do – Duncan Laurence on Small Town Boy7
High Beams (feat. slowthai) – Flume & HWLS on Hi This Is Flume (Mixtape)
- Genuinely shocked to realize this is first appearing in this list; feels like it’s been around for longer than that. I absolutely love this song, for the record. Also, its wikipedia page is great – there’s a whole section of music theory nerdery. ↩
- Angel has been in my lists since July of 2019, and I’m Worried About You feels like a strong contender to take its place. ↩
- This is one of those songs that feels a little different every time I listen to it. The other day I listened to it with headphones in and the volume up high for the first time, and there was a whole other bass line that I hadn’t noticed before. I love stuff like that. ↩
- 28 years. Dang. ↩
- Between Amends and Daisy we’re thoroughly over-quota on upsetting album art. ↩
- I haven’t watched the documentary yet, but it’s on my list. ↩
- In the past few months, Apple got rid of their “search Apple Music” tool and replaced it with “search All The Apple Stores.” Which is, usually, annoying, because the search isn’t paginated and only returns so many results, so occasionally finding a song is very difficult because the song doesn’t make it into the results ahead of a bunch of TV shows or whatever. This time, I had to keep trying different search terms, because I kept getting bodice-rippers from the iBook Store. ↩
“The Counterfeit Viscount”
I don’t think I read the word ‘viscount’ a single time in this book without thinking of Enola Holmes, but that was a fun movie, and this was a fun book, so it all worked out okay.
Like the last book of Hale’s that I read, there’s a great deal of fun worldbuilding going on in a short read. Another alternate history thing, in an entirely different direction, and once again it provides a fun backdrop for a simple enough story.
Admittedly, the mystery itself is a bit convoluted, but it feels like a backdrop for the romance angle, so it can get away with it.
It’s a short read, so I think this short review will suffice. It’s a fun little story, with a silly little romantic plot, and sometimes that’s what you need. If that’s what you’re in the mood for, give it a read.
“Floodtide”
The introduction to this book was familiar enough that I did a quick search and found out I’ve read another book in this universe.1 I may go back and reread that one now, in fact, because I think that “Floodtide” did a better job of introducing the system of magic in a way that makes sense to my brain.
It’s also, largely, a much more human-scale story. The protagonist isn’t changing the world, she’s just trying to get through life, finding a little bit of happiness along the way. Sure, she has friends changing the world, living a grand, romantic life, and she’s determined to help them do that as best she can, but she’s still… a regular person. Sometimes, it’s nice to read things like that — it’s what got me watching Agents of SHIELD back when it first aired, after all.2
It reminds me, a little, of the idea of a space opera. There’s all sorts of large-scale things happening in the backdrop, but the actual core of the story is about the characters and how they’re doing, why they make the choices they do, that sort of thing.
I’m not certain how well I’m selling this book, but I did quite like it. Give it a go.
- That was more than three years ago, now? Somehow, in my head, none of my ongoing projects have actually been ongoing that long, and yet, here I am, several years into writing little book reviews. ↩
- And, y’know, once Agents started being about saving the whole world instead of just, y’know, regular people trying to exist in a world with superheroes, I gave up on it. ↩
This book reminded me of the 2017 remake of The Mummy. Which, I must admit, sounds like an insult, but hear me out: this book is what that movie wanted to be.
The premise is fairly simple: what happened to Dr. Jekyll’s family? (And, further, what happened to any of the background characters in any of the popular novels of the time?)
And from that question, Goss made a marvelously interesting story. She’s establishing a shared universe for a lot of these stories, pulling together the literary zeitgeist of the whole period into a single interlinked whole, in a delightful way.
Beyond that, the actual writing style is very well done. There’s a main protagonist, and the story is mostly told from her viewpoint, but there are interjections from the other characters, and you learn fairly quickly on that, though she’s the protagonist, she’s not actually the one wring — just giving the occasional editorial comment. It reads like the, oh, third draft of a book, where you can still see all the margin notes thrown in by the various people reading through and remarking on their own perspective of the events in the book.
Very early on, this disorganized style is used for what I think is the most interesting piece of foreshadowing I’ve read in quite a while — one of the more impatient characters leads in with “no, no, you should start in medias res, like this” and suddenly we’ve skipped forward several chapters, to a very exciting scene, for something like half a paragraph, before we’re pulled back to where we were with “now hold on, they won’t know what’s going on if we jump right to there!” It is, frankly, delightful.
I very much enjoyed this book — as evidenced by my reading it in a single sitting — and highly recommend it. Give it a go, and, if you need me, I’ll be adding the sequels to my wish list.
“The Voyages of Cinrak the Dapper”
I very nearly gave up on this book halfway through, the point of putting it down and not picking it back up again until a couple months had passed. I’m glad I gave it that second chance, though, because once I was over that hump, I quite enjoyed it.
That midpoint was where the amount of ‘fantasy’ in this fantasy novel jumped up by a lot. Because, yes, it’s a book about a capybara pirate, so of course the whole thing is a fantasy novel.1 But where it nearly lost me was in changing from “here’s a bunch of tropes that I’m using to make some characters I like” to setting up a whole new mythology unlike any I’ve seen before. And if I’d given up, that would’ve been a shame, because this new mythos is downright beautiful. I can’t honestly say that I follow every part of what’s going on, but I also can’t really say that I mind, because, again: beautiful.
I’m trying very hard not to spoil anything, because it all ties together so well. Suffice it to say that if you aren’t invested by the end of the story where Agnes makes her first appearance, you have my permission to give up on the remainder of the book.
Hopefully that won’t happen, though. Give it a try.
- You could also make it science fiction, assuming that there’s been an uplift and possibly some sort of apocalypse in the interim, but that’s pushing so close to the “sufficiently advanced technology” line that it may as well be a fantasy novel at that point. ↩
Playlist of the Month: January 2021
Hey, so, it’s been a wild month. That’s all I’ve got.
Cologne – Haux on Something to Remember – EP1
Angel – H. Kenneth on Angel – Single
Somewhere (feat. Octavian) – The Blaze on Somewhere (feat. Octavian) – Single
Slowly – ODIE on Slowly – Single
How It Was – Yoste on A Few Brief Moments – EP
Call Him – Noah Cunane on Call Him – Single
The Dark – SYML on The Dark – Single
Come On – Will Young on Echoes
epiphany – Taylor Swift on folklore (deluxe version)
We’ll Be Alright – Yoste on A Few Brief Moments – EP
DON’T TELL THE BOYS – Petey on Checkin’ Up on Buds – EP
Spaces – Jaymes Young on Spaces – Single
Remède – Visceral on Remède – Single
FOR THE REST OF MY LIFE – Zack Villere on FOR THE REST OF MY LIFE2
Almost Heaven – Isak Danielson on Almost Heaven – Single
Demasiadas Mujeres – C. Tangana on Demasiadas Mujeres – Single
Get My Fix – Adam Oh on Get My Fix – Single
Apple Juice – Dan D’Lion & Feder on Apple Juice – Single
Save Tonight – Eagle-Eye Cherry on Desireless
Where the Poison Is – FINNEAS on Where the Poison Is – Single
Anticipation – Steve Benjamins on Anticipation – Single
New Air – Richard Walters on New Air – Single
Young & Sad – Tom Boy on Young & Sad – Single
The Middle of July – Imaginary Future on The Middle of July – Single
Guillotine – Mansionair & NoMBe on Guillotine – Single3
With You – Harrison Storm on Be Slow – EP
evermore (feat. Bon Iver) – Taylor Swift on evermore
We All Fall In Love Sometimes – Coldplay on Revamp: The Songs of Elton John & Bernie Taupin
1+1 2+2 – Teflon Sega on 1+1 2+2 – Single
Nuke the Moon – Epic Mountain on Nuke the Moon – Single4
Under the Bleachers – TEME on Under the Bleachers – Single
Roller Coaster – Mako on Fable
Falling Fire – Forester on A Range of Light5
I Know I’ll Find It – APRE on Always In My Head
One Last, Last Time – Armen Paul on One Last, Last Time – Single
A Better Time – Andrey Azizov & Tailor on Before It’s All Over – EP
Crash Into Me – Petey on Crash Into Me – Single
The Light – Richard Walters on The Light – Single
How Could You Disappear? – AJIMAL on As It Grows Dark / Light
Pays imaginaire – Polo & Pan on Caravelle6
Cold Mine – Fil Bo Riva on Cold Mine – Single
Hear It in Your Voice – Quinn Lewis on Everyone but Me
Parachute (Piano Sessions) – Seafret on Parachute (Piano Sessions) – Single
Isometric (feat. TruePilot) – Atlas in Motion on Isometric (feat. TruePilot) – Single
Loverboy – Mattis on Loverboy – Single
Silhouette – Aquilo on Silhouettes
Killer Queen – Fil Bo Riva on If You’re Right, It’s Alright – EP
Lose You Now – Lindsey Stirling & Mako on Lose You Now – Single
Moon River – Au/Ra on Moon River – Single
TORN UP! – Adam Oh on SEVERANCE
For Good, Forever – AJIMAL on As It Grows Dark / Light
Animals – AJIMAL on As It Grows Dark / Light
Stranger – Blanks on Stranger – Single
Above All Else, Be Kind – AJIMAL on As It Grows Dark / Light
END OF THE RIDE – Grey on DARK – EP
Teenage Kicks – Kodaline on One Day at a Time (Deluxe)
A Rapture Coming – AJIMAL on As It Grows Dark / Light7
What I Thought You Knew – Teflon Sega on What I Thought You Knew – Single
miss u tonight (feat. Edwin Raphael) – it’s matt on miss u tonight (feat. Edwin Raphael) – Single
SIMPLE LIFE – Jake Miller on SIMPLE LIFE – Single
Night Drives – Devan on Night Drives – EP9
THE END – Alesso & Charlotte Lawrence on THE END – Single
None Too Deep – Atlas in Motion & Sofia Caterina on None Too Deep – Single
dramatic – Cat & Calmell on dramatic – Single10
I Took a Pill in Ibiza – Mike Posner on At Night, Alone.
- I love Music’s “Show in Playlist” feature, because combined with my monthly playlist system, it means I can see that Cologne has been in my monthly playlist, uninterrupted, since December 2018. Impressive. ↩
- I’m still not a fan of this type of intro, but this one has grown on me a bit. ↩
- “Antoinette/Sweet Marie” is such a great line. ↩
- I found out that the soundtracks to the wonderful Kurzgesagt videos are available for streaming, and boy is that a delight. ↩
- Good for singing along to, if I do say so myself. ↩
- “Debussy, but make it dance!” – my friend who sent this to me. Her taste in music is impeccable. ↩
- You’re gonna want to crank the volume for this one. ↩
- This has the same “might be about her stealing your man, might be wishing she’d steal you” energy as Jolene. ↩
- This song really captures the feeling of driving at night, in the best of ways. ↩
- Caught myself dancing along to this as I was doing this write-up. ↩
“What If?”
A magnitude 15 earthquake would involve the release of almost 1032 joules of energy, which is roughly the gravitational binding energy of the Earth. To put it another way, the Death Star caused a magnitude 15 earthquake on Alderaan.
This is a fun book to recommend, because unlike most books, there’s a demo available online. Go read that, and if you like it, the book contains more. It also has a very literal subtitle: “serious scientific answers to absurd hypothetical questions.”
Munroe has had a fascinating career to date, and I remain an avid fan of his webcomic. It was definitely a formative influence on the nerdier side of my sense of humor,1 and continues to make me laugh an average of slightly more than three times a week.2
This is a fairly good book for reading in small chunks – each ‘chapter’ is only a few pages long, and there’s no need to read them in any specific order.
All in all, it’s a fun read, and I definitely recommend it.
“You Suck at Cooking”
(Unknown Author)1
Seafood is a marketing term that was invented to convince people that ocean creatures are edible, rather than the stuff nightmares are made of.
This is, I think, the best cookbook I’ve ever read. Which, admittedly, doesn’t sound like a ringing endorsement, but I’ve read a frankly alarming number of cookbooks.2 So trust me when I say that this one is well worth the read. And, indeed, is worth actually reading straight through — though, aside from the introductory chapter, you can use it in the more conventional cookbook manner, and flip through the section you’re interested in at any moment.
Because, here’s the thing: not only is it funny — and of course it was going to be funny, it’s by You Suck at Cooking — it’s also smart. Smart, and clever, and… honest. It’s a masterwork of Being A Millennial, is what it is.
It is also, genuinely, an excellent introduction to cooking. I grew up cooking, so the kitchen holds no fear for me.3 In that regard, I’m not the target demographic of this book. The core audience here are the people who didn’t grow up being taught to cook, the people who might want to figure it out but are facing down a pile of unknown unknowns.4
So, if you’re looking for something lighthearted and fun, or if you don’t know anything about cooking and want a good starting point that’ll remind you you can do this, or you’re looking for some interesting new recipes to try — because there are some of those in there, too! — then I highly recommend this book. Check it out.
- I mean, there’s probably enough information about the guy online now that you could figure out who he is, but hey. Don’t be creepy. ↩
- Listen, my family has a cookbook-buying problem, and at a certain point we needed to downsize the collection. But we couldn’t just give them away, we had to read them first, and maybe copy down our favorite recipes… ↩
- Well, unless you own a mandolin, in which case, I fear the mandolin, as should you. ↩
- To take a bit of a tangent, it reminds me of the general reaction to Antoni on the first season of Netflix’s Queer Eye. “Some professional chef, all he taught them was to make guacamole? He’s just there to be eye candy.”
Well, no, Internet Strawman. What, is he gonna take somebody from “only thing in their fridge is a bottle of ketchup” to making a five-course meal in a week? No. He’s going to start with something basic to take away the “oh god I don’t know what I’m doing,” and (I assume) give them some tips on how to continue learning. ↩
“What Einstein Told His Cook”
In my mind, the term for this genre is “popular science.” Or, possibly, “pop science.” (In this case, that’s also a pun on the subject.) Either way, it feels like a fun piece of beach reading – worth the time to read, which differentiates it from an airplane read,1 but not so heavy that you feel like you should be taking notes or pausing to take time to process.
For the most part, this book stands up pretty well, and the cover is minimal enough that the whole thing feels quite modern. Admittedly, it loses some of this with the occasional dated pop culture reference, and the final chapter, discussing the latest technologies, noticeably lags as a result of being, dear lord, almost two decades out of date.2
Still, though, it’s not like chemistry changes all that rapidly, and a lot of the explanations of how things work were quite neat. Give it a read.
- For my own ‘pop science’ injection: despite their pressurized interiors, the amount of oxygen in the cabin of a plane is lower than what your brain is used to, so as the flight goes on, you get a little oxygen-deprived, leaving your thoughts nice and fuzzy. There’s a reason Clive Cussler books are the ideal airplane books – they’re incredibly formulaic, so there’s less cognitive load. ↩
- There’s a very serious discussion of the differences between mechanical and digital cooking thermometers, which is downright comical in the age of RFID-tagged disposable cups. ↩
“Becoming Steve Jobs”
Moving backwards, there were three things about this book that really captured my attention.
Lastly, the discussion of what Steve Jobs was like when he wasn’t being… what everyone thinks of when they think of Steve Jobs. The authors reiterate, many times, that the image of Jobs as alternating between ‘a genius’ and ‘an asshole’ was formed when he was very young, skyrocketing to fame at the helm of Apple. Later in life, he’d softened, become better able to have constructive discussions with people instead of just tearing into them – but, to the detriment of his public image, he’d also gotten very good at keeping out of the public eye when he wasn’t being Steve Jobs On Stage. Nobody was really afforded the chance to publicize that newer version of Steve Jobs.
Secondly, I’d never realized how integral to Pixar he was. At most, I knew he’d been involved in the company, led it for a while at some point; I hadn’t realized that he was the owner, one of the original people who built the company out of an immense talent pool bought wholesale from LucasArts. My mental timeline of Steve Jobs, betraying my tech industry bias, went Apple-NeXT-Apple. Pixar was an immense thing to miss out on, and realizing how much he’d shaped both Pixar and, eventually, Disney has me even more respecting the impact Jobs has had on our society.
And firstly, I found myself, over and over, contemplating the scale of technological change that happened within the lifetime of the company he and Wozniak founded. I think about these comparisons a lot, so here’s some of my favorites:
- A single AirPod has more onboard processing power than any given Apollo launch.
- Every Apple Watch, even the glacially slow Series 0, has had more processing power than a Cray-2.1
- You can fit the entirety of the original version of MS-DOS in the L1 cache of a single core of a modern i9.2
- I’d have to do a lot more math than I feel like doing to confirm this, but it’s not unreasonable to say that the iPad Pro I’m writing this on probably packs more computing power than every Apple II ever sold, combined.
And, even more than all those “ooh, it can do lots of math even faster” comparisons, the thing that kept striking me – reading this, as I was, on an iPad Pro – was just the staggering technological capacity of everything I do with this device. It’s a multitouch touch screen, with a battery of onboard radios, enough storage space for every book ever written; it’s got a lovely keyboard and stylus, both of which attach using only magnets. This device is a miracle of modern technology, and I’ve gotten very used to it. Reading about the Altair 8800, with its toggle switches and LEDs, gave me just enough decontextualization to look at this magical slab of glass and think, wow. Wow.
After reading this book, I think that sort of moment is something Steve Jobs would’ve loved to see.
All in all, I really enjoyed the book, and I highly recommend it. It was nice to see a more balanced look into Jobs’ life, a more human side of the man who so indelibly shaped the modern world. Give it a read.
- Surprisingly difficult to validate this comparison to my own satisfaction – the Cray-2 was in the era of “here’s how many FLOPS this baby can do,” but these days it’s just “what’s the GeekBench score?” and there’s no direct comparison between the two. ↩
- I couldn’t find the actual size-on-disk of the original MS-DOS release, but based on the limitations of the file system, I can reasonably assume it’d fit. ↩
State of the Apps 2020
I suppose I’m making this a tradition, now, writing up what I have on my phone and what’s changed since last year. And why not? It’s fun, and it helps me a bit with the fact that I’ve let my blog post queue get very near empty.
This year saw the release of iOS 14, and with it, the ability to put widgets directly on your home screen, and to banish apps from your home screen to the App Library. Both of which I have pretty thoroughly taken advantage of – though I’ve only got the one page of apps, I almost certainly have more apps installed this year than I did last year.
Widgets
Let’s do a quick look at my ‘widgets’ screen. I believe the official name is ‘Today View,’ but that’s a piece of information that I’m going to estimate seven people outside of Apple know off the top of their head, so we’ll move right along.
The upper half is a dashboard; at top left, we have a Smart Stack, showing Calendar above, and beneath it are a pair of Timery widgets that show me totals I want to keep an eye on throughout the day.
Top right, batteries; I used to think the idea of the bigger battery widget was ridiculous, but if I do everything precisely wrong, I can overwhelm it – think, phone, watch, AirPods with distinct battery levels, and the AirPods case, to boot. Still, I like that at-a-glance view, and I actually like that it doesn’t show percentages, it feels a lot lighter as a result.
Below that, I’ve got another Stack with a pair of Things widgets, showing my Today and Upcoming lists. I originally had a couple of my Areas displaying, as well, but found I wasn’t really using them.
Finally, I’ve got another Stack, this time a pair of the larger-form Timery widgets. The one you’re seeing is my “my projects” collection – including a deliberately-blank bottom-right, so that with a timer running I’ve still got a way to tap into the app without starting or stopping a timer. 1 The other one, which I won’t be showing for “NDA” reasons, is stuff for work.
Home
Now the home screen, which my mental model has in five segments.
The four apps at top left are the “aspirational” section – Books, as I’m trying to train myself to reach for a book rather than searching the web for Content to keep myself entertained; fitbod, as part of my ongoing fitness routine/goals; Shortcuts, because I want to be free to automate tasks with ease; and Files… doesn’t particularly fit the theme, but I use it often enough for it to have earned that spot.2
Top right is the ‘health’ pile. It is, you guessed it, yet another Smart Stack.3 Topmost is FoodNoms, which I still heartily recommend to anyone who wants to start calorie counting.4 Below FoodNoms we have Streaks, which I’m using less than I did last year, but I still find it helpful. Despite the fact that I’ve been taking the same meds every morning for several years now, I still forget at least once a week, and Streaks is what reminds me. Finally, at the bottom, is Activity, which I think you could call one of the canonical widgets of the new style – a glanceable bit of information, always there.
Below these two we have… an unnamed section.5 It is, once again, a Smart Stack. On top we’ve got my main-use Shortcuts – the bottom two for playing music, ‘Things’ gives me a menu of various Things items/projects that I use semi-often, and ‘Auto’ is a lovely piece of work that does what Siri Suggestions was advertised as doing.6
Below Shortcuts is Weather. Apple’s Weather app still feels a little lacking in accuracy compared to Dark Sky, but I’m hoping they’ll rectify that (and get their display of “amount of rain” lining up with my actual expectations for what it means, a la Dark Sky) before they disappear Dark Sky entirely. The widget, though, makes me want to write a chapter for a UI textbook about how well it contextually displays information.
The final item in this stack is Fluidics. It’s not just shameless self-promotion, it’s also dogfooding! (And I really do think the widget is a beautiful piece of design, if I do say so myself.)
The bottom section is Regular Ol’ Apps.
- Overcast is holding steady as my podcast app. I’ve finally gotten below 5 gigs of podcasts downloaded to listen to, so in the next month or so I expect Chase to finish convincing me I need to download the entire back archive of Roderick On The Line.
- Photos has actually grown in how much I’m using it – I decided to go all-in on it this year, and spent some time loading a bunch of the photos from my DSLR archives in, and some more time labeling faces so the ‘people’ album would work. I’ve had mixed results.7
- Mail. What do you want me to say? It’s Mail, and I wanted the most boring of email apps.
- Reeder I’ve updated to version 4, and am continuing to drive the actual RSS sync off of TT-RSS/Fever on my Synology. The one addition is RSS-Bridge, which I’m using to scrape a few Twitter feeds into RSS as well. I’ve also finally moved wholesale into Reeder’s Read Later service, leaving Instapaper behind.8
- Ulysses still fulfills the same use case for me. I’ve found it to be a… reasonable editor for GitLab Wiki articles, and a much better viewer for them than GitLab itself.9
- Day One has continued to expand the list of things I use it for. I think the most interesting is a pair of journals I’ve got – “Inbox” and “Archive.” “Inbox” is in as dark a theme as I can make it, and is the default journal on my phone; any time I’ve got a midnight idea, I jot it down in there, and once a week or so I’ll go through, processing things from “Inbox” into “Archive.” It’s a nice little workflow.
- Slack made its way onto my home screen courtesy of MHCID, and remains there because it’s the main way I communicate with some of the friends I made through the program. It’s a much better UI than Teams.10
- Paprika might belong in the ‘aspirational’ category in place of Files. I’ve got more than a thousand recipes in here, and I’ve made, like, twenty of them. One day…
Finally, we have the dock, which is only a visual distinction given that I’ve only got the one page.
- Music remains a very important thing to me, and I’m in and out of it all day. Every time I use it, I miss when Apple allowed you to customize the tabs – they have five tabs in there, and I literally never use three of them. Let me have playlists as a top-level tab, Apple, please. Stop trying to make Radio happen.
- Messages is the only social network I’ve got, these days. It’s nice to see Apple putting effort into it – I am a heavy user of threads and tapbacks.
- Things is a stalwart as my task management app. Outside of drawing apps, it’s the only iPadOS app that does handwriting recognition correctly – you just start writing, anywhere on screen, and it reads it in.11
- Safari, because what would an iPhone be without the internet communicator? Admittedly, my Safari is a very different Safari than most peoples’, because I’ve got a mountain of content blocker rules via 1Blocker, and on top of that I have JavaScript disabled.12
- You may have noticed that the Timery app icon isn’t present on my home screen – I like this way of getting to it. ↩
- I suppose you could call it part of the Automation subcategory, considering that I’ve got a lot of iCloud Drive -> Hazel stuff going on… ↩
- I absolutely love the stack mechanic; my only complaint is the little bit of animation-delay between when I finish swiping and when I can tap to interact. Yes, Apple, the little ‘settling into place’ animation is lovely… but I’m trying to do things, so get it out of my way and let me do them. ↩
- It’s a beautiful, and very iOS-y piece of work. The food database isn’t as full as MyFitnessPal’s, but that’s honestly a good thing – MFP’s database is full of trash data. FoodNoms starts with the FDA’s database, and has a ‘community-sourced’ database on top of that, where every entry has been manually validated, so it’s solid. If something isn’t in there, tap a button and scan the nutrition label, and the app reads the whole thing in – and then, once you’re done, asks you if you want to submit the resulting data to the community database. It’s an incredibly slick interaction, and I adore it. ↩
- I wasn’t really planning on the naming at all when I started writing this, so it makes sense that I’d run out eventually. ↩
- The tl;dr version is “it checks the time and some other contextual information and automatically picks from a list of other shortcuts to run based on that.” My morning routine is a series of single taps on that button, and it feels downright magical. ↩
- It can identify my grandmother with ease, regardless of if the photo is from this year or a scan of one of her wedding photos; my grandpa, on the other hand, it can’t spot if I give it two of the same photo and manually tag him in one. ↩
- I’ve still got Instapaper connected to Reeder, on the off chance that I have to use the Windows machine my work provided, but I’m something like 99.5% on macOS these days, so that’s exceedingly rare. ↩
- We’ve got a wiki monorepo kind of thing at work, where we’ve got articles on anything that may be useful. GitLab’s wiki can show something like 15 pages at a time in the list, and makes it rather difficult to find that list at all; they really didn’t expect anyone to use it like this. However, you can sync the whole thing, like any other repo, at which point you’ve got a regular ol’ folder full of Markdown files, and Ulysses handles that pretty well. It does have a bad habit of escaping escape characters, and I know I’ve got at least one file somewhere that opens with something like 30 backslashes before a single tilde. Whoops. ↩
- Teams, which we use at work, isn’t on my phone at all. Maintain that work-life balance, folks.
While I’m talking about Teams: the UI, across the board, feels like exactly as many little “oh, nobody thought about how this interaction would go” and “oh, nobody tested this” moments as I expect from any Microsoft product. Unfortunately for my distaste for Microsoft products, it has one notable advantage over Slack – calling support. Slack’s iOS app still doesn’t support video calls, so for actual workplace purposes it’s effectively useless. (And yes, I am hoping someone at Slack will cite this as evidence to give the iOS app the resources it needs to get that feature.) ↩ - This has been a subtweet at Messages, whose support for handwriting recognition consists of “you may write up to two words, and you’ll probably drop the iPad trying to do it.” If iPadOS 15 doesn’t make the entire thread pane a valid handwriting recognition target, I’m going to have to write Tim Cook some very unhappy emails. ↩
- And this is a subtweet at every news site that either entirely fails to render without JavaScript, or doesn’t load images without JavaScript. You are weak, and I scoff at you. ↩
Playlist of the Month: December 2020
[insert obligatory “2020 is over, we survived the apocalypse” joke here]
Cologne – Haux on Something to Remember – EP
Angel – H. Kenneth on Angel – Single
Somewhere (feat. Octavian) – The Blaze on Somewhere (feat. Octavian) – Single
Slowly – ODIE on Slowly – Single
How It Was – Yoste on A Few Brief Moments – EP
Call Him – Noah Cunane on Call Him – Single
The Dark – SYML on The Dark – Single
Dionne (feat. Justin Vernon) – The Japanese House on Chewing Cotton Wool – EP
Upside Down – JVKE on Upside Down – Single
Come On – Will Young on Echoes
epiphany – Taylor Swift on folklore (deluxe version)
We’ll Be Alright – Yoste on A Few Brief Moments – EP
Run Run – Haux & Samuraii on Run Run – Single
So Handsome Hello – Woodkid on S16
Sumarið sem aldrei kom – Jónsi on Shiver
Saturn (feat. Tim Fain) – Sleeping At Last on Saturn – Single (feat. Tim Fain) – Single
DON’T TELL THE BOYS – Petey on Checkin’ Up on Buds – EP
Fever in the Night – Haux & Samuraii on Fever in the Night – Single
Ride wit Me (feat. City Spud) – Nelly on Country Grammar
Spaces – Jaymes Young on Spaces – Single
Microwave Dinner – Petey on Checkin’ Up on Buds – EP
MMXX – IX (feat. Mikky Ekko) – Diplo on MMXX
Remède – Visceral on Remède – Single
Therefore I Am – Billie Eilish on Therefore I Am – Single
FOR THE REST OF MY LIFE – Zack Villere on FOR THE REST OF MY LIFE
Almost Heaven – Isak Danielson on Almost Heaven – Single
Demasiadas Mujeres – C. Tangana on Demasiadas Mujeres – Single
Bien Duro – C. Tangana on Bien Duro – Single
Get My Fix – Adam Oh on Get My Fix – Single
Still for You – Haux & Samuraii on Fever in the Night – EP
Handle – Yoe Mase & Echos on An Unfiltered Stream of Consciousness
Typical – Kidhimself & Canova on Typical – Single
What I Won’t Do – Kilder & Jamal Bucanon on What I Won’t Do – Single
Friends (Under the Influence) – Majik on Paralysed / Friends (Under the Influence) – Single
The Weekend – Armen Paul & TYLERxCORDY on The Weekend – Single
Apple Juice – Dan D’Lion & Feder on Apple Juice – Single
I’m Sorry – Mokita & Stand Atlantic on I’m Sorry – Single
O Holy Night (Live) – Tracy Chapman on A Very Special Christmas Live From Washington D.C.
Missing the Mark – Aquilo on Missing the Mark – Single
Dakiti – Bad Bunny & Jhay Cortez on Dakiti – Single
Viva La Primadonna [Marina and the Diamonds vs. Coldplay] – phenste on Viva La Primadonna1
Save Tonight – Eagle-Eye Cherry on Desireless
Off to the Races – Lana Del Rey on Born to Die
Red Carpet – Jon Bryant on Red Carpet – Single
Where the Poison Is – FINNEAS on Where the Poison Is – Single
High School Reunion, Prom (feat. Lil Uzi Vert) – SAINt JHN on While The World Was Burning
Another Year – FINNEAS on Another Year – Single
You Might Need Somebody – Dan D’Lion on You Might Need Somebody – Single
When You Believe – Isak Danielson on When You Believe – Single2
Changing My Ways – Kilder & STELLA on Don’t Hide
Bella Storia – Fedez on Bella Storia – Single
Walked Through Hell – Anson Seabra on Walked Through Hell – Single
Anticipation – Steve Benjamins on Anticipation – Single
New Air – Richard Walters on New Air – Single3
Young & Sad – Tom Boy on Young & Sad – Single
Carol of the Bells – Lindsey Stirling on Warmer in the Winter4
PLUTO (feat. Brendan Pastor) – Adam Oh on PLUTO (feat. Brendan Pastor) – Single
Silent Night – The Lumineers on Silent Night – Single
The Middle of July – Imaginary Future on The Middle of July – Single
Hide – Armen Paul on Hide – Single
Fade into You – Portair on Fade into You – Single
Guillotine – Mansionair & NoMBe on Guillotine – Single
With You – Harrison Storm on Be Slow – EP
Flags – Coldplay on Flags – Single5
evermore (feat. Bon Iver) – Taylor Swift on evermore
Coyote (Midnight Mix) – Mako on Fable
Last Night of an Empire – Imogen Heap on Last Night of an Empire – Single6
Goosebumps (feat. Kenny Beats) – Bastille on Goosebumps – EP
We All Fall In Love Sometimes – Coldplay on Revamp: The Songs of Elton John & Bernie Taupin
Cycles – Peter Thomas on Cycles – Single
1+1 2+2 – Teflon Sega on 1+1 2+2 – Single
Oh What a Mess I’m In – Hayden Calnin on Oh What a Mess I’m In – Single
- Having had to go find the link for this, I suppose I could update the artist name to match the one on their YouTube channel, but I kinda like the nostalgia factor of having a dead tumblr username in there. ↩
- This might make it in to my Holiday Playlist Rotation, because I’m a little tired of all the Boomer Childhood Music. ↩
- I love the chorus here. “Oh hell, you made the right decision.” ↩
- I think the first time I actually saw the album art here was just now, putting together this list, and wow is that an outfit. ↩
- It’s been a few years since Coldplay released something and I didn’t go “I thought they broke up?” when I saw it. ↩
- It’s entirely on-brand for Imogen Heap that my speakers had a fun glitch when I first hit play and kept playing a bit of the song on one side, then a bit of the song on the other side, and it took me a while to realize it was a glitch and not just Imogen Heap. ↩