<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Kevin Marsh</title><link>https://kevinmarsh.com/</link><description>Recent content on Kevin Marsh</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Thu, 28 Sep 2023 00:00:00 +0000</lastBuildDate><atom:link href="https://kevinmarsh.com/feed.xml" rel="self" type="application/rss+xml"/><item><title>overplayed: Tracking radio airplay</title><link>https://kevinmarsh.com/2023/09/28/overplayed/</link><pubDate>Thu, 28 Sep 2023 00:00:00 +0000</pubDate><guid>https://kevinmarsh.com/2023/09/28/overplayed/</guid><description>I&amp;rsquo;ve always been curious how many times certain songs are played on mainstream radio. Sometimes it seems like the same song is played every hour, or every time I get back in the car during a trip. So, a few years ago (actually, during the pandemic) I started crawling the Now Playing sections of thousands of radio websites and have started tabulating the results and building a site to explore them.</description></item><item><title>20 Years Ago: SongMeanings</title><link>https://kevinmarsh.com/2021/03/04/20-years-ago-songmeanings/</link><pubDate>Thu, 04 Mar 2021 00:00:00 +0000</pubDate><guid>https://kevinmarsh.com/2021/03/04/20-years-ago-songmeanings/</guid><description>20 years ago today I posted a message on the Winamp Forums1 announcing a project I started during Christmas vacation and had been working on for a few months:
The reaction was amazing and the next few months were some of the most thrilling of my life. Some of the very same ups and downs of traffic, user growth, and server issues that dot-com era startups with millions in funding were dealing with were playing out in my bedroom, in-between classes my Senior year of high school, on AIM, and on various budget shared web hosts.</description></item><item><title>kevinmarsh.com History</title><link>https://kevinmarsh.com/2020/12/17/kevinmarsh.com-history/</link><pubDate>Thu, 17 Dec 2020 00:00:00 +0000</pubDate><guid>https://kevinmarsh.com/2020/12/17/kevinmarsh.com-history/</guid><description>As I was finishing up this refresh I decided to peek into archive.org and see what it looked like some time ago. It brought back a lot of memories! No such much the content (because, there isn&amp;rsquo;t much of it) but what was around it reminded me about the specifics of the tech which brought back more nostalgia than I expected.
I wonder if I should pull the content from those old posts and include here?</description></item><item><title>Apple Watch Colors</title><link>https://kevinmarsh.com/2018/07/23/apple-watch-colors/</link><pubDate>Mon, 23 Jul 2018 08:30:44 +0000</pubDate><guid>https://kevinmarsh.com/2018/07/23/apple-watch-colors/</guid><description>While I wish Apple Watch faces supported more customization, I really like the ability to change the colors. My standard is the Modular face with a color I select each morning that matches my shirt color. Really. To make that a little easier (and mostly because I was curious and couldn&amp;rsquo;t find this list anywhere) I collated the Apple Watch face colors and created the reference below:
Color Name Hex Value &amp;nbsp; White #FFFFFF &amp;nbsp; Red #D91D2A &amp;nbsp; Orange #FF6410 &amp;nbsp; Apricot #FC7450 &amp;nbsp; Peach #E57E5E &amp;nbsp; Light Orange #FF9500 &amp;nbsp; Yellow #E9CC0B &amp;nbsp; Pollen #FFD25B &amp;nbsp; Flash Light #F7EC00 &amp;nbsp; Flash #E1F322 &amp;nbsp; Green #8DE328 &amp;nbsp; Mint #AEEC9D &amp;nbsp; Turquoise #9ED5CC &amp;nbsp; Light Blue #6AC5DD &amp;nbsp; Blue #1AB5FC &amp;nbsp; Royal Blue #63AEEE &amp;nbsp; Lilac #C1D8FD &amp;nbsp; Mist Blue #B3B8A7 &amp;nbsp; Azure #879AA1 &amp;nbsp; Blue Cobalt #477E9D &amp;nbsp; Dark Teal #357393 &amp;nbsp; Denim Blue #5B83A8 &amp;nbsp; Midnight Blue #6084BF &amp;nbsp; Ocean Blue #7388C7 &amp;nbsp; Purple #997CF7 &amp;nbsp; Ultra Violet #7157BE &amp;nbsp; Lavender #B29AA6 &amp;nbsp; Pink Sand #FFC2A9 &amp;nbsp; Light Pink #F4B0AA &amp;nbsp; Vintage Rose #F4ACA5 &amp;nbsp; Pink #FF5964 &amp;nbsp; Electric Pink #FF4E51 &amp;nbsp; Rose Red #B92946 &amp;nbsp; Camellia #C94544 &amp;nbsp; Flamingo #D3836A &amp;nbsp; Walnut #B08664 &amp;nbsp; Stone #AF9980 &amp;nbsp; Antique White #D4B694 &amp;nbsp; Soft White #DDD1BB &amp;nbsp; Pebble #AD9D8E &amp;nbsp; Cocoa #9B8E8C &amp;nbsp; Dark Olive #8C8C76 Values were taken from screenshots of the Modular watch face on watchOS 5.</description></item><item><title>Crystal</title><link>https://kevinmarsh.com/2017/12/30/crystal/</link><pubDate>Sat, 30 Dec 2017 12:00:47 +0000</pubDate><guid>https://kevinmarsh.com/2017/12/30/crystal/</guid><description>After its 0.24.1 release a week ago I decided to give Crystal a whirl. It&amp;rsquo;s been around since 2014 but is gaining traction.
I started my programming journey hacking on PHP in 2001 and grew into a developer with Ruby and its clean syntax. I&amp;rsquo;ve dabbled in Go but didn&amp;rsquo;t care for the syntax. I&amp;rsquo;ve dabbled in Elixir but had a hard time getting my app deployed with the right Erlang/OTP dependencies.</description></item><item><title>TIL: Running Tests in VS Code</title><link>https://kevinmarsh.com/2017/09/07/til-running-tests-in-vs-code/</link><pubDate>Thu, 07 Sep 2017 15:52:30 +0000</pubDate><guid>https://kevinmarsh.com/2017/09/07/til-running-tests-in-vs-code/</guid><description>Since I&amp;rsquo;ve started using Visual Studio Code (still seems weird to say that&amp;hellip;) I&amp;rsquo;ve been looking for a way to easily run tests. Today I learned how you can easily run tasks in Code in the integrated terminal.
Configure Task First, choose the Tasks → Configure Tasks menu. Code has a bunch of pre-built ones, but we just want to run a shell command so choose Others.
Use a configuration task like the following:</description></item><item><title>Spotify Volume Control with Hammerspoon</title><link>https://kevinmarsh.com/2016/10/24/spotify-volume-control-with-hammerspoon/</link><pubDate>Mon, 24 Oct 2016 12:59:21 +0000</pubDate><guid>https://kevinmarsh.com/2016/10/24/spotify-volume-control-with-hammerspoon/</guid><description>One of Spotify&amp;rsquo;s best features is its ability for a client to become a remote to another version of itself running on a different device. A few months ago I started using the Mac app on my laptop to control the speakers connected to a PC in my office.
Everything works pretty well, except for the volume. Out of habit, I would use the volume keys on my Mac to adjust the volume only to change the system volume and not affect Spotify at all.</description></item><item><title>The New toledoblade.com</title><link>https://kevinmarsh.com/2016/06/02/the-new-toledoblade-com/</link><pubDate>Thu, 02 Jun 2016 19:33:49 +0000</pubDate><guid>https://kevinmarsh.com/2016/06/02/the-new-toledoblade-com/</guid><description>The Toledo Blade just launched a new version of their website. It&amp;rsquo;s&amp;hellip; not very good.
Of course, it&amp;rsquo;s very easy to be dismissive and make fun of the old guard trying something, especially at the local level. It&amp;rsquo;s easy to make fun and point at all the things that are wrong. But, who makes toledoblade.com? Is it one person? A small team? Is the project just outsourced somewhere? I have no inside knowledge of or connections to web at The Blade.</description></item><item><title>TIL: Image Cells in Google Sheets</title><link>https://kevinmarsh.com/2016/04/19/til-image-cells-in-google-sheets/</link><pubDate>Tue, 19 Apr 2016 10:21:41 +0000</pubDate><guid>https://kevinmarsh.com/2016/04/19/til-image-cells-in-google-sheets/</guid><description>Today I learned you can insert image cells into a Google Sheets document. All you need is a URL to an image:
=IMAGE(&amp;quot;http://example.com/image.jpg&amp;quot;) The documentation lists a few other options, like how the image should be sized and fit the cell.
For certain things, like planning a kitchen remodel, having a small thumbnail makes it really easy to skim through a document and even helps in the design process.</description></item><item><title>TIL: Open Atom Fuzzy Finder Results in Split Panes</title><link>https://kevinmarsh.com/2016/04/18/til-open-atom-fuzzy-finder-results-in-split-panes/</link><pubDate>Mon, 18 Apr 2016 12:43:04 +0000</pubDate><guid>https://kevinmarsh.com/2016/04/18/til-open-atom-fuzzy-finder-results-in-split-panes/</guid><description>One of the things I missed most from vim&amp;rsquo;s fuzzy finder plugins is the ability to open a result in a new split. So today I decided to take a few minutes today and look for a solution. Turns out I&amp;rsquo;m not the first to want this, and came across this issue that has a nice solution.
Turns out, all you need to do is add something like the following to your keymap (goto Atom → Keymap&amp;hellip; to edit it):</description></item><item><title>TIL: SSH Bastion Hosts</title><link>https://kevinmarsh.com/2016/04/05/til-ssh-bastion-hosts/</link><pubDate>Tue, 05 Apr 2016 17:18:10 +0000</pubDate><guid>https://kevinmarsh.com/2016/04/05/til-ssh-bastion-hosts/</guid><description>Today I finally learned how to setup &amp;ldquo;bastion&amp;rdquo; or gateway hosts to enable one-line simple SSHing to machines behind a firewall.
For too long I would first SSH into the public machine, then issue another SSH command to get to the machine I wanted. I knew it was possible to do it with one line but never bothered figuring it out. I finally found a straightforward guide and made it work.</description></item><item><title>Friday Link Review</title><link>https://kevinmarsh.com/2016/04/01/friday-link-review/</link><pubDate>Fri, 01 Apr 2016 11:55:50 +0000</pubDate><guid>https://kevinmarsh.com/2016/04/01/friday-link-review/</guid><description>Happy April Fools! (No tricks here.) There have been a lot of links since the last post, so I thought I&amp;rsquo;d just include the ones since the beginning of March:
Tesla Model 3 - I want one. Windshield/roof is a single piece of glass. 215 mile range, 0-60 in &amp;lt; 6 seconds. Starting at $35K. Starts shipping late 2017. 115K people pre-ordered/deposited $1K before it was even announced. Caravel - New interactive data exploration platform recently open-sourced by Airbnb.</description></item><item><title>TIL: Shell-like Globbing of Strings in Ruby</title><link>https://kevinmarsh.com/2016/03/31/til-shell-like-globbing-of-strings-in-ruby/</link><pubDate>Thu, 31 Mar 2016 08:20:41 +0000</pubDate><guid>https://kevinmarsh.com/2016/03/31/til-shell-like-globbing-of-strings-in-ruby/</guid><description>Today I learned you can perform shell-like globbing and matching of any string in Ruby with File.fnmatch (not just filenames).
File.fnmatch(&amp;#34;foo*&amp;#34;, &amp;#34;food&amp;#34;) #=&amp;gt; true File.fnmatch(&amp;#34;foo*&amp;#34;, &amp;#34;bar&amp;#34;) #=&amp;gt; false This seems a little more &amp;ldquo;secure&amp;rdquo; for user-specified patterns and is more performant than even simple regular expressions, not counting what weird things your (malicious) users may be able to do with expensive backtracking and whatnot.
require &amp;#39;benchmark&amp;#39; n = 500000 Benchmark.bm do |x| x.</description></item><item><title>TIL: Docker Labels</title><link>https://kevinmarsh.com/2016/03/29/til-docker-labels/</link><pubDate>Tue, 29 Mar 2016 12:48:52 +0000</pubDate><guid>https://kevinmarsh.com/2016/03/29/til-docker-labels/</guid><description>Today I learned you can label Docker containers with any key=value pair when creating them:
docker run --label com.vintageaerial.group=&amp;quot;worker&amp;quot; -d vintageaerial/vintageaerial:latest bundle exec rake jobs:work Then you can filter the output of docker ps to only include said labels:
docker ps --filter &amp;quot;label=com.vintageaerial.group=worker&amp;quot; The documentation seems to favor using reverse DNS-style labels as a namespace.</description></item><item><title>Friday Link Review</title><link>https://kevinmarsh.com/2015/04/24/friday-link-review/</link><pubDate>Fri, 24 Apr 2015 17:58:22 +0000</pubDate><guid>https://kevinmarsh.com/2015/04/24/friday-link-review/</guid><description>Is a bookmark still useful a month after I post it? You be the judge.
LAPIS - Editing Text with Lightweight Structure - Edit by example TextBar Puts Your Text into the Menu Bar - Like AnyBar, but with text! FormatJS - Not just for translation, but also formatting numbers and dates Docker with Compose, Machine and Swarm, easy steps from localhost to cloud providers Restaurants on TV, Diners Drive-Ins and Dives, Man vs Food, Best Thing I Ever Ate &amp;amp; more Calca - The Text Editor that Loves Math - Mind blown.</description></item><item><title>Any Color AnyBar</title><link>https://kevinmarsh.com/2015/04/18/any-color-anybar/</link><pubDate>Sat, 18 Apr 2015 12:10:53 +0000</pubDate><guid>https://kevinmarsh.com/2015/04/18/any-color-anybar/</guid><description>I like AnyBar. It couldn&amp;rsquo;t be simpler to put a little splash of color in your Mac&amp;rsquo;s menubar for whatever reason you want. It comes with a bunch of pretty built in colors, but what if you want your own? You can add your own images to ~/.AnyBar and it&amp;rsquo;ll happily pick them when you specify them&amp;hellip; but who wants to create an image every time they want to use a different color.</description></item><item><title>2015 Desktop</title><link>https://kevinmarsh.com/2015/01/07/2015-desktop/</link><pubDate>Wed, 07 Jan 2015 13:30:36 +0000</pubDate><guid>https://kevinmarsh.com/2015/01/07/2015-desktop/</guid><description>I took the opportunity of the new year to give my programming environments a fresh look and try out some new things. Check it out:
zsh I&amp;rsquo;ve tried a few times before, but I&amp;rsquo;m making a real attempt to ditch bash and give zsh a try this year. Some cool things so far:
I set REPORTTIME=2 which will automatically output how long a command took if it took more than 2 seconds (this is awesome!</description></item><item><title>Friday Link Review</title><link>https://kevinmarsh.com/2015/01/02/friday-link-review/</link><pubDate>Fri, 02 Jan 2015 10:36:53 +0000</pubDate><guid>https://kevinmarsh.com/2015/01/02/friday-link-review/</guid><description>Whew! It&amp;rsquo;s been awhile. Here&amp;rsquo;s some links for the New Year!
Sonic Pi - Neat Ruby-based synthesizer OSS Perks - Organizations offering free services for open-source projects criterion: a Haskell microbenchmarking library - I don&amp;rsquo;t know Haskell, but this looks like a nice library with some benchmarking statistics smartystreets/goconvey · GitHub - Beautiful test runner for go with a nice web and terminal UI E.gg Timer - a simple countdown timer What 2,000 Calories Looks Like - NYTimes.</description></item><item><title>Web Scraping with pup and jq</title><link>https://kevinmarsh.com/2014/11/12/web-scraping-with-pup-and-jq/</link><pubDate>Wed, 12 Nov 2014 11:10:39 +0000</pubDate><guid>https://kevinmarsh.com/2014/11/12/web-scraping-with-pup-and-jq/</guid><description>I&amp;rsquo;m sure you&amp;rsquo;ve heard of jq by now, it&amp;rsquo;s the best way to deal with JSON data on the command line. I previously wrote about a nifty way to use jq to import JSON into Elasticsearch. It&amp;rsquo;s great for filtering, transforming, and otherwise munging JSON data but 70% of the time I use it just to pretty print and syntax highlight JSON on the command line. Next time you have a big pile of JSON, try piping it to jq '.</description></item><item><title>Leverage Third Party Functionality with Open Formats</title><link>https://kevinmarsh.com/2014/11/05/leverage-third-party-functionality-with-open-formats/</link><pubDate>Wed, 05 Nov 2014 10:50:52 +0000</pubDate><guid>https://kevinmarsh.com/2014/11/05/leverage-third-party-functionality-with-open-formats/</guid><description>One thing I&amp;rsquo;ve started doing more of in my apps is leveraging third party functionality by exposing data in open formats instead of building out that functionalty in my app.
For example, someone recently asked for an email notification when a new comment is posted. Simple enough, just add a Delayed Job in an after_create ActiveRecord callback that sends an email with ActionMailer. But then they also mentioned it would be nice to be able to view all previous comments and mark them as &amp;ldquo;read&amp;rdquo; as they review them.</description></item><item><title>Friday Link Review</title><link>https://kevinmarsh.com/2014/10/31/friday-link-review/</link><pubDate>Fri, 31 Oct 2014 13:08:29 +0000</pubDate><guid>https://kevinmarsh.com/2014/10/31/friday-link-review/</guid><description>Every week I come across a lot of links. (Hopefully) every Friday I&amp;rsquo;ll post the best for you. If you&amp;rsquo;re interested, I blogged about the workflow to create these posts. Enjoy!
Gear for Making Great Pour-over Coffee | The Sweethome - I&amp;rsquo;ve got into a rhythm of using an Aeropress almost every morning, but I&amp;rsquo;d like to try pour-over, the Kalita Wave Dripper 185 looks like a good way to go (via @greghuber) Usage - Simple little app that sits in your Mac&amp;rsquo;s menubar and watches what apps you use the most Rails Development environment for OS X using Docker sosedoff/pgweb - Aspring to be a Sequel Pro for PostgreSQL, which is something I&amp;rsquo;ve wanted for quite some time.</description></item><item><title>Jekyll Blogging Workflow: Link Posts</title><link>https://kevinmarsh.com/2014/10/27/jekyll-blogging-workflow-link-posts/</link><pubDate>Mon, 27 Oct 2014 13:46:10 +0000</pubDate><guid>https://kevinmarsh.com/2014/10/27/jekyll-blogging-workflow-link-posts/</guid><description>I wanted a way to write blog posts digesting the links I come across on a regular basis, much in the style of Waxy.org/links, Mike Gunderloy&amp;rsquo;s A Fresh Cup, and numerous others that I follow.
I use Pinboard to collect links throughout each day. It has a really simple interface, can be posted to from all kinds of apps I use everyday (Reeder, TweetBot, etc.), and is run by a really cool dude.</description></item><item><title>Friday Link Review</title><link>https://kevinmarsh.com/2014/10/24/friday-link-review/</link><pubDate>Fri, 24 Oct 2014 12:14:37 +0000</pubDate><guid>https://kevinmarsh.com/2014/10/24/friday-link-review/</guid><description>Every week I come across a lot of links. (Hopefully) every Friday I&amp;rsquo;ll post the best for you. Enjoy!
RefactorCop - Rails Rumble project that finds OSS Ruby projects with style violations via RuboCop ripe for fixin'! Beautiful design. App Review Tuesdays - Good idea! I&amp;rsquo;m going to try and do this more. I&amp;rsquo;ve downloaded (and purchased) hundreds of apps, but can&amp;rsquo;t recall reviewing a single one. Visitors - Slick menubar app for Mac OS X that shows how many folks are on your site in real time via Google Analytics Dynamic Range Database - Loudness data for thousands of albums React Hacker News - Hacker News, updated live in real time via the Firebase API announced a few weeks ago Using nginx, confd, and docker for zero-downtime web updates - confd generates templates based on etcd data Music Theory for Musicians and Normal People UCSC Genome Browser: Downloads - A cat is 615MB, human 800MB, ebola virus 4.</description></item><item><title>Using jq to Import JSON into Elasticsearch</title><link>https://kevinmarsh.com/2014/10/23/using-jq-to-import-json-into-elasticsearch/</link><pubDate>Thu, 23 Oct 2014 14:00:00 +0000</pubDate><guid>https://kevinmarsh.com/2014/10/23/using-jq-to-import-json-into-elasticsearch/</guid><description>Elasticsearch works really well with JSON. However, you can&amp;rsquo;t just ship plain &amp;lsquo;ol JSON, you have to use the bulk API. You could write a script in your favorite program language to do this, but you can use the incredibly-awesome jq tool piped to curl on the command line.
First, make sure you have jq installed. On a Mac, its a quick brew install jq away.
Then, do something like this:</description></item><item><title>Screenshot Script</title><link>https://kevinmarsh.com/2014/10/22/screenshot-script/</link><pubDate>Wed, 22 Oct 2014 11:37:43 +0000</pubDate><guid>https://kevinmarsh.com/2014/10/22/screenshot-script/</guid><description>I take a lot of screenshots, often wanting to share them with someone or post on this blog. I used to have a script that would automatically upload to Flickr, but I wanted to update it a bit to use S3. Here&amp;rsquo;s what I came up with:
PATH=/usr/local/bin:$PATH DATE=$(date &amp;#39;+%Y%m%d-%H%M%S&amp;#39;) FILE=~/Dropbox/Screenshots/${DATE}.png S3_BUCKET=&amp;#34;assets.kevinmarsh.com&amp;#34; S3_URL_PREFIX=&amp;#34;https://d1j4kwyjzsqmb8.cloudfront.net&amp;#34; screencapture -i $FILE if [ -e $FILE ]; then optipng -o5 $FILE s3cmd put -P $FILE s3://$S3_BUCKET/ echo &amp;#34;$S3_URL_PREFIX/$DATE.</description></item><item><title>ngrok: From any host to localhost</title><link>https://kevinmarsh.com/2014/10/20/ngrok-from-any-host-to-localhost/</link><pubDate>Mon, 20 Oct 2014 22:05:42 +0000</pubDate><guid>https://kevinmarsh.com/2014/10/20/ngrok-from-any-host-to-localhost/</guid><description>Ever need to give someone a URL to access a server running locally on your machine? Perhaps you had to forward ports or mess with some SSH reverse tunneling. Next time try ngrok!
There are a few ways to accomplish this, but ngrok is the most streamlined and feature packed way yet I&amp;rsquo;ve found to open up a local port to the world; perhaps for testing by a client or friend, or testing web hooks from services that can&amp;rsquo;t access your internal network.</description></item><item><title>In-Terminal Screenshots with iTerm2, Capybara, and Poltergeist</title><link>https://kevinmarsh.com/2014/05/07/in-terminal-screenshots-with-capybara-and-poltergeist/</link><pubDate>Wed, 07 May 2014 15:07:56 +0000</pubDate><guid>https://kevinmarsh.com/2014/05/07/in-terminal-screenshots-with-capybara-and-poltergeist/</guid><description>The latest builds of iTerm2 support an API for displaying images in the terminal. It can display any Base64-encoded PNG or JPEG image inline or as a download. Guess what, Poltergeist can render the current page as a&amp;hellip; Base64-encoded PNG or JPEG! Let&amp;rsquo;s combine the two with this little snippet of Ruby in our spec_helper.rb file:
def show_screenshot(width = 640) print &amp;#34;\033]1337;File=;inline=1;width=#{width}px:&amp;#34; print page.driver.render_base64 print &amp;#34;\a\n&amp;#34; end Combine this with a call to Pry&amp;rsquo;s binding.</description></item><item><title>The Changelog #100: Go programming with Rob Pike and Andrew Gerrand</title><link>https://kevinmarsh.com/2013/08/15/the-changelog-number-100-go-programming-with-rob-pike-and-andrew-gerrand/</link><pubDate>Thu, 15 Aug 2013 00:00:00 +0000</pubDate><guid>https://kevinmarsh.com/2013/08/15/the-changelog-number-100-go-programming-with-rob-pike-and-andrew-gerrand/</guid><description>http://5by5.tv/changelog/100
&amp;ldquo;Notes&amp;rdquo; posts are my free-form reactions to podcasts, books, movies, TV and other media. They may be a mixture of summaries and my own insights and thoughts.
Small, composable Pragmatism / Minimalism Designed by consensus of 3 people Not &amp;ldquo;language designers&amp;rdquo; - but programmers Splash Keynote Problems at Google with 10 million lines of C++ (http://talks.golang.org/2012/splash.article) Started as systems langauge Plan 9: Never caught on, ideas still relevant Andrew: Go glob, community (HN), release binaries Google imports OOS, not vice-versa - no GOOG branding anywhere Go designed for lots of code, large environments Right palette of tools for systems vs.</description></item><item><title>Uses</title><link>https://kevinmarsh.com/uses/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kevinmarsh.com/uses/</guid><description>Like most geeks, I spend an inordinate amount of time obsessing about technology choices. Here are some I'm happy with: I use a 2023 14″ MacBook Pro with an M2 Max as my primary computer, which is the best computer I&amp;rsquo;ve ever owned.
It&amp;rsquo;s almost always plugged into a Dell P2715Q 27″ LCD monitor which, despite not having any USB-C ports, I&amp;rsquo;ve liked a lot.
I use Keychron Q3 mechanical keyboard with Gateron G Pro Blue switches.</description></item><item><title>Work</title><link>https://kevinmarsh.com/work/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kevinmarsh.com/work/</guid><description>Experience 2014&amp;ndash;Present Vintage Aerial Co-Founder, Director of Engineering Transformed a 50 year old analog door-to-door business to digital Built workflow for scanning &amp;amp; digitizing millions of historic aerial photos Conceptualized, build, and maintain e-commerce and social platform in Ruby on Rails Developed web-based GIS tools for geocoding paper flight maps 2014&amp;ndash;Present Freelance Developer Some of the projects I've built as an independent developer in the past few years are a:</description></item></channel></rss>