Why Elm Instead of TypeScript?

Or, yet another long comment in Slack turned into a blog post.

April 23, 2017Filed under tech#elm#functional programming#javascript#programming languages#typescriptMarkdown source
February 15, 2017Filed under micro#elm#fsharp#functional programming#javascript#programming languages#rustMarkdown source

One of the biggest changes in my JavaScript from learning Rust/Elm/F♯/etc. is that I now think constantly about what can fail.

January 30, 2017Filed under micro#podcasting#programming languages#rustMarkdown source

Finishing the prep work for New Rustacean e018.

Have I mentioned lately that I love Rust? Because I really, really do.

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
December 29, 2016Filed under micro#elm#live-coding#programming languagesMarkdown source

The thing Jamon Holmgren and I did today (with a slight visual snazziness boost) in Elm in GIF form:

A* Path Finding in Elm
A* Path Finding in Elm
December 29, 2016Filed under micro#programming languages#rustMarkdown source

This is a great summary of what I enjoy about Rust: it just lets me get stuff done—quickly, usually elegantly, and it’s always speedy:

All the cool kids are writing @rustlang think pieces, so I wrote one too: Rust is about productivity: https://t.co/OPwfWfpVic

— nrc (@nick_r_cameron) December 30, 2016

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 18, 2016Filed under micro#programming languages#rust#typescriptMarkdown source

Spent a chunk of the afternoon figuring out how to implement Rust’s Result type in TypeScript. Pretty cool!

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 02, 2016Filed under micro#functional programming#programming languagesMarkdown source

The ATP hosts on Scala: an act in three parts—

  1. Casey Liss: “What are the kids doing these days? This stuff is weird, man.”
  2. Marco Arment: “GET OFF MY LAWN!” :shakes stick: “FP is for weirdos and nerds!”
  3. John Siracusa: “‘Kids’? Come on. Perl has had all of this for decades.”
November 30, 2016Filed under micro#elm#programming languagesMarkdown source

While watching a theology lecture for school, I may have also spent some time learning how to do newtypes in Elm.

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
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.

August 15, 2016Filed under micro#c#cplusplus#fortran#java#javascript#php#programming languages#python#visual basicMarkdown source

My #firstsevenlanguages—looking strictly at what I’d used at all; ignoring HTML and CSS):

  1. Visual Basic
  2. C++
  3. Fortran
  4. Java
  5. C
  6. PHP
  7. JavaScript

In terms of what I learned well enough to use, though:

  1. Fortran
  2. Java
  3. C
  4. PHP
  5. JavaScript
  6. Python
  7. C++
August 04, 2016Filed under micro#programming languages#rust#rust-and-swift#swift#writingMarkdown source

I signed a contract today for a neat little writing project broadly related to my ongoing Rust and Swift series. Probably means a bit of a hiatus on the series itself, but there’s a lot of fun ahead. More on that as it develops.

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 26, 2016Filed under micro#fsharp#programming languagesMarkdown source

The more time I spend looking at F, the more I like almost everything about it. The only pain point… is that Microsoft foolishly choose to PascalCaseAllTheThings. 🙄

Rust and Swift (xviii)

Deinitialization: ownership semantics and automatic reference counting

July 24, 2016Filed under Tech#programming languages#rust#rust-and-swift#swiftMarkdown source
July 16, 2016Filed under micro#csharp#programming languagesMarkdown source

I was looking at a bunch of the inbound changes to C♯, and while they’re all quite nice… I realized that playing with a bunch of ML-descended languages has basically ruined me for C-descended languages.

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.

Rust and Swift (xvii)

More on initializers!

June 30, 2016 (updated July 04, 2016)Filed under Tech#programming languages#rust#rust-and-swift#swiftMarkdown source
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 22, 2016Filed under micro#elm#programming languages#rustMarkdown source

So I love the Rust compiler (and it’s improving all the time). But the Elm compiler is a revelation. Just… wow.

June 21, 2016Filed under micro#elm#programming languagesMarkdown source

Playing with Elm a little bit (I know, I know) and bumped into the idea of structural typing. Do want.

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 10, 2016Filed under micro#family#programming languagesMarkdown source

We’re sitting here with a friend, talking about two’s complement representation of negative numbers in binary. We are nerds, people.

June 09, 2016Filed under micro#javascript#programming languagesMarkdown source

JavaScript with semicolons written by hand is such a sad language. Almost every line, it’s crying:

);

Rust and Swift (xvi)

Initialization: another area where Swift has a lot more going on than Rust.

June 07, 2016 (updated June 09, 2016)Filed under Tech#programming languages#rust#rust-and-swift#swiftMarkdown source
June 03, 2016Filed under micro#programming languages#rustMarkdown source
June 03, 2016Filed under micro#programming languages#rustMarkdown source

Here I am, at the end of the week off, and what am I doing? Writing a Rust RFC. Yep.

Rust and C++ function definitions

A small study in syntax and legibility.

June 03, 2016 (updated June 07, 2016)Filed under tech#cplusplus#programming languages#rustMarkdown source
May 31, 2016Filed under micro#listicles#programming languages#python#rubyMarkdown 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.


  • Seeing gradual typing come to both Ruby and Python at around the same time is fascinating.
  • Seeing some responses (“If I wanted static types I’d use a real statically typed language”) which just completely miss the point.
  • The idea is that you can add these kinds of type annotations where—and only where—they’re useful.
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 18, 2016Filed under micro#programming languages#rust#swift#writingMarkdown source

Finally at a spot where I have both the time and the mental energy to pick back up my Rust and Swift series. Initializers, I’m coming for you.

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 10, 2016Filed under micro#programming languages#rust#talksMarkdown source

Wrote the first draft of my RustConf 2016 proposal. Because I don’t skip chances to chat about Rust. Not ever. You know that by now.

April 28, 2016Filed under micro#programming languages#rustMarkdown source

Also, I keep forgetting how incredible https://play.rust-lang.org is. Built-in ability to view not only the result of the code, but also the new mid-level intermediate representation (MIR), the LLVM IR, and the assembly? Amazing.

April 23, 2016Filed under micro#programming languages#purescriptMarkdown source

And then I discovered that PureScript uses Bower for its package management tool.

NOPE.

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 14, 2016Filed under micro#elm#javascript#programming languages#purescriptMarkdown source

After looking at Elm a little, and discovering it doesn’t have Haskell-style typeclasses (a la Rust’s traits), I was a bit disappointed. Then I discovered PureScript, which does. Intrigued all over again.

April 07, 2016Filed under micro#programming languages#rustMarkdown source

I 💙 the Rust team. So much.

This is just fantastic.

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.

March 15, 2016Filed under micro#cplusplus#programming languages#rustMarkdown source

I was reading some C++ yesterday, and I can’t put my finger on what it is about the language, but I just find it unbearably ugly. Rust’s syntax isn’t that different, but I don’t have the same visceral reaction. I wonder why that is?

Rust and Swift (xv)

Inheritance: a Swiftian specialty (for now).

March 12, 2016Filed under Tech#programming languages#rust#rust-and-swift#swiftMarkdown source

Rust and Swift (xiv)

Indexing and subscripts, or: traits vs. keywords again.

March 10, 2016Filed under Tech#programming languages#rust#rust-and-swift#swiftMarkdown source

The Future of JavaScript

ES2015, ES2016, and Hopes for ES2017 and Later

March 02, 2016Filed under Tech#javascript#programming languages#software development#talksMarkdown source

Rust and Swift (xiii)

Methods, instance and otherwise.

February 28, 2016 (updated March 06, 2016)Filed under Tech#programming languages#rust#rust-and-swift#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 07, 2016Filed under micro#podcasting#programming languages#rustMarkdown source

Spent the last little bit reading about Rust’s type system for the next episode of New Rustacean. Heady stuff.

“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
October 17, 2015Filed under micro#fsharp#programming languages#rustMarkdown source

This is interesting: I’ve read some F♯ before, but it reads a lot more obviously to me now that I’ve read a lot of Rust recently. Why? Because for all that they’re very different languages, both are ML descendants. It shows.

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 11, 2015 (updated September 11, 2015)Filed under micro#programming languages#rustMarkdown source

Since Rust allows unsafe code, it’s easy to wonder how necessary it is. The answer: in general, not at all.

Rust and Swift (iv)

Language design tradeoffs, highlighted by string manipulation.

September 10, 2015Filed under Tech#programming languages#rust#rust-and-swift#swiftMarkdown source

Rust and Swift (iii)

Operators, including overloading, and thoughts on brevity.

September 07, 2015 (updated March 12, 2016)Filed under Tech#programming languages#rust#rust-and-swift#swiftMarkdown source

Rust and Swift (ii)

Basic types and the syntax around them.

September 06, 2015 (updated March 12, 2016)Filed under Tech#programming languages#rust#rust-and-swift#swiftMarkdown source

Rust and Swift (i)

Thoughts after reading the introduction to the Swift book.

September 04, 2015 (updated September 07, 2015)Filed under Tech#listicles#programming languages#rust#rust-and-swift#swiftMarkdown source
September 02, 2015Filed under micro#programming languages#rustMarkdown source

I’m writing a bunch of C that needs to handle error returns. I’m really wishing I had Rust’s #[must_use] annotation right now. For that matter, I just want Rust’s Result<T, E> type available.

August 09, 2015Filed under micro#programming languages#rustMarkdown source

Tonight, Jaimie said that she thought Rust had turned me into a bit of a fanboy. Don’t tell anyone, but I think she’s basically right…

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.

High- and Low-Level Programming Languages

Python, Ruby, C, C++, and... Rust. Hmm.

August 07, 2015Filed under tech#c#cplusplus#programming languages#python#ruby#rustMarkdown source
August 06, 2015Filed under micro#programming languages#rustMarkdown source

☑ Finished reading the Rust by Example book. ☑ Submitted a couple pull requests. ☑ Concluded that I really like this language.