John Elam - Recent Writing | twitter:@elamje | my coding flow playlist: spotify | coding music: List | me now

John Elam @elamje

I am a consulting software engineer living in Boulder, CO - primarily working with Clojure, Python, .NET & React. I am mainly interested in helping people make stupid simple software, ideally from scratch or very early on (startups and new projects). I also work with mature small & medium sized, non-tech firms to make custom software.

Not available for clojure, python, react, or data engineering projects at the moment.

Previously, I worked at PwC, and pre-previously studied Computer Engineering at the University of Texas. Since leaving corporate work I have been making better software, and had time to create several projects which will be linked here in the future. I also run a pearl business.

I am highly interested in high speed rail, hyperloop, and generally, fast transport. Additionally, snowboarding and hiking are a passion. If you are working on anything cool in any of these spaces, I'd love to help out.

See some of my work.

See what I'm up to now.

Most popular writing & older writing

5/3/2020 | Enterprise Dev to Self Employed, 5 month followup

Wow! My original post (below), got over 1,000 views, opened many new connections, and I got to respond to everybody that wrote me on email (which I encourage you to do as well!).

It's been about 4.5 months, since I wrote that, and I've experienced a couple of months of React contracting and a lot of C# & .NET Blazor work! It's been a success, even though I had to sell my car to make the first couple of months happen.

My results were 2 jobs landed, 1 outbound and 1 inbound. The data: I posted once on the HN freelancer thread in October, and once in November. I reached out to about 5 people I could have helped out, 1 turned into a gig. 1 was a really sketchy person who insisted everything was under NDA and he could only pay me in crypto, so I avoided going further down that path. Lastly, I got 1 inbound gig, that turned into a full time job (which I wasn't aiming for, but couldn't pass up).

Breaking it down further, I got the first gig by reaching out to someone who was seeking an intermediate android developer. We scheduled a call, chatted, happened to have a lot in common and he ended up letting me work on another project instead which wasn't advertised, and ended up being React! The second gig was really more of a take home job interview project that I got paid for. I had to build a pretty basic CRUD app to show that I knew what I was doing. Importantly, the only reason I even got the "interview" was because I had a Twitter. On Twitter, many months before, I had decided I wanted to get really good with .NET Blazor, a new Single Page App paradigm, so I put ".NET Blazor expert" in my Twitter bio as an aspirational public goal. I had no itention of anyone hiring me based on that data point, but it just so happened that my boss was looking for a Blazor person. I was totally forthcoming about my actual level of Blazor skill once we talked and he said he needed me for Blazor.

The biggest takeaway from following and generating leads so far, has been simple: It doesn't happen like you anticipate. Both gigs were totally indirect opportunities, but I can say that it helped that I had a twitter and blog tied directly to my name and hacker news profile.

Now, the actual job - I've been a .NET Blazor "expert" since early January this year, and to be honest, at the pace my team works at, I could easily be in the top percentage of Blazor server developers just because we work rapidly and only make new things! No rewrites means I have cranked out many new features each week since January, which counts for something. However, I still have a long way to go in the .NET ecosystem, and my coworkers literally have 10x the amount of experience in .NET than I do, so they are truly experts on the platform.

Anyways, I was more than happy to take this as a full time job, purely for the fact that my coworkers are experts. It's just icing on the cake that we use cutting edge technology, only work on MVP's, and are about to build a product in our spare time. Oh, and the pay is better than my big-corp job and it's remote. These are the reasons I will intentionally be ignorant of my selection bias and luck, and recommend for others to follow suit and leave big-corp America! There are sweet opportunities out there if you are willing to give up some safety. Some of you might have better luck, and others might take a bit longer to find an opportunity. Of course, you can always try to get consulting going in the evenings while you have your job, so you can minimize the risk.

The sad part of this story is that I have not been able to work with Clojure for $ yet. I'm still holding onto hope, and maybe I can even convince my boss to use it on a product, but until then, I'll just fire up emacs and toy with it here and there.

The last thing I want to say is that I haven't invested much energy into my twitter, which I'm trying to grow. I did take down my aspirational title of ".NET Blazor Expert", but as part of my online journey into opportunity I'm going to be documenting what I've learned, tips, and such on there. I occasionally tweet about investing (stocks/derivatives) and Sweden as well:) If you have questions or want to say hey, feel free to email me at or dm me at @elamje

12/21/2019 | Migrating from Enterprise C# to Self Employed Clojure & React

Over the past 9 months, I've been somewhat enlightened by a new kind of work that exists for software engineers. I'm going to try to paint a picture of my transition, as well as explain why it could be worth it. You can skip to the pro & con list below, or read the background:-).

I'm currently 3 months into an exploratory hiatus from corporate life, and I've been enjoying it massively. About 18 months ago, I was a fresh grad from UT Austin and extremely enthused to start my career in software engineering. I had just gotten a job at PwC, and was somewhat clueless as to what software development was, or could be, as a career. I quickly learned C#, which was my daily language in an enterprise that heavily used the Microsoft stack, and quickly felt stagnation in challenge and learning. It wasn't that things were easy, but for some reason my first year out of the gate was mostly incredibly boring HTML, CSS, and C# copy/paste style coding due to an incredibly mature application (think in the millions of lines of code) that had some hard to grasp domain knowledge caked in.

Somewhere in that time I organically stumbled upon Paul Graham, then his essays, and eventually, Hacker News. That orange site profoundly changed the way I saw my career trajectory. Likely, I could, like many older developers around me, stay there for 10-20 years and end up making $200,000+ a year in a cheap, major city, or possibly make partner and double or triple that, but life is too short to wait 10-20 years for an abstract possibility, so I began absorbing all content I possibly could from Hacker News.

Three key elements presented themselves to me while browsing - startups, importance of ownership, and fun programming. In startups, I saw the wonderful ability to not deal with typical corporate BS (I loved PwC, but I really don't care to watch 40 hours of accounting ethics videos, annually). In ownership, I saw that really having equity in anything, software related or not, is the only way to build wealth that grows non-linearly with time input (thanks Naval Ravikant). In fun programming I found Clojure. With it I realized I can increase the joy of programming, and decrease boilerplate code by a magnitude simply by using it, rather than Java or C#. (Not to mention the magic of LISP!)

Of course, many people don't get wealthy quickly from startups, or just coding. I realized some things in life just take time. With patience in mind, but impatience with my corporate programming growth, I knew I needed something that would be more challenging and provide greenfield projects with architectural decisions. I didn't sense those things would happen quickly at my job, so I spent most of my nights that year learning Clojure, Rust and making a Python web app. Towards the end of the year I decided that I really needed to jump off of the deep end and spend some time trying to make something from scratch, while figuring out what I could do to earn money.

The biggest fears were that I wouldn't have healthcare and I would have to watch my savings account deplete. Both of those things will likely be true for you if you do this. Ultimately, I decided it was worth it, so I set out without a clear short-term plan to make money. I had vague ideas that I wanted to sell pearl jewelry, consult in software (thanks patio11), and make a SaaS MVP (read more here).

I'm in the middle of all three of those things now, and it's starting to feel normal. I'm working on some contract work I got through Hacker News, making pearl jewelry (eventually want to become an importer), and am basically done with that SaaS MVP. It's certainly more dynamic work, but you might find that it's hard to explain what you do at Thanksgiving and Christmas! I am not sure what the next steps are, but I'm very grateful to PwC for providing a small cushion for this time, and to Hacker News people for catalyzing these realizations.

While I have higher ambitions and put much more thought into this than the above paragraphs portray, I want to list some reasons why this work style may, or may not, suit you.

There is essentially unlimited schedule flexibility meaning your best hours of the day aren't given to your employer with the tradeoff that you must remain disciplined. There is very high earning potential for starting a business, or consulting as a software developer with the tradeoff of not having steady income or any benefits. There is potential to work on fast paced, dynamic projects using tech that's more interesting to you with the tradeoff that you also might not have work to do for long periods of time. There is potential to work 100 hours a week making every penny of it as a contractor with the tradeoff that you no longer are guaranteed at least 40 hours of work. There is potential to work less with the tradeoff that you likely won't earn more. There is the ability to work for 13 hours straight in mental flow without slack and email pings with the tradeoff that you may feel isolated. There is time to meet with friends and family at any point in the day with the tradeoff that your friends and family might not respect your working hours like you wish. You now will get paid for overtime and deadline pushes with the tradeoff that you no longer get paid to take off for holidays and vacation. Your pay can now be scaled as you please without waiting for an annual review with the tradeoff that you might not get work at your new rate. Your pay is limited by the wider contract market rate, or if lucky, by your niche expertise (with no competitive market rates) with the tradeoff that you have to justify the "Self-employed consultant" slot on your resume to all future employers who worry that you are hiding an unemployed period.

While the list above is certainly not exhaustive, these are some of things that crossed my mind when considering if self-employment was a good next step. If you are an ambitious engineer that feels inhibited by the corporate grind, you must determine if you have the power to change your workplace into what you want, or if you need to hit the eject button. If you are interested in more details or just want to chat, say hey at