27 Apr 2020
•
Work
Yet another story of typing-related repetitive strain injury (RSI) and what did/didn’t work for me in my journey out of it. I am not a doctor. This is not medical advice. YMMV.
RSI is one of those things that turned out to be more serious than I thought at first and warrants significant intervention if it shows up. At the lower end of the spectrum, you deal with frequent pain while working. At the higher end, the chronic pain leads some people to depression, and a smaller subset of people actually end up having to go on disability because they can no longer type. My experience was definitely not that extreme, but reading some of these accounts shocked me into doing something about my RSI while it was still manageable.
I started developing excruciating pain in my wrists in the later years of my PhD when I was more of less programming or writing my thesis around the clock. I was using a Microsoft ergonomic keyboard at the time, but that wasn’t enough to prevent wrist pain. The pain was always there, but most of the time at a manageable—albeit distracting—level. I tried to ignore it as best I could and figured it would go away after I finished grad school and healthier work/life balance prevailed.
(Narrator: It didn’t.)
I then joined a consulting company where I worked long hours. My wrists were okay except for periods of heavy report writing, like where I was typing for almost 10-12 hours straight for days on end. But then it started getting worse and was an issue more often than not. I had to use NSAIDs to get to sleep at night. It was around this time that I accepted I had a serious problem with my wrists that wasn’t getting better and sought medical attention.
I then found out that most doctors and physical therapists aren’t very helpful when it comes to RSI. I was in Boston–a medical paradise–and couldn’t find someone who had specific experience treating RSI. It’s commonly misdiagnosed as carpal tunnel, often quickly referred to surgery, and I couldn’t find anyone who could help me. I was prescribed wrist braces and stretches, nothing more. Things did not improve and I was in a lot of pain.
So it was up to me to figure it out for myself.
This was several years ago, so what follows is basically everything I remember about my return to normalcy.
First, I read a bunch of blog posts about RSI. The most impactful ones that I can still find (RIP dead links) are:
A lot of websites I found pointed to two books by Emil Pascarelli (MD/professor at Columbia University) as the canonical references for RSI. I read both of these books cover to cover and gleaned most of what I would eventually need. He covers the physiology of RSI vs. carpal tunnel, approaches for treatments, exercises, how to set up your workstation, and advice for finding a medical professional who can actually help with RSI. Many people online have reported being able to effectively self-treat their RSI using just these books, which was my experience. Here they are:
These two books informed the steps I took, which I outline below:
-
Kinesis Advantage keyboard: If you Google “RSI” long enough, you will find almost all roads lead to the Kinesis Advantage keyboard. Like many before me, I graduated through several levels of increasingly expensive “ergo” keyboards (none of which made a difference) before I finally spent the money on the Kinesis. I wish I had bought it immediately. Impact: Eliminated 80% of my RSI problem within days. A few comments on this keyboard. First, it is quite unaesthetic, but I viewed it as a necessary medical intervention, not a design statement. Next, it only took a few days to learn how to type on it. Finally, it’s very easy to switch between this layout and a regular keyboard (like when using my laptop undocked); the brain has a wild ability to context switch between both modes and did not mess me up at all. I was concerned about being unable to type on my laptop keyboard whenever necessary after acclimating to the Kinesis; this turned out to be a non-issue. If you are concerned about the noise of a mechanical keyboard, Kinesis offers a low-force, quiet version.
-
No wrist braces: I tried them for awhile to no avail. Then I read Pascarelli argue strongly against the use of wrist braces for RSI because they restrict blood flow and people become over-reliant on them leading to muscle atrophy. So I stopped using them completely. Instead, he said, his patients should wear “air braces” which he explained as training yourself to keep your wrists in a perfectly neutral position at all times. I had to change my sleep position. This mindset helped me a lot when sitting at my computer.
-
Dialing in an ergonomic work setup: Your body is a complex system and your entire body positioning/posture influences your wrists. At the time I started treating my RSI, I was using a makeshift standing desk at work and had to tweak it extensively and iteratively until every piece was dialed in perfectly so that my wrists were in a neutral position for typing and mousing (this photo was pre-Kinesis keyboard, note the furniture risers beneath the desk contraption to dial in height, and also the keyboard shelf which I redrilled/remounted multiple times). This included keyboard height, mouse height, wrist rest heights, etc. It’s important to dial in all of these pieces, not just the keyboard. For example, if your monitor is at the wrong height, you will tend to slouch and your body will compensate by throwing off your wrist alignment. My current work setup (Aeron chair, adjustable sit/stand desk, articulating monitor arm) was designed to make every single element completely adjustable. Note that although I no longer have regular RSI symptoms, if I make any adjustment to my work setup, I will have a slight RSI flare-up like clockwork for several days until my body adapts.
-
r/bodyweightfitness Recommended Routine: It’s very counterintuitive given the strain it places on the wrists, but I started this strength training routine and it drastically helped my wrists. The four components specifically involving the wrists are the wrist prep routine from GMB (I think this especially helped), pushups, L-sits, and rows (using gymnastics rings). I would have thought pushups would have killed my wrists, but strangely my wrists handled them fine with time. This led me to hypothesize that a fundamental cause of my problem was actually related to lack of strength and mobility?
-
Started taking frequent stretch breaks when working, focusing especially on neck, shoulders, arms, wrists, and fingers. I used an app on my computer that prompted me for a micro-break every 15 minutes and a longer break once an hour. It was interruptive but helpful.
-
Working fewer hours. I had horrible work/life balance coming out of grad school, which persisted into consulting and then startup life at times. My RSI was always correlated with number of hours worked. I will get an RSI flare-up now if I start working longer hours or typing a lot in the evening for several days in a row.
-
NSD Power Essential Spinner Gyro Hand/Wrist/Forearm Strengthener: Interesting device that exercises and stimulates all the small musculature in the hands and forearms. This thing is actually pretty wild. If the hypothesis was that strength was needed to help fix my hands, I think this was probably helpful. Definitely made my hands/forearms very tired after a few minutes of use. I used it at my desk twice per day for a few minutes.
-
Donut grip strengthener: I kept one of these on my desk at work and used it throughout the day to try to exercise my hands and mostly just get them moving. I had the black version (80 lb, whatever that means).
After making these changes, my RSI symptoms effectively went to zero and have almost completely stabilized ever since (more than five years as of now). In fact, I eventually changed jobs and started working directly on my laptop more often without the Kinesis Advantage due to travel and working from home. I realized one day that I had exclusively used the laptop keyboard for awhile with no wrist issues, meaning that the changes I listed above eventually brought a level of stability that warranted few special accommodations aside from a generally ergonomic desk setup. I kept the Kinesis for awhile just in case, but eventually moved to a regular keyboard with wrist rest with no problems.
I still have the occassional RSI flare-up, usually if I change something about my work setup, if I have to type after 6pm for more than a few days in a row, or if I am spending a lot of time doing wrist-intensive exercise such as cycling. But for the most part, my RSI is under control and have zero worries about it spiraling into a serious issue again.
23 Apr 2020
•
Machine Learning
I recently attended the Third Conference on Machine Learning and Systems (MLSys) in Austin, TX. The proceedings are here. I had a great time, learned a lot, and met a lot of interesting people.
The conference was March 2-4, 2020, and tension over the coronavirus was definitely on the upswing. (In fact, the conference was just seven or so weeks ago, but it now seems like an eternity since I last traveled out of Atlanta because of the quarantine.) A large number of people cancelled and many presentations were delivered over Zoom, including one from China. I almost cancelled my own trip. The first cases in Texas popped up while I was there (in San Antonio). Not a lot of hand-shaking, as you might imagine.
The conference itself was great. This meeting brings together both ML and Systems researchers, and a paper must bridge those two fields and pass peer review by people on both sides to be accepted. It was also great to see the emphasis on artifact publication and evaluation (code, datasets, hardware, etc) to support reproducible research.
The attendance was evenly split between about four hundred academic and industry researchers, and the industry representation seemed to be mostly comprised of FAANG-style companies with ML research arms.
MLSys talks
I found a lot of the content interesting and relevant to my work as an industry ML practitioner. At the same time, there were also some academic talks where I honestly had no idea what the speaker was talking about. But you can’t bring together multiple related fields and keep things interesting for everybody, for an entire conference.
My favorite talk of the conference was the first day keynote by Christopher Ré (Stanford University): Theory & Systems for Weak Supervision (YouTube, slides). His talk started by discussing the idea of Software 2.0 (see this blog post or this one, 1.0 is explicitly programmed vs. 2.0 which is abstract and “learned”). The primary idea he was pushing was that while it’s great that we have sophisticated and easy-to-deploy models being published every other week (“new-model-itis”) along with continually improving hardware, the real limiting factors in most ML systems are the quality and quantity of training data. The proposed solution is to replace manually labeled training data (slow, expensive, static) with programmatically labeled training data (fast, cheap, dynamic) via weak supervision. His group has a blog post called An Overview of Weak Supervision that provides a nice introduction. For example, instead of spending months of mechanical turk time tagging records, a few subject matter experts can develop labeling functions in a short amount of time that are noisy but nearly as good in aggregate. This means each particular label might not be as good as if human-labeled, but you now have a million labeled records instead of the 10k or 100k you were going to spend several weeks developing. Other approaches include pattern matching, distant supervision, automated augmentation (see this series of blog posts), topic models, third-party models, or crowdworker labels. Ré’s research group develops and maintains a Python package for programatically building and managing training data called Snorkel. In the Snorkel paradigm, the user will write labeling functions that generate noisy and perhaps conflicting labels, then Snorkel will model and combine these noisy labels into probabilities. The actual model is then trained using these probabilitistic labels and can discover and exploit structure in the training data that goes significantly beyond the heuristics expressed in the labeling functions. The lift generated in the presented examples was wild. Also really enjoyed his discussion of hidden stratification.
Alongside the idea of improving training data, Wu et al. gave a great talk on Attention-based Learning for Missing Data Imputation in HoloClean. The HoloClean framework is another tool originating out of Chris Ré’s lab and focuses on data quality/repair. This paper developed a model called AimNet in HoloClean that uses the attention mechanism to impute missing data, either discrete or continuous. Their attention-based model outperformed existing ensemble tree methods (XGBoost) or GANs on imputation of systematic missing data, as opposed to missing completely at (MCAR), across fourteen diverse benchmark datasets ranging from medical (mammography, EEG), physical (solar flare), financial, to geospatial/address data. Definitely eager to experiment with this.
Just to call out a few more that I really liked:
There were many more great talks that I learned from, but am not going to talk about here because they were closer to the metal and I’ll just enjoy the benefits whenever they make it into PyTorch or Tensorflow.
MLOps Systems workshop
The main reason I attended was the MLOps Systems workshop, which was hosted on the third day. This workshop was focused on the ecosystem of tools for the full ML lifecycle, tracking model lineage, monitoring and drift detection, experiment tracking, CI/CD, provenance of ML artifacts, reproducibility, safe rollbacks, etc. The presentations and posters were full of best practices and guidance beyond what I can reasonably capture here.
Probably two-thirds of the MLOps presentations included the following graphic from the paper Hidden Technical Debt in Machine Learning Systems (Sculley et al., NIPS 2015):
Also, I think three presentations showed a screenshot of this tweet:
So yeah, everybody feels the pain of getting their several hundred lines of CNN model definition into production safely.
A large philosophical focus of this workshop was that ML is a relatively a new field and it’s not always obvious how it fits into a company in terms of roles and resource allocation. If your company has machine learning engineers, data scientists, data engineers, data analysts, devops engineers, software engineers, decision scientists, statisticians, data/app product managers, etc., then who does what? Will there be an emergent “MLops engineer” title that is the corollary to the traditional devops role?
Also, what’s the ideal IDE for ML development? ML may be sufficiently different from software engineering to warrant a new approach. Should an ML model be developed in a text editor, drag-and-drop style from a GUI, just a JSON config, or other?
On the data quality front, there was another great talk by Theodoros Rekatsinas about Holoclean that dug into programmatic verification of training data via context, both at the field and tuple (set of fields) levels. See this paper for a description of the HoloClean model. The idea is to learn a probabilistic model of how clean data is generated or how errors are introduced at the tuple or cell level, then data quality operations can actually become inference queries against that model. The components of these models can be validated via integrity/domain constraints (business rule logic like zip-to-state constraints or regex validation), external datasets like curated catalogues/knowledge bases, data redundancy allowing recovery of statistical dependencies (i.e. modeling P(state|zip)
), or application-aware context.
Christopher Ré gave another talk building on Snorkel which described a framework he wrote called Overton. Here is a paper describing the Overton philosophy. The name was derived from the Overton Window and was symbolic of pushing the conversation around ML systems into controversial territory. Along the lines of AutoML, the idea is to move engineers up the abstraction stack with the success metric that no engineers are writing PyTorch or TensorFlow code anymore. Overton would do data prep for training (via Snorkel), compile to TensorFlow or PyTorch and even select an appropropriate model/hyperparameters/etc., create a deployable model, and monitor model stats. Overton apparently started as a weekend hobby project, but has now served billions of queries at Apple and Google.
Ré also dropped a few controversial takes which produced not a few nodding heads in the audience: “I don’t think the people who wrote a DL model really have better insight into what it’s doing than practitioners who use them as black boxes, nor is it really even possible” was probably my favorite, but there were others. Regarding model architecture, he argued that model architecture design is easy, a tiny fraction of the lifecycle of a model with only fractional improvements possible from human effort, and that neural networks should just be designed by an architecture search over a set of coarse building blocks. He even argued that engineers shouldn’t be setting hyperparameters, as the human margin is low, optimization algorithms are basically a commodity (or should be), and you have a pretty unsophisticated algorithm if that dependent on a human. All of this should be hidden from the engineer given sufficiently smart external metric tracking.
There was a also a lot of good discussion around orchestration tools and best practices during the various talks. The discussions covered a wide range of tools from full orchestration/ML lifecycle tools like TFX and Kubeflow, to experiment tracking/versioning tools like Neptune or Weights and Biases, to other tools that (to me) seem to live on the spectrum in-between, like MLFlow. But even among the posters, there were multiple other tools or one-offs trying to mimic this type of orchestration or model tracking logic. This is a space where it seems there is no clear winner yet. None of these tools do everything and work with all frameworks, and there may yet emerge another tool to defeat them all. That said, I think my money would be on MLFlow for now from the point of view of balancing value vs. level of effort to deploy, at least for a startup (where I sit). At any rate, it’s an exciting, fast-moving space and I expect we will see a lot of awesome work coming out of these streams going forward.
Austin
This was actually my first time to Austin. It seems like a really lovely city. I had some incredible tacos and pit barbeque. Also definitely going to need an electric scooter after getting around on one for several days.
14 Apr 2020
•
VS Code
•
TIL
When I use multiselect (aka multiple cursor selection) in VS Code via Cmd+D
(which is constantly), I usually prefer case-sensitive behavior when refactoring and finding things I can edit in-place at once. When I search via Cmd+F
, I often prefer case-insensitive behavior as I’m looking for logic related to a word (could be a foo_bar
or FooBar
and I want Cmd+F, foo
to find both).
It took me awhile to figure out how to get multiselect to behave the way I want regarding case in VS Code.
If you Cmd+F
and toggle case sensitivity by clicking the “Aa” icon (shown above), then multiselect via Cmd+D
will obey the same rule as search via Cmd+F
. But that’s an inefficient pattern for on-the-fly toggling for multiselection.
HOWEVER, it turns out you can also toggle this setting when editing by issuing Option+Cmd+C
, although there will be no visual cue that anything has happened unless you have the search modal open and can see the “Aa” icon toggle on/off.
This is hard to remember, but it works. Both actions toggle the variable toogleFindCaseSensitive
(not a typo) under the hood.
13 Apr 2020
•
Rare Disease
Read: The Gene: An Intimate History, by Siddartha Mukherjee (the book)
Watch: The Gene: An Intimate History, PBS documentary by Ken Burns
One of the first things I did in 2018 when we got our rare disease diagnosis for our then-one-year-old was email Matt Might, a rare disease parent and computer-scientist-cum-precision-medicine-researcher, for advice how to get up to speed on our diagnosis and genetics in general. He recommended The Gene along with a short textbook geared towards physicists and computational scientists called Quickstart Molecular Biology.
I devoured The Gene and recommend it to everyone I know. It provides a fast-paced introduction to the history of genetic research and related technical concepts, but also reads like a novel packed with intrigue and competition. It was a perfect reentry point for someone like me who hadn’t studied biology since undergrad. Mukherjee won the Pulitzer Prize for his book on cancer, The Emperor of all Maladies, to give you an idea of the quality of writing. I loaded up Anki with facts from the book.
About a month after getting our daughter’s diagnosis, my wife, daughter, and I were in NYC to see molecular geneticist Dr. Wendy Chung in her clinic at Columbia Medical/NY-Presbyterian. Dr. Chung is the lead researcher in the world on our daughter’s disorder (PPP2R5D) and we had been fast-tracked onto her schedule. During our visit, she asked “How’s your molecular biology?” and I mentioned having read The Gene. She noted that it was being made into a documentary by Ken Burns.
What she failed to mention was that she was a primary figure in it. Perhaps even its heart and soul.
We just watched the first installment this weekend and I was utterly gutted. My wife and I thought the documentary would be a fun and informative way to spend a Friday evening. We put the kids to bed, poured a glass of wine, and settled in for a nice documentary. We had no idea we would be fighting back tears the entire time.
Part 1 covers Mendel through recombinant DNA. Part 2 covers the mapping of the human genome to the present. The material is presented through a nice blend of historical materials and interviews with researchers (Mukherjee most notably, but also many of the key scientists who are still living), all interwoven with stories of people whose lives have been impacted by genetic disorders.
I expected the documentary to basically summarize the book, but it did so in a way that closely tracks one particular family’s journey, the Rosens, through the world of rare disease diagnosis. Their little girl began missing developmental milestones, and a long road of testing landed them in Dr. Chung’s office. Same as us. Here is their beautiful daughter with Dr. Wendy (she’s this incredible with our daughter too):
The documentary was like watching the last two years of our life on TV.
There are lot of ways our story is different from the Rosens’. Our daughter’s disorder has serious ramifications for her life, but is not degenerative in the same way and is not expected to shorten her life. Our heart goes out to them.
But to our friends who would like to better understand the world we’ve been living in, there are nonetheless many ways our life has been marked by similar experiences to those featured in the documentary:
- Our journey started with missed milestones and regressions, just like the family in the documentary.
- We too saw countless specialists searching for an answer: neurology, developmental psychologists, speech pathology, craniofacial surgeons, feeding specialists, genetics, cardiology, you name it. Eventually Emory genetics ordered the chromosomal panel that would find the PPP2R5D anomaly, after which we were promptly referred to Dr. Chung.
- On one hand, it was incredible to see our very own geneticist featured in a documentary like this. On the other hand, it was a sad reminder that we had cause to be under the care of someone so prominent.
- One of the things the documentary emphasizes is the critical need to build as strong neural pathways as possible while the brain is most plastic. We were given the same charge by Dr. Chung, to do absolutely everything we can for our daughter before her third birthday as it would likely make the most tangible impact on her eventual development.
- We also needed a mouse! We actually have mice for three different specific mutations within the PPP2R5D gene. Seeing all the kids yelling “I need a mouse!”… 😭
- Our daughter’s disorder causes hypotonia (low muscle tone). She wears ankle braces/orthotics just like the little girl in the documentary.
- The scene near the end where the father notes that his daughter works harder than anyone he knows… we understand that completely and this is the point in the documentary where I lost my composure. Our daughter fights through ten therapy appointments per week (speech, PT, OT, aqua, music, etc.). We have to intentionally make routine things harder for her so that she develops and maintains strength. Everything requires more effort for her, can you imagine?
- In the documentary, the rare disease KIF1A is homologous to Huntington’s disease. Our daughter’s rare disorder PPP2R5D has structural similarities to Alzheimers and certain cancers. We are similarly hopeful that synergies between disorders will help the other.
- KIF1A research is progressing because of a tireless parent, Luke Rosen, who has relentlessly advocated for his child. Our disorder has a similar parent, Joseph Lang, who founded Jordan’s Guardian Angels. His daughter Jordan was one of the early diagnosed PPP2R5D patients. We feel we owe the world to Joe for the hope, support, and information his organization has brought us.
- Our daughter was the 71st known individual diagnosed with a PPP2R5D-related disorder. I can’t imagine what is it like for families like the Rosens who are among the very first to be found. By the time we were diagnosed, a non-profit had been formed (Jordan’s Guardian Angels) and research was already underway.
- In the past 1.5 years, we have grown from 71 to over 130 families in our network. As the documentary mentions, this is significant as we get closer to mouse and the human gene therapy trials. The internet has enabled families to find each other, dragnet-style, in an unprecedented way. Most families get connected via a private Facebook group, found after Googling “ppp2r5d”.
Aside from all of the personal reflections, Siddartha Mukherjee is wonderful and I enjoyed putting his voice with his writing. The documentary does a fabulous job weaving the progression of historical genetics discoveries into real-life stories that illustrate the promise and ethical complications inherent in this type of work. I can’t wait for the second installment next week.
I’m thankful this documentary exists and that stories like these are being shared. I’m also deeply grateful for all the researchers, doctors, and rare disease advocates whose tireless work will bring about treatments and perhaps a normal life for people with rare disorders.
On behalf our daughter and all other rare disease children out there who desperately need a cure, please consider the following:
22 Mar 2020
•
Productivity
•
Work
I’ve been planning to write a post describing my remote work setup for several months, but now that a global pandemic is forcing most of the world to work from home, I thought perhaps a description of my setup might be helpful to others who are figuring this out for the first time.
I’ve spent a lot of time trying to dial in this setup over the last three years while working from home full-time. I figure since I spend thousands of hours per year using this setup, I should love it and try to get every aspect just right. It’s always a work in progress, but I’m very happy with the decisions I’ve made for now.
My criteria were pretty simple:
- Minimalist aesthetic that integrates cleanly with my living space
- Seamless transition between sitting and standing
- Flexibility to dial in the ergonomic aspect of every single component
- Use the smallest desk that comfortably accommodates my computing setup alongside reference materials (books/papers)
- Minimize desk surface area taken up by fixed objects (i.e. I sometimes like to spread out papers and books over the desk without being blocked by a monitor stand)
I’ll start with some photos and then give a link and a few short comments on each item.
Furniture
-
Uplift V2 Standing Desk: I chose the UPLIFT Desk based on the Wirecutter review. I LOVE this desk. It is rock solid, aesthetic, and probably the best value I could find in all my research. I chose white hardware so it would blend in with the trim in my house. I also highly recommend the curved desk surface as it feels much more ergonomic than any straight desk I have used. The sit/stand heights are programmable (you really want this instead of trying to dial in the height each time you transition). The cable management is great. Note that it comes in a wide variety of sizes (5), types of wood (20), and hardware colors (4). My configuration: 1” thick Carbonized Bamboo Desktop - 48” x 30” curved with grommets, white frame.
-
Herman Miller Aeron chair: This chair has a Wikipedia article and needs no introduction. All I will say is that I bought a perfect condition two-year-old model from an office liquidation sale on Craigslist for under $400. You can buy them at this price/condition all day long on Craigslist; there’s no reason to by a new one at $1700.
-
Fully Jarvis Single Monitor Arm: Another Wirecutter recommendation, I got turned on to using a monitor arm after seeing photos of Paul Stamatiou’s setup. The Jarvis monitor arm in white perfectly matches the aesthetic of my Uplift desk, and it has been very stable with a 34” ultra widescreen monitor (discussed below). I found that attaching it via the right grommet opening was much more solid than clamping to the back edge (it comes with hardware for both). YMMV. Highly recommend a monitor arm; it opens up a ton of space on your work surface and gives you much more control when dialing in the height and depth of the monitor.
-
Polycarbonate Plastic Chair Mat: This mat is amazing. It is almost completely clear (you can hardly see it in the photos above), hard plastic, ships flat in a box. This means it blends well with your carpet and also doesn’t roll up like those cheap vinyl ones, but lays perfectly flat.
-
Imprint Cumulus Pro Anti-Fatigue Mat: A high quality anti-fatigue mat is a non-negotiable requirement if you spend any time standing. For me, having this is the difference between standing for hours vs. standing occasionally.
Computing
-
MacBook Pro 15 inch: Not much to say here.
-
LG 34BK95U-W 34” UltraWide 5K monitor: When my CEO offered to get me this monitor, I thought it would be way too big. But I love it. I can easily scale from having a single window open in the center, to having VS Code open with two editing windows, a vertical terminal window, file tree, etc., all at a readable text size.
-
Henge Vertical Docking Station: This dock is very solid and also clears a lot of space on my work surface. Since all of my peripherals are Bluetooth, this only has a single Thunderbolt connection that powers the MacBook Pro and connects to the external display. Highly recommend this one.
-
Keychron K2 mechanical keyboard: People either love or hate mechanical keybaords. I like this one because: (a) it’s wireless, (b) it’s Mac-first and has the standard Mac modifier keys for audio control, etc., (c) it has full function row, arrow keys, and nav keys which are harder to get in a compact mechanical keyboard, and (d) you get quite a few choices for switches (I chose blue, ask my wife what she thinks about that). I suggest the RGB backlight as I found it more fun than I expected.
-
Keychron K2 Walnut Wood Palm Rest: Keychron’s palm rest is perfectly sized to the keyboard and looks great. Disclaimer: The one I got doesn’t have the Keychron logo, which looks a little jarring in the current product images on their website.
-
Apple Magic Trackpad 2: Again, wireless peripheral to keep my work surface clean and devoid of cables. The charge on this lasts forever. Also, space gray obviously.
-
Apple AirPods: I primarily use AirPods for music listening and video conferencing all day for work. I like the ones with the charging case so I can use them with my desk’s built-in wireless charger.
-
Clock screensaver: Just a design-ey flipclock screensaver.
Peripherals & Miscellanea
-
Xiaomi Mi LED lamp: This is a simple desk lamp that folds away, and is easily tunable for both brightness and warmth via a single knob/button. The white aesthetic blends perfectly with the desk and monitor arm hardware. Also provides some nice ambient light. It won design awards or something; I like how it looks. Discovered via Paul Stamatiou.
-
Bower for Areaware Table Tile Coaster: I bought a few sets of these geometric coasters at the MoMA Design Store in NYC several years ago.
-
IKEA Wireless charger in grommet: It doesn’t look like this is available anymore at IKEA online (maybe in-store?), but several years ago I bought a set of wireless chargers at IKEA thinking they were standalone chargers. It turns out they were intended to be mounted in a grommet but I wasn’t about to drill holes in our bedside tables, so they sat in a closet for a few years. After I bought the desk and realized there was an unused grommet, I remembered this charger. I use this to charge either my iPhone or AirPods. I will probably replace this with a white option at some point since the black kind of stands out.
-
Rogue Fitness 16kg Kettlebell: I keep a 35 lb kettlebell right next to my desk. Most days I do 15 sets of 10 swings sometime during my work day when I hit a slump. Having it next to my desk reminds me to use it. No special clothes or additional equipment required.
-
Bamboo Motion-X Wobble Board: Another small convenience that makes using a standing desk more sustainable and a little more fun. This shipped as a free add-on when I bought my Uplift desk.
-
Trond mountable power strip: I have this mounted on the underside of the desk near the back, right beside the cable management tray came with the desk. This has both standard power and USB sockets. Everything you see in the photos plugs into it; its white power cord is the only visible cable leaving the desk.
-
Bose QC25 Noise Cancelling Headphones: Not pictured, but primarily used on airplanes and when I need to get into a hacker fugue state.
-
Air plant: Not pictured because it died. :(
Disclaimer: Affiliate links throughout.