404 - Page Not Found

The page that you are looking for could not be found. I recently switched to a new content management platform so some of the old links no longer work. Below are the search results based on the link that you clicked on.

Now I know!

…that the monitors at the Chicago O’Hare airport are running Adobe Flash! 🙂

Someone right clicked on the screen, and now I know that the monitors are running Adobe Flash A close up of the menu

The most unknown iphone feature: Undo!

The Undo dialog

There is a 90% chance that you don’t know about this. The iPhone has an undo feature! If you accidentally make a change that you would like to undo (e.g. deleting some text) then you can get it back by literally shaking the phone!

See this post for an animation.

iPhone 6

Know where you are going?

Know where you are going?

Know where you are going?

Above is a picture that I took somewhere between Whistler and Jasper. Click on it for a larger version.

Entriway – Overkilling it with a Raspberry Pi

Raspberry Pi Model 3 with the PiTFT
Raspberry Pi Model 3 with the PiTFT

As a “prosumer” I have liked the Ubiquiti equipment because it’s not too expensive and at the same time provides advanced functionality that I like to tinker with. After switching to an EdgeRouter, I recently swapped one of my two access points with the UniFi nanoHD access point. The EdgeRouter works independently, but the UniFi HD provides a lot more options when controlled using the UniFi Controller. For this, I had a Raspberry Pi 3 lying around so instead of getting the UniFi Cloud Key, I decided to set up the controller on the Raspberry Pi.

I work from home most of the days and generally keep my office door closed to keep distractions to a minimum. I also tend to be on video and audio calls quite a bit. When I am talking on the calls, then it is easy for my family to know not to come in, but when I am listening, then they obviously cannot tell. There have been times when I am on video calls and have had a family member walk in, not knowing. Those can be awkward at times.

Raspberry Pi running “Entriway”
Raspberry Pi running “Entriway”

Now, what does this all have to do with the Raspberry Pi? In addition to the Raspberry Pi, I also had a 2.8″ Adafruit PiTFT lying around that I did not end up using in another project. I was planning on having the Raspberry Pi running all day for the UniFi Controller anyway, so why not give it another purpose? So, I decided to create a small digital sign that I could control remotely and put it outside my door for people to know what I was up to. Overkill? Why, yes it is, but it was also fun. Actually, the real overkill would have been this solution running on a rechargeable battery! I called this the “Entriway.”

Read full post… “Entriway – Overkilling it with a Raspberry Pi”

Fluentd configuration for PHP errors

Lately, I have been working on centralizing the logs from all of our servers and application layers.  I decided to use Fluentd instead of Logstash because it claims better reliability without jumping through hoops (e.g. adding a kafka layer).

Anyways, working on the configuration, I noticed that it doesn’t have any default configs for PHP errors.  My quick google search didn’t reveal anything either.  So, I decided to write the regex myself.  Here is what I ended up with.  This also accounts for multiline stack traces.

<source>
 @type tail
 tag SERVERNAME.php.errors

 # Example
 #[03-Sep-2017 22:51:06 UTC] PHP Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 65536 bytes) in Unknown on line 0

 format multiline
 format_firstline /^\[(?<time>[^\]]*)\] (?<level>.+?):/
 format1 /^\[(?<time>[^\]]*)\] (?<level>.+?):\s+(?<message>.*)/
 time_format %d-%b-%Y %H:%M:%S %Z

 read_from_head true # Read the file from the start.

 path C:\webroot\php_errors.txt
 pos_file C:\opt\td-agent\tmp\hd-dev01.php.errors.pos
</source>

A Big Concern with IoT – Security

Nest Thermostat

I am excited about the Internet of Things (IoT) phenomenon that we have been going through over the past few years.  Some old timers might even bring up X10, from who knows how long ago, but for my generation, I feel like the Nest thermostat was really the intro of IoT to the mainstream.  I see the value of IoT devices and I have a few IoT devices at home myself.  This list has only grown over time.  There are two major concerns with IoT devices that are always in the back of my mind: 1) Security, and 2) Privacy.  I will focus on Security for this post.

Read full post… “A Big Concern with IoT – Security”

Website Moved to WordPress!

My migration to WordPress is complete! This post briefly talks about the history of the site and announces the go-live of the WordPress version.

About Me

Farhan Ahmad
That’s me!

Hi, my name is Farhan Ahmad, and I am a scientist at heart. I have a Computer Science Bachelors and an MBA. I have worked as a developer, an implementor/project manager, and an entrepreneur, among many other roles. Lately, my focus has been on entrepreneurship in the healthcare IT industry.

My recent accomplishments include managing a startup named Vonlay, which we grew to 130+ employees. I was one of three managing partners of the firm. My focus was on the technical vision and technical engagement oversight. Vonlay was rated a 2014 Best Place to Work in Technology for Employers with over 100 Employees. Later that year, in May 2014, Vonlay was acquired by Chicago-based Huron Consulting Group. I joined Huron as a Managing Director to lead our Epic-focused reporting, development, and integration services.

After Vonlay and Huron, I joined HealthDecision as the Chief Technology Officer and Chief of Staff. At HealthDecision, I helped grow the company from no employees to a small team of five full-time employees when, in 2018, EBSCO Health acquired us. I served as the EBSCO Health Technology Vice President for Clinical Decision Support until mid-2023. During this time, I lead the integrations of EBSCO products in the Electronic Health Records (EHR) software and Compliance initiatives.

In addition to my professional career, I am also a computer enthusiast. I have explored many technologies, gathering as many useful bits as possible; see the “Some Facts” section below for more info. As a result of this exploration, I have learned how to acquire new knowledge and apply it quickly. Also, as a basic rule of the “tech. age,” I have realized that settling on one programming language or technology is not the way to go, so I have been concentrating on the principles instead of the specific implementations.

Outside of work and tech, I enjoy music and aviation. I got my private pilot license in 2022. I am also just starting to learn how to play drums.

View Farhan Ahmad's profile on LinkedIn

Other Info

Below are some programming languages, frameworks, and protocols that I have worked with in the past.  These are in no particular order.

  • Operating System Knowledge: Android, UNIX, Linux (ArchLinux, Debian, Ubuntu, and Gentoo), Apple OS X/macOS, most of the Windows flavors including Windows Vista and Windows 7.
  • Fluent in Programming/Scripting/Markup Languages: JavaScript, Python, C++, C#, Visual Basic 6, VBScript, Ruby, Perl, Bash, XSLT, AutoHotkey, SQL, XML,HTML, Objective-C.
  • Knowledge of Frameworks: Django (expert), .NET (started with 1.0, kept up until 2019), Ruby on Rails (used to develop in).
  • Minor knowledge of TCL and Java.
  • Protocol Knowledge: HL7 (expert in 2.x, some knowledge of V3 specifics), X12 (very basic), HTTP, FTP, among others.
  • Minor contribution to the official Python 2.6/3.0 branches.

Changing Metrics

  • Current personal development focus: Healthy lifestyle, with a good hard work / work-life balance
  • Current tech. goal: Learn electronics and master ESP32 programming
  • Current tech. toy: ESP32

Disclaimer: The postings on this site are my own and don’t necessarily represent my employer’s positions, strategies or opinions.

Migrating a Linode VM to a Parallels VM

I had a need for migrating my Linode virtual machine to a local Parallels virtual machine. This article documents the steps that I took to do this migration for a Ubuntu virtual machine.

Spark Core

Spark Core

I just bought a Spark Core for a personal project to monitor some devices around the house. This thing is awesome as it makes it really easy to interface with hardware based devices. I went for the Maker Kit because it comes with a few common sensors and motors known to easily work with the Spark Core. Time to start brushing up on my electronics skills.