Monday, May 9, 2022

Before the Cloud

Circa 2003
I was reminiscing through some old photos this past weekend and I came across these pictures of my old server farm…

In the days before the cloud, I hosted a server farm at home using five static IP addresses on a DSL circuit with 5 Mbps downstream and 512 Kbps upstream (that was the fasted DSL I could find in 2002). Utilizing old laptops was great since they effectively had built in UPS (uninterruptible power supplies).

At Apple, when an employee left the company or upgraded hardware, the old hardware would pile up in closet until it was overflowing and then we'd be given the greenlight to take home whatever we wanted before it was thrown in the recycle bin. By that point, the hardwas was several years old, but still very useful to me. Eventually, after I left Apple, I moved to Mac minis which ran headless with an external UPS.


Circa 2009

Servers
Web server (Apache)
App server (WebObjects)
Database Server (OpenBase)
Mail server (running on Windows 2000)
DNS server (QuickDNS)
File server (AFP)

I typically named the servers after places I had lived: Capitola, Nairobi, Djibouti, Carlsbad, Huntington, etc. This setup served me well for more than a decade. 

Tuesday, February 1, 2022

The AI Challenge: Feeling and Understanding

A key goal of AI is to reproduce human behavior at scale. AI seeks to reason on input and explain on output while improving (learning) with each experience.


Computers are very good at processing data to turn it into information through logic. Computer systems can then store this information at a global level and attempt to turn it into knowlege by applying it locally. But it's currently very challenging for computers to turn knowledge into wisdom in a personal context.

AI Challenge

The challenge with artificial intelligence (AI) is that computers are inherently thinking machines, trying to imitate humans. However, people are not thinking machines, we are feeling machines. Simply look at a baby which experiences life through feeling, not thinking. If a baby's hungry or tired, they cry. When a baby's entertained, they laugh.

Teaching a robot how to walk is vastly different than teaching a baby how to walk. Robots use precision (digital) logic to balance and walk while babies feel their way to becoming bipeds. I'm not advocating that people always go with gut feelings – there's an old saying, don't believe everything you think – but it seems that we need a more fundamental layer that's missing from AI.

Refactoring vs Porting vs Optimizing

I've heard people use these terms, interchangeably. Since good definitions make for clear ideas I wanted to explicitly define them.

Refactoring: Restructuring computer code (factors), without changing its external behavior (functionality), to make it more readable, or change its design, reduce complexity, etc.

Porting: Changing code so it’ll run in a different execution environment (language, operating system, CPU, etc) than originally designed for. This makes the code more "portable."

Optimizing: Modifying code to be more efficient without changing its functionality so it runs faster or uses less memory, etc.

Frequently, code changes focusing on one of these areas will have other benefits. For example, when porting code, it might also be optimized and refactored. 

Tuesday, January 18, 2022

Scaling USPS.com for Free COVID Test Kits

USPS.com utilizing AWS's CDN
Many will recall, back in 2013, all the problems with signing up for healthcare on the Affordable Care Act website because the website couldn't scale and handle the load.
Realistically, how do you scale a website of that magnitude, from the git-go, for millions and millions of people? It's beyond difficult, even today.

Gmail controlled growth (scale), when they rolled out in 2004, by giving each user a limited number of invites to share with others.
Facebook controlled growth by only rolling out on college campuses.
Twitter had no way to control growth, in the early years, so their servers were overloaded and frequently went down (aka Fail Whale). 

So far, I'm impressed with the form page at USPS for ordering free COVID test kits. For starters, it's nothing more than a simple HTML web form. But, even that can overload servers and interfere with routine usps.com web traffic.

Instead of going to www.usps.com to order free COVID test kits, which is running on a single IPv4 address, users go to special.usps.com which has four separate IPv4 address pointing to CloudFront which is an AWS Content Delivery Network(CDN). That's a very smart way to load balance Internet traffic across multiple servers.

Saturday, January 8, 2022

I Am Not Your Guy (yet)

I am not your guy when it comes to cryptocurrencies, blockchain, NFTs, and quantum computing. At least not yet. 

I understand how these different technologies work, but I don’t yet see a very practical, revolutionary business use other than picks-and-shovels and SPACs. People seem to be confusing my knowledge of these technologies for a deep, optimistic passion to work with them on a daily basis.

Cryptocurrencies

Cryptocurrencies, like Bitcoin, aren’t yet currencies that we use on a daily basis. I've shared my thoughts in 2017 and 2018. While traders and speculators are making money investing in cryptocurrencies, it’s a closed system in that it’s all technical trading with little insight into the fundamentals that move its price. This is especially true when compared to other commodities and futures. And, a big issue with cryptocurrencies is it’s a bit too much like cash. You still need a place to store cryptocurrencies other than your hard drive (i.e. this is why we don’t store cash under our bed mattress). So, you need a “bank,” known as a wallet, to store your cryptocurrency on someone else’s computer/server. 

Blockchain

Blockchain is a computer science data structure and protocol, similar to other data structures and protocols like stacks, queues, linked lists, binary trees, hash tables, etc. However, blockchain is different in that it’s become an overhyped fad. Outside of software engineering, people don’t run around touting hash tables vs binary trees. Why is blockchain so hyped up? Because it goes hand in hand with cryptocurrencies. And while it has technical utility, both proven and projected, it’s not a business benefit, rather it’s a feature.

NFTs

Non-fungible Tokens (NFTs) are something that I’m not yet a big fan of, as I mentioned last month. As more assets move into the digital realm of cyberspace, NFTs could become the deed of authenticity and ownership.

Quantum Computers

Quantum Computing, as I've written about, is still in its infancy without a practical use that touches consumers. Currently, quantum computers are used to design quantum logic circuits, similar to analog and digital computers of the 1940s and 1950s (and, nand, or, xor, etc). The next step in quantum computing’s future will be programs followed by applications in order for it to touch our lives on a daily basis.