Windows
My company gives software/firmware developers a very capable Windows laptop. It's got 32 cores, 64 GB of memory, and a 500 GB SSD to which I was able to add another 2 TB SSD. There are a couple downsides to this machine -- it's kind of heavy and the corporate IT team has this laptop very locked down. All software installed on it must be on the approved software list which I understand. It makes it harder to use my corporate laptop as a good development environment though. I compensate by using Linux machines for the actual development work and relegating the Windows machine to acting as a terminal plus using it for web browsing and corporate communications tasks such as email, Teams, and Slack. I was able to install VMware which allows me to use the laptop to run Ubuntu Linux VMs which are used for occasional software builds and to host some FPGA development tools to program the firmware I develop onto the embedded hardware it targets.
- Vim - I've been using Vi/Vim as my editor of choice since I took a job which gave me a Sun workstation on my desk. I've got friends who love various editors such as Emacs, Visual Studio, Notepad+, Atom, and a few others. I've occasionally experimented with other editors but it's really hard to overcome the muscle memory which comes from using Vi for 35 years. The benefit is I'm still using a few macros I created that long ago. I prefer GVim, the GUI version of Vim for its ability to resize windows.
- Putty - I've got Putty profiles for all the Linux machines which I connect to regularly. Each includes X11 forwarding which gives me the ability to launch X11 apps on any of the Linux hosts I access. I know that Wayland is more modern but most of the Linux machines I'm accessing run old enough versions of Linux to make Wayland too much trouble to try to use. Putty supports both SCP and serial connections, making it a handy way to connect to serial console ports.
- WinScp - This is a great little network file transfer program which supports the SFTP and SCP protocols. I often use one Linux host to build my software and another to install it so being able to easily transfer files is a necessity.
- VcXsrv - Since so many of the tools I use require an X11 connection, I need to run a X11 server on Windows. I actually petitioned our IT group to add this to the approved software list. It can be a little buggy at times but getting free software approved is always much easier than asking for commercial software be added to the budget.
- TeraTerm - Believe it or not, sometimes I need to transfer files to an embedded machine which only offers a serial connection. TeraTerm supports ZMODEM transfers which makes exchanging binary files much easier in that case.
- Kdiff3 - Capable free GUI file/directory comparison tool and one of the few allowed on my work laptop.
- Microsoft Outlook - Outlook seems to work adequately for basic email and scheduling needs. It has a terrible search feature which makes it difficult for me to find past emails I need to reference.
- Microsoft Teams - I have never cared for Teams but it's a necessity to allow me to join meetings while working from home.
- Slack - Most of the time this is okay but it's very quirky. It's a necessity to allow easy connections to people while I'm working from home.
- Google Chrome - It's the browser chosen by our corporate IT team. I guess it's a necessity since it's captured the majority of the browser market but I must admit that I've never really cared for its UI.
- Windows Calculator - Having a calculator capable of hexadecimal and binary operation is a necessity at times.
Linux
All of the embedded devices I work with run some version of Linux. Some actually have multiple copies running on different CPUs.
- Vim - Vim comes preinstalled on all the Linux machines I need to access. I do often still install Gvim to make it easier to edit files over an X11 connection.
- Putty - I manually install Putty on Linux machines. It makes it easy to connect to devices on the Linux machine which use a serial port. It's also handy to do that via an X11 connection.
- GNU Screen - Screen makes it very easy to maintain a persistent connection to a machine which is necessary as some of the firmware builds take over an hour and network hiccups used to kill the build before it was done. Screen allows me to reconnect after the network issue and see the build continuing as if no interruption had occurred.
- Exuberant Ctags - I've been using ctags to make navigation through unfamiliar code easier for 30+ years now.
- Ack - Ack allows me to do a recursive search for files which contain some string and to limit that search to source files or some other category such as Bitbake files. I use the ack executable which is implemented as a single perl module which makes it trivially easy to install on Linux machines. I know there are faster source search tools available but this one is easy to use and works well for me.
- Kdiff3 - Capable free GUI file/directory comparison tool.
- xxd - Sometimes I need to examine binary files and this tool is readily available on Linux machines. It can also help transfer binary files in a pinch by converting a file to its hexadecimal ASCII equivalent, transferring it, and using xxd to convert it back to binary.
- bash - I rely on the bash shell along with awk, sed, grep, find, and other standard GNU Linux tools for the vast majority of my scripting and interactive use needs. I rely heavily upon bash scripts to help automate much of my development process.
Apps for both Mac & iOS
Here are the apps I run on both the Mac and iOS.
- Music - Sometimes I like to have background music playing to help mask out distracting sounds while I'm working from home. I have a few playlists which work well for this purpose. I buy most of my music in MP3 form from Amazon or Bandcamp and import the MP3 files into the Music app.
- Apple Mail - It's free on Apple devices and does a reasonably good job of keeping my mail accounts in sync between my Mac and my phone.
- Apple Numbers - Even though this is a spreadsheet, it can also function as a lightweight database app. I use it to keep track of audio books and e-books I own and which I've read. I have quite a few of these lightweight databases. I used to use a great database app called Bento made by FileMaker which had versions for Mac and iOS. It was discontinued in 2013 and I haven't found a replacement I like better than Numbers although I do occasional search still.
- Google Calendar - I like it because it seems to be the most flexible in scheduling recurring events. For example, you can choose the 3rd Saturday of each month or the 21st day of each month.
- Microsoft To Do - A reasonably good cross platform to do app.
Mac
My old Intel Mac Mini is getting long in the tooth but still manages to support some of my work and all of my personal computing needs. Here are some of the apps I run on it.
- ChronoSync - I've been using ChronoSync for backups for quite a while now and I've very happy with it.
- Little Snitch - I insist on running a top notch firewall program and Little Snitch fills the bill nicely.
- GnuCash - Since I pay most bills electronically, GnuCash lets me keep track of my checking account easily. I really like its ability to change the sorting from ascending to descending dates since that makes it much easier to compare with my bank's statements.
- Waterfox browser - I've always liked the Firefox browser for how easily its UI can be customized and for the rich set up plugins which allow safer browsing. Firefox lost me as a user when they started on their quest to shove AI in every aspect of the browser. Waterfox is a reasonable fork of Firefox which does not include the unwanted AI features. I use this for all my general purpose browsing. I also use the Chrome, Safari, and Vivaldi browsers each for a special purpose. It limits having to worry about whether cookies from financial or social media accounts are being seen by other websites.
- Vim - The command line version of Vim comes preinstalled on Mac machines. I still install MacVim to make it easier to edit files and to be able resize windows.
iOS
I use the cheapest iPhone available whenever I need to replace my phone as my personal device. I've got iOS software I depend upon to make life easier.
- iTunes Remote - This allows me to easily select the playlist from the Mac's Music app. I used to also use it for pausing music when I had an incoming call but now I rely upon an Anavi Macropad 10 for that purpose which allows me to pause songs without fumbling to bring up an app on my phone.
- PCalc - Having a calculator capable of hexadecimal and binary operation is a necessity at times and I'm not always near my Windows laptop.
- Overcast - This is my favorite podcast app. It has the best UI of any iOS app I can think of.
- Audible - Listening to audio books keeps me sane when commuting to work or in warmer weather when I'm doing 3-4 hours of yard work.
- Libby - App which makes it easy to borrow library books. Mostly e-books but they also have audiobooks.
- Hoopla - App which makes it easy to borrow library books. This seems to have more audiobooks and graphic novels than Libby does. They also let you borrow and stream digital movies and tv content.
- Two factor authentication apps - I enable two factor authentication for any website which supports it and apps such as Authy, Google Authenticator, and others make that possible.


