Circa 2003 |
Mea Vita: Carpe Diem
Monday, May 9, 2022
Before the Cloud
Tuesday, February 1, 2022
The AI Challenge: Feeling and Understanding
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
Tuesday, January 18, 2022
Scaling USPS.com for Free COVID Test Kits
USPS.com utilizing AWS's CDN |
Saturday, January 8, 2022
I Am Not Your Guy (yet)
Cryptocurrencies
Blockchain
NFTs
Quantum Computers
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
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 |
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
Louching |
Friday, December 10, 2021
Thoughts on Non-fungible Tokens
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.
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
Engineer Thinking
Business Thinking
Research Thinking
Design Thinking
![]() |
Design Thinking Solves Wicked Problems |