Better Off Using Exceptions?

Maybe, but only if your language demands it.

February 20, 2017Filed under Tech#fsharp#functional programming#rust#software developmentMarkdown source
January 29, 2017Filed under micro#software developmentMarkdown source

Got Mass Affection configured with TLS via LetsEncrypt on GitLab Pages. That was a lot of work. But I’m glad to have done it; migrating other sites should be easier now that I know what I’m doing.

January 21, 2017Filed under micro#software developmentMarkdown source

Nothing like doing a brew upgrade and watching everything on your machine crawl to a stop because you have to recompile gcc. I think I’ll kick that off again next time I’m out of the house for three hours.

January 19, 2017Filed under micro#software developmentMarkdown source

Programming (/life) pro tip: if you can’t see the value in a pattern someone else finds useful, assume you have something to learn, instead of concluding that the pattern itself is useless.

January 18, 2017Filed under micro#software developmentMarkdown source

I was fed up with JIRA, and then I remembered that I have Bee. And I’m so happy I remembered, because it’s good.

January 17, 2017Filed under micro#programming languages#software developmentMarkdown source

Just discovered that Safari Tech Preview has WebAssembly support. 👏🏼

TypeScript keyof Follow-Up

Autocomplete all the things in all the ways!

January 03, 2017 (updated January 08, 2017)Filed under Tech#javascript#programming languages#software development#typescriptMarkdown source

2016 in Review, Part 6 of 6

Plans for 2017!

January 01, 2017Filed under Blog#2016-in-review#family#fitness#podcasting#productivity#software development#writingMarkdown source

2016 in Review, Part 5 of 6

Getting things done in 2016 and beyond.

December 31, 2016Filed under Blog#2016-in-review#family#fitness#podcasting#productivity#software development#writingMarkdown source
December 30, 2016Filed under micro#lightning-rs#oss#rust#software developmentMarkdown source

Learning a bunch from Matt Brubeck’s lovely PR reducing allocations and copies on Lightning.

December 30, 2016Filed under micro#oss#rust#software developmentMarkdown source

Props to Jacob Finkelman for all his work helping me on this massive Rust documentation project today!

December 30, 2016Filed under micro#oss#rust#software developmentMarkdown source

One big personal upside to this documentation project: I’m going to know Rust a lot better before I’m done.

2016 in Review, Part 4 of 6

Writing software for Olo and for open source.

December 30, 2016Filed under Blog#2016-in-review#family#fitness#podcasting#productivity#software development#writingMarkdown source
December 29, 2016Filed under micro#programming languages#rust#software developmentMarkdown source

A thing I just learned: cargo doc --open: full, local docs for every dependency your Rust crate has.

Mind. blown.

December 29, 2016Filed under micro#elm#live-coding#software developmentMarkdown source

Thanks to everyone who watched Jamon Holmgren and me live-coding in Elm today. Intro to us and to Elm here.

2016 in Review, Part 3 of 6

Podcasting: Winning Slowly, New Rustacean, and more!

December 29, 2016Filed under Blog#2016-in-review#family#fitness#podcasting#productivity#software development#writingMarkdown source
December 28, 2016Filed under micro#live-coding#software development#tweetstormMarkdown source

I originally posted this as a tweetstorm, but I’m treating this as the canonical and adding a tweet to the end of that “topic” linking back here. Indie web forever.


  • Trying to get set up with Jamon Holmgren to live-stream some pair-programming.

    This is not a solved problem. Good grief.

  • Final solution (so far) includes both Screenhero and Hangouts on Air. :headdesk:

  • That got us most of the way there; now we’re actually using Hangouts+Zoom. This. is. bonkers.

2016 in Review, Part 2 of 6

So. many. words. I had no idea how many words.

December 28, 2016Filed under Blog#2016-in-review#family#fitness#podcasting#productivity#software development#writingMarkdown source

2016 in Review, Part 1 of 6

Running headfirst into a wall of pneumonia.

December 27, 2016Filed under Blog#2016-in-review#family#fitness#podcasting#productivity#software development#writingMarkdown source

2016 in Review, Introduction

Or: a ridiculous year summarized!

December 27, 2016Filed under Blog#2016-in-review#family#fitness#podcasting#productivity#software development#writingMarkdown source
December 26, 2016Filed under micro#software development#text editors#tweetstormMarkdown source

I originally posted this as a tweetstorm, but I’m treating this as the canonical and adding a tweet to the end of that “topic” linking back here. Indie web forever.


  • I’ve spent the last couple weeks using VS Code instead of Atom. It has a lot of things to recommend it, especially speed. It’s fast.

  • However, I have to say: it’s painfully obvious to me on macOS that Code is developed by people who aren’t Mac-native. Atom is.

  • And that’s okay—but it means that as many things as I like about Code over Atom, it always just feels a little off to me.

  • Ultimately, what I want is the extensibility promised by both Code and Atom, but with actually native UIs and native performance.

  • So on that note… @raphlinus, how’s XiEditor coming along? Because its approach is what we all really want, I think.


And he replied!

December 26, 2016Filed under micro#lightning-rs#rust#software developmentMarkdown source

Setting up AppVeyor for Lightning so I can be sure everything works cross-platform. 🎉 But for the record: batch files are barbaric. 👎🏼

December 25, 2016Filed under micro#lightning-rs#rust#software development#yamlMarkdown source

This is fun: Lightning now loads the YAML configuration I defined. Doesn’t do much of anything with them, but it loads them!

(I’m developing Lightning totally in public, so you can follow along here.)

December 24, 2016Filed under micro#rust#software development#text editorsMarkdown source

Tip for doing Rust dev in VS Code: check out this fork of RustyCode, which is currently more actively maintained.

December 23, 2016Filed under micro#rust#software developmentMarkdown source

Your friendly reminder that docs.rs is an incredible piece of software that is invaluable for working with Rust.

December 20, 2016Filed under micro#software development#text editorsMarkdown source

Things VS Code still needs to fix to be awesome:

  • font-smoothing settings on macOS
  • the color of the status bar
  • ability to cut-to-EOL

And let me turn off the ridiculous smiley-face feedback icon!

To be clear: Code is already very good. But it’s not quite awesome. (It’ll get there.)

The Itch

How typed functional programming is what I was looking for all along.

December 19, 2016Filed under tech#functional programming#javascript#rust#software developmentMarkdown source

keyof and Mapped Types In TypeScript 2.1

Making JavaScript dance to an ML-ic tune.

December 17, 2016 (updated December 18, 2016)Filed under tech#javascript#programming languages#software development#typescriptMarkdown source
December 16, 2016Filed under micro#javascript#software development#tweetstormMarkdown source

I originally posted this as a tweetstorm, but I’m treating this as the canonical and adding a tweet to the end of that “topic” linking back here. Indie web forever.


  • JavaScript experiences which induce profound frustration in me:

  • I had gotten in an insane state where things just stopped working that had previously been working as I updated to Ember CLI 2.6.

  • After much tearing of hair, I started over from scratch and repeated the upgrade process.

    Everything works now.

    ¯\_(ツ)_/¯

  • Then: rm -rf node_modules bower_components and test again.

    Nothing works now.

    ¯\_(ツ)_/¯

  • Consistently, it works fine after the upgrade and ember init finishes. Then, if I do a clean install of the dependencies, it fails.

  • And it fails in the same ways. So ultimately I’ll be chasing those, because we’re not going to get stuck here.

  • But this is an infuriating experience. If you’ve ever believed npm’s claim that non-deterministic installs aren’t a problem… consider this a data point in the opposite direction.

    ┻━┻ ︵╰(°□°)╯︵ ┻━┻

November 28, 2016Filed under micro#m. div.#sebts#software developmentMarkdown source

Currently almost 7 hours into this work- and school-day, at 2:30pm, and expecting it to be about a 12-hour day. Time to coffee up some more.

November 27, 2016Filed under micro#rust#software developmentMarkdown source

Two lessons from today’s Rust spelunking: the library team has done a fantastic job, and we need non-lexical, liveness-based lifetimes. (See this discussion by Niko Matsakis for some of the ideas there and why we need them.)

November 27, 2016Filed under micro#software developmentMarkdown source

There’s nothing like building something real in a language to find all the weird little corners. Even something small will get you there.

November 27, 2016Filed under micro#rust#software developmentMarkdown source

Pro-tip for dealing with HashMaps in Rust: the entry API is often your friend.

November 21, 2016Filed under micro#open-source software#rust#software developmentMarkdown source

Taking my own medicine :cough:—I just submitted a Rust PR documenting RFC #1623. 🎉

November 21, 2016Filed under micro#elm#rust#software developmentMarkdown source

Lots of compilers tell you “Foo is broken!” I love that both the Rust and Elm compilers try to explain why and how to fix it.

November 21, 2016Filed under micro#lightning-rs#rust#software developmentMarkdown source

One of the things I most enjoyed working more on Lightning this weekend: the Rust compiler is so helpful.

November 21, 2016Filed under micro#editor#rust#software developmentMarkdown source

Spent some time working on Rust stuff this weekend. The Rust plugins for VS Code and IntelliJ IDEA are really good.

November 16, 2016Filed under micro#editors#software developmentMarkdown source

The one upside to tabs (over spaces): they can be whatever visual width you want. (Relevant when, like me, you like a really unusual width. I’ve always been a 3-spaces-wide guy.)

Using Rust for ‘Scripting’

With a bonus: cross-compiling from macOS to Windows!

November 14, 2016 (updated November 15, 2016)Filed under Tech#programming languages#rust#software developmentMarkdown source

What is Functional Programming?

(And why should we care about it?)

November 11, 2016 (updated November 14, 2016)Filed under tech#functional programming#javascript#software developmentMarkdown source
November 05, 2016Filed under micro#javascript#software developmentMarkdown source

Pro tip: use Map and not Object for dictionaries/hash-tables in JavaScript. Performance difference is A LOT. (I haven’t measured, but for a simple example I was playing with (~12k items) it was at least a couple orders of magnitude.)

Edit: Belay that: the problem was an allocation-speed issue: I wasn’t reallocating a Map. Updating in-place is much more comparable.

November 03, 2016Filed under micro#software developmentMarkdown source

Front-end web development in one screenshot: macOS Safari on the left, iOS Safari on the right.

Why Everything is Broken

Because we all forget how broken it is.

November 01, 2016Filed under Tech#software developmentMarkdown source
October 30, 2016Filed under micro#ml#programming languages#software developmentMarkdown source

I’ll go a step further on yesterday’s comments: I would love to use Reason in a future project.

October 29, 2016Filed under micro#ml#programming languages#software developmentMarkdown source

Using ML-style types to reason through things—even just as a reasoning tool, without language support—makes such a huge difference.

I’m rewriting a hairy, often-buggy section of HolyBible.com’s user logic, and using type definitions for reasoning was invaluable.

October 26, 2016Filed under micro#software developmentMarkdown source

Just used LetsEncrypt for the first time.

This is wonderful. ENCRYPT ALL THE THINGS!

And then I set up a cron job to renew it every three months. My maintenance burden for this app just went waaaay down.

October 24, 2016Filed under micro#lightning-rs#rust#software developmentMarkdown source

Spent a good chunk of the evening working on this static site generator—by contributing to another library. #opensource software FTW.

October 24, 2016Filed under micro#lightning-rs#rust#software developmentMarkdown source

Discovered that Syntect can do highlighting for HTML as well as for editors. More Rust awesomeness.

October 23, 2016Filed under micro#lightning-rs#rust#software developmentMarkdown source

It looks my options for HTML templating in Rust are… quite varied. This is good!

October 22, 2016Filed under micro#lightning-rs#rust#software developmentMarkdown source

Curious: I noted during my drive back from vacation today that whenever other conscious thoughts lapsed, my Rust CMS project came to the fore.

October 21, 2016Filed under micro#lightning-rs#rust#software development#tweetstormMarkdown source

I originally posted this as a tweetstorm, but I’m treating this as the canonical and adding a tweet to the end of that “topic” linking back here. Indie web forever.


  • My online writing needs are weird. I have searched for years, and unfortunately… I need to write a custom CMS.

  • I thought briefly about hammering together what I need with Metalsmith.io and its plugins. But that would be a stopgap.

  • So the inevitable comes to pass: I commit to, however slowly, build the CMS I need.

    Probably in Rust—so it should be crazy fast.

  • If you want to follow along on this site generator/CMS adventure (it’ll move slowly), you can do so here.1

  • Status: looking at C bindings for Pandoc and thinking about implementing a Rust wrapper for libpandoc vs. shelling out to pandoc. 🤔

  • First pass: just going to shell out on the command line. Second pass… well, if speed is what I’m going for…

  • I’ve guessed this for a while, but I can confirm it now: Clap is a really fantastic command-line argument library.


  1. For posterity’s sake (ha!) it’s worth note that the original link here was to yassg-btwir not lightning-rs. I actually noted as much, writing:

    That repo name is for “Yet Another Static Site Generator (This One’s In Rust)” because I feel so creative today.

    Note the headdesk-worthy initialism failure: it should have been btoir not btwir. ¯\_(ツ)_/¯

October 08, 2016Filed under micro#javascript#reactjs#software developmentMarkdown source

People, React is great—truly! But the fact that you only learned about the ideas it uses from React doesn’t make React itself the paradigm.

October 08, 2016Filed under micro#javascript#reactjs#software developmentMarkdown source

People, React is great—truly! But the fact that you only learned about the ideas it uses from React doesn’t make React itself the paradigm.

Rust vs. React Native—What?

Tradeoffs, or: Speed and stability are for everyone

October 07, 2016Filed under Tech#f sharp#javascript#rust#software development#swiftMarkdown source
October 06, 2016Filed under micro#running#software developmentMarkdown source

After two years of using a Garmin 920XT, my considered opinion is: Garmin makes great hardware, and their software is utterly mediocre.

October 06, 2016Filed under micro#software developmentMarkdown source

My kingdom for an IDE with the smarts of JetBrains’ IDEs and a real, non-Java, native UI on macOS.

August 17, 2016Filed under micro#emberjs#javascript#software development#testingMarkdown source

I’m writing a talk on test-driven development with Ember.js for Olo’s in-house tech talks. How? By building a real feature and capturing the process!

August 13, 2016Filed under micro#software developmentMarkdown source

The latest JetBrains Rider EAP build is pretty fantastic. Nice work, JetBrains.

August 01, 2016Filed under micro#jira#markdown#software developmentMarkdown source

I hate JIRA’s Wiki markup so much. Why in the world they feel the need to stick to that instead of just supporting Markdown, I do not understand.

July 30, 2016Filed under micro#relaxng#rust#software development#xmlMarkdown source

Spending my afternoon reading the RELAX NG XML schema language tutorial, so I can implement a parser for it in Rust. Just because, you ask? No, I’m not that much of a nerd. Suffice it to say that I have ulterior motives.

July 30, 2016Filed under micro#javascript#programming languages#software developmentMarkdown source

I’m quickly discovering a desire for actual, enforceable types as I’m trying to compose a series of functions. It’s hard without them.

July 28, 2016Filed under micro#css#html#javascript#software development#swiftMarkdown source

I’m so used to dealing with layout distinctly from behavior with the HTML/CSS/JS separation that learning how to lay things out in macOS apps feels weird.

July 23, 2016Filed under micro#rust#software developmentMarkdown source

Fun things in Rust land: the code from the latest episode of New Rustacean, in Raph Levien’s Xi editor!

July 16, 2016Filed under micro#javascript#rust#software developmentMarkdown source

I am trying to fix a bug in a Node.js back end I wrote 18 months ago. And I have never been so tempted in my life to rip out the entire Node back end and replace it with one written in Rust.

Consistency in User Interfaces

Or, one part of why Git has such a learning curve.

July 15, 2016Filed under tech#git#software developmentMarkdown source
July 14, 2016Filed under micro#learning#programming languages#rust#software development#swiftMarkdown source

Things I did tonight:

  • Keep working on actually building a small app in Swift (not just playing with the language for little things, but starting to learn the macOS frameworks too).
  • Start writing New Rustacean e015.
July 14, 2016Filed under micro#software developmentMarkdown source

I really, really prefer codebases which remember that readability matters. Getting everything on one line, at the expense of the line being 234 characters long, is not a win.

July 09, 2016Filed under micro#open source#software developmentMarkdown source

Open-source developers who are still using mailing lists for tracking bugs are not on my good list. sigh

July 08, 2016Filed under micro#javascript#software developmentMarkdown source

I haven’t gotten almost anything done today. I think I’m calling today my day off for this week and I’ll hammer at productive things later.

July 06, 2016Filed under micro#javascript#software developmentMarkdown source

Wow: a minimal (but extremely useful) lodash install is only 4kb minified and gzipped. I… need to have this available to use everywhere now, please.

July 06, 2016Filed under micro#software developmentMarkdown source

Doing the same little programming task again at regular intervals is a fascinating exercise. Seeing how you’ve learned to tackle the same problem, but better, is illuminating.

July 02, 2016Filed under micro#pedagogy#software developmentMarkdown source

I know the Vehicle example is sort of canonical in teaching object-oriented programming. But it’s wildly disconnected from real software development problems. I don’t like it.

June 30, 2016Filed under micro#javascript#software developmentMarkdown source

I’d love—love—to see an open standard for embedding browser engines (a la Chromium/Electron) emerge, so you can embed whichever you like.

June 22, 2016Filed under micro#javascript#software developmentMarkdown source

The build worked on develop last night. We have made no commits. Now it fails.

Current best guess: transitive dependencies. Thanks, npm.

June 22, 2016Filed under micro#elm#programming languages#software developmentMarkdown source

The first thing I do when I start playing with a new language/framework/etc. (like I just did with Elm) is download the Dash docset for it. The time it saves is extraordinary.

June 20, 2016Filed under micro#software developmentMarkdown source

Got a weird diff report on a change in GitHub. Tracked it down to find it was a byte-order mark issue.

Thanks, Windows. I hate you.

Also, to be fair, Sublime Text 3 gets a little of my ire for changing the encoding on the fly. Don’t do that.

Y Combinators, how do they even work?

A commentary on a blog post by Matt Might, or: learning out loud.

June 19, 2016Filed under tech#javascript#programming languages#software developmentMarkdown source
June 18, 2016Filed under micro#software developmentMarkdown source

Lambda calculus. Church numerals.

This is my reading for a day when I feel terrible and just need to rest. I note and embrace the oddness.

June 11, 2016Filed under micro#javascript#nodejs#software developmentMarkdown source

I spent the afternoon modernizing a large chunk of Node.js code in preparation for fixing a bug—and I’ve caught multiple other bugs along the way. (Also, my comfort level with JavaScript and functional programming has taken a massive leap since I originally wrote this!)

Testing Ember.js Mixins (and Helpers) With a Container

Fixing "Attempting to lookup an injected property on an object without a container" errors in mixin and helper tests.

June 09, 2016 (updated April 20, 2017)Filed under tech#emberjs#javascript#software developmentMarkdown source
June 03, 2016Filed under micro#software developmentMarkdown source

When looking at an intimidatingly large software project, just ask: what is the very smallest thing I can build that is still useful? Once you have that, you can build on top of it, and you’ll have momentum. You might rework it later, but that’s okay—you’ll have started.

June 01, 2016Filed under micro#software developmentMarkdown source

So I have a week off, and what have I spent this afternoon doing? Uhh… working on some of my personal development tools, mostly. What can I say? It’s fun!

May 30, 2016Filed under micro#listicles#rust#software developmentMarkdown source

I originally posted this as a tweetstorm, but I’m treating this as the canonical and adding a tweet to the end of that “topic” linking back here. Indie web forever.


  • Was able to write some Rust for myself (not just to figure something out for New Rustacean) for the first time in months tonight.
  • Feeling Rust under my fingertips again was really nice but (pun fully intended) I am so rusty right now.
  • But of course that’s just life. I’ve written gobs of JavaScript for work, of course, but the only non-work writing I’ve done has been actual writing of the “uses words and not just as keywords” variety.
  • So it was nice to write some Rust for fun tonight. Even if it took me a ridiculously long time to do something super simple.
May 26, 2016Filed under micro#software developmentMarkdown source

Time zones: the bane of a software developer’s existence.

May 19, 2016Filed under micro#software developmentMarkdown source

P.S. I wrote that post on my iMac via SSH from an airplane somewhere over the Midwest. Crazy

May 19, 2016Filed under micro#javascript#programming languages#python#software developmentMarkdown source

I needed to write a tiny server to test out some quirky single-page app stuff I’m doing for Olo right now. So I did it with Python and Flask.

And you know what? Python is still—and forever, I suspect—so much better than JavaScript.

May 16, 2016Filed under micro#javascript#programming languages#software developmentMarkdown source

Just bumped into another person who (quite reasonably) didn’t know that ES6 classes are just syntactic sugar for prototypes. I like classes… but they’re more confusing than not, I think.

May 06, 2016Filed under micro#emberjs#software developmentMarkdown source

I just had one of thos beautiful moments when I realized I’d written a beautifully generic component I could reuse throughout the app, and it made me so happy.

April 27, 2016Filed under micro#software developmentMarkdown source

I think I’m sold on fish. The autocompletion alone is just delightful. Need to tweak it a bit, but even its defaults are pretty great.

April 25, 2016Filed under micro#software developmentMarkdown source

So, fish has some fascinating autocompletion. I may just have to play with it for a week and see if it lures me away from zsh.

April 25, 2016Filed under micro#javascript#software developmentMarkdown source

I hate npm’s non-deterministic installs. Reproducible builds are essential, not optional.

April 23, 2016Filed under micro#javascript#software developmentMarkdown source

I’ve been working for a few weeks now on what has ended up being a much larger feature than I expected. CLOC tells me it’s a +1,320-lines-of-code change. But of those, 951 are tests. As it should be when writing JavaScript.

April 22, 2016Filed under micro#software development#typographyMarkdown source

After a few months of using Hasklig, reading code without code ligatures seems really weird to me.

April 21, 2016Filed under micro#angularjs#javascript#software developmentMarkdown source

Just finished a massive cleanup of about 4000 lines of an AngularJS codebase. It’s not amazing, but it’s a heck of a lot easier to deal with now.

April 19, 2016Filed under micro#emberjs#javascript#software developmentMarkdown source

I still love EmberJS—but if I have one complaint, it’s that it’s slightly too heavy on convention-based magic. I want it to be a little more explicit, so that I can have a little more insight into what it’s going. Yes, even if that means a little more boilerplate. Explicit is better than implicit.

April 18, 2016Filed under micro#software developmentMarkdown source

On fire this morning: just knocking things out left and right.

I love Mondays. I’m well-rested, mentally fresh, and excited about the week.

April 16, 2016Filed under micro#software developmentMarkdown source

My Windows VM for work is now stuck in an endless cycle of reboots after a blue screen of death after an update.

Between that and its starting the update without asking me, I’m not feeling especially happy with Microsoft today.

April 14, 2016Filed under micro#javascript#programming languages#software developmentMarkdown source

Things I want basically all the time when writing JavaScript:

  • strong types
  • enums with values (tagged unions)
  • pattern-matching
  • immutability (more easily than with Object.freeze)
  • actual constants (not just fixed bindings like const)

Basically: an ML, I guess.

April 11, 2016Filed under micro#javascript#software developmentMarkdown source

Betting I’m not the only one who thinks it a little weird that the Event.target in the DOM APIs is the source of the event.

April 09, 2016Filed under micro#javascript#software developmentMarkdown source

It is utterly infuriating how many parts of the DOM API are “array-like” but don’t have the basic Array API actually attached. Want to iterate over a HTMLCollection? You get to use a for loop with an index! Lucky you! 😐

April 09, 2016Filed under micro#css#software developmentMarkdown source

Oh. my. goodness.

How have I not used Emmet before? The experience is amazing. Mind. blown.

Good tools are good.

April 07, 2016Filed under micro#javascript#programming languages#software developmentMarkdown source

The more time I spend with languages with pattern matching and expressive type systems, the more I feel frustrated by things I just can’t express in JavaScript. If I could write Ember in something Elm… I think I’d be giddy.

April 06, 2016Filed under micro#software developmentMarkdown source

When you don’t know where to start on a programming issue, write some tests. You might throw them out and write different ones later, but the process will kick your brain into the right gear and you’ll be moving along in no time. (Hat tip to Eric Farkas and Matt Green.)

April 06, 2016Filed under micro#javascript#software developmentMarkdown source

Why isn’t this updating? :looks around for five minutes: Oh. It’s because I’m just serving an old version, and don’t have it rebuilding as I make changes.

Yeah…

April 04, 2016Filed under micro#software developmentMarkdown source

Oh, the difference between Friday afternoon and Monday morning, when trying to solve a problem. Spend two hours beating your head against a wall on Friday, or ten minutes on Monday morning. So it goes.

Ulysses, Byword, and “Just Right”

My own killer Markdown app is still unwritten.

March 26, 2016Filed under tech#design#software development#writingMarkdown source
March 21, 2016Filed under micro#software developmentMarkdown source

Throwing this out there: don’t organize your apps by ‘kind of item’ (view, controller, etc.). Organize by concern. A component’s template, controller, etc. should be right next to each other.

March 19, 2016Filed under micro#rust#software development#swiftMarkdown source

Well, paper-writing today may have pushed me to the breaking point. An app idea that’s been bubbling for months… I think I’m going to start actually building pieces of it and learning for other bits this week.

March 18, 2016Filed under micro#software developmentMarkdown source

Tip: if you get a very specific piece of feedback and have a standard workaround, it probably means you have a product design issue to fix.

March 14, 2016Filed under micro#javascript#software developmentMarkdown source

Apparently, debugger; is a thing. My life would have been so much easier if I had known about this sooner than ten minutes ago.

March 09, 2016Filed under micro#emberjs#javascript#software developmentMarkdown source

Pro tip for tracking down oddities with Ember.js during testing: ember test --serve --filter '<some pattern>' is great. E.g. ember t -s --filter 'Unit' for just unit tests.

March 09, 2016Filed under micro#software developmentMarkdown source

Pro tip: if you want to use Sublime Text with any project which has local node_modules, install something to ignore specified directories (e.g. those in your gitignore) immediately. Same goes for anything with large, repeated builds (like Ember CLI). Yeesh.

March 07, 2016Filed under micro#software developmentMarkdown source

Sites which rely on Adobe or Google Tag Manager for their basic functionality infuriate me. Stop. Just stop.

March 06, 2016Filed under micro#javascript#software developmentMarkdown source

Seriously. All I want to do is transpile ES6 to ES5 and make it runnable in browser. And I need Browserify or Webpack for this? sigh

March 06, 2016Filed under micro#javascript#software developmentMarkdown source

Trying to do a little tweaking with the lightweight scripts I use on this site. Trying to automate things with Babel, browser imports, etc.

This is still far, far worse than it should be in 2016. Here’s hoping it’s (substantially!) better a year from now."

March 04, 2016Filed under micro#javascript#software developmentMarkdown source

I ran into a Medium post arguing against ES6’s class implementation, and got linked to this argument against super(). Strongly concur.

Inheritance is fragile. Useful when appropriate, but fragile. Prefer composition.

March 03, 2016Filed under micro#games#software developmentMarkdown source

The other day I posted about wanting to get my old joystick working on OS X, and thinking about writing drivers for it myself. Turns out I don’t need to, because ControllerMate is awesome.

March 03, 2016Filed under micro#software developmentMarkdown source

Every time I do Node development, I conclude again—loudly—that purely callback-driven APIs are incredibly annoying.

March 03, 2016Filed under micro#software developmentMarkdown source

If you’re contributing regularly to open source on GitHub, and you use the git command line at all, do yourself a favor and go install Hub right. now. Makes life so much easier.

The Future of JavaScript

ES2015, ES2016, and Hopes for ES2017 and Later

March 02, 2016Filed under Tech#javascript#programming languages#software development#talksMarkdown source
February 29, 2016Filed under micro#software developmentMarkdown source

I have an ongoing internal debate whether to hard-wrap lines in the source Markdown documents for my website (and everything else). Upside: it can be helpful when viewed in a terminal. Downside: it’s not very responsive in other editors or small phone views.

Static Site Generators and Podcasting

Publishing podcasts the hard way.

February 28, 2016Filed under tech#podcasting#python#rust#software developmentMarkdown source

Rust and Swift (xii)

Properties: type and instance, stored and computed.

February 27, 2016Filed under Tech#listicles#rust#rust-and-swift#software development#swiftMarkdown source
February 27, 2016Filed under micro#gaming#programming languages#rust#software developmentMarkdown source

I posted these as a series of tweets.


Fired up and played the demo for Elite Dangerous on my Parallels VM. Made me want to buy it. But of course, I’d prefer to play it natively.


Of course, it’s available for Mac. But my (more than a decade old) joystick doesn’t have any support on OS X. No drivers, full stop.


You can find software out there which recognizes it, of course—but it’s quirky and doesn’t behave well.


Looks like opportunity calling.


I might—might, I say, not will—end up seeing if I can write the requisite pieces in Rust. Because that seems like a good plan.

February 25, 2016Filed under micro#javascript#programming languages#rust#software developmentMarkdown source

I have an irrational-but-ridiculously-strong desire to build an Atom package that is a tiny JavaScript wrapper around a Rust implementation. Just because.

February 22, 2016Filed under micro#software developmentMarkdown source

I’m feeling the itch: to tweak both the information architecture and the visuals of this site. And maybe to use a different generator, since Pelican isn’t really up for the information architecture challenges I have.

February 21, 2016Filed under micro#software developmentMarkdown source

Reading Learn You a Haskell for Great Good.

Hang on—all name bindings are just functions? So many things just clicked. Mind. blown.

February 21, 2016Filed under micro#software developmentMarkdown source

Looked at using Otto for dev environment management. I think it’ll be great when it’s more mature; for right now, it’s too narrowly focused on Amazon, and plain-old Vagrant will do what I need better.

February 20, 2016Filed under micro#javascript#software developmentMarkdown source

Of course, there’s another challenge with picking back up: I’ve gotten spoiled by having ES2015 available and want to add it to this Angular project.

February 20, 2016Filed under micro#software developmentMarkdown source

The upside to stepping away for a bit: I just found a bug in this code… which I introduced in December 2014. :sigh:

February 20, 2016Filed under micro#software developmentMarkdown source

It’s inevitably a bit challenging when you step away from a project for three months because of life and then come back to it and try to pick up where you previously left off.

February 14, 2016Filed under micro#software developmentMarkdown source

I’m seriously thinking about trying Otto to make distinct environments for personal development projects.

February 06, 2016Filed under micro#software developmentMarkdown source

Just noted a way my programming languages snobbery has increased: if you have nil/null/etc. instead of Maybe/Option/etc., I say NOPE NOPE NOPE.

February 02, 2016Filed under micro#software developmentMarkdown source

Just bumped into ES6 static for the first time and was all what the heck?

“I Don't Know When I'd Use That”

Learning new languages as a way of stretching your brain.

January 17, 2016Filed under tech#haskell#programming languages#rust#software developmentMarkdown source

Rust and Swift (xi)

Hopes for the next generation of systems programming.

January 10, 2016Filed under Tech#programming-languages#rust#rust-and-swift#software development#swiftMarkdown source
January 02, 2016Filed under micro#software developmentMarkdown source

So you like GitHub pull requests but not so much the resulting merge commits? Have your 🍰 and eat it too.

December 21, 2015Filed under micro#software developmentMarkdown source

Somehow I’ve never made much (or really any) use of JetBrains IDEs’ “scopes” concept before. Quite handy.

Rust and Swift (x)

Classes and structs (product types), and reference and value types.

December 06, 2015 (updated December 22, 2015)Filed under Tech#listicles#rust#rust-and-swift#software development#swiftMarkdown source

Rust and Swift (ix)

Sum types (`enum`s) and more on pattern matching

November 09, 2015 (updated January 02, 2016)Filed under Tech#listicles#rust#rust-and-swift#software development#swiftMarkdown source
November 02, 2015Filed under micro#software developmentMarkdown source

Got the JetBrains Toolbox license for everything. And then realized I now have access to the ReSharper Visual Studio C++ tools. Yes!

October 22, 2015Filed under micro#software developmentMarkdown source

Bizarre though it would have seemed to me just a year ago, Vim has now displaced Emacs for quick command line editing for me. Weird.

October 21, 2015Filed under micro#software developmentMarkdown source

I really wish someone had explained “separation of concerns” to the person who wrote this UI/controller/blob.

October 20, 2015Filed under micro#music#software developmentMarkdown source

The only thing keeping me sane as I work through the atrocious Win32 Shell APIs today is listening to Pärt’s Lamentate.

October 20, 2015Filed under micro#software developmentMarkdown source

I really hate that a constant expression and const-qualified aren’t the same thing in C and C++.

CSS Fallback for OpenType Small Caps

A not-so-great solution which still gets the job done.

October 19, 2015Filed under tech#design#software development#typographyMarkdown source

Rust and Swift (viii)

Functions, closures, and an awful lot of Swift syntax.

October 18, 2015 (updated October 19, 2015)Filed under Tech#listicles#rust#rust-and-swift#software development#swiftMarkdown source
October 13, 2015Filed under micro#software developmentMarkdown source

Today I did a code review on my iPad while walking from school to a coffee shop, using my iPhone’s data connection as a hotspot.

What a world we live in.

October 10, 2015Filed under micro#software developmentMarkdown source

Related to my previous post—I really, really wish more of the fundamental papers on CS topics were freely available.

October 10, 2015Filed under micro#software developmentMarkdown source

I’m suddenly finding myself with an interest in parsers and compilers. What is happening to me???

October 09, 2015Filed under micro#software developmentMarkdown source

Inversion of control is a beautiful thing. Not least because it makes it so much easier to manage control over necessarily global state.

September 25, 2015Filed under micro#software developmentMarkdown source

I find that I solve many software problems faster by writing them out with pen on paper. I wonder how common that is?

Rust and Swift (vii)

Pattern matching and the value of expression blocks.

September 19, 2015 (updated September 20, 2015)Filed under Tech#listicles#rust#rust-and-swift#software development#swiftMarkdown source

Rust and Swift (vi)

Collection types and the difference between syntax and semantics.

September 19, 2015Filed under Tech#rust#rust-and-swift#software development#swiftMarkdown source

Rust and Swift (v)

The value (and challenge) of learning languages in parallel.

September 12, 2015Filed under Tech#programming languages#rust#rust-and-swift#software development#swiftMarkdown source

If-expressions in Rust

September 12, 2015 (updated September 12, 2015)Filed under tech#programming languages#python#rust#software developmentMarkdown source
September 10, 2015Filed under micro#software developmentMarkdown source

Needed to set up a simple test bed for a Python distribution with setuptools, which depends on external DLLs. So I used Rust and linked it up with Python’s FFI, because it was a perfect chance to see them interact.

September 01, 2015Filed under micro#software developmentMarkdown source

What are you using to track software development issues these days? JIRA, YouTrack, FogBugz, RedMine, or something else?

August 27, 2015Filed under micro#software developmentMarkdown source

Flame war time: I’ve basically concluded that for the tasks I use them for, I prefer Vim’s modal editing style to Emacs’ not-modal editing style.

I’d still rather use Atom/Sublime or IntelliJ IDEA for almost everything, though.

August 19, 2015Filed under micro#design#software developmentMarkdown source

Sometimes it is tempting as a designer to think that users are stupid. Don’t. If the software is not working for users, that implies stupidity in another party entirely: the one that designed the software. 😉

August 18, 2015Filed under micro#software developmentMarkdown source

Ugh. I just discovered that a support email address has been sitting unattended for eight months. (Totally my fault.) Not a lot of problems… but any unanswered emails for that long are the worst user experience. So frustrated with myself right now.

August 17, 2015Filed under micro#software development#typographyMarkdown source

I’ve been using Input for about ten days now. It grew on me slowly, but I really like it. Using it everywhere now!

August 17, 2015Filed under micro#design#software developmentMarkdown source

It turns out browsers render CSS transitions for positioning much more nicely than they do those for the box model (perhaps unsurprisingly, on reflection). Use position and top instead of margin to smoothly animate an item moving within its container.

August 13, 2015Filed under micro#business#software developmentMarkdown source

It’s nice when you evaluate a potential product’s market more closely and find your idea might actually be viable.

August 12, 2015Filed under micro#software developmentMarkdown source

Where do you like to set your --prefix when configuring personal development tooling setups? Somewhere under ~? Or somewhere else?

August 11, 2015Filed under micro#software developmentMarkdown source

If you’re delivering images over the web, you need to be using something like ImageOptim. No excuses.

August 10, 2015Filed under micro#software developmentMarkdown source

Tradeoffs time: whether ’tis better to drop in an off-the-shelf open source solution for this particular problem, and bring in all the extra weight it includes, or do it myself and pay in the time spent.

August 08, 2015Filed under micro#programming languages#rust#software developmentMarkdown source

I can think of no more effective an argument for Rust and its memory safety guarantees than the time I spent this weekend hunting down bugs caused by buffer overruns in decades-old C code.

August 08, 2015Filed under micro#software developmentMarkdown source

I found a CEditDlg instance and went looking for it in the MSDN docs, and was a bit nonplussed not to find it. Oh. It’s a CFileDialog subclass, and never mind the semantic ambiguity arising from the existence of a native CEdit class. 😐

August 07, 2015Filed under micro#software development#typographyMarkdown source

Thinking about setting Input as my typeface for doing my development for a week or two, see how it goes.

Anybody tried it? Bugs or problems to report?

August 07, 2015Filed under micro#ellie#jaimie#software developmentMarkdown source

Quote of the week (3-year-old Ellie talking to her mom, who has been learning Python): “Mommy! I have a function for you!”

August 05, 2015Filed under micro#jaimie#music#podcasting#software developmentMarkdown source

Hooked up my digital piano to Logic Pro X tonight and wrote the theme for a podcast we’re doing together on learning to program. It’s so good!

August 03, 2015Filed under micro#software developmentMarkdown source

Whoa! After years of demand, Confluence finally added support for importing Markdown-formatted content in its “Markup” box. It’s not native support for editing in Markdown… but it is a step forward. Good work, Atlassian.

August 02, 2015Filed under micro#podcast#software developmentMarkdown source

Just recorded the first episode of a new, short, weekly podcast I’m working on. Audio should be live in about a week!

August 01, 2015Filed under micro#software developmentMarkdown source

People often point to this (hilariously accurate) flowchart to explain how to solve tech problems… but it leaves something really important out: we “techies” know the right questions to ask. That makes a big difference.

July 30, 2015Filed under micro#software developmentMarkdown source

Another little feature of Rust I quite like: the use of traits instead of inheritance to share behavior. All the benefits of inheritance, and a few more besides, but none of the drawbacks.

July 29, 2015Filed under micro#software developmentMarkdown source

I just realized that one of the reason Rust so strongly appeals to me is that its design embodies one of my favorite traits from the Zen of Python: explicit is better than implicit.

July 29, 2015Filed under micro#software developmentMarkdown source

Courtesy of something in my stack not playing right, I’ve now been reduced to pushing and pulling changes between OS X and my Windows VM through Bitbucket, rather than just having a mapped drive locally. This feels silly.

July 29, 2015Filed under micro#software developmentMarkdown source

Hmm, this may be telling of the future… SourceTree now introduces itself as a Git tool. No mention of Hg at all. 😟

July 04, 2015Filed under micro#jaimie#software developmentMarkdown source

My dear wife has started teaching herself Python as a hobby. She has the essential skill required to succeed as a programmer: the willingness to persevere even when it isn’t making sense to her. I’m extremely impressed.

June 27, 2015Filed under micro#software developmentMarkdown source

Playing with CSS transforms and transitions while I listen to a lecture on Romans for my New Testament class. Keep myself awake…

June 26, 2015Filed under micro#software developmentMarkdown source

I cannot wait till I can switch to ES2015. Got bit by the stupid var scoping issue again. You’d think I’d be past that by now…

June 25, 2015Filed under micro#software developmentMarkdown source

Reading JavaScript Allongé. Just got to combinatorial logic (kestrel and idiot bird, for those in the know). Then he destructured a list with them.

Mind. Blown.

June 25, 2015Filed under micro#software developmentMarkdown source

One of the things that annoys me most when writing C is how difficult (really, almost impossible) it is to do anything generically. The same operation for different items in a struct? Good luck. It’s possible, but rarely worth the work.

HTML5 Location, <base>, and SVG

Making Angular and SVG xlink:href work correctly in Firefox.

June 20, 2015 (updated July 02, 2015)Filed under tech#angularjs#javascript#software developmentMarkdown source
June 18, 2015Filed under micro#software developmentMarkdown source

To my great delight, and thanks to a suggestion from App.net friend @jnm, I was able to get a static copy of my 2012–2013-era site archived this evening. That in turn means I’ll be able to replace my WordPress install with static HTML pages over the next few weeks. Victory.

How to Build a Single-Page App API Right

Or: How to get performance, progressive enhancement, and SEO in your Ember/Angular/Backbone/etc. app for free!

June 09, 2015Filed under tech#javascript#software developmentMarkdown source
June 09, 2015Filed under micro#software developmentMarkdown source

Tip: if you’re using Mercurial’s bookmarks to track lightweight branches, somewhat analogous to Git’s branches, use Mercurial’s special @ tag to track whatever you want to treat as the tip of a master branch. That way, any clone will check that out by default.

June 06, 2015Filed under micro#software developmentMarkdown source

I just taught Jaimie how to use GitHub for Mac (as she is helping a friend with his Jekyll-powered website), and explained the basics of distributed version control. She is totally a boss. And GitHub for Mac is a pretty good app.

May 29, 2015Filed under micro#angularjs#software developmentMarkdown source

One of (many) irritations with using Angular: every search turns up Bootstrap solutions.

I’m not using Bootstrap.

:sigh:

Python Enums, ctypes.Structures, and DLL exports

Illustrating the Simplest Use of ctypes Structures

May 28, 2015Filed under tech#software developmentMarkdown source
May 25, 2015Filed under micro#software developmentMarkdown source

That project I started on the other day? It’s still going… and swimmingly. I’ve now gotten it not only working at the most basic level (as it was before) but also to do a bit more complex work. You can see it (and any other scripts I build) here.

May 23, 2015Filed under micro#design#software developmentMarkdown source

Currently on my mind: how to chunk up the Bible text with semantic blobs and chapter/verse trees in corresponding data structures, in order to present meaningful sections of content (paragraphs, etc.) without resorting to delivering a whole book.

May 22, 2015Filed under micro#software developmentMarkdown source

This post brought to you by a brand new script, which automatically generates the file needed—YAML header and all!—to create a new microblog post on chriskrycho.com. Python for the win.

These Are My People

May 17, 2015Filed under blog#joy#software developmentMarkdown source

A Modern Python Development Toolchain

May 16, 2015Filed under tech#software developmentMarkdown source
May 16, 2015Filed under micro#design#software developmentMarkdown source

Updated the websites today. Did a bunch of back end work that should be basically invisible or make a change seamlessly on the front end for both chriskrycho.com and winningslowly.org. Very satisfying day; nice to be working on things just because I can.

May 06, 2015Filed under micro#software developmentMarkdown source

Microsoft Visual Studio: bringing you links in error messages… that aren’t clickable!

May 06, 2015Filed under micro#software developmentMarkdown source

I’m doing Project Euler with Elixir as a way of keeping myself sane while I try to get a project that worked fine in Visual Studio 2015 Technical Preview to build in Visual Studio 2015 Release Candidate. sigh

Lessons Learned

9 Months With HolyBible.com

April 12, 2015Filed under tech#angularjs#javascript#software developmentMarkdown source

Unsurprisingly, In Flux

A Quick Look at the State of JS Frameworks in Early 2015

April 08, 2015 (updated August 28, 2015)Filed under tech#angularjs#emberjs#javascript#react#software developmentMarkdown source

The Joy of Good Tools

Or: How deciding to pay for GitHub made me think about delight.

January 09, 2015Filed under blog#design#joy#software developmentMarkdown source

Growing Up Together

Or: How I Learned to Stop Worrying and Love JavaScript

November 15, 2014Filed under tech#software developmentMarkdown source

A Ridiculous Situation

The craziest include structure I've ever seen.

November 07, 2014Filed under tech#software developmentMarkdown source

The Next Generation of Version Control

October 16, 2014 (updated October 20, 2014)Filed under tech#software developmentMarkdown source

Pushing Into C's Corner Cases

August 12, 2014Filed under tech#software developmentMarkdown source

The Long Race

May 24, 2014Filed under blog#family#fitness#software developmentMarkdown source

A Little Crazy

April 29, 2014Filed under tech#software developmentMarkdown source

Learning QML, Part 1

April 11, 2014Filed under tech#software developmentMarkdown source

Feels Right

April 04, 2014Filed under tech#design#software developmentMarkdown source

FirebirdSQL and IntelliJ IDEA (etc.)

March 28, 2014Filed under tech#software developmentMarkdown source

The End of Surfing

March 26, 2014Filed under tech#design#software developmentMarkdown source

Doing It Myself

March 21, 2014Filed under tech#software developmentMarkdown source