2018 in Review

Date: 2018-12-32 | hamy | review | release-notes | reflections | reviews

2018 was a crazy, wild year. In it, I moved to New York, traveled ~40,367 miles (over 42 trips between 19 destinations in 4 countries), migrated 3 websites across 2 cloud providers, placed 190+ stickers, publicly released 2 code experiments, and ran over 422 miles in 72 sessions.

My name is Hamilton and this is my 2018 Wrapped (in Ham).

My 2018 Wrapped


I went to a lot of really cool places this year and was able to experience a lot of really cool things, but I'd be remiss if I didn't first present my largest adventure of the year - moving to New York City.

Vacations and travel are amazing opportunities to expand your horizons and garner perspective regardless of your interests. Sick of American food? Go travel. Feeling jaded about the state of the world? Go travel. Curious if transit systems ever work like they're supposed to? Go travel.

But vacations and travel are the exceptions, not the norm, and if any of my talk of habits has instilled anything in you, I hope it's at least that I think the norm is far more important than the exception. It's the norm that benefits from the law of compound interest and it's thus the norm that really gets you places.

To move to a new place is to change the norm in many sectors of life from your climate to your social terrain. Accordingly, this shift had a significant effect on each of my life foci (Self, Projects, Adventure) but the largest observed effect has thus far been on the latter - my norm for ~Adventure~ - and thus why we'll start this reflection there.

Moved to New York

At the end of my ~fourth month of New York habitation, I listed out some observations comparing and contrasting NY and DC. For the most part, those observations remain true so I won't recreate them here. Instead, I'll recap some of the cool things I got up to in the city that never sleeps (joke's on them though, I've been practicing for years).

just some cool things:

Bars (with views)!

Bars (with cool backdrops)!

And more bars (with the ability to float)!

Of course, I also found time to do some non-drinking things like hang with fam (though I may still have gotten some drinks), seeing a member of the immediate bloodline on ~33 distinct days (~9%) this year.

Consumed a ton of art.

Stood in front of even more street art.

I've done a lot, but there's always a lot more to do. I keep all my location-based favorites in Maps, so here's a screenshot of my app 6 months ago compared to today:

My Google Maps app today vs 6 months ago

It's a dense forest of interest which is simultaneously overwhelming and invigorating (that should really be the city's slogan). Last year, I found this huge backlog to be a bit more overwhelming than invigorating, but I was able to rearchitect my life to be a bit more sustainable in our last trip around the sun and now that set is looking a lot more like it should - a big list of cool things to do.

In New York and want to go on some Hamventures? Join Hamventures NYC to coordinate.

In my last review, I talked about my experience moving into and then living in a super tiny room (at least for American standards). I still think it was a great learning experience, but have now settled on a place that will allow me to get a desk and I am SOOOOOO EXCITED!!!1 I'll be moving in late February so keep your eyes peeled for move-in Insta stories.

Flew out of New York

As much as I love New York - I really do, it's basically the center of the humanverse - I did spend a fair amount of time away from it. Have a Geolog in place of a complete summary paragraph:

I knew I'd traveled a lot this year, but it didn't really hit me how much I'd traveled til after I'd created the timelapse. It got me wondering, just how much did I travel this year?

So I went and calculated it.

Travel stats

You can find the code for these calculations on Gitlab.

Places traveled

  • Amsterdam, Netherlands
  • Arlington, Virginia
  • Atlanta, Georgia
  • Berlin, Germany
  • Boston, Massachusetts
  • Chicago, Illinois
  • Detroit, Michigan
  • Hilo, Hawaii
  • Indianapolis, Indiana
  • Kona, Hawaii
  • Los Angeles, California
  • Nashville, Tennessee
  • New York City, New York
  • Philadelphia, Pennsylvania
  • Salzburg, Austria
  • San Francisco, California
  • Seattle, Washington
  • Vienna, Austria
  • Yosemite, California

Total miles traveled:

  • by plane: 36,219
  • by train: 2,985
  • by bus: 468
  • by car: 695
  • total: 40,367

Frequency by travelType:

  • plane: 25
  • train: 13
  • car: 6
  • bus: 2

The circumference of the earth is 24,901 miles so, in aggregate, I went far enough to circumnavigate it ~1.6 times.

And here Evan thought it was ridiculous that I thought I had flown 10 times this year...


In my last update in June 2018 (yes, I skipped the fall one - sue me), I talked about "refocusing on my magic", with that magic being the creation of things that do things into perpetuity* through the medium of software. I won't say that I've been as diligent about this pursuit as I could have been, but I do believe I've been leaps and bounds better than I was before and my life satisfaction has risen accordingly. I believe the only true goal in life is to be happy so realizing gains in this bucket is a definite win.

*under ideal circumstances which likely will never happen but sometimes it's the idea that counts

In New York and want to create/share some cool stuff with others? A few weeks ago some buddies and I thought it would be fun to get together regularly and do just that so we created Make Sessions NYC. We're still trying to get all the details squared away but we've thus far had two sessions and are planning on many more in the future. Join if interested, no obligation to actually come.

Moved iamhamy domains to ze cloud

This year, I undertook a large endeavor to consolidate my online presence under one virtual "roof" in an effort to 1) unify my brand, 2) get off "crufty" solutions and gain full control over my properties, and 3) force myself to stop being lazy and learn technologies I've said I wanted to learn for months/years.

If you're interested in a more in-depth explanation of my motivations behind the brand consolidation and migration, you can read it in my June 2018 review.

The migration happened in several phases. For a more in-depth explanation of the migration process and, generally, how my sites work, read the migration announcement post.

  1. site spinup
  2. site configuration / content creation
  3. CI/CD (Continuous Integration/Continuous Development) build out
  4. (really more of a 3.5) more cloud
  5. flesh out site content

The state of The Hamniverse

With the completion of these newest upgrades, The Hamniverse is going strong. Some standout features from this year:

With projects, much like life, there is always more to do. My hope is that this migration has put my blogs in a state where the "more" are just features and not entire paradigm shifts. But, like life, we never really know and just have to play the odds and see what happens.

Want to stay more regularly updated with the goings-ons of The Hamniverse? Join the mailing list or subscribe to the HAMY.BLOG rss feed via your favorite rss reader (both linked above) to get my monthly release notes like:


As I mentioned in the overview of iamhamy, I've been working on productionalizing (releasing to broad audiences) a selection of projects I've worked on in recent years. I realized that if you want people to use the projects you've created, you often need to do more than just create them. You also have to market them (for exposure) and make it easy for potential users to try them (so they don't immediately bounce).

Productionalizing something is often a non-trivial amount of work. It at least requires documentation and sharing and often requires a good amount of scaffolding to meet your potential users where they're most likely to be. In the case of Geolog, this scaffolding came in the form of UI interactions to allow for the uploading of files directly to the browser where before I was hard coding json as a string variable - something that only worked because I had direct access to the source code. The extra scaffolding wasn't difficult per se, but it did take extra effort on the scale of ~100% of that required for the core creation.

Due to the extra overhead, productionalization does not make sense for every project. There will be those projects that are done purely for experimental purposes and/or, for one reason or another, will not be pushed further (take for example my entire junkyard-script-calculations repo whose purpose is to hold one-off calculations in version control). Through an internal investigation, I've found that many of my projects were created with the intent of productionalization but never reached that stage due simply to execution failure.

Now that I've realized this oversight, I've decided to create my projects (where applicable) with productionalization in mind from the outset. This mindset will inevitably entail additional overhead, but my belief is that awareness of this tenet generally leads to better software with respect to both your users (they are first class concepts in your designs, experience quality should improve proportionally) and quality (you're forced to componentize based on use-cases rather than writing as if throwaway/exists independently in its own dimension).

My general hope for 2019 is that this focus on productionalization will astronomically increase my outwardly-visible project velocity but only time (and effort) will tell. Check back in a few months for updates.

Now on to the experiments themselves:


As you've seen in previous sections of the post, Geolog produces timelapsed geolocation markers based on the input of ordered geolocation data. In other words, you give it data and it gives you a timelapse. Simple.

Here is a geolog of my adventures in NYC in Q1/Q2 of 2018. At this point in time I was trying to log every single place of note I went to and was moderately successful at accurately logging the data.

You can read more about it at: Geolog project page

You can play with it at: Geolog demo


Moon-eye is an audiovisualizer in the form of an eye. Basically it takes audio in, does a transformation on the audio to get a waveform, then uses features of that waveform to determine what it should be doing. In this case, the decision is "do I dillate the pupil or not?"

Like the music? Check out my boi Steve

Looking for something longer? Here's a mix by Griffin, visualized:

You can read more about it at: moon-eye project page

You can play with it at: moon-eye demo


It's no secret that I like art. Like travel, I see it as an opportunity to gain/share perspectives on the world with a very low barrier to entry. A few years ago (likely triggered by my time in Austin, TX), I got really into street art. It was a genre of art that was often very blunt, topical, and loud. Perhaps most of all, it was very public which is to say that the barrier to entry was effectively zero for both the producer and the consumer.

If you could find a wall, you could put your art on it.

If you could see a wall, you could acknowledge the piece.

While in Austin, I found some street art and thought to myself "I could do better". Have I mentioned I like challenges? Fast-forward about a year and I finally put that statement to the test by creating my own stickers based on designs I had created myself.

View this post on Instagram

The first batch arrives.

A post shared by HAMY (@hamy.art) on

Is it better than some of the art I've seen? Yes

Is it as good as I'd hoped? Not quite, but life's a process

Today, I have ~four active designs, one of which is currently handicapped by its print material (doesn't fair well in weather) that I bring with me pretty much everywhere. Somewhat surprisingly, they also happen to pop up in a lot of the same places I go. Weird, right?

I like data so starting ~February I began keeping track of my sightings of these stickers.

You'll notice two "new" designs pop up near the end. That's the last print batch consisting of some designs I'd been sitting on for a few months. Now they've seen ~the world~.

Want to follow my art? @hamy.art


Though my day-to-day actions may often seem contrary to this statement, ultimately 2018 has been filled with thoughts of self-improvement with the general aim of approaching an answer to the question "How do I lead a long, prosperous, and fulfilling life?".

At times, I have attempted to:

  • eat healthier
  • exercise more and differently
  • explore different perspectives
    • minimalism
    • frugality
    • fire

I haven't been 100% successful/diligent at any one of these, but I have learned a lot of important lessons/principles that I hope to continue to apply habitually. It won't happen 100% of the time, but the norm is more important than the exception so the occasional exception is fine.

Certainly more to come in this focus in the next few months.


One thing I did get back into pretty habitually is running. Running has long been a source of satisfaction for me but there are always times where I drift away from it before eventually coming back. Last year I bought a bunch of cold weather running gear to help fortify against this drift during the winter, which I'd observed as one of the more drift-vulnerable seasons for me.

And yeah, it was also intended as a bit of a guilt trip - (in my mom's voice) "you spent hundreds of dollars on nice running gear so you could sit on your ass and watch cartoons?!". Thanks ma, still motivating me from ~750 miles away.

To help positively reinforce myself to be habitual, I started tracking my running data via Strava (mostly because they made that cool map thing last year). Here's that data, so future self, try to do better:

2018 totals:

  • distance - 422.3 miles
  • time - 59h 38m
  • elev gain - 10387 ft
  • runs - 71


I used to extensively write up my goals for the next unitOfTime at the end of these posts but have begun to believe that, by doing so, I was actually performing worse wrt them than I would have had I not shared them at all.

The general idea is that by sharing my goals, people would have the opportunity to talk to me about them (one of the reasons I started doing reflections in the first place). But often they would be words of encouragement which, although from the outside seems like a good thing, gave me satisfaction with respect to that specific bucket as if I'd made progress towards it when, in reality, I'd done nothing at all. Compound this by several goals and several responses each and eventually I was riding a wave of satisfaction built totally on the sharing of my goals rather than the achieving of them.

By not sharing goals, I hope to refocus my satisfaction cultivation on only those sources over which I have direct control and that I'd like to encourage - observing, creating, doing - which I hope leads to a virtuous cycle of reinforcement.

I wish I had more hard data to support/disprove this claim but some things are just hard to measure well. In the face of that, my plan is to just keep trying it til it feels like it's no longer working at which point I'll try something else. #life, ya know?


I wrote the first draft of this reflection on a wifi-less 6-hour train ride from Amsterdam to Berlin and finished it during the sporadic windows of down-time we had during the rest of my European hamventure which is to say my in-line, online fact checking process has been slightly hamstrung across the entire development cycle. So, if you see something wrong/misspelled/weird let me know so I can fix it!

If you're interested in getting general updates from The Hamniverse, consider subscribing to my email list or RSS feed.

That's about all I've got to say. Expect some more regular posts in the form of monthly release notes and try to be helping more than you are hurting.

I hope your 2019 is filled with longevity, prosperity, and happiness.

Live long and prosper.