As a hacker by nature, I enjoy making things. My name is Aijaz Ansari and I’m the developer and designer behind the Qur’an Memorizer and QuranReflect iOS apps, and am currently working as a Mobile Lead at Gogo Business Aviation.
I’m also a community organizer and volunteer as head of security at my local mosque. In that capacity I also manage two additional blogs: MasjidDefense and The Reluctant Gun Owner.
I’m a student of Wing Chun Kung Fu, having studied at the excellent Philip Nearing School of Wing Chun. I’ve also made a Kung Fu wooden dummy (what a fun project!).
Finally, I’m also a fitness enthusiast, with a particular fondness for Tony Horton’s P90X series.
You can find me here:
One last thing about me: I enjoy discussing the technical merits and limitations of app or business ideas my friends and acquaintances have. If you have an idea that you would like to bounce off of someone, I’m almost always available for a chat over a cup of coffee. But I almost never sign NDAs. I believe that great ideas are not really that rare and that they are multipliers of execution. I think we can still have productive conversations without talking about the secrets that you don’t want to share without an NDA.
Licenses
Almost all photographs found on this blog were taken by me and are licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License.
Those photographs not taken by me are attributed accordingly. If you find any image that is not attributed, please email me and let me know.
Talks I’ve Given
- Regretrospective 360|iDev 2020
- VoiceOver for the Skeumorphic App 360|iDev 2020
- Intermediate Git 360|iDev 2019
- Beyond Breakpoints - Advanced Debugging in XCode (2017 and 2018) - 360|iDev
- How Learning to Ski Made me a Better Developer - iOS Dev Camp Colorado Springs
- The Coordinator: Improving the MVC Architecture - A remote presentation given at the inaugural CocoaHeads meet-up at the new flagship Apple Store on Michigan Ave. in Chicago.
- Beyond Breakpoints - Advanced Debugging in XCode - CocoaConf Chicago
- Exploring JSON with jq - NSCoder Chicago
- Flask First-Timer - The ChiPy Web SIG
- Now What? - SnowMobile Conference, 2013
- The Web That Was - The Promise and Decline of
mod_perl
- A local Ruby Developers’ Meet-up. - Protecting Your Clients’ Privacy - A 5-minute blitz talk at SecondConf 2012
Community Service
- Teacher, Colorado Association of Black Professional Engineers and Scientists (CABPES)
- Teach Computer Science and Software Development to High School Students
- Teach the students to write the popular Wordle game using Python
- Show the students how to use VoiceOver so that their game can be played by Blind and Visually Impaired players
- Teacher, Denver North Islamic Center
- Weekend school teacher to 10- and 11-year-old boys
- Teach camping and survival skills to older youth
- Coordinate annual camping trips in the Rocky Mountains
- Board Member, MYPI
- Director of Security, Denver North Islamic Center
Work Experience
Lead Developer, Gogo Business Aviation (January 2018 - Present)
Gogo Business Aviation provides Internet access and phone service to pilots and passengers of private jets. At Gogo I lead a team that develops iOS and Android mobile apps to provide these services to our customers. In my new role as team lead I no longer spend all of my time writing code. I participate in planning meetings with the rest of the firm, where I represent the team as we make commitments for each quarter. I also conduct internal training sessions to familiarize Customer Support and Sales with our new releases.
I’ve recently introduced formal code inspections within our team. These are more interactive than what we normally think of as code reviews associated with pull requests. The participatory aspect of these code inspections help members of the team become familiar with each other’s code more actively than single-person code reviews.
Within Gogo I’m part of three very beneficial meet-ups:
- The Gogo Book Club, where we study a new book every few months. We’re currently learning Functional Programming with Clojure
- Gogo Toast and Talk, the Gogo chapter of Toastmasters
- Tech Lead Presentations, where we present new technologies and things we’ve learned to other groups within the firm.
Talks given during my time at Gogo:
- Regretrospective 360|iDev 2020
- VoiceOver for the Skeumorphic App 360|iDev 2020
- Intermediate Git 360|iDev 2019
- Beyond Breakpoints - Advanced Debugging in XCode (2018) - 360|iDev
- How Learning to Ski Made me a Better Developer - iOS Dev Camp Colorado Springs
- The Coordinator: Improving the MVC Architecture - A remote presentation given at the inaugural CocoaHeads meet-up at the new flagship Apple Store on Michigan Ave. in Chicago.
iOS Lead, FastModel Sports (August 2015 - January 2018)
I was an iOS developer at FastModel. I worked on apps for professional basketball coaches and recruiters. I developed our flagship app, FastRecruit, which helps college recruiters during the tournament seasons, when they’re traveling to watch students play at various tournaments and camps. I also occasionally functioned as a triage coordinator during the tournament season when we were making changes with an accelerated schedule. I made sure that testers wee testing the appropriate hot-fixes, and gathered data from the various parties and stakeholders in order to decide when to push changes to Production.
I was part of a small but amazing team of engineers, support staff, salespeople, and marketing staff and together we made something that we’re proud of being associated with. The biggest compliment we’ve ever gotten, in my opinion, is when customers said that our product allows them to get a normal night’s sleep now, compared to the old way of staying up until 2 or 3 in the morning, just trying to figure out which games to attend.
Key technologies that I worked on during my time at FastModel are:
- API Design
- JSOG parsing (JSON with cyclical references)
- Apple Watch Apps
- Continuous Integration with fastlane and Jenkins
- 3D Touch on newer iPhone models
- REST clients using AFNetworking
- Custom JSOG HTTP Request and Response Serializers
- The iOS Keychain
- Data Persistence using SQLite3 and Core Data
- Saving HTTP requests during network outages
- Using Text Kit display and manage text
- Integrating Maps and Driving Directions
- Integration of Google Places API
- Customizing LLDB to third-party integrate debugging tools into XCode
Talks given during my time at FastModel:
- Beyond Breakpoints - Advanced Debugging in XCode (2017)] - 360|iDev
- Beyond Breakpoints - Advanced Debugging in XCode - CocoaConf Chicago
- Exploring JSON with jq - NSCoder Chicago
- Flask First-Timer - The ChiPy Web SIG
Principal Engineer, Vaporstream (2012 - August 2015)
I was the sole iOS developer of secure messaging and social networking apps. When I left, Vaporstream was a small startup with 5 developers: 1 each for iOS, Android, and the server as well a QA and a DevOps engineer. As a senior engineer, I participated in requirements gathering, release planning, API design and prototyping for feasibility determination. I’ve got one patent application under my name. I know that’s not much, but I’m pretty proud of it. Representing Vaporstream, I spoke at the Snow-Mobile conference in Madison, WI in 2012, advising mobile developers on what to do after they ship their app. I also became a mentor at MobileMakers Chicago. By the time I left Vaporstream I had mentored 7 cohorts of students (14 students in all) and continue to mentor some of them after they started their careers as iOS developers.
Some key technologies that I worked with a lot are:
- AVFoundation (live video views with overlays and live filters)
- WebSockets
- AFNetworking
- The iOS KeyChain
- SQLite3 (with FMDB, because I’m not a savage, you know)
I also developed two python apps that are critical to the continuing operations of the business. The first is VaporBot. This is a chat bot with which users can communicate. VaporBot runs the classic ‘Eliza’ program and has humorous conversations with clients as they’re testing the app.
The second python app that I wrote is called HealthBot. This is an app that pretends to be a client and has conversations with VaporBot. If the attempt at having the two bots speak to each other fails at any time, HealthBot can alert the monitoring systems and let us know exactly what is wrong. For example, it can determine if the problem is with messaging, talking to VaporBot or even connection to our cloud storage of images.
Principal, Euclid Software, LLC. (2010 - Present)
Euclid Software is the company I started when I wanted to register as an iOS developer and submit my first app, Qur’an Memorizer, to the App Store. Qur’an Memorizer has been my most popular app so far. Along with the free variants there have been more than 840,000 downloads worldwide. The sales, while not enough to live off, are enough to pay for my computers, books, and associated toys, so I can confidently say that this app (and the community I built around it) has been a resounding success. The most beloved features of this app are the photo-realistic interface, the page-turning affordances and (to my surprise) the bookmarking feature.
I’ve also started working on a promising new app called Pix2Doc. We’re still in a public beta stage before we fine tune our app and announce our services to the public. Every so often I’ll publish apps for clients. They have asked that I not name the apps that I’ve worked on, and those apps are almost as complex as the apps I work on at Vaporstream.
Through Euclid I’ve also started a service called EuclidTech where I teach neighborhood children and adults iOS development. For our first 16-week course we wrote the Robots game. When looking at this code, please keep in mind that this code was written as an instructional exercise for 12- and 15-year old children learning how to program.
I’m a frequent speaker at CocoaHeads Chicago and gave a lightning talk on hashing and salting passwords at SecondConf in 2012. I was also a backup speaker at SecondConf 2013.
Senior Developer, Citadel (2005 - 2012)
At Citadel I wrote Perl code for the Global Middle and Back Office department. Our code ran exclusively on Linux and was responsible for obtaining data feeds from a variety of vendors, parsing them, normalizing them, and loading them into our internal databases. My clients were the traders and quants who would access the data to make trading decisions. I did not work in the High Frequency Trading group, so our code took minutes to run, as opposed to seconds. During my time there we ran about 1,500 jobs per day. I wrote an internal web app that would allow us to track job failures and then note what was done to resolve the problem. This was critical for becoming SAS-70 compliant, as well as for helping whoever was on call to address the issue without having to wake anyone else; they could simply read the notes from the last incident. I also wrote other web apps for monitoring Mortgage Remittance data feeds.
Citadel is where I learned how to work on fast-moving projects where requirements could change with little or no notice (due to external and market factors). I also learned the importance of the ‘3 AM test’: My code would have to make sense to the on-call person who may be reading it for the first time at 3:00 am, having been woken up because, say, opening prices for London are not available. This is not the place for overly clever code, because if a sleepy coworker cannot understand it and modify it, he or she would be calling you up to fix it yourself.
Most of our programs would write to one or more Sybase databases. At Citadel I became very proficient with SQL as well as managing and maintaining database connections in code.
President, ENoor Creations (1998 - 2005)
At ENoor I started off running web hosting service, and then migrated to writing web apps for clients in Apache/mod_perl. During the 7 years that ENoor was operating I focused on various industries, including Law Enforcement, Automobile Sales, Telecom, Printing, and Non-Profits. One of my most interesting projects was customizing an SMTP server for a client, to implement their authentication scheme. I wound up writing authentication code in C for
the qmail-smtp
mail server. ENoor is also where I developed TaskForest, an open source job scheduler, to manage my own machines.
I also spent a decent amount of time over a three-year period writing software for Webvestor. This was a trading company started by a pair of traders at the Chicago Mercantile Exchange. I wrote an app in Visual C++ that would use the FIX API to post data from their local trading applications to the CME. Since they had a dedicated wired connection to the CME, any such app would have to be audited and certified by the Exchange. Working on this and getting the app certified was a milestone in my growth as a Software Developer.
Lead Engineer, Motorola (1995 - 1999)
At Motorola I had the good fortune to work on a product during the last few years of its lifespan (The IS-41 Converter) as well as work on a product as it was being developed for the first time (The Visitor’s Location Register, or VLR). I started off with the IS-41 converter working on their User Interface team and then worked on authentication software required by the Department of Justice. When the VLR was announced I participated in the creation of Software Functional Specifications, Design Documentation and finally the C++ code itself.
I was responsible for the Call Processing code for two key features: Message Waiting Notification and Local Number Portability. I also wrote an internal tool called ‘Cogent’ that read in simple requirements for different kinds of Call State Models and generated the C++ code for the individual CSM subclasses. This became part of the build phase and eliminated the possibility of developer error introducing inconsistencies between subclasses.
Because the VLR application ran on a diskless board on Motorola’s telecom switches, we needed a low-footprint in-memory database management system to handle records for the call state models of the people who were currently making phone calls. I was in charge of this ‘dbmgmt’ system, and implemented it using height-balanced binary trees in C++. 2
-
© 2022 Aijaz Ansari, and is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License ↩