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.

Monday, December 27, 2021

Using Xcode to Develop a RDBMS

Ever since Apple stopped developing WebObjects, I haven't found a lightweight replacement for graphically designing relational databases like I used to do with EOModeler. Specifically, I wanted a graphical way to create a database by simply clicking and dragging between tables to join them as I demoed at WWDC in 2001.

RDBMS Design from Scratch

Earlier this year, I began a new software project, from scratch, that required a modest size relation database with about two dozen tables. I was surprised to discover that there was no simple RDBMS tool available, today, that could do what EOModeler did back in the mid-1990s.

After putting some thought into the problem, I realized that EOModeler and EOs (Enterprise Objects) were repurposed into Xcode's Core Data framework and renamed Managed Objects. Xcode's xcdatamodeld is nearly an identical implementation of EOModeler tied to a SQLite database. (SQLite is a lightweight RDBMS designed to be embedded in end-user applications instead of the traditional client-server architecture.)

Once I made the connection between EOModeler and Xcode, I reasoned that it might work very nicely for graphically designing the entity relationship model along with the SQL to created the schema. It turns out that I was right and it worked nicely. Here's how I did it...

1. I created an Xcode project that used Core Data.

2. I designed my database schema, graphically, in XCode by dragging between entities to create one-to-many, one-to-one, and many-to-many joins. (Note: Every time I was about to create a many-to-many join, I gave that relationship a long, hard look to make sure I was modeling it properly.)

3. Each time I built my Xcode project (which only contained the database model, no code needed), a new SQLite database was created in ~/Library/Containers/Project Name/Data/Library/Application Support/Project Name. In this folder are typically three files: the SQLite database (.sqlite), the write-ahead log (.sqlite-wal), and a temporary file for shared memory access (sqlite-shm).

4. I downloaded and installed DB Browser for SQLite to access the SQLite database that Xcode created. From there, I exported the database as a SQL file which was then used to create the same database schema in a Postgres database running on Amazon's RDS.

The only gotcha I encountered with Xcode was that sometimes, when I made changes to the database schema that conflicted with a previous database version, I'd have to delete the target folder in Step 3, above, so Xcode would recreate the database from scratch.

It's hard to beat Xcode's ease of use for RDBMS design, even though that's not its primary intent. Please let me know if you're aware of a database client that allows the simple graphical design that EOModeler used to have.

Saturday, December 25, 2021

Adventures in Absinthe

Absinthe fountain
In 1912, absinthe was banned in the U.S., for about a century, due to the misperception that it was poisonous or caused hallucinations. Now, much like the old fashioned, absinthe has regained popularity in recent years and the experience is worth the effort.

Absinthe is a rare drink in that it's not mixed by a bartender. Instead, it's prepared by the consumer, at their table, through a ritual known as louching where cold water is dripped over a sugar cube into a glass with absinthe. High end absinthe is typically more than 130 proof, so adding three to five parts water enhances the flavor while turning it from a deep green to a cloudy green that almost seems to glow.

Absinthe spoons

Absinthe Ritual

The absinthe ritual, known as louching, begins with pouring about an ounce of absinthe into an absinthe glass. These glasses usually have a reserve, or marking, on the bottom to make measuring the proper amount simple. An absinthe spoon is placed on the top of the glass with a sugar cube. The absinthe spoon typically looks like a cake cutter or pie serving knife with decorative slits. Cold water is then dripped onto the sugar which passes through the spoon and into the glass. The sugar water and absinthe emulsify as they mix in the glass giving it a distinctive cloudy, green look with a flavor similar to anisette, sambuca, or ouzo.

Louching
PSA: Never light absinthe or the sugar cube on fire. That's the equivalent of chugging a shot of top shelf, premium tequila with a lick of salt and bite of lemon. A couple of movies, in recent times, showed absinthe being lit and it caught on faster than eating Tide Pods.

Friday, December 10, 2021

Thoughts on Non-fungible Tokens

 I am not a fan of NFTs – at least not yet.

When we buy physical things, we typically have complete control over the item such as a book, cup, or car. It becomes less clear when we buy things like stock or real estate.

After an IPO, when you buy a publicly traded stock, the money you pay (invest) never actually goes to the company. Rather, the money simply goes to the person you bought the stock from. But you do get a say as a shareholder since you are a partial owner of the company.

Another way to think about NFTs is similar to a property deed. You can purchase property (land), outright, without a mortgage. But you can't move it just like Jack's first tweet can't be moved. And, even though you physically own the land you bought, you don't really own it. Stop paying your taxes and then see who owns the land.

Perhaps the best way to think of NFTs is as proof of intellectual property ownership.

So, while I'm not yet a big believer in the future of NFTs, I understand that they could become a deed for digital property... if they're widely adopted. Perhaps the future of NFTs, as digital property, will require a tax to be paid to keep the servers running – just like I pay property taxes to keep the streetlights lit and the roads maintained.


Wednesday, November 17, 2021

Part 2: Rx at Amazon Pharmacy vs Kaiser Permanente

Part 1: Rx at Amazon Pharmacy vs Kaiser Permanente

I tried Amazon Pharmacy for a Kaiser Permanente prescription for a second time, this week, and there was a significant savings. 

Earlier this summer, I compared Amazon Pharmacy to Kaiser Permanente for prescription fulfillment. Back then, the prices were exactly the same.

I tried it again, earlier this week, and Amazon Pharmacy was 60% cheaper than Kaiser Permanente since I was an Amazon Prime member.

Your mileage may vary, but it’s worth a gander. 

Monday, September 20, 2021

Design Thinking Notes

Solving a problem depends on the context in how we think about it.

Engineer Thinking

Engineers solve tame problems with clear, repeatable solutions. Today's solutions solve tomorrow's problems. Engineer thinking starts with a conclusion and then works backwards.

Business Thinking

Business problems don't necessarily have a right or wrong answer, so the goal of business thinking is optimization... increasing revenue, reach, or profitability is the goal.

Research Thinking

Research thinking involves analysis by starting with a premise and then thin slicing it down.

Design Thinking

Design thinking solves wicked problemsThe criteria for success is unclear and constantly changing. You won’t know you've reached the right answer until you found it and you can’t reuse it again. These tend to be inherently human problems.

Design Thinking Solves Wicked Problems


Friday, September 17, 2021

iPhone 13 Pro Order Experience

It has been many years since I ordered a new Apple product on launch day. My old iPhone was long in the tooth and the camera on the iPhone 13 Pro is a perfect reason to upgrade. So, I pre-ordered my iPhone, yesterday, and then set this morning's alarm for 4:40 AM PDT.

Yesterday's pre pre-ordering yielded nothing since it couldn't be found, this morning. So, I went ahead and started an entirely new order.

There were plenty of reports from people who couldn't use their Apple Card to make the purchase. Although this wasn't as bad as the iPhone 4 launch disaster, it was still a significant cause of concern since the Apple Card will give you back 3% as cash when you use it for online Apple orders.

After my order was placed with a confirmed delivery date of next Friday, I made multiple attempts to change my credit card payment from my debit card to my Apple Card. That was not a fun experience.

The first CSR I spoke to was amazingly helpful, but she just didn't have the capability, in her system, to make the adjustment for me. She recommended calling back later when my order had moved to the next step, after processing the initial authorization.

About an hour later, I called back. The CSR I spoke to told me that changing payment options wasn't possible. She said that I'd have to cancel my order and reorder the new iPhone 13. That was obviously not an option because I wasn't willing to wait an additional three weeks due the delay from all the orders that had stacked up since the time I had originally placed my order.

Then I tried something that has always worked for me: tweeting to @AppleSupport. Unfortunately, this was the one time they couldn't help me.

Next, I texted Apple via Messages. They recommended that I call Customer Service specialist at 1-800-676-2775. That did the trick. I could immediately tell that the CSR I was speaking with was highly energized and engaged in solving my problem which only took about five minutes. Persistence pays off.


Friday, September 10, 2021

9/11: The Last Thing I Remember

RADM Craig Quigley, Pentagon Spokesperson on 9/11
A key physiological trigger to memory recall is adrenaline which is why people remember exactly where they were on 9/11. Remembering much of anything else, just prior to hearing the news of the attacks, is difficult.

The last thing I remember before hearing the news of the 9/11 attacks was how beautiful of day that late summer Tuesday morning was. I was living in Northern Virginia, a couple miles from Dulles Airport, where American Airlines 77 departed from and crashed into the Pentagon, about 20 miles away. I had just taken my four month old puppy out for a walk and vowed that I could go for a run at lunch because it was too perfect of a day to not do that. But that never happened. After walking my dog, I was working out with the radio on when I heard that a plane had crashed into one of the Twin Towers. My initial thought was it was a small plane that inadvertently hit the building much like a B-25 that crashed into the Empire State Building in the summer of 1945. As the news reports continued to flow in I turned on the TV and never left my house for the rest of the day.

Exactly one week earlier, my boss and I were driving to a client site at the Navy Yard, in Washington, DC. We both grew up in New York and, as we drove pass the Pentagon on SR 110, we pondered the question, "Which office building was bigger, the Twin Towers or the Pentagon?" Obviously, we wouldn't have reached our destination if that meeting were scheduled on 9/11, due to the mayhem.

Thursday, August 26, 2021

US Marines Documentary: 'Anybody's Son Will Do'

Before leaving for Marine Corps boot camp at Parris Island I watched this documentary, Anybody’s Son Will Do. It's a real and raw take on the boot camp I went through in the 1980s.

On the bus ride to boot camp I read a pamphlet that accompanied the documentary. The one comment that stood out in my mind was that Marines will trade casualties for time. And that’s what we’re seeing at Kabul Airport. This is one of many missions that Marines carry out while supporting and defending the Constitution. Today, Marines are guarding the airport perimeter so not only American citizens can return home, but also so Afghans, who served and supported America’s mission, can get out.

The following piece describes my first day on Parris Island and what led up to it: http://joemoreno.com/TheIsland.pdf