Digital brick layer. Lawful Good. Enjoys clean async I/O and minimal code.

High effort biz and natural fear of customers

Opportunity is everywhere in software:

  • IT Support for the aging. This could easily scale into a huge gig economy if a software HQ was clever about managing CS quality.
  • Various part-time remote positions for the highly educated retiring generation. They want to feel valued, but want to work very minimally – sound familiar? Retirees just converge on the same desires of your average software dev.
  • Fast auditable workflow software. People want highly integrated flow charts that then compile into something that runs fast. Good metrics, good UI, and good API for enterprise. Tie it up by deploying on-prem, and having quality on-call support. ... and more.

These are not hyper innovative ideas, and each have been implemented already in some fashion. Despite this there appears to be no company dominating these. Why not?

Employees, and customers.

Employees need to be cared for, and customers need to be supported. This means a meticulously organized back office of solid managers that can also mobilize an effective customer support team. A team that actually helps people.

This business needs to be competent in marketing, and have a decent sales team. Avoid patent trolls, and other legal liabilities.

After proving it could navigate those aspects, the business “just” has to scale.

These things are all part of any successful business, and reiterate the truth that software is a fraction of even software businesses. Opportunity knocks, but if you really enjoy software then it might not be your oyster.


I really do like TypeScript.

Anecdotally many backend developers really dislike JavaScript (and by extension TypeScript), even among Python or Ruby developers who already co-exist peacefully without a static type system. But, for me it is the most “fun” language so far.

After some Scala, C#, C++, Java, Kotlin, JavaScript, Ruby, Python, and TypeScript I still think that TypeScript is my favorite language so far.

What does it mean for it to be my favorite? A compromise in functionality. I write working code fastest in JavaScript. I love Kotlin's semantics. C# tooling is amazing. Python has existing code for everything.

From experience, big piles of JavaScript become hard to maintain. Largely just because the language is so flexible – it is easy to contrive reasonable patterns to organize a project, but that means they fluctuate between programs. This means lots of different data structures, and it is hard to learn data structures via static analysis (reading the code) without good type system tooling.

TypeScript provides a clean way to program with the benefits of JavaScript but also in a maintainable fashion. I script in JS but prefer TypeScript for code I want to revisit later.

C#, C++ require extensive build tooling to work as many places as JS does. JVM tech is always limited by slow boot times and heavy deployments. Ruby suffers from maintainability issues, and Python is a reasonable choice but somehow the semantics don't “click” for me. I think the curly brace scopes parse better visually.

JavaScript is fast and provides easy APIs for interfacing with the system. TypeScript makes that maintainable.

~ Ben

I am officially moving blogs (again).

I have used 3 different platforms now for blogging, and in practice I blog practically never. Technical writing is very time consuming, but keeping the outlet open as an option is always nice.

For a while now Medium has been exploiting writers with paywalls for content they entered for free. I read on the Elementary OS blog about and was quickly convinced it makes sense to try.

Going forward I will try to alternate and discuss non-technical topics, perhaps in some cases things entirely unrelated to technology. I already have one blog from earlier in the year, but I thought it made sense to explain this is the new place to see content from me if it does exist.

I will not be porting from or from – those few blogs will just be lost to time.

Cheers, ~ Ben

2020 Goals

In 2019 I fell into a position as a Virtual Software Developer II with Amazon. It was thoroughly unexpected since I did not even know that Amazon had positions like this, and I was excited at the opportunity when the recruiter who reached out to me told me about it.

I had interviewed and received offers from Amazon twice prior, and both times I felt like the pitch was for a startup, but without the opportunity for explosive career growth and learning hands-on that I would be able to get elsewhere. In retrospect I still think these were the right decisions, but now my self-learning capabilities are far better than they were previously and I am ready to jump into a more independent role.

So the job sounded good (it did the last two times as well). The real thing that pushed me over the edge on going with Amazon this time is that I met with a director of the department I was joining and they had both great insight and thoughtfulness about the people who are impacted by our systems. Typically when I meet with people, they are excited about what they are working on – so meeting someone who also appreciate the consequences of what they were working towards had an impact on my decision.

Since then, so far so good. My team is much smarter and collectively reliable for making reasonable decisions without being watched closely. The things we build are moving in the right direction though we have a ton of work to due, in addition to cleanup due to past ignorance (and un-thoughtfulness).

Coming into 2020 I want to be healthier, I want to continue any career momentum I have garnered and push forward with a stronger home life as well as more clear communication channels at work. Since I have moved home in 2019 I have not fully capitalized on the increased exposure to my (large) family. In 2020 I will work towards rectifying that.

Cheers to a very clear 20/20 (ha!)

Enter your email to subscribe to updates.