You will communicate directly with me
I am quick to diagnose and fix issues
I'm here to solve all of your software problems
The Chrome extension that an Upwork client used for work purposes broke after they added new functionality to their website. The bug was identified and fixed, and the updated app was returned and approved. An additional bug was discovered during an audit of the app, and subsequently fixed. The turnaround time of this project was one hour.
This particular Chrome extension parsed form data that the user entered into the client's website. It then auto filled forms with previously entered data. This extension helped the client to conduct work more quickly, however upon a website update the extension stopped working.
It was identified that the issue was that the client added SSL to their site, causing the extension to no longer recognize the URL. The manifest file was updated to include the https scheme. Also, the content script was updated to recognize new form pages on the website. Finally, during testing of these updates, an additional bug was found that was not previously identified by the client. This was fixed.
Tax functions is a Google Sheets add-on that adds tax-related functions to spreadsheets. Add these functions to Google Sheets by navigating to a Sheet, click the menu "Add-ons," click "Get add ons," and search for "Tax functions". You may view in the Chrome Web Store and add it to a new Sheet here.
Documentation about Google Apps Scripts was read and sample applications were developed. Distribution methods were learned and troubleshot. Functionality was identified and translated to exposed custom Sheets function templates. In order to robustly test the functions, use-cases were identified and a test spreadsheet was developed to run unit tests on all exposed functions.
Exposed functions were developed, tested, and documented. The product was uploaded to the Chrome Web Store and tested by a private Google Group.
Chrome Web Store content was created, which included product title, descriptions, logos. The logo (bar graph) was developed and iterated over a few cycles to ensure that it fit the required sizes (32x32 and 128x128) while conveying the desired message that this product relates to tax calculations. The product was uploaded to the Chrome Web Store and exposed publically.
This website is a statically generated site built with Jekyll and hosted on Github Pages. It's purpose is to showcase my experience and help you to better understand my skillset.
Version 1.0 goals were identified and initial research was conducted to determine the technology of choice for this project. Goals included simple maintenance, minimal architecture, and ability to create static web pages. Off the bat, a static website generator seemed to be an attractive solution due to its minimal architecture. Popular static website generators were compared, and the bidding was narrowed down to Jekyll and Docusaurus. Jekyll was selected, as these sites can be hosted on Github free of charge (thus, easy and cheap maintenance).
Mobile and desktop wireframes were created using Inkscape. The site would be clean and simple, with a header, tabs, content region, and footer. The Material Web Components that would be incorporated included the Toolbar, Tabs, Buttons, Cards, Elevation, and Ripples.
Tickets for the development of the website were created, and a simple Gantt chart was generated to ensure that prioritized items were developed. Over the course of two weeks, the website was developed… You're looking at it right now!
Classroom Sync is a suite of Chrome Extensions and Chrome Apps that enables students to complete their Google Classroom homework without connection to the Internet.
After initial consultation, a technical blueprint was formulated and Chrome Apps and Extensions were developed.
Research, design, and documentation was conducted to deliver a Software Design Description (SDD). The SDD was delivered to serve as a roadmap for the development of the Chrome Apps and Extensions.
A Chrome Extension was developed to extend the features on Google Classroom assignments. When creating assignments on Google Classroom, teachers select an assignment title, description, due date, and much more. The Chrome Extension adds an additional field that teachers can configure so that student devices automatically download assignment materials for offline consumption. The extension also provides an additional user interface for teachers to track the progress of these downloads.
A Chrome App and a Chrome Extension were developed to facilitate background download of Google Classroom content to student devices. If a teacher marked an assignment as "Cache offline" the Chrome App and Extension work together to download Google files (Docs, Sheets, Slides), videos, images, and any other file content to local storage so that students can view the materials without the Internet. Files that are edited by students remain in sync offline and with Google Drive.
ezClocker is a timesheet solution for business owners. It simplifies the clocking in/out process with Android and iOS applications.
Crash fixes, performance improvements, data gathering optimization, and front-end updates were made to the Android application. Learn more about ezClocker here.
When a phone application conducts unnecessary work in the background, the user suffers from battery loss and laggy interfaces. An audit of the Android app was completed to find and resolve inefficiencies that improve the user experience.
Out of memory errors can be caused by just a few misplaced characters in code. Through debugging and evaluation of the memory allocation throughout the app lifecycle, memory leaks were discovered and patched.
ezClocker uses Google Maps and location services to gather and display data; it is crucial that this data is accurate. The Android application was updated to use the latest Google Services to ensure the latest technology was available to end-users. A custom location gathering algorithm was developed improve the accuracy of the location coordinates and reduce battery consumption.
Mar ‘23 - Oct ‘23 progress summary
Sept’ 22 - Mar ‘23 progress summary
I started to develop a game engine and game in C++.
How to set up python on Mac and useful commands
If you are receiving a ‘path does not exist’ after moving your project folder, in XCode run ‘Product > Clean Build Folder’ then in your Flutter project directory (/path/to/project/example/
if you are writing a plugin, otherwise /path/to/project/
run flutter build ios --no-codesign
How to create a Flutter plugin that includes platform-specific Java / Objective-C code
Fixes error “Building for iOS, but the linked and embedded framework ‘App.framework’ was built for iOS Simulator.”
Have you ever wanted a custom Google Sheet function? I make custom functions regularly and have made a few of mine available in “Tax Functions”. If you are an accountant, a tax preparer, or anyone who does their own taxes in Google Sheets, “Tax Functions” can help!
I was diagnosed with bilateral (both hands) carpal tunnel syndrome in Fall of 2016. You will find countless blog posts telling you how terrible carpal tunnel is, and they are all true. You will also find countless routines teaching you how to keep symptoms at bay. Here is what helps me to continue my career.
Exceeding Google API quotas can break your app. Luckily, there are simple measures that developers may take to mitigate these detrimental errors. This post explains how to avoid exceeding these quotas, and demonstrates how developers may update their code to eliminate quota errors in JavaScript applications.
Here, I will be blogging about my adventures in the software development world. Follow me on Twitter or add this feed to your favorite reader app to receive updates about new posts.
Hire me at an hourly rate today by messaging me on Upwork
For all other inquiries, email me at tommcfarlinconsulting@gmail.com