A few years back, I did some work for a sensor network startup. Since then, I’ve always been on the lookout for new sensor hardware and tools. I just moved into a new apartment, and discovered the VegeHub when searching for soil moisture sensors to use on my flower boxes.
The VegeHub supports sending your data to a few online storage providers (a.k.a The Cloud), or to a custom web service. I considered adding support to BigSense, a sensor web service I wrote in Scala. Instead, I decided it would be a good time to experiment with a time series database. I wrote a small Python Flask application called SenseFlux to store VegeHub data in InfluxDB. In this post, I’ll show you how you can setup SenseFlux and InfluxDB using Docker, and graph sensor data using chronograf. Let’s get started.
Years ago, at a white elephant Christmas party, I ended up with leopard print keyboard stickers. I bought a new keyboard to get the most out of these stickers, and used it for months as the stickers began to wear off. However, the space bar broke in less than a year. I had gone through many keyboards over the years, and all of them had been disappointing with their disposable build quality and lack of longevity. I decided to try a Das Keyboard Ultimate. It was my first foray into the world of mechanical keyboards, and would lead to many years of trying different key switches and purchasing custom key caps. This post is a brief history of the various mechanical keyboards I’ve bought, sold and given away over the years.
I struggled with the design of the Johns Hopkins data visualizations for the recent pandemic. Under the surface, the visualization powered by an overpriced commercial software known as ArcGIS. I tried to work with the data myself and got some basic visualizations working. Along the way, I started to see some other great visualizations, and some that were terrible. The data is collected in time series by day, but it’s measured inconsistently depending on the reporting guidelines of each country or region. This gives the data some unusual aspects we’ve never really encountered before.
On April 16th, the deaths per day for the state of New York spiked to 4,591, where it was around 2,000 before and immediately after. New York retroactively adjusted several previous fatalities which were likely caused COVID-19. The reasoning for this change is based around average death rates for the year far exceeding what is typical, and a similar under-reporting may have taken place in Italy. The trouble with this spike in relation to the Johns Hopkins data is that it’s tacked onto the end of the time series instead of being applied to the dates when those deaths occurred.
In 2013, Google discontinued their Reader web application. It had become a dominant application for RSS feeds, in a time when many felt RSS was dying. After Google discontinued their terrible product, people seeking alternatives found other web applications and quickly discovered tools that weren’t pieces of garbage. Readers like Feedly, Newsblur, and others, would report bad feeds and errors. Google Reader would instead silently fail, often leading people to believe their favorite bloggers had simply stopped publishing. Today, few people use RSS Readers, relying instead on liking Facebook pages, subscribing to YouTube channels or following people on Twitter. However, all of these methods are totally inadequate in relaying all potential updates between content providers and their audience. The best way to keep track of the people and content you care about is to subscribe to their RSS feeds using a good reader app, many of which work both on the web and on mobile.
I have owned way too many cellphones. I’d like to break free of Android without switching to iOS, but one of the applications I’m required to have for work is Okta Verify. Moving from Okta Verify to an open source solution was easier than I expected, but the path to discovering how to do so was not a simple one. The following explains how to get the secret used for Okta’s multi-factor auth codes, and use it in open source alternatives to Okta Verify, as well as in Python scripts.
I’m old enough to remember the era before cellphones. Back in high school, a group of us once planned a caving trip. We all met at the parking lot beside the tennis courts at 8am. “Where is Nick?” someone asked; Nick being the person we were waiting on. Someone took 35 cents, walked over to a payphone, and came back to us saying, “His mom said he left 30 minutes ago.” Today, we don’t have to blindly wait on our friends. We can send them a text, or organize outings using group chat software. Phones have drastically changed the way we plan gatherings and interact with one another, for better or for worse. Here is my personal history of cellphones, from my first black and white prepaid device, all the way up to the modern era of the Google/Apple spy devices we all carry around in our pockets.
In 2010, several researchers at Yale attempted to look at biological systems versus computer software design. As would be expected, biological systems, which evolved over millions of years, are much more complex, have a considerable amount of redundancy and lack a direct top-down control architecture as found in software like the Linux kernel. While these comparisons aren’t entirely fair, considering the complexity of biology, they are a fun thought experiment. Microservices are a new-emergent phenomenon in the software engineering world, and in many ways, microservice architectures evolve in environments that are much closer to a biological model than that of carefully architected, top-down approaches to monolithic software.
In high school, I had a band director who would rarely say anything to his students which wasn’t related to music, marching or directing us. When he did talk to us, typically before a big competition, all two-hundred students in our marching band would be silent and attentive. He retired my sophomore year and was replaced by another band director who loved giving us pep talks all the time, so much so that most people constantly tuned him out and ignored what he had to say.
The filmmaker Kevin Smith plays a reoccurring character, named Silent Bob, in many of his movies. Silent Bob rarely ever talks. When he does, his lines are intended to be profound or at least memorable, even if they’re very simple. I rarely post on social media, unless it’s to direct friends to content on my website, which I host independently. In normal social interactions, when a person doesn’t talk much, more weight is often given to their words when they do. However, social networks, like Facebook and Twitter, use custom algorithms for sorting posts. Although these systems are closely guarded secrets, they seem to reward people who interact with their platforms more. People like myself, who rarely post content, often get less exposure than those who frequently interact with other users.
I started creating websites in the late 90s, while I was in high school. In the early 2000s, while in college, I kept a professional website with my coding and web design work, as well as a personal journal. Some time after college, I also created separate political and philosophical websites, maintaining all of them using a WordPress installation. While backpacking around the world in 2015, I migrated all my WordPress sites to Jekyll and combined their look and feel. In September of 2019, I finally unified all these independent microsites back into BattlePenguin.com, with full redirects from the former websites. The following is a history of some of these websites, and the technologies they used.
Voat is a link aggregation platform, where users can submit text or links to content, comment on existing submissions and vote both links and comments up or down. It’s essentially a Reddit clone, but, due to several bad design decisions, it has become known on the rest of the Internet as a community that promotes intolerance and hate speech. Voat didn’t start this way, and many of its early users were similar to those in the communities on other social networks. But due to a series of design decisions, including its contributor point systems, Voat was constructed in such a way as to converge on narrow view points and become the platform that it is today.