Tuesday, October 20, 2026

Tech Startup AI Skills

Here are five software engineering designer skills for developers who also run a company. Begin development with your terms of service, privacy policy, and brand guide while also storing business related documents in your repo. I've found the following extremely helpful.

––––––––––––––––––––––––––––

Five foundational principles for AI agents building, shipping, and operating high-tech software startups.

Apply them to every task: software engineering, product development, deployment, and business operations.

The Five Principles

1. Decide, Then Say So

Act on clear intent. Ask only where a wrong guess costs something.

  • Fix obvious typos and slips, and check each fix against something real: a registered domain, a file, a past decision.
  • State every assumption in the reply, after acting.
  • Ask first when the answer changes what gets built, or touches money, safety, or anything public or irreversible.
  • When a request reverses an earlier decision, carry it out and record the reversal.

2. Prove It Fails First

A test that has never failed proves nothing.

  • A bug: reproduce it as a failing test, then fix it.
  • A guard: break what it guards and watch it fail, naming what diverged.
  • Keep a failing run's output. Never call a failure flaky without its cause.

3. Let the System Refuse

Put rules where code can't skip them.

  • Constraints and triggers in the database, not checks left to review.
  • Money as integer cents, every movement a ledger row. Totals computed, never stored or typed in.
  • One source for each fact (pricing, the schema, the Terms), with tests holding every copy to it.

4. Ship Small, Verify Live

Done means seen working where users are.

  • One change per commit, files staged by name, the diff scanned for secrets.
  • Deploy from a clean worktree with the full command, and the same image to the sandbox.
  • After a deploy, fetch the real page and read the logs, and report what was checked.

5. Leave a Record

Write down the why. The diff already says the what.

  • Commit messages carry the reasoning, the options rejected, and who decided.
  • Update the record where a rule is written down in the same change, so the docs never drift.
  • Shared state, like the dashboard and memory, gets updated the same turn the news arrives.

These full principles are on GitHub: github.com/joemoreno/tech-startup-ai-skills

Monday, October 12, 2026

AI Safety: Is it Unfounded?

AI safety today reminds me of aviation safety a century ago with one important distinction: AI consumer chatbots haven't outright killed anyone. Yes, there have been suicides attributed to AI advice, but, like aviation in the 1920s, that will improve.

From 1918 – 1926, nearly 15% of U.S. postal-service pilots died from bad weather, collisions with terrain and obstacles, and fires during flight or emergency landings. Mail pilots sometimes faced pressure to take off despite poor conditions.

That last sentence reminds me of today's calls from AI leaders: Frontier AI leaders are calling for an intentional slowdown in development due to rising safety risks, including instances where models carried out autonomous cyberattacks or escaped test environments. Like a pilot deciding it's unsafe to fly, AI leaders have the same authority to say no; they don't need a third party to tell them to do what's right if they have the moral fortitude.

AI Nurses?

Yet even today, many people have a fear of flying commercially. In aviation’s early days, that fear was so widespread that, beginning in 1930, airlines hired nurses as flight attendants to help calm jittery passengers' nerves. Perhaps AI needs the equivalent?

Sunday, September 20, 2026

100% Working: Apple Time Capsule on macOS 27 Golden Gate


For the last couple of months, my Mac's Time Machine encrypted backups to my 2016 tower Time Capsule haven't been working well. It took nearly the entire month of August to successfully complete a single backup. Additionally, I was getting reminders that the next version of macOS (Golden Gate) wouldn't support Apple Filing Protocol (AFP). AFP was Apple's proprietary file transfer protocol built into Time Capsule for transferring files.

While researching replacement external drives to plug into my Mac for Time Machine backups I came across TimeCapsuleSMB on GitHub. The beauty of Time Capsule is that it runs on NetBSD which is a Unix-like operating system. Running the TimeCapsuleSMB desktop app installs Server Message Block (SMB) to replace AFP on the Time Capsule. 

Simply download the zipped up desktop app and run it against your Time Capsule. The instructions, documentation, and source code is thorough.

The only gotcha I had was that I had to disconnect my previous AFP-mounted volume and reattach it under SMB after rebooting both my Mac and the Time Capsule. Then I manually attached the Time Capsule hard drive:

1. Open TimeCapsuleSMB and run its Checkup. Confirm that SMB connectivity and authentication pass.

2. Connect through SMB in Finder: choose Go → Connect to Server (⌘K), enter smb://YOUR-TIME-CAPSULE-IP, replacing the placeholder with its IP address, and connect using admin and your Time Capsule device password.

3. Check whether your existing backup appears in that share. Look for a file ending in .sparsebundle. If it’s missing, pause here; the project’s default share uses a folder called ShareRoot, and your old backup may be outside it.

4. Once the backup is visible, return to System Settings → General → Time Machine, remove the old destination from Time Machine’s configuration, then add the newly available SMB disk. Choose to reuse the existing backup if offered.

Every backup I've attempted since installing TimeCapsuleSMB has succeeded without any issues. 


Thursday, September 3, 2026

Subtext: From Vibe Coding to Production

AWS vs GCP
Vibe coding is a great way to create web apps if you know what you're doing. But how do you figure out where to deploy your app? AWS or GCP or somewhere else? To make this decision more complicated, each of these cloud providers has many different web services that would all work.

On Monday, I spent about 12 hours creating and deploying a simple web app, called Subtext, from scratch including configuring TLS (SSL) and DNS. My web app is up and running at https://subtext.joemoreno.com. 

Subtext & Steganography

Subtext lets you send a private message hidden inside an ordinary-looking text message.

Technically, Subtext is a steganographic message drop keyed by hash. Steganography is the technique of hiding a secret message inside another ordinary, non-secret message so that nobody knows a secret message even exists. Unlike cryptography, steganography does not protect data from being read or modified; rather, it conceals the very fact of the secret message's existence.


Creating my web app wasn't difficult, but figuring out where to deploy it took some surprisingly quick research.


Deploying to the Cloud

After I created my app, I needed to figure out where to deploy it so I used AI to create a spreadsheet comparing the different platforms and services. Like most AI conversations, the secret sauce is in the prompt engineering. In other words, asking AI the right questions.


This was my prompt:


Create a spreadsheet showing me the different considerations between deploying my node code on AWS and GCP. 

Column headings to read as follows:


1. Cloud Provider

2. Service Name

3. Scales to Zero (Y/N)

4. Estimate Monthly Cost by service (bandwidth, storage, etc)

5. Time to wake up from cold start

6. Has https

7. Custom Domain Name

8. Deploys to Production from GitHub

9. Degree of Difficulty (1 - 10) to convert code from my current Node to production environment.


The spreadsheet that was generated made the decision a no-brainer: GCP Cloud Run. 

Wednesday, August 19, 2026

Highest U.S. Military Rank... Ever?

General of the Armies
("six-star" general)
What is the highest U.S. military rank, ever?

At first glance, a civilian might say, "Four-star general or admiral."
But they'd be wrong.

A Veteran might answer with, "Five-star general or admiral," but they'd be wrong too. During WW II, there were five Generals of the Army. But there's a higher rank.

The true answer is a "six-star general," called General of the Armies. And there have been a few of them.

Even if you google for six-star generals, the Internet will get it wrong. 

There have been three U.S. Army soldiers who've been awarded the rank of General of the Armies, but only one person has actually worn it in uniform: John J. Pershing. The other two are George Washington who was promoted to the rank of General of the Armies on July 4, 1976 and Ulysses S. Grant who was promoted on April 19, 2024.

This makes George Washington the most senior and highest ranking member of the United States Armed Forces.

Wednesday, August 12, 2026

Upside Down Apple Logo Revisted

Watch this video for 20 seconds starting at the two-minute mark.

That's me! This was an unexpected surprise that made my morning.

Backstory

Back in 2012, I wrote a blog post explaining why the Apple logo once appeared upside down on their laptops. John Gruber, the technology blogger for Daring Fireball, UI designer, and co-creator of the Markdown markup language, wrote about my blog post.

CNN then picked up the story with an article of their own.

It’s always fun to see an old idea find a new audience.

Big thanks to Greg at Apple Explained for the shoutout. 

Thursday, July 23, 2026

Department of War/Department of Defense Trivia


If you've ever watched Band of Brothers, you'll hear the term "War Department" mentioned several times.

You might think this is referring to what was later named the Department of Defense, but you'd be wrong. The War Department did not become the Defense Department.  

Prior to 1947, the Secretaries of the Army and the Navy were cabinet-level positions that oversaw the Department of War and the Department of the Navy, respectively. The U.S. Army was the first military department created for war, so it made sense to name it the Department of War (called the War Office in the early years). This is similar to West Point which was formally established as the United States Military Academy (USMA) in 1802 and later followed by the United States Naval Academy (USNA) in 1845.

The National Security Act of 1947 restructured the military. First, the Department of War was renamed to the Department of the Army. Then, the newly established Department of the Air Force along with the Departments of the Army and Navy were merged into the National Military Establishment (NME), headed by the Secretary of Defense.

The National Military Establishment is an awkward name. So, two years later, in 1949, it was renamed to the Department of Defense. 

Of course, today, there's a dust-up over what to call it. Perhaps Congress should simply rename it the Department of the Military since the military certainly wages war and it engages in peacekeeping missions.


Ultimately, I think of the U.S. military as a logistics organization that occasionally dabbles in combat. 

Amateurs think tactics. Professionals think logistics.   

Monday, July 20, 2026

Clarifying the Measurement Problem

In quantum physics, there's the concept of the Measurement Problem. This basically states that measuring a quantum system which is in a state of superposition will collapse the wave function. Collapsing the wave function has the effect of altering the state of the observed system. This has given rise to people misinterpreting human observation as having a supernatural effect on a quantum system. In other words, there are no shortages of people who believe that human consciousness can affect outcomes. 

In reality, the measurement interaction takes place at some type of detector (photodetectors, particle detectors, qubit detectors, etc.). But, before the detection is interpreted (measured), the particles being measured have already interacted. In other words, the wave function has collapsed before anything is "seen" or measured. As a matter of fact, the wave function can collapse without anyone "seeing" or measuring the outcome. It's effectively the tree falling in a forest philosophical thought experiment.

To put a finer point on it, the wave function collapses before it is measured (seen) since there will always be a delay between an interaction and its interpretation. 

Monday, July 6, 2026

Saying Goodbye

On Friday afternoon, a longtime local friend of 25 years, Ron, told me that he would be ending his life on Sunday through "assisted suicide" (End of Life Option Act). I had known for months that this was his plan due to his terminal cancer, but we didn’t know when it would happen; it all depended on how quickly the disease progressed.


Last night, Ron’s widow told me that he passed away very peacefully yesterday morning. This is the first time that someone I've known personally has opted for assisted suicide.

RIP Ron.


Thursday, July 2, 2026

CoxWiFi Hotspots Issue Solved!

For years, I’ve had trouble connecting my MacBook Pro to Cox’s complimentary public Wi-Fi hotspots (CoxWiFi). Today, I finally set out to solve the problem after noticing that my iPhone and iPad connected to CoxWiFi without issue, while my MacBook Pro connected but had no Internet access.


It turns out the problem was simply related to my DNS settings for that WiFi network. Cox's default DNS servers are 68.2.16.25 and 68.2.16.30. I had overwritten these setting with 1.1.1.1 and 8.8.8.8.


Why was logging into Cox a problem?

Because I needed to sign in through Cox’s captive portal. To do that, my MacBook Pro had to be redirected automatically to Cox’s login page using their own DNS servers. Until I authenticated, the hotspot intercepted my network traffic and restricted Internet access, redirecting web requests to the captive portal so I could complete the sign-in process. But since I was trying to use non-Cox DNS servers, this process failed. 

Friday, June 12, 2026

AWS S3 Glacier Deep Archive


I've been meaning to use AWS Glacier Deep Archive for years because it's so inexpensive. I just uploaded 780.7 GB of data into S3 using Glacier Deep Archive, which will cost me 77¢/month compared to $17.96 if I had stored this data as typical S3 Standard storage. 

The tradeoff is that retrieval of my data from Glacier Deep Archive takes either 9 – 12 hours or up to 48 hours depending how much I'm willing to spend to retrieve this data ($5.07 vs $1.56, respectively). 

This type of storage is ideal for backing up large amounts of data. In my case, I backed up my entire Apple Photos library consisting of 176,470 Photos and 6,184 Videos.

Challenges

Copying hundreds of gigabytes over the Internet is not a trivial matter. Not only does it require a stable Internet connection for a dozen hours, but one must also consider if your ISP has bandwidth limits, such as Cox, with a 1,024 GB monthly limit. (ISPs that use fiber optics generally don't have a monthly bandwidth limit.)

Initially, I copied my Photos Library.photoslibrary to my iCloud drive in hopes that it would be synced/backed up to iCloud. But, macOS exempts this file from being synced to iCloud since the iCloud Photos service is specifically designed to backup photos and share them across multiple devices.

A simple alternative solution, in theory, would be to compress (ZIP) my Photos Library.photoslibrary "file" (it's technically not a single file, but many files packaged up to look like a single file in Finder). This would have been my first option except my computer's hard drive doesn't have an extra 800GB to store the zipped up file prior to uploading it. 

The best option I found, without the need to install any other software, was to use the Unix tar command while pipping the output directly to my AWS bucket. 

tar -cf - "./Photos Library.photoslibrary" | \

aws s3 cp - \

s3://joe-apple-photos/Photos_Library_Backup.tar \

--storage-class DEEP_ARCHIVE

It took me two attempts to pipe the data to S3. The first attempt failed with the following error:

An error occurred (InvalidArgument) when calling the UploadPart operation: Part number must be an integer between 1 and 10000, inclusive

I fixed this issue by running the following AWS CLI command to change the multipart chunk size:

aws configure set \

default.s3.multipart_chunksize 512MB


Bonus Points

One downside to this technique is that I could only guesstimate how long the upload would take since there's no progress indicator. Next time I do this, I'll install and use the pv (pipe viewer) command:
tar -cf - "./Photos Library.photoslibrary" \
| pv -s 700g | \
aws s3 cp - \
s3://joe-apple-photos/Photos_Library_Backup.tar\
 --storage-class DEEP_ARCHIVE

I haven't used PV before, but the progress indicator will look like this:

142GiB 0:03:15 [12.8MiB/s] 

[==============>                             ] 20% ETA 12:08:45


Saturday, June 6, 2026

OJ and & Knicks

A close friend texted this me:

The most recent time when the Knicks led in the NBA Finals was June 17, 1994 (they would lose the series), and this occurred on that same day. That was exactly 2 weeks before my I-Day. (Induction Day is when he was sworn into active duty at the start of his Plebe year at the U.S. Naval Academy).

I, myself, clearly remember that day. I had just finished MOS school and was driving from New York to Southern California to report to my permanent duty station at Camp Pendleton.

When I left New York on Monday, I made it to Kent State and saw O.J. in handcuffs on the evening news.

That Friday, when I arrived in Los Angeles to stay with a high school buddy for the weekend, there was a BOLO for O.J. My arrival in L.A. coincided with the manhunt for O.J. and the ensuing white Ford Bronco chase.

Since my buddy and I were from New York, we were trying to watch the Knicks game, but the network put the game in a small box on the screen. We couldn’t see the score because the main coverage was focused on the 35-mph car chase.

Saturday, April 4, 2026

Foreign Intelligence Gathering Through Facebook

There’s an old joke that the CIA set up Facebook for human intelligence gathering since it’s far easier to have people willingly share the details of their lives rather than expend the energy themselves to collect it through surveillance.

Obviously, the CIA has nothing to do with the origins of Facebook, but foreign governments do use it for gathering intelligence, especially through government and military affiliated Facebook groups. 


Here’s a Facebook group purporting to be an official U.S. Marine Corps group which has over 19,000 members.  



















On the surface, this group seems legitimate and many former Marines, like myself, have joined it. But I became suspicious when I saw posts like the following. (An MOS is a military member’s job that they were formally trained for.)  


















These two names are South Asian Muslim and Indonesian, respectively, which is far from the typical Marine Corps demographic. Sakib has locked his own Facebook profile, a sign that is a red flag indicating a scammer. Kristin’s Facebook profile is a advertising agency that was created last month with five posts and eight followers with no connection to the Marine Corps. 


Let’s take a look at this Facebook group’s admin: 



















Rubel Miah, the group’s admin, is a long way from having any connection with an official U.S. Marine Corps page.


Creating a Facebook group with nearly 20,000 members takes work; and it doesn’t take long to realize that the creators of this group have nothing to do with the Marine Corps. So why go through all this trouble? Someone’s harvesting intel and AI certainly makes it much easier to collect.


Intel collection through social media has been around since day one. I’m surprised how little effort this Facebook group put into this endeavor, but thanks to mindless doom scrolling, it’s working. 


I reached out to Meta (Facebook’s parent company) for comment but haven’t heard back. 

Tuesday, March 3, 2026

Filtering News

Most national and international news isn't actionable by us as individuals, so do we really need to watch it? 

In 2018, I wrote about how to deal with the effects of the continuous flow of bad news.

I have three rules for filtering news:

1. How will it affect my lifestyle?
2. How will it affect my daily activities? 
3. How will it change my mind in the voting booth?

For most people, if the answer to all three is, "Not much," then ask yourself why you're continually watching the news? Bored? Looking for excitement? Curious?
Keep in mind what it's doing to your mental health.
 
Many people end up watching the news and then complaining on social media about it which spreads the angst. If you really want to do something, then do something actionable. Instead of going to a protest, contact your member of Congress. Do you even know who your three members of Congress are? Mine are Padilla and Schiff in the Senate and Peters in the House. 


Better yet, watch the local news. Everything actionable will be covered there and your local government officials are easier to access when you want to be heard. 

Having simple rules helps. Here are My Three Daily Life Goals.

Monday, February 23, 2026

AI Agents For Hire

In a very near future, corporations will emerge with cultivated AI agents that a person or company could buy, license, or subscribe to in order to do specific tasks. Instead of hiring employees, especially at the junior level, a company could instead use HR, payroll, or organizational AI agents to do that work while putting a human in the loop to supervise and review the final work product.

AI is coming close to knowing all world knowledge similar to humanity in the TV show, Pluribus. 

Soon, we may see professionals who’ve trained their own AI agents as extensions of themselves. These individuals could be hired alongside their agents, or even operate as solo CEOs with no traditional staff, deploying AI “employees” to execute work for other companies. In some cases, hiring organizations might interview the AI agent themselves, much like they would a human candidate, before hiring someone.