cowsay is a command line program written in Perl. The original version had a final release in 2016 (that’s the version of many installed cowsay programs) and there’s a number of forks of that release in Perl. There are also many many versions of cowsay in other programming languages, like the one I maintain written in R, unimaginatively called cowsay. I wrote about cowsay here back in 2014. I didn’t think this would ever be 300+ stars popular, but here we are. Given that people seem to actually use it - or at least star it - seems worth putting some more time into it. ...
Software rules and Quarto
At work I’ve been using Quarto quite a bit for website and books for work projects. One of the projects I’ve been working on lately that uses Quarto is the WILDS Contributor Guide (WILDS = Workflows Integrating Large Data and Software). This guide (a Quarto book) is mostly a guide for our own immediate team members, but aims to a) be a guide for any contributors to our open source software work, and b) demonstrate good open source software practices for the greater Fred Hutch community where we work. ...
Refactoring notes
I worked on a refactor of an R package at work the other day. Here’s some notes about that after doing the work. This IS NOT a best practices post - it’s just a collection of thoughts. For context, the package is an API client. It made sense to break the work for any given exported function into the following components, as applicable depending on the endpoint being handled (some endpoints needed just a few lines of code, so those funtions were left unchanged): ...
Moved to Hugo
This blog is now using Hugo. Important - if you subscribe to the RSS for this blog you likely have to delete/remove the old one and add the new RSS link. It is: https://recology.info/index.xml
Shiny file inputs
I wrote the other day about overcoming an issue with Shiny. Another issue I ran into concurrently was about file inputs. The issue was that file inputs (i.e., shiny::fileInput) was difficult to clear. That is, after a user uploads a file, it was easy to get some of the various parts cleared/cleaned up, but not others: (Not Easy) The UI components of fileInput (the text of the file name, the loading display) (Not Easy) The data behind the fileInput handler (Easy) Displaying some feedback in the UI after handling file input Load libraries ...
Shiny button weirdness
I’ve been working on Shiny app at work for the past few months. One of the many frustrating things about Shiny lately has been around buttons. Well, it wasn’t really about buttons, but that’s where it started. Load libraries library(shiny) library(bslib) library(crul) Helper function, returned a random UUID from an httpbin server httpbin_uuid <- function(...) { con <- crul::HttpClient$new("https://hb.opencpu.org") res <- con$get("uuid") jsonlite::fromJSON(res$parse("UTF-8"))$uuid } A bslib ui component ui <- page_sidebar( title = "My dashboard", sidebar = list( actionButton("submit", "Submit"), actionButton("reset", "Reset") ), textInput(inputId = "name", "Your name"), textOutput("uuid") ) Here’s the server part that was giving me trouble. As I said this was an inherited repo, and the server side handling for many buttons was done with eventReactive as below. Using eventReactive meant that button clicks only sometimes triggered the server side code. ...
Avoiding the word footgun(s)
I recently opened an issue in a repository for a package I’m working on to think about potential footguns and how to avoid them. That word “footguns” got me thinking; does using phrases/metaphors for a certain topic in a way lend credibility to it? For example, we use a lot of sports metaphors in the US, especially baseball (swing for the fences, anything related to bases, curveballs, heavy hitter, etc.), and that says something about the place of baseball in our culture. ...
Weird thoughts
My parents just found this email they had printed out from me from May 19, 2006, when I was 26. I chatted about some family stuff, then had this rambling string of weird thoughts below. I thought others might appreciate a good cringe - or cringy laugh - at my expense. It’s especially funny because I’m most def an atheist. I don’t know, those Tucson sunsets really are transformative. … Actually, some deep thoughts: ...
Job searching notes
notes to self for next job hunt (some of which may be generally useful): don’t apply to general tech companies anymore for many reasons. heard back from very very few but that may be b/c I don’t know many people at general tech companies never been able to get through interviews; they’re presumably looking for computer science grads (not me) most of their missions are probably not stuff I’d be happy about at the end of the day. despite missions of doing xyz, it’s probably really about $$ don’t apply to pharma companies any more. there’s lots of good software jobs in that sector, but i’ve struck out 3 times, and so that’s a clear pattern my background/whatever isn’t something they want next time only apply where I have a connection that can refer me or dig around for a referral. it’s super easy to apply for jobs, especially if you don’t write a cover letter; however, the less time I spend surely the less likely I am to hear back make sure (and I’ll probably fail to do it again this time, ugh) to write down what questions I was asked, how I answered, and how to improve on that answer. then study and reference those questions and answers for the next interview its good to have multiple offers at the same time, but then deciding is harder - & I don’t love to negotiating - so maybe don’t worry about multiple offers at the same time next time around I have relatively low expectations in any interview b/c I don’t do technical interviews well - I also try to seek out orgs that do not have crazy technical interview processes - eg., Roche had a whiteboard technical interview that I totally bombed, but was unsurprising in hindsight since the interviewer was an ex-Googler. I’m more of a thinker than a quick responder, making it hard to do well in very fast paced (for me) tech interviews. Though I know i have been a good software engineer where I’ve worked, so these fast paced tech interviews are probably selecting for a certain kind of brain function I guess? seek out orgs with interview processes that have take home assignments - or at least timed coding tests on something like hackerrank - instead of live whiteboard/zoom tech inteviews my last job Deck had a take home test Axiom DS has a take home test approach AdHoc uses a take home test approach Invitae had a hackerrank test, not a take home but better than live coding test cover letters? I still don’t know whether these are worth doing or not. the advice seems to be mixed. they sure take a lot of time, so I hope they’re not necessary for most hiring managers; given my bullet above about spending more time on fewer applications, I could find time for a cover letter on every application if ther’s not that many some data about this last job search: ...
Working at Fred Hutchinson Cancer Center
Soooo, my last job at Deck was amazing. I loved it. I was doing data engineer stuff there, mostly maintaining infrastructure for data pipelines. Everyone was great and the mission was amazing: helping Democrats win. Yet the company was shut down about a month ago, sending me on another job search, the 3rd since early/mid 2021. I’m super thrilled to have landed a job (Software and Reproducibility Software Developer) at the Fred Hutch Data Science Lab (DASL), headed up by Jeff Leek, working with Sean Kross, Amy Paguirigan, and Monica Gerber, among many other amazing folks. ...