My name is Steve Kamerman. I’m an entrepreneurial tech geek. I have spent almost every day since sometime in 1995 advancing my knowledge in computer software & hardware, physics, business and philosophy. I live near Washington DC in the beautiful Shenandoah Valley, Virginia.
I am currently the COO and co-founder of ScientiaMobile and spend most of my time solving complex problems.
I try to spend an hour a day reading something substantive. I tend to tackle one or two subjects at a time, spending enough time consuming quality content to get a conversational knowledge of the subject. This iteration of my site, for example, was my deep-dive into the JAMstack.
Below is a list of my current and past subjects of fascination, with something meaningful that I’ve gleaned from them.
I’ve learned many languages to a proficient and professional level, but Golang is my new favorite. It was created to be straightforward, easy to write and very fast. Concurrent processing is a first-class citizen in Go, and thread-safety is embedded in virtually all of the default implementations of global packages, so it is really, really easy to implement true parallel-processing algorithms. I spend a lot of time working with huge amounts of data (billions of HTTP requests, millions of images, etc), and when I am not able to use a more well-suited tool (Hive, Hadoop Map/Reduce, Spark, Athena, Elasticsearch, InfluxDB), I increasingly find Go to be the best tool in the box.
I learned Go by porting the Javascript-based WURFL.js mobile device intelligence system over from PHP. It was a refreshing language to work in. The idiomatic way to write Go leaves code structures very flat and without much abstract scaffolding, which is a welcomed change, especially for microservices.
Philosophy
Our greatest challenge today is effective communications. The world has become incredibly connected and internet access is both ubiquitous and instantaneous. The sum of human knowledge is literally at our fingertips, and yet we find ourselves talking past one another. The polarization driven by the media, online advertising and social networks has created a hostile environment in which each person takes the least charitable interpretation of every other person’s view, while ascribing the most negative intent. Does the half of the United States that you disagree with really want to destroy the country? Of course not. Do you think I can predict 90% of your worldview based on less than 5 questions? Almost certainly, yes. How much agency do you even have in forming your core beliefs? Do we have conscious, cognitive agency at all? Probably not.
The world is changing. Humans have two main types of marketable labor: manual labor and knowledge-based labor. In the pre-industrial era, virtually everyone that was working was doing manual labor. The industrial revolution arrived and threatened everyone’s earning potential. People famously predicted massive unemployment as the workers were replaced with machines and left with nothing to do. This didn’t come to pass, however, because the population exploded, quality of life increased exponentially, and eventually a large percentage of the workforce transitioned to knowledge-based jobs. Within a couple generations there were office buildings full of people, shuffling paper around and doing myriad other tasks that required no manual labor. Fast forward to the 21st century, and there is very little manual labor left (at least in the West). It seems that the concern of large swaths of people with nothing to do never materialized. Free(ish)-market capitalism solved this problem by facilitating the exchange of ever-more advanced necessities.
Now we are on the horizon of another revolution: the artificial intelligence revolution. Artificial intelligence is an interesting thing. Consider a baby. Babies are born into this world with very little working knowledge or intelligence. In everything they do they are imbibing information about a world they know almost nothing about. Totally helpless and dependent on others for every single need. Now imagine I told you that this baby had some very special abilities. When it reaches the age of 30, it will stop aging. Its body will remain healthy indefinitely and it will retain the neuroplasticity (ability to learn new things) of its youth. This person will continue to accumulate knowledge and get better and better at every task. No imagine this person lived a hundred million years in the current environment, slowly becoming an expert in everything that is worth knowing. They are now smarter than everyone else on earth combined. This is analogous to the inexorable advancement of AI. We are at the precipice of an AI explosion, but for the time-being, we’re just looking at it and chuckling at its incompetence - we say “Alexa, add roast beef to my shopping list”, it answers back “I’ve added toast beef to your shopping list” - ha! What a hoot these so-called “artificial intelligences” are! They seem so dim-witted and contextually vacant that you have to look up what things you can say to them because you’re unlikely to stumble on them in any other way. But eventually they will get good – really, really good. Then I predict we will be briefly satisfied. Once Alexa is indistinguishable from your new neighbor, she will definitely be more helpful! Now that she’s grown from baby-level intelligence to adult-level intelligence, things feel like they are on the right track. Unfortunately, though, she doesn’t stop getting smarter and you do. AI is likely to increase in ability at an exponential rate. While you spend 8 hours sleeping (or 5 in my case), AI in a lab somewhere has spent a thousand years of equivalent time learning everything on Wikipedia, and with the time left over, it has spilled out into the greater internet, soaking up everything in sight.
Once AI does everything better than you do, faster and at a lower cost, your knowledge-based labor is obsolete. I do think we will adapt, and I do think this gloomy-colored future will be more utopian than dystopian, but it will require some serious consideration and planning. We will not be the smartest species on the planet for long, and we will need to ensure that the AI’s priorities are aligned with our own.
Photography
I am an enthusiast landscape and photographer and astrophotographer. There is something very satisfying about capturing an image. When you gaze at a surreal scene in real life, you are totally embedded in the context. You feel the cold chill on your neck, wet from the 2 hour hike that you’ve just finished. The light, which until now has been a faint glow on the horizon, has just broken free from the landscape and pierced your iris. All at once you feel the heat of the morning sun, having traveled one hundred million miles to get here. It warms you like a cup of hot tea and your goosebumps retract.
Now, you might take out your phone and snap a picture at this moment to show your friends, but something’s amiss. The picture looks terrible and uninteresting. The challenge of a landscape photographer is to capture a scene using elements which are almost entirely outside of your control, and enrich it with enough context or mystery to convey the desired emotion to the viewer.
I have fallen in love with photography in the same way that I fell in love with music (I was a pretty good singer a couple of decades ago). I don’t know if other people view my work and appreciate the meaning, but I enjoy it, and since I took the picture, I know exactly what the context was.
Take this photo, for example:
Five minutes before I took this picture I was asleep. I drove out to Shenandoah National Park in Virginia, USA the previous night to photograph the Milky Way galaxy. After a few hours of astrophotography, I found an east-facing overlook and parked my car at it, then I set my alarm for an hour before sunrise and when to sleep. My alarm went off and I saw the scene above out of the window of my car. A truly incredible sight to behold.
Here are some other pictures, but there are many more on my instagram feed (stevekamerman)
JAMstack
It’s been a while since I spent any time thinking about frontend web development. Things have changed so much in HTML, CSS, Javascript and development paradigms that a modern codebase is almost unrecognizable from one that’s 10 years old. As I interview front-end candidates for a new position, I’m mostly hearing about the MERN stack (as well as MEAN and MEVN), however, I keep hearing the word “JAMstack” pop up in strange places. My friend and business partner Luca Passani just returned from a front-end conference with a small O’Reilly “book” on the subject (written by Netlify), so I thought I’d give it a read. It was interesting indeed, although I’d say the benefits are greatly overestimated.
The JAM in JAMstack stands for Javascript, APIs, and Markup. Sites are created by using tools like Hugo or Gatsby to scrape your content (from markdown files or another CMS, for example) and produce the entire website out of static HTML files. Everything is on the frontend, there is no backend server at all. All interactions that need a backend are accessed via Javascript, and generally these should be third-party APIs that provide the functionality you’re looking for. To publish a JAMstack site, you simply upload the site somewhere and serve it through a CDN (or use a GitHub post-deploy hook to deploy it for you as Netlify does).
After reading the book, I was curious, but unconvinced. I had this abandoned blog (the one you’re reading) that was more than 10 years old and decided to convert it from Wordpress to JAMstack using Netlify’s Victor Hugo boilerplate and the make-wp-epic utility, which converts a Wordpress blog to front matter markdown files compatible with Hugo.
Overall, I have to say that I am impressed. The system is more mature than I expected, and the problem of regenerating the entire site on every change is totally mitigated by the tooling, which rebuilds the site automatically in milliseconds. Although this seems like an exercise in maximizing over-engineering, the reality is that this type of tooling is already required for everything else that you care about anyway (Javascript transpiling, CSS compiling, minification, etc). I found Hugo to be quite nice although there seems to be less convention than I’d like. The location of folders and files seems to diverge in the many popular boilerplates, leading to weird problems integrating themes. In the end, I found it to be a valuable exercise and I’m going to stick with JAMstack for my personal blog. It also seems like a good choice for other content-rich sites that don’t have lots of dynamic content. You can certainly have dynamic content on JAMstack, but you have to do everything in Javascript, which you pay for in web performance. If you haven’t run into JAMstack in the past, I’d suggest giving it a look!
Equal Opportunity
What is worse than inequality of outcome (ex: income inequality)? Inequality of opportunity is worse. For free-ish market capitalism to raise all boats, all people need to be able to compete on an equal playing field, to the extent possible. In reality, this is far from equal since wealthy people have an advantage here. But I’m not interested in making rich people poorer, I’m interested in making poor people richer. The bottom 5-10% of the wage-earners/wealth holders have so few opportunities that 9 of their 10 best career options might be illegal or self-destructive. I see this as a systemic failure. The American Dream is that of a meritocracy, and while it will always be possible to “game the system”, the people at the bottom have no leverage find this to be just another dream and nothing more. In metro areas (which account for 50% of the population), the largest drivers of this inequality are historic racism (people were ushered into ghettos by race in the recent past), systemic racism (not a system full of racist people, but a system that affects one race more negatively than others), and lack of safety (people are forced to make friends with criminals to ensure their own protection). An amazing book on this topic is The New Jim Crow, by Michelle Alexander In rural areas the problem is more tied to education and a drying-up of manual labor jobs (although these also affect metro areas).
I was interested in electronics for as long as I can remember, but at some point around age 12, I really caught the computer bug. Computers in the 90s were basically just complicated electronic devices, and in those days, breaking out the soldering iron to install some new memory was not unheard of.
By the age of 14 I was building computers for other people, and my parent’s basement was basically converted into a computer repair shop.
By the time I graduated high school, I had built dozens of computers for friends, family, businesses and even a few computer labs, and had earned more than a dozen professional certifications. It was a great time to be into computer hardware - I had boxes of computer parts arriving every week, and always love the thrill of a new CPU, faster CD-ROM drive, and a better modem. My how the times have changed! These days, I guess we can just look forward to new cloud features, but I’ll never forget the smell of a brand-new motherboard 😄
Software Development
At some point in the last 20+ years, I have been an expert (or at least professionally proficient) in Golang, PHP, Python, Perl, Ruby, C#, VB.NET, Arduino C/C++, Classic ASP, PCRE (and other regex flavors), SQL (MySQL and MSSQL/T-SQL), Bash, BASIC, HTML, CSS, Javascript, Actionscript, Flex.
I first learned to code in BASIC on a RadioShack/Tandy TRS-80 (circa 1979) that I bought at a thrift shop the age 13. Due to my rather humble beginnings, this was the best I could afford. Writing my first few programs opened up a world of infinite possibilities for me. In the tangible world, you’re limited by resources like money, physical storage space, having to clean up your room, etc, but in the digital world your creativity can run wild. Your intangible creations can grow in complexity and completeness continuously and you never “run out of code” (although I did run out of audio cassette tapes to save my code to 😅).
Initially I wrote utilities to assist me in managing servers and network equipment, since very little was automated in the 90s. I eventually started writing web applications and other software professionally in the early 2000s and I have been doing it ever since (in parallel with many other things).
Learning to express logic in the language of software at a young age prepared me very well for the world. Problem solving, logical deduction and critical thinking are more important than almost all other traits (interpersonal communications, empathy and objectivity are also near the top).
If you have never been exposed to code, I would strongly encourage you to give it a try! Find something in your life that could be made easier by automation and commit yourself to solving or improving it with code. When you are finished, you can then step back and determine if it was a fruitful effort.
Honesty
When I was in high school I was the class clown. Growing up with depressed parents and attending multiple funerals (accidents, cancer, suicides, etc) before the age of 18 gave me plenty of reasons to doubt my purpose, and making people laugh (often at my own expense) was a major source of superficial entertainment for me. Underneath, however, was a festering emotional wreck that was failing to make sense of the world.
After putting on a show for everyone around me for several years, I came to realise that there was a significant cost to my artificiality. Constantly masking my feelings was incurring a debt that seemed to accrue interest and late fees. Eventually this mask became untenable and it had to be removed.
In my early twenties, I decided to remove the mask and simply let people see me for who I was. I decided to stop lying and be honest and authentic about myself. I figured that if it backfired on me, I wouldn’t be much worse off, so I had nothing to lose. This has turned out to be one of the best bets that I’ve ever placed. For the next ten years, honesty was my mantra - it defined this period in my life (it was followed up with my next ten-year epic on objectivity).
The simple truth is that there is almost always a higher cost in lying than in truth-telling. When you lie, you carry the burden of tracking who you’ve lied to and what you’ve told them. When things start to unravel, you have to swoop in with ever-more tortured explanations until finally the house of cards collapses. When telling the truth as a matter of principle, people find you authentic and trustworthy. You’re not constantly forcing your speech through your cortical BS filter, so your stress levels decrease. Science has found a direct link between increased stress hormone levels and shortened lifespan, so lying literally makes you die faster.
For more great information on lying, check out Lying, by Sam Harris. Sam does a great job of articulating the cost of lying from an amoral perspective.