As a person masters a craft, the contents of their toolbox evolve. The tools become highly suited to the task, are functionally precise, and exhibit the finest quality. They become an extension of the master and are a masterpiece in their own right. I am not a master craftsman in iOS app software development . . . yet. It is my goal to become really good at creating what I envision. For now, I am still learning, building upon my skills, and updating my toolbox. This blog describes the tools currently in my app development toolbox. None of the links are sponsored links. I just like these tools and use them a lot.
Contents of my Toolbox:
Here is my current list (as of September 2019):
Postman is an amazingly effective software tool to develop and test web API’s. With Postman, I can assemble tests for http requests, group the tests into a collection, define a set of environment variables for each test, and automate the sequence of tests using Postman‘s collection runner for regression testing and performance monitoring. And, that is just the start! Postman streamlines the testing during my API develop process.
iTerm2 is a great replacement app for the command line Terminal app included with Mac OS. iTerm2 supports advanced features, multiple sessions, tabbed and split panes, themes/colors preferences, and use of touchbar. iTerm2 is now my choice for accessing AWS instances via SSH.
With draw.io, I can create flowcharts, db schema diagrams, process diagrams, network diagrams and other types of diagrams. The app has a clean look, allows drag & drop functionality, has an incredible shape library, and numerous templates. Files are stored in XML format. I use draw.io to create software flow diagrams and state models for our products.
DB Browser for SQLite is an excellent app that can create, view, design and edit database files compatible with SQLite. It is an easy way to view the SQLite database for an iOS app currently in development. After a test run, I download the app container using Xcode, save the SQLite database files, and open DB Browser for SQLite to review the contents of each SQLite database table.
Adobe XD is a UX design and prototyping tool for mobile app development projects. My favorite feature is named colors and fonts that allows updates to be applied across the design simplifying design iterations. With XD, I can visualize animations with various triggers (e.g., tap, timed, voice) and transition methods giving us a good sense of the app’s look and feel. Multiple artboard flows can be included in each file making it easier to divide the app’s UX into separable sections. The text feature is also used to annotate and describe any detailed aspects of the UX design.
Affinity Designer is a high-end vector drawing/graphics software tool on par with Adobe Illustrator. I started using Affinity Designer in early 2018. Affinity Designer is world-class with professional-grade functionality, performance and UI/UX design.
Affinity Photo is a high-end photo editing software tool on par with Adobe Photoshop. I started using Affinity Photo in early 2018. Affinity Photo is world-class with professional-grade functionality, performance and UI/UX design.
Atom is an incredible text editor with a clean interface and all the essential functions such as syntax highlighting, auto-completion, auto-indent, code folding, customizable panes and Git integration. For me, Atom’s strongest feature is the massive customization from a large library of more than 7378 open-source packages.
Pixelmator is a full-featured image-editing software application. It keeps getting better with each version and now has an amazing suite of features and effects. I started using Pixelmator just after it was originally published in 2007. The software uses a floating palette format for its tool windows that allows me to totally customize the workspace environment.
Xcode is our world. As a software developer with a career spanning several generations of Moore’s Law in computer technology and associated software development environments, I am blown-away with the functionality, feature set, performance and user interface on Xcode for developing iOS and OS X applications.
It is no secret that electronic circuit design and board layout have become performance critical as circuit complexity has increased by orders of magnitude in the last decade. Part and board layout pad and line geometries have shrunk to a point that is almost too fine to see. Altium is a high-end schematic capture and circuit board layout tool that is world-class in every perspective. It allows me to create informative schematics, reliable high-performance circuit layouts, order through DigiKey (and other electronic part suppliers) directly from the the bill-of-materials (BOM) in Altium, and export an electronic data package/file for PCB fabrication houses and circuit assembly houses.
Atmel Studio is the high-end IDE for all AVR and SAM microcomputers (e.g. L21 ARM Cortex-M0+) that have been used in various embedded applications throughout the world and on the entire ever-popular family of Arduino modules. I am amazed at the feature set, performance, and user interface on Atmel Studio 7 (current version). The processor has a significant amount on on-chip features that Atmel Studio supports including low-power modes, FS device/host USB interfaces, 12-bit ADC, op amps, configurable digital signal pins (input, output, pull-up, interrupt), and on-board memory (Flash and RAM). I use the SAM-ICE (JTAG protocol) to download code to the microcontroller and debug (set breakpoints, examine registers, monitor variable and memory usage.
Kindle makes my list of tools (surprised?). Kindle is a software app from Amazon that enables me to build up a highly accessible multi-device library of downloaded technical books that I have purchased and any PDF files that I have uploaded. My current Kindle library has well over 60 books. Less than 30 seconds after I buy a Kindle-version of a technical book, it is on both my MBP computers, my iPads and my iPhone. I can bookmark, search, and highlight. When I set down my iPad and use my MBP, the book is synced to the same place where I was reading on my iPad. That is why the Kindle app is listed here as one of my tools.
KiCad is a schematic capture and circuit board layout software program. KiCad uses an integrated development environment for the stages of the circuit design: Schematic capture, PCB layout, Gerber file generation/visualization, BOM generation, and library editing. KiCad’s popularity is fueled by its GerbView component. I like that KiCad is a cross-platform program (Linux, Microsoft Windows and Mac OS X) and supports multiple languages. Numerous component libraries are available. Custom components can be created. Lots of documentation and community support. KiCad is a world-class program for electronic circuit design.
FileZilla provides a GUI for transferring files between my MBP and remote computers via FTP and SFTP. File and folder structures of the local and remote machines are shown in two panels of the GUI. Transferring files or folders is a drag-and-drop operation between the two panels. Above these two panels is a terminal window that shows the command line communications occurring with the remote computer. The functionality, performance and user interface for FileZilla are world-class.
DataVault stores confidential information (e.g., login credentials and financial account info) on Mac and iOS devices using the Advanced Encryption Standard (AES). Synchronization of information between a Mac and iOS devices, if desired, is accomplished from any one of the following methods: iCloud, Wi-Fi, Dropbox. DataVault has a clean user interface that permits tagging entries with icons and organizes accounts into categories. By all means, I want to avoid the doomsday scenarios that are inevitable if I try to remember it all, write everything down on a secret note hidden somewhere, or store everything in an unencrypted file on a hard-drive. With DataVault, I have secure access to my confidential data anywhere and everywhere I go. When it comes to securing my confidential information, I dont gamble. I go with a game plan that I can trust.
Ark manages file backups to Amazon S3 (Simple Storage Service). Ark has a clean user interface for selection of folders and files. Ark does all data encryption before it leaves my computer (i.e., client-side encryption). Backups are stored in an open, documented format. In addition, an open-source command-line utility hosted on github (arq_restore) provides a guaranteed way to retrieve my data. S3 is the gold standard of online storage offering data durability of an unbelievable 99.999999999%. Ark does an incremental on-line backup when I login and every hour after. All recurring costs are billed by AWS. For nearly 80GB of storage, it costs less than $3/month. When it comes to backups, I dont gamble. I go with a solid game plan that I can trust.
Carbon Copy Cloner (CCC) creates full image bootable backups that include an OS X recovery partition. Even with Ark providing incremental backups of my data files to the cloud every hour, there is still one open issue to resolve in order to have a solid backup strategy. In the case of a complete internal hard-drive failure or loss, I want to be able to be up and running again with minimal delay. The solution is to have an external hard drive with a bootable image of my internal hard drive. Carbon Copy Cloner provides that functionality perfectly. CCC does full backups and incremental image backups, and fully customizable image backups. CCC can even schedule the backups to occur at a regular intervals. I especially like the task history feature which shows me a log of the previous backups. When it comes to backups, I dont gamble. I go with a solid game plan that I can trust.
Git-Flow implements a Git work template that brings a certain organizational structure to development, allowing a team of developers to follow a common methodology. The basis for Git-Flow is captured in the workflow diagram at the link provided below that includes branches for master, development, feature, release, and hotfixes. Git-Flow is code that combines Git commands to simplify operations specific to the Git-Flow workflow diagram. Although there are many ways to manage workflows using Git, this structured approach appeals to me.
SourceTree is an app that provides a highly informational GUI front-end to Git with functionality to support Git-Flow process workflows. Although, one stills needs to understand how Git works and should be fluent on the command line, the amount of information on the SourceTree app makes it easier for me to see the workflow during development and production releases.
I plan to revisit this post regularly to see how my toolbox changes over time.