Skip to content

Latest commit

 

History

History
153 lines (79 loc) · 17.3 KB

README.md

File metadata and controls

153 lines (79 loc) · 17.3 KB

Carsten’s Page

Time for a new personal page 🙂

Design

Index

Intro:

Hi, I’m Carsten 👋🏼

I’m a lead software developer specializing in web applications and related technologies and systems. I’m all about collaboration, I try to be as open and honest about what I don’t know as I can be. I wasn't always like that, but as soon as I stopped my world started expanding at a rate that still dumbfounds me! I am a curious human and I love to learn and connect with people. 🙂

Nav:

  • Writings
  • Open source (GitHub)
  • My tools and processes
  • Me outside of tech
  • A call to collaborate (learn together)
  • Social links

Tools and processes

I’ve been programming professionally for over a decade. My career started with Microsoft ASP 2.0, hacking on VBScript and ActiveX Data Objects. From there I discovered PHP and open source software. This lead me to Python through Django and eventually to Ruby through Rails.

During this time I attempted to get into design school twice (YSDN). I could never make it past the interview, too little applicable education, and a brutally weak portfolio. I kept persisting though, developing my design eye and related skills in tandem with web development. Reading as much literature on the subject that I could get my hands on, online, at the library, and book stores.

I guess you’d say I’m a Full Stack Developer. To be honest, I’m not entirely comfortable with the concept, it’s impossible to be truly “all knowing” about the “full stack” because it means so many different things depending on the context.

Anyways, now that you know a little bit about how I got to where I am, I’m going to share with you the tools that I use to perform my various roles as a software developer.

These preferences I have developed over time, based on my experiences and requirements, also my privilege. Some of these things are expensive! I’m fortunate enough to be able to afford them or be provided them by my workplace. This is not intended to convince you that my preferences are the best or that they should be your preferences too. You may have different needs based on your own requirements, experience, and budget, that’s a good thing!

My tools and processes are also constantly changing and evolving. If you have any feedback for me on any of this stuff, feel free to hit me up on Twitter or send me an email: [email protected]

This is my company issued laptop (thanks Crowdmark), it is also my choice of laptop. I would own this exact computer regardless of my workplace or not. I like Apple hardware, I like how well they support their products, I like that they take privacy, security, reliability, and ease of use seriously. My experience with Apple products since 2006 has been overwhelmingly positive.

In the fall of 2018 I had an issue with the keyboard sticking, I took it in and they replaced the entire keyboard, battery, and TouchBar, no questions asked. Since then I have had zero issues, and the keyboard feels even better.

When I was first diagnosed with lymphoma, my friend Jamie Gilgen rallied the cycling community and gathered enough money to buy me a much needed new phone! Amazing. I’m still in awe of all of the generosity I have received. This made me realize just how important my phone has become in my life. It is a vital communications and productivity tool and an intergral part of my modern life.

My previous phone (an iPhone 5) was fine, it functioned. But when I upgraded to a modern, fast phone it was stunning how much smoother it made everything. With a good phone I can do so much! Whenever I see a way to remove friction by changing tools or processes and I am able to act on it, I do. I didn't realize that my outdated phone was adding so much friction to my day.

I have always thought of tablets as sort of a frivolous thing, useful, but also not really necessary. I don’t think that anymore. During my time sitting in chairs hooked up to IV pumps, I pulled the trigger and got an iPad. It was great! I could watch YouTube, do emails, play games, Facebook, all that good stuff so easily, without toting a 15’’ laptop everywhere. I also find the tablet incredibly useful as a writing tool, some of my fave apps:

  • iA Writer: Awesome writing tool with Markdown support
  • Working Copy: Great app for interacting with Git repos
  • GoCoEdit: Great text editor for code and can SSH too

All those apps work on the iPhone as well and I've used them all on there too. I also really enjoy fronted dev on the iPad with Safari using the remote inspector / dev tools. It works really well and makes interactively developing UIs on an actual touch device a lot nicer. (Try simulating a stylus on your XCode simulator 😩)

I’ve also used VMware Fusion for many years. It’s good, it works well, but it’s not free and I just don’t think it’s worth the cost given how good VirtualBox is these days. In the past I had all of my development environments in VMs managed with Vagrant, these days I’m using Docker for that mostly. These days I find myself using Virtual Box mostly for testing things in Windows using Microsoft's free VM images.

Docker for Mac (Docker Desktop)

Docker and Docker Compose make creating and running development environments a breeze. You also gain the advantage of being able to apply a lot of these learnings directly to production environments, and CI too! These days with Docker Desktop the performance and stability of Docker is satisfactory or beyond satisfactory for my needs.

Shout-out to my lad Aanand, good friend and co-creator of Docker Compose!

Oh, text editors. I have used a number of editors over the years, you name it, if it’s somewhat popular, I’ve probably tried it. Notepad+ back in my Windows days, TextMate 1 and 2, Coda, Sublime Text 2 and 3, Atom, vim, MacVim, NeoVim, Spacemacs, and over the past couple years Visual Studio Code.

These days I do 80% of my coding and writing in Visual Studio Code, it works fantastically! The ecosystem of extensions is incredibly rich and diverse, and often very high quality too. It works great for any project I am working on, and Live Share is a godsend! Collaboration and learning through pairing is becoming very important to me. It's exciting because I now have an editing and programming environment that's very powerful and is also incredibly accessible to newcomers. Tmate is excellent, and I have used tmate for years and will continue to. But terminal-based sharing can be daunting for someone new to programming or pairing in general.

I really like the Material Dark theme, I’ve always preferred dark themes, I find them less visually fatiguing. I set a visible gutter to 80 columns and keep my code within that boundary. I use spaces for indentation, defaulting to 2 spaces. I’ll change that depending on the project, but that’s my default. I also enable show trailing white spaces. I use the Source Code Pro font set in the Regular typeface at 15pt.

However you decide to store your source repositories, I feel it’s super important to use some form of version control. When I started my career Subversion was the standard, around 2007-2008 I learned about Git and was sold on it immediately. I also really like GitHub, I have been using it since it launched and continue to be a satisfied customer.

For about 5 years now I have been using Z shell (zsh), with the help of Oh My ZSH. I still really like it a lot. I had a brief time with Hyper a year or so ago and I liked it but it just wasn’t quite for me at the time. I look forward to seeing how it has progressed since then. I think there is a lot of room for improvement in CLI interfaces and shells!

I tend to use Chrome on my desktop environment (macOS) and Safari on my touch devices (iOS). Firefox is also really great on macOS, but I just don't find myself using it very often. Developer Tools in Chrome are still my preference, but Safari is a close second.

Installing command-line software on your host computer (directly on your laptop) can be a messy thing. Package managers like Homebrew attempt to solve this problem, and Homebrew does a pretty good job! I have also used MacPorts but never went back after switching to Homebrew a number of years ago.

At a time I was just happy to get a server running my code! Over time, I saw shortcomings in my processes. Manually building servers, became manually provisioning VPSes on Linode and AWS EC2. That then became a step-by-step guide. Which then became a shell script (bash), that then became a CLI tool for building and deploying shell scripts. That became a series of Ansible Playbooks (no longer maintained) for provisioning and configuring servers.

These days I still use Ansible, but not as often for configuring server dependencies and software or for provisioning development environments, I use Docker for that now. It’s a great tool for automating systems administration tasks.

For running and installing Python, Ruby, and Node directly on my host machine, I use their respective version managers so that I can easily toggle between versions for different projects. I can also easily "implode" an environment and bring it back up if I need to. I prefer this method over installing specific versions of programming tools directly on my machine.

I use public key authentication exclusively for accessing remote systems. I rotate my private key usually every few years, I should maybe get on that more often 🤔

Probably like most designy folk out there, I started with Adobe Photoshop and Illustrator. Years ago I decided to give Pixelmator a try instead of Photoshop, I’m still using it today. Affinity Designer followed as a replacement for Illustrator, it also has a companion iPad app.

Even if you don’t "create" with these apps, you might find if you do any sort of frontend development that touches HTML / CSS they come in handy. Resizing images, resampling images, rasterizing SVG files, converting Illustrator files to SVG for use on the web, etc.

I’ve been using Things for years, it’s essentially a to-do list and reminders app. It fits in seamlessly to my workflow, I use it on my iPad, iPhone, and on my desktop. I can also share tasks with Erin. It’s my preference for managing all of the little things that come at me, that I can’t get to immediately.

There are numerous password managers these days, iCloud has a built-in one even, but I love 1Password. It integrates on all of my devices, I can store other info in my vaults, not just login information. I also have a family plan so Erin and I can share logins for various shared stuff, along with our own personal vaults. 1Password integrates well virtually everywhere, and makes it dead easy to have a unique strong password for every account.

Before I started using a password manager I was the doing the "one password" thing the wrong way, as in I had one password I used for everything! 😂 Not a good idea. I'm lucky, to my knowledge nothing important was ever breached, but I don't do that anymore!

Other notes

I do not have an external monitor at the moment, I plan to get one in the future when I am able.

I have not included "tech stack" stuff here: programming languages, frameworks, libraries. This stuff is forever in flux, sure I have my core knowledge of Ruby, JavaScript, Rails, Ember, Node, Python, etc. but I'm also interested in Rust, Elixir, TypeScript, React, Elm, Go, and so much more! I consider it my job to be open to working with any technology in the appropriate context.

Me outside of tech

I have a lot of other interests outside of software and related technologies. Above all I enjoy spending time with my family and my friends, sharing stories, discussing topics; just existing together.

I’m a cyclist. I ride on-road, off-road, and track. I ride socially for fun, for fitness, to commute, to challenge myself, to connect with the natural world, and sometimes to reconnect with myself. I belong to Cascade Cycling, a grassroots cycling club some friends found, we hang out at Grupetto a lot… it’s maybe kind of a problem 🤪

I’m a motorist. I love vehicles, I enjoy driving, I’m excited by the auto industry. I think electric vehicles are the future, and I think tractor pulls are a part of that future too. I love tinkering with automobiles, I restored and customized a 1989 Chevrolet S-10 in the early 2000s. It was one of the most resonating learning experiences I’ve had in my life, and it demystified so many things.

I’m a cook. Food is important to me, it nourishes me, it excites me, it comforts me, relaxes me. Food connects me to people, memories, cultures, and places. Erin does 95% of the cooking in our household, she’s one of the best cooks I know. We love to host parties and share our food and drink with all who can come.

I’m an outdoorsman. I find gardening very satisfying. Hiking through the Dundas Valley, seeing interesting plants and mushrooms growing. Observing all of the different cycles of plants, animals, and insects throughout the year. I’m very interested in trees, they fascinate me with their mycorrhizal networks and defense systems. In another life I totally might have been an arborist. I’ve never hunted, but I’d be curious to observe an experienced hunter one day.

I’m an artist. I think we all are. I love music of many forms: techno, jazz, metal, punk, hardcore, dancehall, hip hop, classical. I enjoy visual art, and design of many styles and tastes. I am fascinated by all of the different ways we can communicate our emotions, intentions, fears, joys through these mediums, often with great clarity.

I’m an activist. When I am distrusting of someone or something, I am honest and open about it. I don’t see life as a competition to be solely won, I see it as a series of interconnected mutually beneficial goals to be achieved. When I observe injustice, evil, or cruelty: I call it out! I support indigenous rights, human rights, I support women, I support the marginalized.

I’m a father and husband. First and foremost, it is what matters most to me; the health and safety of my family. (That rhymes, see, told you I’m an artist 😉)

Let’s learn together!