8 Valuable Tools for Application and Embedded Systems Development

Get New Articles by Email

Since I got my new Lenovo Legion laptop with an NVIDIA GeForce RTX 4060 graphics card, I’d mainly been working on 3D and game development using tools like Blender and Roblox Studio, which didn’t require much more than installing those applications to get me up and running.

Now I’m ready to get Windows 11 set up to handle some upcoming application and embedded systems development projects.

I figured I’d share this list of 8 tools that I use on a regular basis as a Research Engineer, so newcomers to development can learn about them. Plus, this will be a handy reference for me to come back to when I need to set-up another machine in the future.

This won’t be a step-by-step installation tutorial, since details constantly change, but I’ll provide a breif summary of what I use each of these for.

Visual Studio Code

VS Code is such a powerful development tool! I don’t even begin to use it to its full potential. I mainly use it as an IDE (Integrated Development Environment) for writing and managing code. It’s simply a “must have” on every system I work on!

I especially love the built-in terminal and Git features. The vast selection of extensions is mind-blowing, which allow you do just about anything you can imagine.

I should consider spending more time to get to know it better!


GIT

If you want to work with code, you simply must learn GIT. It’s not hard to learn the basics for code management and version control, but that doesn’t even scratch the surface of the power GitHub builds into their tools. GitHub Learning Pathways, and Copilot (built into VS Code) is a good example of the amazing work they do.

IF nothing else, you’ll need it to clone, or share code repositories.


Python

Python has become my favorite programming language, since it’s so versatile. I can’t think of anything you can’t do with Python!

Python 3.10.6 is called out as the specific version required to support running Stable Diffusion locally using Automatic1111’s UI, even though Python 3.12.1 is the latest at the time of writing this. So, that’s the path I’ve taken.

I guess you can also install Python from the Microsoft Store, but I chose the old school route. Just be sure to select “Add Python to 3.10 to PATH“ to avoid any issues.

I ❤️ Python!!


Docker

Docker is pure magic thanks to their engine that manages tons of complexity within containers.

You can learn more about the concept of containers and how to work with them here. The easiest way for me to describe them is to think of them as shipping containers (like their logo) that can hold literally anything. Including entire operating systems.

I love how you can spin up complex projects in seconds with Docker! It makes development far more accessible for newcomers.

Docker Compose is my favorite way to combine services for system design and prototyping solutions with production grade tools.


Windows Subsystem for Linux

I do a lot of development on Linux, so being able to work with familiar tools on Windows is helpful for me to focus on my project and not stumble around. That’s where it was amazing to set-up Ubuntu in no time with WSL!

WSL does take a good 90 gigabyte chunk of my hard drive, so I’ve deleted WSL and stick with using Docker instead. Using Docker without WSL adds a level of complexity that beginners may not want to deal with, so if you have the disk space it’s still very useful.

A couple of useful commands I learned recently are:

  • Open VS Code in the WSL folder your in using the command code ..
  • Use the command explorer.exe . to see files in your WSL environment with Explorer.

Node

Javascript is what I use most for web application development. Node.js let’s you use JavaScript for both the front-end and back-end of your application.

To use Node for JavaScript development in WSL definitely requires NVM (Node Version Manager), since the Node version for WSL Ubuntu is 12.22.9 when the current version is 20.10!

Once I updated my version of Node, the installation of Ollama to run LLMs locally went smooth. I was happy to see the message that it recognized my NVIDIA GPU through WSL automatically!

>>> NVIDIA GPU installed.

Arduino IDE

The Arduino IDE is very useful for various embedded systems projects.

Whether it’s to program my actual Arduino development board to explore robotic components, or an ESP-32 to control a drone, Arduino IDE is extremely helpful for pushing code to a microcontroller to send and receive data through a GPIO (general-purpose input/output), so you can control physical hardware.


Raspberry Pi Imager

When working with Raspberry Pi development boards, which run a special build of Debian Linux to provide a full blown operating system that enables easy access to external hardware components, just like Arduino, Raspberry Pi Imager is nice to have ready to go. That way you can easily wipe everything to start over, or clone an existing project to run on a new board.

I’m eager to test out the built-in SD card reader on my Lenovo Legion laptop. I love how I can set up a Raspberry Pi for one project, then simply swap out the SD card to explore something new and swap the cards back to start the old project back up again.


Conclusion

I hope you find this list of development tools that I use on a regular basis useful!

If you’d like to see how I use them, be sure to subscribe to get new articles in you inbox 🙂



Header Image Info

Since I’m officially running Stable Diffusion models locally to generate header images for my articles, I’m going to start providing details about the one I use at the end each article.

This was the first time I created a background image using AI with the intent to enhance it with other graphics like logos.

Since using my laptop for hobbies can feel like actual work at times, I tend to use my phone for as much as possible.

This is a screenshot of me remotely accessing Automatic1111’s UI to run Stable Diffusion from my laptop to leverage the GPU (top half), with the logos I had prepped using Canva (bottom half).

One of my favorite features of Samsung Galaxy phones is the ability to have multiple screens visible at once! It’s super handy when working from your phone.

I ran through a bunch if variations of this image and found I need to learn how to get better at combining seeds. I liked a version with a laptop that looked more like mine, but preferred the network node circles in this version best. Figure I shouldn’t worry so much about something that nobody will care about as much as me 😄


Final Version

Logos were manually added using Canva.

Prompt: Advertising poster style An eye catching banner image for a tech blog with a laptop and 8 white circles from the background that connect to a modern black gaming laptop like ((network nodes)), (high-tech), colorful keyboard lights, dark dramatic background . Professional, modern, product-focused, commercial, eye-catching, highly detailed

Negative prompt: noisy, blurry, amateurish, sloppy, unattractive, Messy, distorted, cords

Steps: 20, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 1035438921, Size: 1344×768, Model hash: f7a1beed86, Model: colossusProjectXLSFW_v53Trained, Style Selector Enabled: True, Style Selector Randomize: False, Style Selector Style: base, Version: v1.6.1

Time taken: 4 min. 56.8 sec.

A: 10.19 GB, R: 12.50 GB, Sys: 8.0/7.99609 GB (100.0%)

Get New Articles by Email

Leave a Reply

Verified by MonsterInsights