Recently, I undertook a fascinating task for a client. As the “Head of Curriculum” at the School of Applied Technology, my responsibilities include crafting the content for bootcamps. Our inaugural bootcamp, “Fullstack JavaScript Developer with React and Express,” required me to swiftly set up 33 developer computers to ensure students could start coding within hours.
Here’s a rundown of how I accomplished this feat and the insights gleaned along the way.
Embracing Dotfiles
Dotfiles, denoted by filenames starting with ‘.’, typically contain system and tool configurations on Linux and OSX systems. Leveraging my personal dotfiles, which not only configure systems but also install necessary tools, I streamlined the setup process. By cloning my dotfiles repository and executing a bootstrap command, I can equip a new computer with everything I need in about 30 minutes.
For the bootcamp, where many students were new to programming or the platform, utilizing dotfiles provided a standardized and efficient setup process. Moreover, since all students were using identical systems (MacBook Pros), dotfiles proved to be a convenient delivery mechanism, enabling rapid configuration with tools like HomeBrew.
Tool Highlights
Take a glance at this file for a comprehensive list of tools installed. Some notable ones include:
Joining the Setup
If you’re interested in replicating this setup, follow these steps:
- Clone the repository to customize it for your needs.
- Place it in a
~/.dotfiles
directory.
- Place it in a
- Run the
~/.dotfiles/script/bootstrap.sh
script, which will guide you through setup. - Wait for about 30 minutes.
- Done.
The Setup Process and Optimization
Upon receiving 33 MacBook Pros, I embarked on the task with a clear objective: prepare these computers for student use expeditiously. My workflow revolved around:
- Unboxing and initiating setup.
- Installing the OS and configuring user accounts.
- Executing dotfiles bootstrap scripts.
- Rebooting for OS updates.
- Verifying functionality.
- Repacking for distribution.
Flow Optimization
Applying lean principles, I optimized my workflow with the following rules:
- Prioritize work on nearly completed computers.
- Minimize idle time by initiating new work during setup downtime.
- Limit concurrent installations to prevent overload.
Workflow Setup
I structured my workflow as follows:
- Unbox and power on each computer.
- Configure initial settings and user accounts.
- Obtain bootstrap command from repository.
- Execute bootstrap script, requiring password input.
- Complete git configuration prompts.
- Await completion of bootstrap process.
- Reboot for OS updates.
- Set up recovery disk and install updates.
- Verify functionality post-reboot.
- Repackage with user identification.
Insights Gained
The Challenge of Bootstrapping
Bootstrapping, often akin to “lifting yourself by the hair,” presents unique challenges. For instance, installing dotfiles requires git, which isn’t preinstalled on MacOS. To address this, I installed Homebrew first, illustrating the concept of Yak Shaving.
The Importance of Testing
Prior extensive testing proved invaluable in ensuring a smooth setup process. From personal use to virtual environment testing, every iteration revealed and rectified issues, contributing to a seamless final execution.
Continuous Optimization
Throughout the process, I identified and implemented optimizations:
- Employing a uniform password streamlined setup.
- Documenting setup steps and URLs facilitated execution.
- Leveraging student email data expedited account setup.
- Employing photos for serial number capture minimized errors.
- Simplifying packaging further streamlined the workflow.
Adaptability Amid Disruptions
Encountering unexpected disruptions, like system reinstallations and declined positions, underscored the need for adaptability and preparedness.
Conclusion
This endeavor was both educational and enjoyable, offering insights into lean methodologies, workflow optimization, scripting, dotfiles, and computer setup. I trust you found these insights valuable.