systemd
I've had this sitting on my desktop for months and figured I'd post it. No idea where it originally came from.
I've had this sitting on my desktop for months and figured I'd post it. No idea where it originally came from.
After more than 10 years of avoiding it, I've finally rejoined the ranks of the private-car-owning bourgeois. $SPOUSE
and I spent the past few weeks doing research and reading reviews, spent Saturday and Sunday test-driving a bunch of
vehicles, and ended up buying a brand new Cosmic Blue 2020 Honda Insight yesterday
afternoon.
read more
Went to Austin, Texas this weekend for a work event1; it was my first time in Austin so I figured I'd write up some notes:
I'm drinking some coffee at the airport now3. Only another seven or so hours of air travel and I'll be home.
technically, an "engineering leadership retreat" β©
We got some Franklin Barbecue β©
AUS is a nice airport. Reminds me a bit of ONT; super fast security process, ample seating, not too many gates. I'm at the one place with pour over coffee --- one is better than none! There's also decent free WiFi which doesn't block WireGuard traffic... always nice to have... β©
Here's a surprising change for you: Python 3.7.6 (ostensibly, a patch bugfix release) totally changed how URLs are parsed by Python programs.
As of Python 3.7.5, a URL like foo:8888 would be parsed into the following:
>>> urllib.parse.urlparse('foo:8888')
ParseResult(scheme='', netloc='', path='foo:8888', params='', query='', fragment='')
As of Python 3.7.6, foo is now detected as the scheme:
>>> urllib.parse.urlparse('foo:8888')
ParseResult(scheme='foo', netloc='', path='8888', params='', query='', fragment='')
This will cause massive chaos if you are ever parsing URLs with ports in them but without schemes. The relevant Python bug is bpo27657. I consider this to be a major regression, especially since it was introduced in a patch release.
Good luck out there...
Well, here it is, the end of 2019, the end of the decade1. π The end of the decade of my twenties, so probably the most eventful decade I'll experience2. Ten years ago, I was at my parents' house in Fall River, a senior in college on my last Christmas break of all time. I'd just accepted an offer from Yelp to start as a Software Engineer in June, 2010, reporting to Neil Kumar3. The world was uncertain before me. Today, I am sitting in my own house4, married, working for my third employer, sitting pretty in a very different world. What would 2010 me, using his dual-core ~3GHz computer and his iPhone think of 2019 me, using a quad-core ~3GHz computer and his iPhone5? Oh, indeed how times have changed.
Let's go through the highlights of the decade, shall we?
Overall, I think I'd give this decade a solid B. Lots of character development and personal growth, but the work storyline was repetitive and the background political plot was unrealistic.
I think along the way I learned a lot about computers, a lot about American tech startups, and a bit about being a human being. But the big lesson I learned this decade was been the same lesson learned by young adults through the entire history of the world β there are no adults in the room, nobody coming to fix our mistakes and save us from our problems. There are no authority figures except us, ourselves. There are no elders whose experience we can lean on; the rich and powerful, the charismatic, the experienced β they're all just folks muddling through. I've seen a CEO worth six billion dollars have a temper tantrum, and I've seen our friend's two-year-old have a temper tantrum, and let me tell you: they're pretty much the same experience. Our entire planet is currently suffering through a protracted temper tantrum by a seventy-three-year-old millionaire politician and there are no adults in the room. People deserve your respect and trust because they earn it, not because they have a title or age or wealth or power.
What will the next decade bring? Will I keep making the same mistakes in my career? Will my family grow? Will the world continue its inexorable slide into totalitarian dystopia? Goodness knows that I have no idea. I guess we won't know until I write another post on January 31, 2029. See you then.
Currently listening to: Rogue Wave - Christians in Black
Note to the Powers that Be: that's not an invitation to start the robot uprising on January 1, 2020. β©
By the time I started, the CTO (Russ Simmons6) would've quit and Neil would be the VP of Engineering. I did not, in fact, report to Neil. Imagine how different my life would be if I'd worked as some generic "backend engineer"! β©
BART is all messed up for the holiday, so I'm nominally Working from Home today. β©
Yes, I know, the iPhone 11 in my pocket is 48x faster than the iPhone 3G I had in 2010 (at least at Sunspider, which is the only benchmark that runs reliably on both) β©
I went to the DMV today to get a REAL ID upgrade for my license, and to get it reprinted with my correct address so I don't need to carry the paper change-of-address confirmation any more. The DMV is always a fascinating microcosm of human behavior, and a unique experience to simultaneously see the best and worst in people.
For those of you who haven't been in a California DMV, the process follows several stages:
Now serving G-002 at Counter 12. Today, they called approximately eight G's for every H, so I waited for about 90 minutes inside.
These wait times are pretty great for a Bay Area DMV1, but still spending three or more hours doing paperwork isn't anyone's idea of a good time. This was extra fun for me, because I (foolishly in retrospect) decided to renew my license at the same time as I upgraded it to a REAL-ID, and apparently in California if you renew a license more than six months before it expires, you have to re-take the written Driver's Test2; it's not at all a difficult test, but it took an extra 20 minutes.
Anyhow, the whole process really magnifies the impersonality of bureaucracy β at one point, a woman and her disabled
daughter walked past the line to the number-issuing desk to ask if there was a way her daughter could sit down instead
of standing in line outside for hours. The answer, of course, was a resounding No, there is no way, you need to go to
the end of the line.
Eventually, someone volunteered to hold their place in line while she sat down. The best of
people, the worst of people.
Anyhow, I guess now I have five more years before I have to do this again. Yay.
I've heard horror stories of people showing up to the San Francisco DMV exactly at opening time and waiting five or six hours before they even got assigned their number. β©
Incidentally, I cannot find out where this rule is written down. The woman behind the counter told me that this was the rule; the Internet just says that you "may be required to take a knowledge test". β©
Something I miss a lot on macOS is a fast way to enter Unicode characters. macOS does a pretty good job of handling combining keys so that you can type Γ© and ΓΆ, and it's got a fancy emoji picker, but if you want to enter β« or β , you're stuck using the terrible character picker window1:
Well, no longer. If you, like me, use Alfred 4 on your Mac, you can download the following
Alfred Workflow to get a new "unicode" Alfred command. This uses a fast index2 to look up unicode characters by name.
The first time you run it, it builds the index on your system (which might take 10 or 20 seconds; be patient); every
subsequent run will be super-fast. Just hit Return on your desired entry to copy the character to the clipboard; hold β
while pressing Return to copy the metadata3 instead.
Note that this requires an up-to-date Python3 to be somewhere in your $PATH.
download fast-unicode.alfredworkflow
Enjoy!
You can bring this up by enabling "Show keyboard and emoji viewers in menu bar" and then clicking "Show Emoji & Symbols" in the new menu item that appears. This window is strange; it floats on top of most other windows, but not all. I usually end up getting it stuck on another virtual desktop and spending 30 seconds searching for it when I need it. β©
Technically, it uses a sqlite database where I store tokenized emoji names, as well as bigrams and trigrams. sqlite is great. β©
For example, for β, you get U+2318 PLACE OF INTEREST SIGN β©
I haven't owned a car in twelve years. Since I moved to San Francisco, I've exclusively relied on public transit, taxis/Uber, and the occasional rental car to get me where I'm going when I need to go somewhere. In general, this has worked well for me β I can get where I need to go, and most of the time I'm not emitting 300g of CO2 per person-mile the way an individual car does. On the rare occasions that I need to drive somewhere by myself (often to the vet, since rabbits really aren't good at public transit), my go-to choice has been Zipcar, an hourly car-rental startup1. This post is a rant about how terrible Zipcar has gotten over the last 9 years, backed up by the raw data of my actual 141 Zipcar trips2.
Over the last year or so, Zipcar has been aggressively increasing prices. Individual vehicles that were once $8/hour are now $14/hour, and new cars being added are almost exclusively larger, more expensive cars (for example, the location near me now exclusively has a Honda HR-V). The overall data is noisy, but I never took a trip above $15/hour before 2013 (when the Budget acquisition of Zipcar was completed), and I have barely taken any trips under $15/hour in 2019.
As far as I can tell, Zipcar no longer maintains their cars with nearly the frequency or attention to detail that they used to. The Honda HR-V ("Hobart") that I've taken a few times from the location near me has the Check Engine light on, and has had it on for more than 500 odometer miles. I report this to Zipcar every time I drive, to no avail. The car that was there previously (a Subaru Crosstrek named "Liberty") had a malfunction in the cruise control that made it blare an annoying noise and pop up a big red modal dialog saying "adaptive cruise control unavailable" every time you powered on the car for the entire months of June and July.
Every time I get into a Zipcar, the gas tank is nearly empty. This despite the fact that the nearby Zipcars live at a gas station.
Even the paint jobs suffer β once upon a time, if I saw any scuff or scratch on a Zipcar, I would report it at pick-up time and it would be fixed by the next time I took a ride. Now, I find it hard to get motivated to report anything because the cars constantly look beat-up.
Living in San Francisco, every year was an exercise in guessing which location Zipcar would stop providing cars at. I lived in "lower Nob Hill" (the Tendernob), which is the densest part of San Francisco (the six block census tract containing our apartment building has 2,839 residents3), and frequently there were zero Zipcars available in a one-mile radius. Sutter-Stockton garage went from six cars, to four, to two.
Now that I live in Berkeley, the situation is much the same. There's one Zipcar location within a mile (at a nearby Chevron), and it's dropped from three cars to one. I anticipate that the location will close soon and then my closest option will be to hike to the other side of Ashby BART, to an absolutely charming location in the middle of a homeless encampment.
Getaround is the biggest alternative to Zipcar. It's a sketchy "disruptive" startup where individuals rent out their private cars (and are responsible for all the maintenance themselves). It's much less convenient (since the cars are in peoples' driveways in residential neighborhoods, usually in poor repair), and the insurance coverage is... questionable. CityCarShare is gone, absorbed by Getaround. Traditional rental companies (Budget/Avis, Hertz/Dollar/Thrifty, etc) don't offer hourly rentals around here and nobody wants to kill that many trees every time they drive somewhere.
Maybe we'll have to buy a car.
Well, it was a startup. Now it's owned by Budget. β©
Zipcar has an API, but it's behind an annoying signup process, so I just scraped the website. Aside from the 6 (six!) different kinds of authentication cookies you need to provide, it's not too hard, although it's kind of janky; for example, it returns no trips for 2011, despite the fact that I have email receipts for such trips. β©
Today we got a nasty surprise in the form of an email from my next-door neighbor informing me that somebody had attempted to break into our home1! An hour later (while I was on my way home from work), we got another email indicating that the suspect had been arrested.
Apparently, someone was messing around with the lock on the gate to our backyard and my next-door neighbor yelled at them. They hopped the fence, so he called the police and yelled at them some more. They fled. The police came2 , patrolled the neighborhood, and caught the guy breaking into a house a couple of blocks away.
Nothing was stolen or damaged (except some flowers the police stepped on while poking around the backyard to look for clues), but an unsettling event for sure!
for more details about said home, see this article β©
about five minutes later β super-quick response for a prowler who ran away when yelled at β©
Over my recent vacation, I read Neal Stephenson's latest book Fall; or, Dodge in Hell, which is a rough sequel to 2011's REAMDE. I thought I'd write up some brief thoughts I had on it and maybe some questions for a hypothetical future reader. Like all of Stephenson's work from the last couple of decades, this book is a meandering combination of science fiction, philosophy, political commentary, and mythical fantasy. The Kindle edition I read is 880 pages long, and went pretty quickly over four three-hour flights.
In general, I'd give it β β β ββ. It's got lots of interesting ideas, but it's shot through with too much ridiculous libertarian ideology, and it tries to tell too way too many stories in parallel. If you liked Cryptonomicon, you'll probably like this book, but I would be surprised if anyone likes it enough to plod through it twice.
WARNING: This post will contain significant spoliers for both Fall and REAMDE; don't keep reading untless you've either read both or are highly confident you aren't going to read either.
read more