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.
Back before I first left the United States in 2012, I’d often use price comparison websites when trying to find parts for computers and system builds. These sites tracked prices from hundreds of small vendors, some of which had brick and mortar stores, others wer storage warehouses, and others were simply drop shippers. Upon returning to the country, I found that most of the old comparisons sites I used were void of those smaller individual stores, replaced by less than a dozen of the big retailers. While I was away, the era of the mom-and-pop e-commerce website had ended, with most retailers now using marketplaces provided by the large players like Amazon, eBay, Newegg and others.
I’m not one of those people that can buy a phone and start using it. I usually root my device and flash a custom ROM not long after I first turn it on. Where normal people can start using a new device immediately, it usually takes me a day or two before I can do the same, dealing with some weird edge case of missing documentation, just to get basic administration rights on my mobile device. Although Razer has official instructions for unlocking their devices, and there are many third party guides, I attempted to avoid a critical step mentioned in their documentation. Even when I followed it, I still ran into problems, and found it fascinating that Razer devices can only be flashed via a USB 2.0 link. I’ve documented some of my error messages here, in case anyone is confounded by similar issues.