← Back to home

Log

As far as I know, Log Rocket is a company that sells SaaS as a way to fund their real passion: blogging.

11/09/2022 01:42PM

You gotta respect how Apple introduced a set of devices with known, exact, constant resolutions and screen sizes, and developers were like, “oh wow, this is very pleasant to code for non-responsive screens.” And then Apple slowly introduced more resolutions, screen sizes, modes, corners, bezels, notches, and holes in the screen so now you’ve got a whole new set of problems.

10/29/2022 10:54AM

Going back to a Swift project. Now there’s a programming language. The UI patterns are really good as well. It’s a steeper learning curve than, say React, but it’s harder to do something bad. It forces you to properly model your app.

10/23/2022 08:13PM

Every project that creates a new JS runtime, parser, or bundler gets us closer to the ultimate goal of not having to configure or care about that stuff, and having it “just work.” In the meantime, however, it feels like there’s a lot of lateral movement going on. Nothing really new or ground breaking, but just different.

09/19/2022 01:12PM

The “too many configs in the root directory of my Git repo” is the most not-a-problem problem that a not-a-problem problem has ever been. But having dozens of tools that require those configs is a yes-it’s-a-problem-problem. For example, there are too many config files whose deletion that will vaporize some non-zero part of your SaaS/cloud server traffic.

09/15/2022 05:53PM

A strangely expensive part of running cloud computing systems is the tools to know what’s going on in there. Imagine if you had to build a dishwasher that was clear plexiglass and visible from all sides. You’d be able to see it happening, but the actual dish washing would be just the same.

09/03/2022 11:53AM

With almost a decade of gRPC being open source, it’s incredible that about 95% of errors in software can be expressed with ~20 error types. You could probably even capture around 80% of errors with just not-found, invalid-argument, and permission-denied. Very funny that a lot of unexpected conditions can be handled with “we can’t find that”, “we don’t know what you mean”, and “you can’t do that.”

08/30/2022 06:01PM

While I’m writing about FaaS: there are many cloud/service providers that have figured out it’s not wild to run your own data centers, or rent them around the world, and offer simple cloud services (eg Fly, Render, Heroku, Netlify, Keyeb) along with the Edge/Function focused ones like Vercel, Cloudflare, Deno… The list is long. They’re all offering something like stateless functions and a cache or KV store next to them to allow for state. Under the hood these companies are doing at least one of four things:

  1. Docker VMs with customization so the hypervisor knows when they’re active and will suspend them and restart them, or suspend them and reset them for each “call” or request.
  2. Some sort of other OCI hypervisor like Firecracker or gVisor to do something similar, possibly through Docker as well. Although there’s a fair amount of customization you need to do here to make this efficient and Docker can only do so much.
  3. Only supporting JS, so they can run their own JS VMs that share resources more efficiently, and they can use common JS sandboxing techniques. For example, you can use V8 isolates to do something like “multi-tenant” in the same Node process.
  4. Only supporting languages that compile to WebAssembly, so they can do something similar to the above methods: either loading the VMs into JS, and using that as the hypervisor, or writing their own WASM runner and managing that like a hypervisor would VMs. If your users are writing code specifically for YOUR runtime this is so efficient and easy to do: you can load their VM and run your own init function to get it to the state you want, snapshot the VM (it’s so small) and load/unload it on demand.

In all these cases, if the company is offering a KV store, they’re doing it at a very low-level. They’re essentially offering memory that’s shared between functions or VMs.

All of this is to say two things:

  1. How long before we have a model of shared-memory for functions and we’re back to thread local storage?
  2. How long before each individual end user (ie person browsing the web) gets their own VM for whatever service or product they’re using?
08/26/2022 11:19AM

I remember learning about penny auctions in middle school and being like, wow that’s a weird business model. And now whenever I learn of a new functions-as-a-service company, I’m like, ah yes, the penny auctions of SaaS companies. Everyone pays too much for the idea of something (in this case simplicity) and someone goes home with a bargain (in this case, properly using a very specific part of the FaaS platform.) Eg, if you gotta do HTTP redirects based on a single cookie, Cloudflare Workers are absurdly cheap.

08/26/2022 11:00AM

All SaaS/PaaS/FaaS platforms should offer plain prometheus metrics for everything they do. It’s really not a terrific amount of work - I know you’re counting that stuff anyways! Just give me some numbers here without having to setup some sort of convoluted log-based system.

08/24/2022 07:48AM

I love Typescript. But you do end up with a situation where you get the best of Java, and the worst of Javascript. JS is a fine language, but it lets you do a lot of strange things. If you don’t bring your own opinions with it, you end up getting a bunch of poorly formed ones.

08/12/2022 10:28AM

Interesting that Slack seems to have an infinite number of ways to perform actions that result in notifications (messages, channels, keywords, files, upload, mentions, bots, and so on) but no way to perform actions that filter these down to a coherent set of notifications. Sure, you can go through preferences to get some solid defaults, but there’s no way to debounce, throttle, condense, group, silence, filter, delay or otherwise mutate notifications. Seems like a really solid, but missing differentiating feature.

07/19/2022 07:03AM

I like Swift’s extension pattern mostly because it feels like a more flexible way to do Rust traits. But also because with SwiftUI you can easily share really snippets to do things like round specific corners, clip on a weird shape, or make them wiggle, for example.

07/16/2022 04:43PM

I’m learning Swift for fun. It’s like a strange amalgamation of Java, Typescript, Rust, Objective-C where a lot of the performance gotchas (memory management, copy-in, value/ref) are solved by the compiler? Cool.

Still not 100% on-board, but it sure is fun to learn a new language.

06/20/2022 01:27PM

Here’s a version with less cruft – cleaner nav, better project naming, waveform play-head, more realistic editing controls, titled pads, and better modifier keys.

Sampler design/prototype, cleaner!

The idea with the modifier keys is to let the musician hold one or more of them with their right hand in order to toggle the action on any of the buttons, pads, or other active areas of the screen in the same way that they might with a desktop app.

06/14/2022 11:27PM

Working on a little iPad sampler app. Just plain fun to build music stuff for touchscreens. You don’t really need to think about screen sizes if you don’t want to, and you get to break all sorts of UI conventions.

Sampler design/prototype!

This is part prototype, part UI kit. Getting a grid system that works with the iPad’s aspect ratio is tricky, but it’s pretty satisfying once you get it working!

06/12/2022 12:12PM

Stunning how far ahead the native music production apps are when compared to, say, IDEs or spreadsheets or database explorers, or even more consumer-focused non-music apps.

The difference is even more pronounced for iOS/macOS/iPadOS. You get some really cool patterns and flows that are partly the result of sound design being a partially visual and intuitive process.

But the contrast is mostly, I think, the result of the fact that the people buying and using these apps have the tightest feedback loop to the people making them, a willingness to try any new product based on word of mouth, three decades of software, and a century of physical techniques to replicate and toy with on a screen.

What’s 2054 or 2124 going to bring the rest of software?

06/07/2023 11:31AM

Criticism of JSON Web Tokens seems to be grouped into two buckets: you can’t revoke tokens, and people get the algorithm wrong. Which seem to be two criticisms that aren’t really about JWTs at all. If you need to invalidate a session before it expires, then you need state and you’ve chosen a stateless standard. If you get the algorithm wrong by choosing a bad algorithm or no algorithm at all, that’s on you man. Like, “oh no, my hammer doesn’t work with phillips-head screws, and is also a hammer.”

06/05/2023 10:26AM

Reading through the sqlite c-api for wasm/js. I once heard someone say that you could build JS applications using the sqlite style of concatenating a couple of C files and sending it through the compiler. It’s interesting to see the team take the exactly that approach with JS.

06/01/2023 02:59PM

State of the art on email normalization seems to be lowercase, remove [-+=] from name. State of the art on email validation seems to be “well, send it an email and see what happens.”

05/16/2023 11:20AM

Everyone on the orange site is booing and snickering when someone builds a new Javascript framework to compete with React or Next. Not me. I’m hooting. I’m cheering. I’m jazzed about every new attempt. There’s room in JS for a new and better framework, and some day one of these kids is gonna get it right.

05/16/2023 11:10AM

It’s my sincere belief that we could have a more open web if we: A) more prominently displayed the protocol in Chrome and all major browsers, B) introduced a new protocol, and DNS system based on phone numbers, C) made the new protocol both message-based and stateful, and E) made all content addressable (à la IPFS).

04/30/2023 08:07AM

Working on using gVisor for a project, and it seems really solid. As far as I can tell, cold-start times are really low compared to containerd via docker. Here’s a simple nodejs cold-start test:

native:        0m0.275s
containerd:    0m1.856s (+1581ms overhead)
runc:          0m1.720s (+1445ms overhead)
runsc:         0m0.320s (+45ms overhead)

Cool stuff!

04/28/2023 09:01AM

It seems like the inevitable extension of the idea of serverless code is that we will push Javascript into new, weird, and sometimes interesting places, like Postgres: https://plv8.github.io.

04/21/2023 09:44AM

If you google “best X product” for anything SaaS related you will 100% find that the third hit is some middle-tier company with a review titled “10 best X tools” and #1 on the list is like “us, it’s us, we’re the best.”

Like if my cat wrote an article about top ten cats that should be fed right now. “Me, it’s me!”

04/20/2023 01:51PM

I’d love it if Postgres 16 exposed the internals of smgr.c as an API that’s as supported as the existing extension API. AFAIK most work in the serverless space or even in plain old hosted postgres is being done by patching postgres to allow for some degree of control over page storage, caching, and WAL-logging.

For example, with a stable public storage API, you could perform custom transforms for WAL records, and pages, to achieve physical replication that still respects TX intention, which in turn could allow you to do scale out multiple write replicas.

Or you could do weird stuff like building out serverless postgres by running nodes that act as reverse proxies in front of some massive storage service.

04/17/2023 12:53PM

Anyone using an SQL database should read the Postgres transaction manager README. Bunch of good stuff, not just about how transactions work, but about how resources are used, how the WAL and XLog record formats work.

04/14/2023 09:45PM

Replit seems to have stumbled onto something and they don’t know it yet – I don’t care about their IDE, I just want always-on, single-instance hosting with a package/config manager that lets me run my dumb little apps at a domain really quickly. I want to sign up, give you my credit card, and have a dot config file that points to your service, and live-compiles every change I make in my local IDE by syncing the file changes. Like Vercel for any language, and it’s an actual single instance.

03/27/2023 10:07PM

Using AI chat tools to edit seems fine. Using them to write seems bad. Reading is a multifaceted thing, and a lot of value is in knowing someone thought through what they wrote. At a basic level, what makes you think that your time is so valuable you can’t use it to think, but my time is so cheap that I want to read what you didn’t think through yourself?

03/10/2023 11:25AM

Several libraries, like strum mention that use_phf is faster than match. Which seems weird to me. Surely match is optimized for the rust compiler… right?

02/20/2023 03:59PM

Excel should offer semantic color schemes.

02/19/2023 12:19PM

Writing a lot of Rust. The way that you’re encouraged to use lifetimes, generics, and traits means that you end up spreading most of your logic across a lot of impl blocks. Not sure whether that’s good or bad yet. Sometimes it feels solid. Other times it feels like I’m writing a novel by describing the shape of letters to a typist. It’s a good novel though.

02/17/2023 06:03PM

I can’t think of a better example of good website design than Target.com. It is simple, it loads quickly, when you click ‘back’ it actually goes back, and doesn’t do a bunch of re-loading or re-rendering of the page. The search selection and arrow keys also work. The bar is low here, but still, just plain easy to use.

02/10/2023 08:20AM

Using postgres for an experimental analytics app prototype, and I’m having trouble writing data fast enough. (Comparing against SQLite which, with simple data, peaks around 3_030_000 inserts/second.) Don’t have time to explore at the moment, but using COPY FROM with a csv file might be an option. What would happen if I just start streaming data into the csv as I use a COPY FROM query? Does pg wait and sort of keep the query running while it waits for EOF? Would it be faster to use prepared statements and just write directly? Or wait until the file is done, then do a COPY FROM? As long as the total load time is faster than doing single or batched inserts, it’d be worth it.

Or maybe there’s a way to write arrow files and tell PG to use them as tables using a FDW? Something to explore more.

02/09/2023 04:37PM

One of the main advantages of Tauri is its use as a thin-client build system for existing web apps, rather than desktop apps. If you’ve already got a React app or whatever, just roll it up into a desktop app that uses WebKit on macOS, or Edge on Windows. It’s basically Electron without the Chromium overhead.

02/01/2023 02:50PM

The strongest filter for email spam would be something like charging $0.01 per email. It wouldn’t be terrifically different from how domain squatting is limited by domain prices. You could send hundreds of emails a week before you even notice the cost, and it would reduce spam to a point where you can be reasonably sure that the person emailing you is real, or at least important. Junk mail still exists, but if I’m honest, it’s only about a third of the mail I receive.

I’ve read this proposal several times, most often as a real use-case for crypto, but I don’t even think it has to be implemented with crypto. Just some sort of rate limiting on emails sent that introduces real cost on something that, at the moment has an effective cost of zero.

02/01/2023 09:06AM

lol the Rust serde doc calls YAML a “self-proclaimed human-friendly configuration language that ain’t markup language.”

01/30/2023 08:48AM

Another day, another chance to re-learn the lesson that Make treats variables and prerequisite expansion as different phases. It expands variables in order, targets and prerequisites immediately, but rules are “deferred.” So if you thought you could get clever and use a variable as a target name and as a named prerequisite, boy were you wrong…

01/28/2023 07:02PM

Postgresql is the database from the future. There are very few things you can model with it, and there are a huge number of extensions, tools, options and features. Just unfathomably cool.

01/25/2023 10:48PM

Didn’t know until today that there was a term for pointer swizzling.

01/18/2023 12:20PM

Found this post on how SQLite uses automatic indexes. The tl;dr is that sqlite does loop-joins that are by default O(N * N), optimizing the loop order depending on the type of join, but will use an automatic (ie transient) index with a b-tree that behaves like a hash table, effectively achieving O(N log N). So instead of doing a full loop on one table followed by a full loop on another, it just scans the second table to build an index, then does the loop on that.

01/13/2023 03:31PM

I love graphviz.

01/12/2023 10:07AM

If Microsoft wanted to move humanity forward by like 10 years, they would release a command-line like interface for Excel. There are like a thousand forums called things like ExcelBrainGenius.net, with people writing out full-blown novels on how to use conditional formatting inside pivot tables, or split comma separated values into arrays. There has to be a better way of communicating and automating that stuff.

01/10/2023 06:59PM

I read somewhere that the only thing WASM is good for is doing heavy math in the browser. While it currently seems true, my main use for WASM is being able to use a single language to write something that runs anywhere, and avoiding Javascript. I love JS, but at a certain point we need to acknowledge that maybe it’s time to move on.

01/03/2023 06:41AM

Why is it taken for granted that a programming language and a memory model need to go hand in hand? A lot of the languages in the last two decades seem to just pick a memory model before they even start on syntax.

12/28/2022 09:37AM

I can’t seem to find a relational-database-like tracker for iOS that isn’t subscription based, or specific to one domain. I mean, I can’t be the only person with a case of computer brain who wants to track things on my phone, while using normalized data and foreign keys to do it.

Similar to Airtable, Notion, or Linear, but only not subscription based, allows you to reference other tables/records, and use formulas for calculated columns and progress bars.

12/16/2022 12:37PM

Speaking of the Mars trilogy… I would give anything to see James Cameron do a TV or film adaptation of it. Please, please, please rescue the rights from Spike TV, or whoever has them. I’m begging you.

12/09/2022 09:28PM

Mars being the closest to Earth that it will be for a couple of years, so I’m listening to the audiobook of Kim Stanley Robinson’s Mars. I had forgotten how good it is. Just the visualization of human history as lines wrapping the Earth is such a great start. Lines squiggling out around the Earth’s path as it orbits the sun, and then just a single line reaching out towards Mars – the trajectory of human history. Beautiful.

12/08/2022 02:49PM

Does Rust have a non-macro way to say “for all structs owned by lifetime 'a, they should implement trait Z”, or something to that effect. You can certainly do it using macros, but is there a simpler way? I have a struct that is deep and complex, and I just want a way to say “anything inside this huge tree should implement the trait SpecialTrait.”

12/01/2022 06:41PM

iOS’s screen-time feature is good, but I would love to add a feature that just moves a chosen app’s icon around the home screen randomly every hour or so. I don’t need to be scolded, and nudged. I need to be tricked and fooled.

11/26/2022 02:21PM

The AI coding assistance tools definitely have a place in programming, but I think the important work of building software isn’t writing code, it’s figuring out how to write good code that you can modify in the future. Churning out a huge amount of code that 100% works, but isn’t extensible is, you know, expensive. Code is like finance. You either have assets and debts. If you’re writing an absurd amount of code, you may be producing liabilities, not assets.

11/01/2022 09:10AM

Seeing a lot of “wow it completed my switching statements” comments about AI code tools, and not a lot of “oh cool it translated a prototype I’ve written in JS to a mostly compilable Go module” comments.

10/31/2022 06:10PM

Absolutely hilarious when a company that sells one thing has a review section on their website that is filled with 5-star reviews. Like, oh, yeah, our only product is terrific, look at all of these people that love it.

10/30/2022 02:04PM

I’ve always found the way general purpose languages treat string concatenation to be strange. Why use traditional math binary operations for something like that? Add two numbers together, and you get a number that takes up the same amount of space in memory. Add two strings together, and you end up with a string that takes up as much memory as the two combined. That’s just the start of it. You also get weird LTR precedence logic where you convert to/from the first type depending on whether it’s a string or number or whatever.

It doesn’t change high-level languages much. (When are you ever really doing this type of concatenation where you don’t know your types?) But it just feels a bit off.

10/28/2022 02:49PM

Matt really nails it in https://www.bloomberg.com/features/2022-the-crypto-story/. There’s a lot of people doing critical analysis on the web3/crypto space, including Molly White over at https://web3isgoinggreat.com, but Matt’s matter-of-fact, casual breakdown of the forces that are shaping “crypto” as a whole is rock solid, and really comprehensive.

It’s wild to think that so much work can go on in a space like crypto in just a couple of years. They did a speed-run on finance. And yet, is anyone out there using these things to, say, buy PVC pipes for a construction project, or to get a loan to purchase forklifts for a warehouse floor? It seems like, so far, the answer is no.

10/27/2022 12:36PM

Makefiles are so great. I love them. It’s just so easy to programmatically build all targets, just by using a standard “build-X” pattern for all targets.

# ======================================================================
# build-all
# ======================================================================
all_targets := $(shell grep "^build-" Makefile \
    | awk -F: '{print $$1}' \
    | sed '/build-all/d' \
    | uniq)
all_targets_blank_target := target/all.txt
$(all_targets_blank_target):
	@echo "Building all..." \
	    $(foreach f,$(all_targets), \
	      "\n    $(subst build-,,$(f))" $(__EXEC))
	@date > target/all.txt
build-all: $(all_targets_blank_target) $(all_targets)
# intentionally blank, proxy for prerequisite.

Ta-da! Have I mentioned I love Makefiles?

10/27/2022 09:04AM

You ever look at a unix timestamp and think, man, I remember when they used to start with 144, and not 166. Like, ah, yes, 1441173523109, a classic millisecond in my personal computing history.

10/07/2022 03:13PM

If you’re writing PG functions or hooks pgTAP is so nice. For example, I have a trigger-function pair that stops users from deleting the last record in a collection, thereby ensuring a one-to-at-least-one relationship. Knowing that the function does that is really satisfying. Otherwise, PG functions would be a nightmare.

10/02/2022 01:38PM

Speaking of hooks; once you use useState, useCallback, useEffect a couple of times together you start to think that maybe there’s room here for a better, simpler API above these. Something where you tell it your dependency chain, and then just get back an object that you can use inside your component. Or maybe we just rename them store, run, and watch?

09/30/2022 05:27PM

Once you build up momentum understanding and using React hooks, you can’t stop. You’re like a freight train. But eventually you need to roll into station, and you might be out of luck. What I’m trying to say is, if you have to debug the hooks you’ve written, and you’re using more than two in a given component, your locomotive is no longer in your control.

09/30/2022 04:24PM

Watching a Rube Goldberg machine and writing PG functions have the exact same feeling. Wonder, horror, a foreboding sense that everything could go very wrong, and finally delight. Of course it worked. From this side of building/writing it, how could it not?

09/27/2022 03:24PM

On tech-Twitter someone put forward the notion that most individual contributors need VP sign-off on any expenditure above $1k, but any employee could schedule a 20+ person meeting, thereby wasting much more than $1k, so VPs should have approval over scheduling meetings. The reasoning on these types of thought-leader-ideas is beyond wild. Like, no VP has ever wasted the time of more than 20 people for a BS meeting ever? lol come on, dude. The notion that the tyranny of waste-of-time meetings will be ameliorated by getting manager sign-off is absurd. Absolute Dilbert-level logic.

09/25/2022 06:41PM

Some day we’ll look back at this time as the uncanny valley of IDEs – smart enough to know I’m writing HTML to complete my tags, but not so smart that it knows I’m writing a pandoc template, and I don’t need to have an entire document. Until then, I’m turning off a lot of IDE features.

09/20/2022 06:08PM

Having set up a NextJS website, I get why people use it. If you stick to the “happy-path” of NextJS, everything just works. But that’s the problem, if you’re building anything new or interesting you will stray from the happy-path, and all immediate adjacent paths are “painful-paths” or worse.

09/15/2022 12:22PM

There has got to be a better way to build web apps than messing around with 1,000,000 JS configs, plugins, dependencies, package managers, and build systems. There’s no way that this is as good as it gets.

09/14/2022 12:31PM

I pretty regularly destroy docker images and containers on my local machine just because it’s easier than memorizing all the commands to restart and configure them. I can’t help but think that a lot of people are doing the same, and we’re all just downloading gigabytes every day because of the poor CLI DX… Weird.

09/14/2022 09:37AM

It really is funny how much of many programming languages is dedicated to telling the compiler or syntax checker “just trust me.” Anytime I’m writing typescript and I have to use the as keyword it feels like I’m saying, “pretend that I’m right on this one.” There’s a need for this in many languages – at some point we have to serialize, or work with an unknown type, or with a polymorphic value – but it certainly feels like we can do better than a syntactical equivalent of
“look the other way while I do something we both agreed I wouldn’t and shouldn’t do.”

08/24/2022 10:42AM

In Spotify, when it shows the album’s year, you should be able to click through to the year and see what else came out that year.

08/18/2022 02:50PM

The SQLite documentation is really well done. Clear, detailed, and has good diagrams. https://www.sqlite.org/syntax/expr.html. What can I say, I love a good syntax tree.

07/20/2022 10:34AM

The Intersection Observer is pretty cool. Really useful to detecting position: sticky; intersection so, for example, you can add a nice line after a header in a table, but only when you need to make the distinction during a deep-scroll state.

07/11/2022 01:29PM

If I’m writing code that isn’t clear, documentation can make it clearer. If I’m writing code that doesn’t work, tests can help me find how it should work. Tests, RFCs, and design docs can make it clearer and work better as well. This is one of the reasons I’m more than a little skeptical of people that claim code is self documenting, or clean code needs no documentation. You can re-write something to work the same way, but be cleaner, all while still increasing complexity. Or you could just document the first thing, and have it be cleaner, simpler, and above all, include of the non-functional information that goes with code.

06/16/2022 10:34AM

I don’t know if everyone should learn how to code, but I think everyone should learn how to model something. And I think more people could learn how to do both not by taking some sort of course, or bootcamp, or whatever, but by doing code-like things in existing tools and software. Building filters for inboxes, embedding things in documents, or figuring out the regex-like features of search engines all seem like good places to start.

06/15/2022 01:16PM

There’s something very satisfying about designing using bezels. It forces me to make distinctions about nesting components, and how they relate to one another. It also makes my components somehow feel more solid. I probably won’t end up shipping something that looks like this, but it’s a fun design game to play. I can always toggle it off.

Beveled design!

Beveled design, again!

06/12/2022 09:50AM

GIFs will always be better than video or other formats for sharing screenshots because most platforms don’t compress them.

06/11/2022 09:05AM

An idea for a spin-off of “Will It Blend?” but it’s for designing user interfaces, and it is called “Can I Click It?” We will review big corporate banking apps to see what is actually clickable.

06/11/2022 05:40AM

What if there was a data analysis platform that just emails you a big spreadsheet once a day instead of offering a hugely complex UI that is impossible to build upon?

06/06/2022 12:25PM

Watched the first episode of the new Foundation TV show, and I really liked it. Treating Asimov’s original series as a starting point, and not a strict text, gives the story some much-needed breathing room. Also, the more I think about how we interact with technology, the more I feel that some shows just get it right by not trying to explain everything too much. The scene with the lawyer and Gaal was particularly good – just turning on a device that casts some sort of privacy field is implied, it doesn’t need to be explained. So much of our current world is seemingly magic or inscrutable, that to create a full and complete sci-fi world is just an extension of that. Just imply what the device or technology does, rather than explaining it. If the narrative feels clunky, it’s because the “thing” doesn’t need to be there, or it doesn’t suite the story. The rest just sort of follows.

06/06/2022 12:19PM

I was talking with a friend about open office plans, and they said that they wouldn’t mind an open office if they were simply allowed to do 40% less work. A loud conversation between coworkers is a good thing to get distracted by if you can simply do less work.

06/04/2022 01:48PM

I’ve been using “Oblique Strategies” recently as a way to think through some of my ideas. It’s fun because I don’t know how to use them, so there’s more or less no wrong answers. Sometimes I think that tech companies might be better if instead of doing KPI stuff, they took like four cards from the stack and did those. What would Google Docs look like if they spent a month trying to figure out how “The tape is now the music” should be applied?

06/04/2022 11:26AM

Having gone down the rabbit hole of “browser-server” code sharing, I think it’s only useful in a couple of cases. Most of the front end stuff I’m doing is pretty specific to the UI I’m building, so it’s really just sharing model definitions at most, which usually means just having serializable objects, and that’s easily enough handled with JSON. Writing models twice is so small compared to other tasks, that it’s not that difficult.

06/03/2022 4:04PM

An underrated feature of SQLite is that it will use alternative strategies to execute your queries under memory constraints. Can’t allocate memory to complete the query? Great, it will try with the memory it does have.

06/02/2022 1:46PM

ImageMagik is great, and it works well, but a cleaner way might be to use something like Skia (either directly or through Dart/Flutter) to render images, convert, them, etc. Something to look into.

05/29/2022 9:39AM

If everything is a file, could we extend the usefulness of files by giving each one an accompanying metadata file (eg: my_data.csv, and my_data.csv.meta), and using a tool similar to git to track the properties, allowing for comments, version control permissions, history, rules, and other info?

05/29/2022 9:26AM

Not a day goes by that I think about the fact that the phone in my pocket is about as fast as my M1 MacBook, but I can’t run custom emulation software on it to use it as a desktop computer. Every sci-fi book ever has some concept of a “terminal” or “link”, and it serves as your phone/laptop. And here we are in the year 2022, but I can’t run what I want on my phone. Weird.

05/28/2022 3:01PM

I’m so used to writing code in Goland that I try to select all and hit Cmd+Shift+L in other applications. I would love to have something like a code style for docs, or Figma, or other tools.

05/26/2022 12:38PM

Messed around with Observable and Airtable yesterday and today. Airtable has made a lot of progress on their features. While their interface still looks like a Mario frozen yogurt shop, they’ve added features for building publicly accessible reports. This completes their database-like product, as it finally gives a way for the public to interact with it. While that’s interesting, it would be far more compelling if they offered it as a hosted OSS, backed by something like PG or SQLite. I could imagine it getting a lot of use and doing a lot of good as an open source thing.

05/20/2022 5:00PM

Working on something that needs to allow runnable, sandboxed code on a users machine (eg: called from the application on a laptop). The obvious solution is some sort of cross-platform hypervisor that lets me run very a small linux distros inside a VM. But it’s hard to find anything like this that isn’t old, unmaintained, or just plain weird. This is one of the larger and technical advantages SaaS companies have had for decades now; everything is easier when you’re running it on your own servers.

05/18/2022 4:22PM

Boggles my mind a bit that some popular programmers articulate their love for programming in terms of “making the customer happy.” Dude, you don’t need to frame things relative to how you get paid. It’s ok to say you like solving problems, or you like programming and a job well done. Expressing everything in a transactional way makes you sound like Robin Williams in Bicentennial Man; “One is glad to be of service.” You’re not in a job interview. Are you being held hostage? Like, blink twice if you’ve internalized your employers world view.

05/18/2022 11:11AM

Declarative state for GUIs is a pipe-dream. An admirable one, but still. There’s no way around the fact that your program is in conversation with the native UI.

05/17/2022 12:04PM

I’ve said it before, and I’ll say it again, 2D graphics programing (eg: GUIs) will be 100% better when we get a major, cross-platform WebGL/OpenGL/OpenGPU library that compiles to WASM. Shipping that to the browser will allow for optimizations that are way better than what we’re doing now with the DOM. Things like egui, glow, Flutter/Skia/CanvasKit are pointing in that direction, but we’re going to see cool things in the next couple of years on this front.

05/16/2022 3:47PM

Jane Addams wrote that the “cure for the ills of Democracy is more Democracy”, a statement so true that it’s often borrowed if not literally, certainly in spirit, for a number of other ills. Is the cure for the ills of SaaS, more SaaS? The cure for the ills of software even more software? Some days it seems that Silicon Valley certainly thinks so. There’s dozens of SaaS companies selling group discounts for bundles of other SaaS products, or tools to organize your existing subscriptions, or turn-key solutions to start a SaaS company – with, yes, you guessed it, more SaaS!

05/13/2022 10:45PM

The post https://blog.ploeh.dk/2019/11/04/the-80-24-rule/ seems pretty on point, but I think you can reach the same results by working backwards from “what’s the best way to express the purpose of this function?” or “what are the cleanest units to document what we’re doing here?” or even just a gut-level “is this readable?”

05/12/2022 12:58PM

I don’t think we’ve reached the end of new and wild programming languages. But I do think any new language needs to have its own accompanying GUI library, and visual editor in order to debug and inspect changes to the codebase. Visualizing flow, memory management, concurrency, and memory access could make a language infinitely better.

05/09/2022 11:50AM

Stumbled across https://tauri.studio where the creator does a literal fire-side chat about why he built Tauri. This is the stuff I love about nerds. Get weird, get corny, put on a hat and velvet smoking jacket and film yourself by a fire talking about code. Love it.

05/09/2022 10:51AM

There are very few genuinely innovative things happening in desktop computing UI design. Which leads to the question: what have UX/UI designers for desktop applications been doing?

05/08/2022 10:10PM

The SQLite session extension really is remarkable. With very little overhead you can just grab all changes to a set of tables, and write it to a file. It’s so easy to reason about, and extend, and use with your existing tooling. Just open connection, start session, end your transaction, stream the change-set out to a file, or save it to S3 or wherever, and you’ve got bidirectional versioning for your entire database.

04/26/2022 4:18PM

Using cargo for building rust stuff seems like it’s a kitchen-sink solution to building stuff. Looking at Cargo.toml you think, man there’s just too much here. But then you remember that the alternative is passing in a million flags like with GCC, and you think, you know, I’d rather have it written down somewhere rather than just floating around in a Makefile or bash script.

04/12/2022 3:16PM

People talk about web-apps being really fully featured, and that you can do anything in HTML/JS/CSS, but I think that we’re at a brief plateau on our way back to native apps. Writing Rust that compiles to WASM, and has only very light bindings connecting mouse/keyboard in, and OpenGL out, and that seems pretty solid. Once WASI is solidified, and we have a good ABI for WASM, and WebGPU Dawn lands, anything that uses HTML will seem like a joke.

04/09/2022 8:47PM

I once read a short story by Isaac Asimov (I think) about a substance that had a mass so high that you couldn’t get enough men around even the smallest piece of it in order to lift it. I think some people believe the inverse of this about software: that the more people you have working on a codebase the more you can get done. Just gather the men and have them lift the small chunk. I don’t think that’s true. Sometimes I think you need the smallest number of people possible who know how to lift things, and give them the time to figure it out.

04/04/2022 9:48AM

To the tune of LCD Soundsystem’s “Get Innocuous!”: “Get delusional!”

04/04/2022 9:46AM

When I leave the vicinity of my Mac, and the screensaver is on, the display freezes. So if I go to bed with it on, instead of saving the screen, it burns the screensaver into my display for hours. That’s the biggest tech company on Earth baby! Good stuff.

03/30/2022 3:18PM

You would think that with higher DPI screens we would have moved to a different unit system for design. But we’re still doing 1px or 2px borders on things, because the resolution gets messed up on older screens if you do anything different. Seems very strange to me that there’s a difference in 100% (or 50% depending on how you think about it) between the borders that we can do on application designs.

03/25/2022 1:19PM

Orange site people love to go off about how code reviews are terrible, and it’s like, damn, that seems kinda like a symptom of having bad coworkers than anything else. Code reviews are for 1: catching bugs, 2: sharing knowledge, 3: forcing yourself to put the best of other people inside your brain. If you’re complaining about code reviews you’re missing more than one of these.

03/24/2022 4:51PM

Big fan of huge files when programming. Putting an entire library inside a single 2100 line lib.go file, and the tests in a 5000 line lib_test.go is terrific. I don’t have to flick back and forth between files, and it somehow feels more complete because I don’t have to worry about what units the library should be split into; it is one unit, the Big Ol’ File.

03/24/2022 4:40PM

I think I’ve made this point before, but any significantly large code base has so much detail in it, and customization that the complexity outweighs whatever language it was written in, and interacting with it is less like writing code and more like understanding a gigantic machine; you tune this here, flip this switch there, but you don’t stop it or rebuild any significant part of it all at once.

03/24/2022 3:37PM

Drawing triangles always blows my mind. Just literally drawing. Telling the painter to go from “this point to that point to the next point”, or doing stuff with quadraticBezierTo. Just plain cool.

03/18/2022 11:04AM

I’m not super into the idea of GitHub’s copilot, but I would love for something as simple as a good autocomplete that uses realistic heuristics. For example, when I’m working with a Dart class of Fields, and I type Fei, you know, Goland should be able to guess that I am not referring to FilterElement.supported from dart:svg, a variable and package I have used once, and not recently.

03/16/2022 7:04PM

Protobufs seem like a good idea until you start using them near core-computational tasks. Then it changes. Every time you touch a field, it’s using an array index lookup, which is fast, but not as fast as a straight reference. In Dart using a plain apples-to-apples comparison, I’m seeing a 15% slowdown. Oof. So, if you are, for example, writing a document-like structure and using protobufs as the elements in the document, every lookup is slower. Now, again, performance is relative, so if you’re spending 110ms on something, and only 10ms of that computation is using protobufs, you’re loosing a 1ms, so who cares. But if you’re spending 100ms in protobuf-land, then you’re loosing 15ms.

03/16/2022 3:34PM

Protobufs are a good start, but I straight up don’t get why a lot of languages haven’t moved beyond simple type constraints. Checking string length, clamping integers, floats, doubles, and more seems like something we should be able to define somewhere, I don’t know, better? Putting that inside protobufs seems like a start to me.

03/11/2022 7:37AM

Whenever I feel weird about throwing errors or about thread-local I try to remember that they are different sides to the same coin: a way of saying “boy I sure hope you know what you’re doing.” Sure hope I remember to wrap it with a try/catch or I remember to set the provider/static/whatever on the thread context. If GOTO is considered harmful because it jumps around the program with consequences that are hard to track, error recovery as to at least be considered neutral-evil. What are the other alignments on this one?

03/11/2022 7:34AM

Writing tests can be a virtuous cycle or a negative cycle. If your code is at least pretty good, you write tests easily and find bugs, fixing them as you go. It makes you want to write more tests. If your code is bad, tests are hard, and you find a ton of bugs, and they’re difficult to fix. It makes you want to write tests less, and, on some days, makes you want to write less code altogether. Occasionally it makes you want to throw you computer into the ocean.

03/08/2022 1:47PM

I get why dart’s _underscore private notation exists, but it seems like a “please to not steal” sign. In repositories published to pub.dev I see the pattern of something like Object get thing => _otherThing; all the time, and then the _otherThing is being accessed outside the class, and could be mutated. Like, the underscore is effectively “please please please don’t touch this”, and then you don’t even see it because all you see is a publicly accessible getter. ¯_(ツ)_/¯

03/08/2022 9:00AM

The GitHub bots that auto-close issues that are inactive for N days are the worst thing about GitHub. Honestly, who benefits from that? No one. It’s not like we need to save bytes or anything. It costs nothing just to keep it open. It’s not a bad thing. Open source projects have issues, and having a lot of them means your project is being used, not that it’s bad. It just kills me when I find an issue I’m having, go to report the bug, and find that several people have tried, but they keep getting closed because no one comments on them. It might have been solved by now if we loose the tree-falls-in-forest mentality to GitHub issues. Let it sit! Let it stew! We can all gather in the comment section on the 2, 3, or 5-year anniversary of the issue, and celebrate that we still care about it, and want it fixed.

03/03/2022 3:36PM

Oof. In Dart, if your Iterable map call returns void, it just straight up won’t get compiled.

03/02/2022 7:55PM

The internet and computing in general may be getting worse, but I feel like the tooling is all getting a little better. I use Goland every day, and it seems like there are fewer and fewer bugs in how it handles things. I use iTerm every day, and it too seems to only improve. Programming languages like Dart, Rust, Go, and Javascript are all getting better. All we need to do is use them to do good things. On some days that doesn’t seem that hard to me. :)

03/02/2022 7:00PM

Listen, I’m writing code in a language based on C and Java. It’s not that I want to throw an exception, it’s just that there’s no way to do multiple return types without introducing a new class, or weird ["ok", "err"] .... [0] as Ok ... [1] as Err nonsense. So here I am, shoveling poo over a fence, into a land in which I will soon live.

03/01/2022 11:09AM

I’ve always thought that functional programming is fine, but object-oriented programming is where it’s at, because you can always do FP in OOP. But I’m not so sure anymore. Scope is difficult to capture as objects and classes, and it’s near impossibly to do FP in OOP without it. And at that point you’re writing objects and classes anyway, so you’re really taking what should be ephemeral state and codifying it as structure; in a weird way the only way to do FP in OOP is to do… even more OOP.

02/26/2022 10:26AM

Dart is great, but I really want Rust’s mutability guarantees. I can’t guarantee I won’t mess something up by mutating an interior object.

02/25/2022 3:37PM

Dart isn’t a very popular language, so it doesn’t show up much in Google results, like when I’m searching for “Dart implement IterableMixin” or something. But someone took the dart site https://dartlang.org, and created https://fartlang.org. Whenever I search for Dart stuff, if there are no results, there it is; FartLang.org. A hilarious canary in the coal mine, shrieking and cackling that no one uses Dart. An SEO case study for sure.

02/10/2022 3:07PM

People rag on different programming languages all the time for being bad or whatever, but when you really put your mind to it, you can do bad engineering in any language. Shoot for the stars, or the toilet. The choice is yours.

02/08/2022 4:51PM

All things considered, I’m all on board with Flutter. It’s a ridiculously solid way to write something that runs everywhere. Platform-specific stuff can be injected at build time, and you can do whatever you’d like outside of Dart with the bridging capabilities.

02/02/2022 3:55PM

Flutter is cool - but there is a certain irony in having their profiler tell me the performance of my application is slow when the profiler itself takes 3 seconds to respond to my clicks.

02/01/2022 8:28AM

With Flutter + Dart, I’m getting 11ms renders on a production build, 33ms when we do a 4x CPU slowdown. With plain JS+React I’m seeing numbers of about 11ms renders on a production build, and 34ms with a 4x CPU slow down. I’ll publish this if I get a chance later - but those numbers look pretty interesting. Flutter is about as fast as React is if you know what you’re doing.

01/31/2022 8:55AM

The web is amazing. The best thing JS/HTML/CSS has done for developers has been to introduce the idea of the UI as being entirely separate from the rest of the app. once you start to think about that, writing a GUI in Flutter/Dart makes a lot more sense. Dart is a language for nothing but UI development. A lot of developers still look at GUIs as the last thing you do; you get your data model, and work your way back to front, ending with a UI that you slap on the front. that’s the opposite of how it should be. there’s so much that goes into thinking through how something gets used by a real person that you should start there, and work your way backwards.

01/23/2022 11:12AM

Flutter is really solid, and I’m not sure if there’s much of anything preventing someone from using it to draw graphics on the backend, and stream them to the client. If you can get under 16ms round trip, you can get native speeds too.

01/15/2022 7:53AM

Finishing up one week of using Flutter. Really solid. As long as you don’t touch anything platform-specific, it’s really good. And when you are writing platform specific code, you’re probably in deep water anyway, so a framework was never going to save you. I really like Dart. I can imagine setting up some sort of template that lets me build interactive models and shipping them by compiling to web-only. Neat stuff.

01/14/2022 10:51AM

In Unix “everything is a file.” Which I like. But I think we could have done a lot more with " everything is an element". If everything was an element in a sort of DOM-like structure, and each element has attributes and elements. You can achieve this with modern file systems, but can you imagine if it was the default? Tree structures everywhere. Projects that conform to " application-types" where elements are required or default-able. You could also have rules associated with what element parent-child relationships are allowed. Then you can allow for other applications to extend your application’s project, and vice versa. What a world.

01/13/2022 10:45AM

Going back to the browser standards thing: once we have well-defined APIs for doing network access, FS access, camera access, GPU access and so on, we can absorb these into the OS. ChromeOS is already doing that, but there’s no reason to think the other browsers (each of which is controlled by a company that ships a major OS) can implement and absorb them. Then writing apps means interacting with these APIs rather than using OS C-headers, or raw sys calls.

01/10/2022 11:18AM

I think once all browser ship versions of WebGPU, and a FileSystemAPI we’ll finally have browser apps that can act like native ones. More interestingly, I think we’ll see those APIs proliferate in native GUIs. Like, great, you can pick and choose these APIs as features when building a native app, so you can write an app in a collection of languages that all run anywhere, browser or not. The FS API will force Apple’s & Microsoft’s hand to solidify their permission-system to be clearer and easier to understand. And native apps will get better for it.

01/10/2022 09:17AM

Why do people screenshot their code in blog posts? Who asked for that? Why would you do that? Why would you just screenshot that when you can just copy and paste, which is 1000X easier. On Twitter I get it - you want to show your work, and posting a link to a Gist to weird, so you post a screenshot. But on a Medium post?! Or on a blog you control?! Bonkers. Absolute madness. Get out of here with that nonsense.

01/10/2022 09:09AM

Thinking about this licensing issue again. There are 8-10 semi-viable options for building a cross-platform app including Flutter, Mono, Cairo, GTK, QT, Electron, CEF. None are very good because either they’re incomplete in some dimension (weird language, poor documentation, licenses, too heavy, and so on.) Kinda wild that at the moment VC money is flowing like water and there aren’t any startups that are like, we’re going to build a slick UI thing that runs anywhere and skim 1% off every startups’ revenue in the next decade. But on the other hand it makes sense. VCs would rather hear that you have a 1% shot at owning 100% of a market instead of 100% of 1% of the market, because if you own 100% of the market, you can make the market bigger just by raising prices.

01/05/2022 10:46AM

It seems like there’s a lot of room for innovation in licensing when it comes to OSS. Unreal/Unity do something like $0 until you make $X, then it’s $Y. I think more OSS companies could do something like; free for open-source, free until you make $100k, logarithmically approaching 1% of revenue up to $10M, then free again. Not that billion-dollar companies should get it for free, but that most companies think they can get there. So the price becomes a sort of John-Steinbeck pass-through-tax, in that as Americans think they’re temporarily embarrassed millions, entrepreneurs think they’re temporary small-business owners on their way to greatness.

12/30/2021 11:59AM

Every big tech company documentation site is built very strangely. An overwhelming amount of interesting text formatting, notices, wells, call-outs, bold, italics, monospaced text, collapsible menus on the left and right. Just an astounding amount of information that doesn’t relate to the core topic of the page. Just unfathomable nonsense written by people with serious cases of paint-by-numbers-brain.

12/30/2021 11:49AM

No-code and lo-code tools love to be flow based. Even when most people think in terms of reactivity, not flows. Everyone learns math in left-to-right eval, producing numbers, and setting variables. Writing 2*3+a = 10 and a = 4 makes more sense, even if you could model it as a => 4 , 2*3+a => 10. Turns out Excel did get at least some things right.

12/29/2021 2:10PM

Looking back on all the microservice nonsense that’s settled down a bit - seems like a huge part of it was, and still is, the idea that code is disposable; it’s something temporary to be used until our model of the world changes. I understand it, but I don’t agree with it. If you act like you’re building something that will be around for a while it probably will. it becomes a self-fulfilling prophecy of garbage code. You end up with people relying on patterns too much - worry about project structure, or code re-use, or refactoring. Because, well, if I’m writing this garbage over and over again, I should be able to do it faster next time. But we should aim to write software that has fewer next-times, less need for the perfect project structure. Look at any wildly successful project, and you’ll find a structure that is pretty specific to the domain and people. Skia, chromium, blender, sqlite. They’re all weird. and they work. It takes time to get started, but they’re projects that are anything but disposable.

12/29/2021 11:33AM

Orange site people love to throw up xkcd #927 whenever someone remotely tries to improve something - standard or not. Like, if Louis Pasteur suggested germ theory on HN, they’d be like “oh great, #927, yet another theory about disease 🙄.” Or the wright brothers. They’d be like, “why bother? da vinci didn’t get it right.” Just a pseudo-intellectual way to cast doubt on something without remotely considering the idea on its own merits. As if you shouldn’t bother trying to fix something because the previous fixes didn’t work. As if UCB-C hasn’t caught on.

12/28/2021 2:11PM

There are about a dozen Skia-based GUI projects on github. each one basically trying to get a cross-platform gui library working. Almost all of them were abandoned while heading in the direction of a chromium-like system, sans-v8. Would love it if any of them were close to functional. Or if any of them had a remotely functional component-tracking system so binding your own clicks is easier.

12/28/2021 2:03PM

I’ve said it before, and I’ll say it again, I want a regular, modern IDE that knows less about my project, and more about the syntax. Just a dumb IDE that I can point to directories, and write code autocomplete that is very stupid, and narrow. Goland regularly tries to autocomplete from, like, C-lang headers and stuff when I want to fuzz-complete a css class name. absolute madness.

12/28/2021 12:08PM

If an OS finally figured out how to do permissions based capabilities properly - like iOS/macOS but better, I think a lot of the other usability constraints and UI stuff would fall in line. We could finally ship cross-platform apps that look good and actually work.

12/21/2021 9:49PM

Skia - the drawing engine that backs Chromium - is really good. It has a variety of bindings for GLs, and it’s very fast. Makes me think that there could be something there for a GUI library. Just a bunch of components that all call to Skia, and render to a window. Could be a solid alternative to Electron. Ship the Skia bindings in a variety of languages, so you can use whatever language you want for the main proc too, and ditch JS entirely. You’d still need an event system, but how hard could that be? :)

12/14/2021 6:10PM

The desire to have a project + IDE that autocompletes everything has led us to a weird place. npm pulls in a thousand things, you tell your IDE to ignore this or that, and what does it get us? a slower IDE that doesn’t even give you good autocomplete suggestions. I’d love to have an IDE that has good fuzzing, but doesn’t try to complete anything. I’ll ask for a name, and it gives it to me, then we put it in. That’s it.

12/07/2021 12:54PM

I would absolutely love a Rust async runtime that can run anywhere, because then we finally might be able to write apps entirely in Rust, and have them run in browsers as well as standard OSs. An async runtime + raw-drawing library would be even better.

12/06/2021 11:15AM

Making TODO-list apps as the intro to a new UI framework is dumb. show me a full-fledged file-menu with keyboard nav, skip-ability, disabled, and hotkeys. Then I’ll be convinced that your svelte/solid.js/vue thing actually works.

11/30/2021 12:12PM

Similarly, I think we need better words for the shape of code. Deep, shallow, flat, normalized, christmas-tree, and so on are a good start, but we need more. If we can come up with colors like sea-foam green and burnt umber we should be able to say that a library is mountainous, or celestial and have people be like “yeah, get that.”

11/28/2021 12:07PM

I would pay a lot of money for a 500-page book on how someone organized their JS codebase for a large sized project. So much blog-spam describing the best way to organize redux actions or whatever that sounds good, but would collapse under the weight of an actual project. It would make me impossibly happy to see deep descriptions about why something is structured like it is, and what the alternatives were. Something like an operating room theatre, except instead of a doctor being like " check this out" it’s someone who is like “I know this looks bonkers, but here is a 5000-line JS file of code gen for our redux actions, and it exists because…”

11/28/2021 12:04PM

An interesting read: https://github.com/facebook/react/issues/11171. It’d be neat to be able to use RAF with react, but the crux of the issue seems to be that you’re in conflict with a bunch of native browser interactions like scrolling and input registration, which makes it tough.

11/24/2021 12:59PM

Don’t want to be too cynical, but I think 90% of UI/UX design is just making sure the users know what is clickable and what the click will actually do.

11/24/2021 11:02AM

Being on “design twitter” is all about seeing people say stuff like “big things on the way!” and then they show a screenshot for a corporate banking app that looks impossible to use. good work everyone.

11/24/2021 11:00AM

Seems like a lot of the little warnings or context hints inside my IDE are rarely useful. they’re things that should be in an auditing tool. you run the audit tool every once in a while to see if you’re using anything deprecated. yet another part of the development experience that doesn’t need to exist - another absolutist “we keep a clean code base” thing that creeps into the experience of writing code, making it a little worse.

11/23/2021 5:05PM

Wrote a ton of Rust over the last year, and now I’m writing a ton of JS/TS. the change is jarring. going from something that cares about types so much to something that not only lets you treat anything as anything, but does so in ways that cause all sorts of performance issues is weird.

11/16/2021 11:10PM

I remember people being surprised that SpaceX was using Chromium for rendering the UI on screens in their shuttle(s), but it doesn’t seem wild. Anything that needs to be run in realtime (ie, flight controllers) has its own hardware, so rendering non- and semi-critical systems in Chromium doesn’t sound terrifically hard.

11/15/2021 12:13PM

If you built an ideal cross-platform GUI, you’d want something that can emulate native styles, but not too specifically, or you’d end up with incompatibilities. You’d also want something simple, and performant, with good input (keyboard, mouse, idk, midi?) support. You’d basically end up with a browser, and not necessarily chromium. Could easily be a wrapper, like Edge for Windows, WebKit for macOS, and Chrome for Linux.

11/15/2021 12:10PM

When I wake up my Mac, and it’s connected to my monitor there’s a 50/50 chance of it working. Really weird odds from the biggest computer maker in the world. Top-notch work Apple.

11/15/2021 9:55AM

Wild that we had notifications basically figured out with Windows 95. Taskbar buttons turned blue to notify the user of a pending message. seems better than the system we have now. Managing notifications through the system’s menu seems weird - more intuitive to just have the app idling if I want it tell me anything than telling the entire system what it can and can’t do.

11/14/2021 11:02PM

Reworking my Makefile. Turns out having sources and targets as literal things is great because it forces me to actually build things, instead of having a bunch of abstract targets. If I’m building a binary, or a bunch of files, then we know exactly what we need to do it. Targets all the way down! Cool!

11/09/2021 6:52PM

The phrase “hundreds if not thousands” really bothers me. Hundreds could be around a thousand, and thousands could at least be 2000, the difference being 200%. Or hundreds could be 200 and thousands could be 5000, a difference of 2500%. You get the idea. So which one is it? Someone on twitter insisted that they “interviewed hundreds if not thousands of developers.” Is it hundreds or is it thousands? You’d think they’d remember it if it was thousands. Seems like disingenuous way to say " about a thousand."

11/05/2021 10:32PM

It kills me when I’m using Safari, and it tells me that “the page is using a significant amount of memory, and your computer may be more responsive if you close the page.” You gotta be kidding me! My computer would be so efficient if I didn’t use it at all, just letting it idle, but that’s not what computers are for! “Your chances of sinking will go down if you put your boat safely up on dry land.” Duh!

11/04/2021 4:39PM

The idea of “best practices” in software development is dumb. Like, “if all your friends are jumping off a bridge” logic. Everyone is using Git-ops flow?! It must be good. A generous interpretation of best practices nonsense is that 50% of people are below average. A less generous interpretation is that good and bad, best and worst, are all relative to what you’re trying to build, and how you think of the nature of work. Work the way that makes sense to you, learn from others, but don’t do cargo cult stuff.

11/04/2021 11:11AM

Would love to see an anonymous dump of private Makefiles. It’s so flexible and versatile, and is the truest record/document of how you think about building something.

11/03/2021 8:16PM

Interesting idea: create something like a schema for a file-system, and use that as a db + programming environment as an alternative to spreadsheets or python notebooks. Allows for extension and tooling without being overly prescriptive.

11/02/2021 8:24AM

Makefiles are so good. They just make so much sense - everything is a source, target, or prerequisite, and it’s just checking timestamps. Helps avoid the complexity of other build systems by treating things as what they are physically (files + dirs) instead of conceptually (apps, services, etc.).

11/02/2021 8:00AM

The OT + CRDT debate often seems to miss the point that they’re compatible. You use OT for text, and CRDT for atomic fields on your document, which, by the way, is not the storage mechanism. It’s more like shared memory than anything else. You listen to it on the server to write to the db.

09/24/2021 1:11PM

https://makefiletutorial.com is good, and well written.

09/23/2021 7:35PM

While I’m at it; it’s funny that Rust’s goal is to make guarantees about safety, but when it comes to compilation it’s like the wild west. who knows what flags you gotta flip to get a static binary. Where’s the rust for compilers? Something like Nix + rustc + cargo + musl that is genuinely reproducible, and doesn’t break once a week.

09/21/2021 1:42PM

Building rust target x86_64-unknown-linux-musl is a real chore; not for the faint of heart.

09/21/2021 1:39PM

The quarterly issue of ‘Excel Pile-On Magazine’ is busy being printed over at HN: https://news.ycombinator.com/item?id=28595155

09/20/2021 4:30PM

GitHub has made it easy to launch an OSS project, but it’s never been easier to not maintain it. If devs had to set up their own site, domain, DNS, and git server to launch a project would we be better off? We might. Maybe fewer projects, but they might be of better quality because a couple of hours worth of work weeds out engineers that are bad at writing code, or are resume stuffing.

09/17/2021 1:22PM

I’d like to see all UIs base their screen and units off of a standard text size. from a user’s perspective. Wtf is a pixel? Who knows. But a character? I know how big that is or should be. after all, we’re reading on screens all day. A window bar? 2em. Close/hide/max icons in bar, 1em. etc.

09/14/2021 3:17PM

Bonkers that NSO group is churning out zero days for iOS, and Apple, with like $200B in cash and securities can’t be bothered to hire a couple of researchers to find and fix the exploits first. They probably already do, but, I don’t know, maybe hire a couple more? Again, $200B in cash is a lot.

09/14/2021 1:57PM

Been using iTerm2 for a long time now, and I love it. I’d love some sort of fusion terminal-IDE-browser app. iTerm’s tiling, an embeddable browser, and simple ways to render project files and open tabs. Something like that. You can get there with Emacs, but it’s a bear to put together.

09/14/2021 12:01PM

Jumping in and out of yaml, bash, and whatever you’re writing GitHub actions in is dumb. Why can’t we just have a better shell that does this for you? The yaml part really just gives you named steps that github can parse into a nice UI, but there’s no reason they could not do that with the AST of an actually single language.

09/13/2021 9:54AM

Wish there was an alternative to Grafana. Unless you know what you’re looking for, exploratory-metrics-finding is hard. It’d be nice to be able to explore a graph, having it serialize back out to a set of promql queries, with labels etc.

09/12/2021 2:36PM

Rust’s async/await feels like the wrong way to do threaded programming. Too many gotchas around context, state, and lifetimes. It gets easier, and I’ve found some patterns I like, but I think that they should have allowed for pluggable lifetime checkers like with the mem allocation, instead of making each block its own lifetime.

09/12/2021 1:15PM

GitHub actions seems okay, but it really bums me out to have to debug anything by editing yaml, pushing my code out, and watching the logs through a browser. Are there easier ways, yes, but they involve more time to get that easy-ness, so here we are, debugging bash through yaml strings.

09/12/2021 12:58PM

“You best start believing in societies, ms turner. You’re in one!” [pirates_of_the_caribbean_captain.jpeg]

09/12/2021 7:08PM

There’s never been more software, and sometimes I think we’re not better for it. It’s always been turtles all the way down, but when they’re stacked precariously you start to wonder if we could replace some of those turtles with better, more stable turtles. Anyway, I’ve been debugging github actions lately.

09/11/2021 5:19PM
2024-01-01