My Macbook Setup – As a Developer

Applications

Raycast

I’m a big supporter of keeping my hands on my keyboard as much as possible, and a proper launcher goes a big way into doing that. The first time I used Spotlight on a Mac, it opened my eyes to a new world of launching apps, where I previously had everything on my desktop. Now, whether I use MacOS, Windows, or my favorite flavor of Linux, I always look to set up something like Spotlight to launch applications.

However, Spotlight left a lot to be desired. That’s where Raycast comes it: the all-powerful MacOS launcher that has so many features I don’t know what to do with them. Raycast probably deserves it’s own blogpost, but for now it remains my go-to absolute first thing I always need to set up as soon as I possibly can when I get a new Mac. And from the looks of it, Marques from MKBHD, Theo from T3.gg, and the likes agree.
https://www.raycast.com

Homebrew

Not sure if this needs any introduction, but it’s one of the first thing I always look to install when getting a new Macbook. It’s the package manager that Apple never built, and is incredibly useful in all sorts of things.
https://brew.sh

Browser of Choice: Zen Browser

I really just want two things out of my browser: vertical tabs and for it to be a browser. It feels like these days, so many browsers are just pushing you to use or do non-browser things such as use their AI tool or their web3 wallet. Zen Browser is just a breath of fresh air. Not only are they simple and don’t force you into tools that you don’t want to use, but they are innovating on functionality that genuinely improve your web browsing experience! Things like cmd+shift+c to copy the URL or option/alt + click to open things in a temporary window make my experience much better.
https://github.com/zen-browser/desktop/discussions/3397

Editor of Choice: Zed + VS Code

I actually flop back and forth between two main code editors, depending on the project and exactly what I’m working on. I am tending to migrate more towards Zed these days, but occasionally I’ll open up VS Code for something here and there.

I don’t think VS Code needs any introduction, but it is the most popular choice of any editor these days.
https://code.visualstudio.com/

Zed is a new player on the block, and it really feels like they’re rethinking what a code editor should be. It’s ridiculously fast, and makes VS Code feel like I’m walking through mud. I’ve also been recently playing around with some of their AI features, but it’s too early to tell. I’ll update the post in the future.
https://zed.dev/

Terminal App of Choice: Ghostty

Ghostty is just a fast terminal emulator. Similarly to Zen, it aims to be fast and stable. There are some really nice things about it and some pain points (especially when sshing into other devices). At the very least, it has good tmux support and is much more configurable than the stock terminal app.
https://ghostty.org

OrbStack

I heard about OrbStack from Theo (from T3.gg) initially. As a massive user of Docker in everything I work in, the base Docker Desktop for Mac is probably one of the worst integrations (even in Windows). I’ve had nothing but issues, have to install/uninstall it constantly because of the MacOS security detections, and it just is slow. When I heard about OrbStack, it seemed to be the solution for me, and boy did it become it! I also absolutely love that it also includes the ability to work with VMs, which I do on occasion. Definite recommendation from me!

https://orbstack.dev

Alt-Tab

Let’s be honest, the default Cmd+Tab function is aweful in MacOS. It just sucks, and the biggest reason why is that you can’t really switch between two instances of the same application! Alt-Tab is an open-source application that lets you regain control over your Cmd+Tab keybinding.
https://alt-tab-macos.netlify.app/

Rectangle (Pro)

Window management is always tough, especially on big screens. Since I often plug my Mac into a big monitor, I also like to have shortcuts to put apps in specific locations. Rectangle allows me to do that and more! It’s not as good as Windows’s option in Powertoys, but it’s good enough!
https://rectangleapp.com

Hidden

Macs love their menu bar items. This tool hides the unimportant ones when you don’t need them to declutter your top right of your screen.
https://github.com/dwarvesf/hidden

Must-have Settings

This is as much for me to remember what I care about as it is for anyone reading this, but here are a few settings I always need to remember to change:

Battery Percentage Indicator

Wild that this isn’t turned on by default, but I always want to know what my battery percentage is at a glance!

Lock Screen with Cmd + L

I come from a Windows background, as I’m sure most of us have. Cmd+L for locking your device just makes sense, rather than some dance of Cmd+Shift+Q or whatever it actually is. Here is a handy short Medium article for a reminder on how to set it up: https://achekulaev.medium.com/lock-screen-with-cmd-l-l-global-hotkey-on-macos-high-sierra-3c596b76026a

Minimize Key Repeat Delay

As a vim flow user, I really rely on the ability to just hold a key and have it be repeated quickly. Therefore, under the Keyboard section of the Settings, I have Key repeat rate set to maximum Fast and Delay until repeat set to maximum Short.

My Favorite VS Code Extensions

Microsoft’s Visual Studio Code (VS Code) has quickly become my favorite IDE and hackable text editor since I first tried it in 2016. The immense flexibility with different languages and file formats makes it the ultimate swiss army knife for any software developer. Add in support for in-line and step-by-step debugging and you have my vote for my favorite IDE. However, stock VS Code is rather useless, and Microsoft has done this on purpose to mold your text editor in your style using extensions. Therefore, here are my top favorite VS Code Extensions I have installed on every computer I own and develop.

Note: This list is subject to change as I modify my preferences with VS Code. It serves as a list of extensions to install on a new computer for me. Honorable mentions are cool extensions I have found that I don’t usually use or have installed, but I thought may be useful for readers who come across this post.

C/C++

CMake Tools

Code Spell Checker

Docker

Jupyter

LaTeX Workshop

Prettier – Code Formatter

Python

Pylance

ROS

Todo Tree

YAML

alternative: docs-yaml by Microsoft

PlatformIO IDE

Making .desktop Files for Linux

Here’s a quick explanation on a tool I’ve been recently using more and more. As a linux user, you will often run into scripts or programs that don’t come packaged to be installed. Although this totally fine, often times it means that I can’t launch the script with my favorite launcher, Albert! In this case there are two main methods I have found to make custom .destkop files. For the following examples, I will be using the following .desktop file for Anaconda Navigator.

[Desktop Entry]
Name=Anaconda-Navigator
Exec=/home/alex/anaconda3/bin/anaconda-navigator
Terminal=false
Type=Application
Icon=/home/alex/anaconda3/lib/python3.7/site-packages/anaconda_navigator/static/images/anaconda-icon-256x256.png
Categories=Development;
Keywords=python;python3;anaconda;navigator;conda;
Comment=Anaconda GUI Navigator for Python 3

Recommended: Using Desktop-File tool

This tool is simple to use, and also allows you to put the .desktop file anywhere on your computer. Wherever that file is, simply change the directory to that file. Then run the following command, replacing the name of the .desktop file you just made:

sudo desktop-file-install anaconda.desktop

It may take a few seconds (20 – 40) to populate in your launcher, whether that is the standard Gnome search or a system like Albert. I will usually put this desktop file in the same location that the program files are to make it easy to find if I ever need to edit it. For example, for the case of Anaconda, the program files are found under ~/anaconda3/ so I will put the .desktop file there.

Alternative: Place Files In .local folder

An alternative to the above solution is to place the .desktop file under ~/.local/share/applications/ folder. This will be automatically be searched by the launchers when searching for a program, however I have had to restart Albert occasionally when it doesn’t find the program.

Other Resources

If you would like to learn more about .desktop files, the ArchLinux wiki has a great article. You can find out more about it here: https://wiki.archlinux.org/index.php/desktop_entries

3D Printing Filament Spool Weights

In order to get an accurate measurement of a partially used spool of filament, I am compiling the average weight for empty and full spools of different materials from different companies I’ve used over the years. The table below will be compiled with more data as I obtain it! If you would like to contribute, drop a comment below!

BrandFilament TypeSpool SizeFull Spool WeightEmpty Spool Weight
EryonePLA (White)1kg/NAN/AN/A
HatchboxPLA (Black)1kg/NA2.253

Ender 3 Upgrades + Tips/Tricks

I recently purchased an Ender 3, and want to share the tips and tricks:

Upgrades:

https://www.thingiverse.com/thing:2894097

https://www.thingiverse.com/thing:4096147/files

https://www.thingiverse.com/thing:3765594/files

https://www.thingiverse.com/thing:2917932

https://www.amazon.com/gp/product/B079JZ374W?tag=all3dp0c-20

https://www.thingiverse.com/thing:2920060

https://www.thingiverse.com/thing:2943218

https://howchoo.com/g/ntg5yzg1odk/using-octoprint-with-the-creality-ender-3-3d-printer

https://www.thingiverse.com/thing:3255518

SmallKat MQP

The SmallKat MQP is providing a quadrupedal robotic platform to help research and design new gaits, test sensors, and teach engineering students. Current options limit small companies, universities, and hobbyists due to their complexity, large size, and immense cost. SmallKat is a low-cost robotic platform with customizability and adaptability in mind. To allow for a multitude of gait designs, it is designed with 4-DoF legs controlled by powerful custom servo motors, 9-DoF IMUs, and custom microcontrollers. The body is constructed using additive manufacturing with PLA plastics, and even has a continuum tail for added body control. The higher-level controller runs on a single-board computer for added performance when computing kinematics and dynamics, and controlling different gaits. Future revisions of SmallKat could look to advance the basic gaits that were developed and add new sensors like a 3D camera.

Mechanical Design

4-DoF Legs powered by JX HV-5932MG for adaptability & maneuverability

  • Low cost ($30), high torque (32kg-cm stall), & simple communication system
  • Other options considered: Dynamixel AX-12a & XH430

Continuum Tail: 20 links, controlled by 4 braided fishing lines

  • 4 Maxon motors control the movement of the tail by tightening or loosening the string
  • 2 motors control the first half of the tail, other 2 motors control the second half

Polyurethane Feet add an increased coefficient of friction with the ground

  • Feet have integrated pressure sensors for force measurements
  • 3D printed molds created to attach polyurethane to the feet

Electronics

Custom Microelectronics:

  • Motor Controller
  • Custom foot sensors
  • Charger
  • Motherboard
  • Tail Driver and Controller
  • IMU

Communication Stack

  • Receives Updates wirelessly
  • Calculates IK of the robot
  • Updates joint angles
  • Returns joint angles, IMU data, Foot Sensor Data and battery voltage.

Software

Raspberry Pi 3 B+ connected to the microcontroller via HID over USBBowler Studio & Bowler Kernel for development environment & simulationBowler Kernel: underlying kernel, runs headless on the Raspberry Pi 3Forward kinematics & some dynamics are integrated in Bowler Studio

  • Developed inverse kinematics software for position control using Geometric approach

Basic Walking Gait with a Central Pattern Generator (CPG) for trajectory generation Dynamic walking gait by calculating the Wide Stability Margin and a CPG for trajectory generation

Development Environment & Simulator

Want more information? Read our Paper!

Follow Us on Github!

NASA Space Robotics Challenge Team WPI Finalists

What is NASA’s Space Robotics Challenge?

The NASA Space Robotics Challenge was an industry competition that tasked teams with developing and displaying the ability of an R5 robot to assist with the necessary tasks within a NASA mission, such as one on Mars. We used the Robot Operating System (ROS), and the virtual environment Gazebo to simulate the robot performing the tasks. Read more about the challenge here.

How did WPI’s team do?

The WPI Humanoid Robotics Lab team was among 20 finalists in the competition, beating out over 405 teams from 55 countries.

Team WPI Robot in 3 Days 2018

As a part of the WPI Robotics Club, we developed this 2018 FIRST FRC robot in 3 days! This robot is for hundreds of thousands of high school students around the world, who will now have a better understanding of what strategies to use when building their own robot in the next 6 weeks. To read the build blog, please visit here, and make sure to look at our videos below!

Poverty Stoplight Interactive Qualifying Project

This project is an Android application designed to help social workers in Paraguay better help people in poverty. The application was developed for Fundación Paraguay and Poverty Stoplight, and consisted of developing a REST API and an Android application capable of syncing sensitive family data from a secure server.

This project was done as an Inquiry Qualifying Project at Worcester Polytechnic Institute, on a team of 4 students, requiring to solve real societal issues within a multidisciplinary team.

What is Poverty Stoplight?

Poverty stoplight is a multidimensional poverty system that is designed to improve the lives of impoverished families, and eventually get them above the poverty line. The system is currently expanding to several nations, including the United States, Great Britain, and Paraguay. If you would like to read more, please visit www.povertystoplight.org