Thursday, December 8, 2022

Depth-first Recursion with AI in 103 Seconds

Once, when I was interviewing with the iTunes U team at Apple, I was asked to write a depth-first search, using recursion, in a language of my choice. I chose Java and proceeded to sketch out a tree on the whiteboard while keeping track of my stack on the side of the board.

It took about 10 or 15 minutes. Then the hiring manager and I walked though the code and I was thrilled that I passed, especially since recursion is not my strongest area of coding.

Today, I used ChatGPT which was released eight days ago. It came up with three different solutions in less than two minutes. This is fascinating.


Friday, November 25, 2022

Cloud Computing Services Defined

What is the cloud, both qualitatively and quantitatively and why is it called the cloud? 

It's simpler to answer the second part of that first, why is it called the cloud? Simply put, it's called the cloud because, like an electron cloud, you won't not know exactly where an item is located, such as a single e-mail. In other words, like there isn't a clear boundary similar to a the edges of a cloud in the sky.

Qualitative

This segues into a qualitative description of the cloud. In the 1990s, before the cloud, it was simple to point to a single, on-premises, server to identify where a single e-mail resided. Nowadays, with services like Gmail, there's no single server one can point to where an e-mail resides. This is because the subject line of a Gmail e-mail message might be on one server, while the text body of the e-mail is on a different server with each attachment residing on their own servers. A single e-mail is spread out across multiple servers. 

Quantitive 

Qualitatively, the cloud model is composed of five essential characteristics, three service models, and four deployment models defined by NIST.

Five Essential Characteristics: 

  1. On-demand self-service. A consumer can unilaterally provision computing capabilities, such as server time and network storage, as needed automatically without requiring human interaction with each service provider.
  2. Broad network access. Capabilities are available over the network and accessed through standard mechanisms that promote use by heterogeneous thin or thick client platforms (e.g., mobile phones, tablets, laptops, and workstations).
  3. Resource pooling. The provider’s computing resources are pooled to serve multiple consumers using a multi-tenant model, with different physical and virtual resources dynamically assigned and reassigned according to consumer demand. There is a sense of location independence in that the customer generally has no control or knowledge over the exact location of the provided resources but may be able to specify location at a higher level of abstraction (e.g., country, state, or datacenter). Examples of resources include storage, processing, memory, and network bandwidth.
  4. Rapid elasticity. Capabilities can be elastically provisioned and released, in some cases automatically, to scale rapidly outward and inward commensurate with demand. To the consumer, the capabilities available for provisioning often appear to be unlimited and can be appropriated in any quantity at any time.
  5. Measured service. Cloud systems automatically control and optimize resource use by leveraging a metering capability at some level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported, providing transparency for both the provider and consumer of the utilized service. 

Three Service Models:

  1. Software as a Service (SaaS). The capability provided to the consumer is to use the provider’s applications running on a cloud infrastructure. The applications are accessible from various client devices through either a thin client interface, such as a web browser (e.g., web-based email), or a program interface. The consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, storage, or even individual application capabilities, with the possible exception of limited user- specific application configuration settings.
  2. Platform as a Service (PaaS). The capability provided to the consumer is to deploy onto the cloud infrastructure consumer-created or acquired applications created using programming languages, libraries, services, and tools supported by the provider. The consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, or storage, but has control over the deployed applications and possibly configuration settings for the application-hosting environment.
  3. Infrastructure as a Service (IaaS). The capability provided to the consumer is to provision processing, storage, networks, and other fundamental computing resources where the consumer is able to deploy and run arbitrary software, which can include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure but has control over operating systems, storage, and deployed applications; and possibly limited control of select networking components (e.g., host firewalls).

Four Deployment Models:

  1. Private cloud. The cloud infrastructure is provisioned for exclusive use by a single organization comprising multiple consumers (e.g., business units). It may be owned, managed, and operated by the organization, a third party, or some combination of them, and it may exist on or off premises.
  2. Community cloud. The cloud infrastructure is provisioned for exclusive use by a specific community of consumers from organizations that have shared concerns (e.g., mission, security requirements, policy, and compliance considerations). It may be owned, managed, and operated by one or more of the organizations in the community, a third party, or some combination of them, and it may exist on or off premises.
  3. Public cloud. The cloud infrastructure is provisioned for open use by the general public. It may be owned, managed, and operated by a business, academic, or government organization, or some combination of them. It exists on the premises of the cloud provider.
  4. Hybrid cloud. The cloud infrastructure is a composition of two or more distinct cloud infrastructures (private, community, or public) that remain unique entities, but are bound together by standardized or proprietary technology that enables data and application portability (e.g., cloud bursting for load balancing between clouds). 

Thursday, November 10, 2022

Veterans Day for Marines

Every Marine knows the date, 10th of November, which makes the following day, Veterans Day, a bit different.

Veterans have Veterans Day to commemorate their military service on the 11th of November. And the Marines have the Marine Corps Birthday to commemorate their roots, one day earlier. All active duty and former Marines will wish each other a happy birthday on the Marine Corps Birthday. Marines will also tell you that the timing of these two back-to-back American holidays is ideal since it gives Marines a day off after their Birthday Ball celebrations and festivities.


America’s military is a unique breed of people who are called to serve, not only to protect their country, but, more importantly, they’re called to serve through their oath: to support and defend the Constitution of the United States. The distinction between country and Constitution is vital because it prioritizes the principles spelled out in the Constitution ahead of the desires of our citizens or the values we codify in laws.



A Unique Breed

U.S. Marines are a unique breed of America’s military. While each of the military branches have different missions and specialties, one key fact that makes Marines different from the rest of the U.S. Armed Forces is that all Marines are combatants. They are all basic riflemen trained to locate, close with, and destroy the enemy by fire and maneuver, or repel the enemy's assault by fire and close combat. More specifically, the Marine Corps does not have doctors, dentists, chaplains, etc. However, since the Marines work so closely with the U.S. Navy (a separate military branch) they receive health and spiritual services from Navy doctors, medics (called corpsmen), chaplains, etc.


Additionally, the Marines are a small, tightly integrated military corps with both tactical fixed-wing (fighter jets) and rotary-wing (helicopters) to support their ground troops. The U.S. Army only has tactical helicopters to support their ground troops. If the Army needs fixed-wing combat support, they’d call on the U.S. Air Force.


Celebrations and Observances


Veterans Day is officially observed with two minutes of silence at 11:11 AM PST to commemorate the ending of WW I on the 11th hour of the 11th day of the 11th month of 1918. (It’s celebrated at 11:11 AM PST instead of EST so that all time zones in the United States can celebrate it simultaneously.) Additionally, dozens of parades and ceremonies are held, throughout the country, along with deals, discounts, and freebies, to honor our Veterans.


While Veterans Day is marked with two minutes of silence, the Marine Corps Birthday is observed with two hours of pageantry, throughout the world, at Marine Corps Birthday Balls. The highlight of the Marine Corps Ball is the cake cutting ceremony which follows a basic script where the first piece of cake is presented to the guest of honor. The second piece of cake is given to the oldest Marine present who then presents the youngest Marine with the third piece of cake to symbolize the passing of experience, knowledge, and tradition from the old to the young.

Even though active duty Marines aren’t yet veterans, they greatly appreciate having the next day, Veterans Day, off from work to rest up from the previous night’s celebrations. 


Semper Fi and thank you for your service. 


Thursday, August 18, 2022

My First Quantum Computer Program

I ran my first program on a quantum computer, today.

I've run programs on quantum computer simulators in the past, but today was the first time I ran a program on an actual quantum computer. It wasn't anything special – my program simply simulated a coin flip. I guess that's the Hello World equivalent on a quantum computer.

About a year and a half ago, I gave a presentation on quantum computing, which has always fascinated me. However, quantum computing is a lot like nuclear fusion or bitcoin in that it's not yet practical. We can see that these technologies are real and feasible, but they'll require some more engineering, both technically and socially, for them to be in widespread use.

Currently, quantum computers are at the stage that personal computers were in the early 1970s. The design and engineering involves circuits. Next step will be programs and then practical applications.

What I Did

Today's program simulated a coin flip by passing a qubit through a Hadamard gate which puts the qubit into a superposition state. A Hadamard gate takes a qubit as input and its output has a seemingly random 50/50 chance of being |0> or |1> when measured. But what's fascinating about a Hadamard gate is that, if you take the output of from a Hadamard gate and pass it through another Hadamard gate then the qubit will always return to its original state.

My code snippet: Simulating the flip of a coin on an actual quantum computer

How I Did It

Like a true script kiddie, I followed a YouTube tutorial. I literally stopped the video when Toby showed her code, took a screen shot, imported the screen shot into the Apple Photos app, and then I copied and pasted the code from the photo into my web based text editor on IBM's Quantum Lab. The code I wrote was in Python utilizing the Qiskit SDK and it was free to run on IBM's system; a bargain at twice the price.

Monday, August 15, 2022

Stolen Catalytic Converter

My exhaust pipe, sans my catalytic converter

My catalytic converter was stolen two months ago.

I immediately knew it when I started the engine on my Honda Accord – it sounded like a Harley at red line. Coincidentally, my sister, who lives nearly 3,000 miles away, had her catalytic converter stolen from her Accord a few weeks later.

Thieves steal catalytic converters because they're easy targets under the chassis – there's no alarm or cage around them and they contain valuable precious medals like platinum, palladium, and rhodium. A replacement catalytic converter typically runs around $1,000. When you add in the labor, the price ends up over $1,500. My insurance company's bill came in over $2,000 out of their pocket when including the towing and car rental.

Replacing a catalytic converter isn't as simple as replacing other car parts, especially with California's anti-smog requirements. (If you've ever smelled the difference between the exhaust from a modern car and one made before 1975 then you've noticed the smog filtering effects of a catalytic converter.) New catalytic converters replacement parts are scarce because of the increase in thefts.

In California, catalytic converters have to be approved for different car models. Every two years, I have to pay about $60 to have my Accord smog checked. This was never a problem until today when the smog inspector told me that my catalytic converter was "illegal in the state of California." The new, aftermarket, catalytic converter installed on my car did not match the approved family of catalytic converters according to the "Vehicle Emission Control Information."

In order to rectify this discrepancy I had to "Ask the Referee" if my catalytic converter was a suitable substitute. This entails making an appointment, typically two weeks in the future, for a free inspection to see if my catalytic converter passes muster. While the appointment is free, the penalty for missing an appointment is a 60-day delay until I could reschedule my next appointment; a very unfavorable situation since my registration expires in 42 days, which requires passing a smog check.

Fortunately, I lucked out when I called the referee since I was able to get an appointment, due to a cancellation, 90 minutes later today, with the stringent warning to not be late and the understanding that same-day cancellations would cost me a 60-day delay in rescheduling.

Although the inspection site was difficult to find because it was on a college campus which, like a military base, doesn't have buildings with GPS'able street addresses. But, in the end, it all worked out for me. That wasn't the case for the car owner ahead of me whose catalytic converter wasn't a suitable substitute. As soon as I received the sticker on my car door approving my catalytic converter, I returned to the same smog inspection station from earlier in the afternoon and passed my inspection. Now, the last step is for the California DMV to send me my new vehicle registration. 

Thursday, August 4, 2022

The Concept of Time

La Muse Verte Absinthe: A birthday gift to myself

Time is the school in which we learn,   
Time is the fire in which we burn.

On today, my birthday, I can't help but notice the passage of time.

But what is time? – I ask this question in a physical sense, not philosophically or metaphysically. 

There are certain realities of time. While it is relative to space and energy, it moves at an absolute pace in any given frame of reference. Whether I'm here on Earth or outside an event horizon or traveling near the speed of light, time will always pass at the rate of one second, every second. In other words, when I look at my wristwatch, time will run perfectly normal, regardless of my motion.

We speak of time as being a fourth dimension of space, i.e. spacetime, but it's not "real" like the three dimensions of space. Rather, time is an emergent property. While we observe, in our personal experiences, cause and effect such as a glass breaking, we don't see that same, one way flow, at the subatomic level.

This is similar to ocean tides on Earth. There is no physical "tide property" of water. Tides only emerge when we collect a lot of it and introduce other forces such as gravity from the sun and moon along with the Earth's rotation, i.e. it's an emergent property. 

What is Time?

Time is literally nothing more than the passage of events – it's neither energy nor physical. Think of it as hole flow in an electrical circuit. We measure time by the ticking of a watch's second hand. Imagine the universe's clock as the motion of atoms, such as an electron orbiting an atom's nucleus. The motion of matter marks time similar to a computer's clock ticking off cycles for the CPU. Different computer clocks move at different rates, and time also moves at different rates depending on how much energy is around it. In your frame of reference, a watch's second hand will always tick away one second, every second, no matter if you're at rest or moving close to the speed of light.

In the presence of huge amounts of energy, time literally slows down, from the perspective of an outside observer. This is simply due to the atoms, in the presence of large amounts of energy, struggling to move through this energy molasses. But, since all the atoms in this frame of reference experience the same slowing, everything looks normal. Imagine if all the clocks and watches (and atoms) in your home slowed down because they had dirt or grit in the "gears" – everything would continue to seem normal even though things are moving slower. But, to an outside observer, your passage of time would be different.

Time Travel?

So, is time travel is possible? Absolutely not. You can slow down how fast time passes, but that's about it; you can't speed it up. The concept of traveling through time to a different period makes as much sense as traveling through tides (or love, etc). While we know what causes the flow of the time or tides, it is, as I mentioned earlier, an emergent property. 

For time travel to be possible, every particle in the universe would have to move in the opposite direction (backwards). Doing this would move the entire universe back to an earlier state that it was in. However, the atoms in your body would still need to move forward. So, while the universe is moving backwards, your being is moving forward and that would allow you to travel backwards in time. Then, at some point, to return to the present you left, you'd need to slow down all the particles in the universe and/or speed up the particle motion in your body to catch up. 

Changing the state of the entire universe simply isn't possible. There is only one state of the universe, The Now.

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.