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 consider myself an apprentice, not a master craftsman . . . 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 technical consulting 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 August 2021):
Postman is an amazingly effective software tool to develop and test web API’s, both third-party and custom API servers. With Postman, I can assemble tests for http requests, group the tests into a collection, define a set of environment variables for the tests, and automate the sequence of tests using Postman‘s collection runner for regression testing and performance monitoring.
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, and theme/color preferences. iTerm2 is my choice for accessing AWS instances via SSH.
With draw.io, I can create diagrams including flowcharts, db schema, process flow, and state/network models. The app has a clean look, allows drag & drop functionality, has an incredible shape library, and numerous templates. Files are stored in XML format.
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 during app 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/UI design and prototyping tool for mobile app development projects. One of my favorite features 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 visual design into separable sections. The text feature is also used to annotate and describe any detailed aspects of the app’s visual design.
Affinity Designer is a high-end vector drawing/graphics software tool. 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. 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 7300 open-source packages.
For Apple app developers, 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, watchOS, and macOS applications.
Ducky Model Editor is a macOS app that infers Swift (and Kotlin, Dart, and Go) models directly from JSON data. It is a tool that automates the error-prone and tedious process of creating models (such as structs in Swift) from JSON data. As such, Ducky Model Editor is a productivity tool for app developers. Ducky Model Editor is highly customizable and can create initializers, and work with nested JSON data and JSON arrays. Stewart Lynch has a great YT tutorial: Ducky Model Editor for Swift Developers.
HextEdit is a small macOS app that focusses on displaying and editing hex files. It can edit bytes in either little or big endian signed/unsigned integers, floats, or doubles. I use it primarily when developing embedded software on SAM microcomputers (e.g. ATSAML21 ARM Cortex-M0+). Although many editors that do hex files are available, HextEdit does it well enough to make this list.
A Companion for SwiftUI is an essential macOS tool for developing apps with SwiftUI. It organizes the tutorials and examples by SwiftUI protocols, scenes, shapes, views, styles, and environment values. The app is well-maintained and adds the new information from recent WWDC updates. I am blown away by the breadth of scope and level of detail for the topics covered by A Companion for SwiftUI.
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 use by PCB fabrication houses and circuit assembly houses.
MPLab X is the high-end IDE that includes support for all AVR and SAM microcomputers (e.g. ATSAML21 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 the current version (released: 2021-05-14). The ATSAML21 ARM Cortex-M0+ processor has an impressive set of on-chip features 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.
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.
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 of my computer, 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 still 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.