Posts about 'things-i-learned'

  • Making This Blog Even Faster With Speculation Rules

    Browsing the HTMHell Advent Calendar I learned about a completely new-to-me browser API called “speculation rules.” This poorly-named (according to me) feature allows browsers to prefetch or even pre-render content speculatively, basically predicting what a user is going to click on. Currently, this feature is available in Chromium-based browsers, but...

  • Webpack 201

    This cat is now bundled for production. In 2024, I wrote about learning the basics of Webpack when I realized it was a tool that I used almost daily without thinking about it. Now, I’m working on a Firefox extension that is going to depend on a third-party library. How...

  • I Created Custom Procedurally Generated Truchet-Tiled Open Graph Images for This Blog

    I love Truchet tiles, which are square tiles that form interesting patterns when you tile them on the plane. The idea that some basic shapes, like the triangles above, can form elaborate emergent patterns when tiled in interesting combinations, fits in nicely with my interests of quilting and drawing geometric...

  • A Handy Shell Script to Publish Jekyll Drafts

    xkcd The quest to remove friction from posting to this blog continues. In an earlier post, I shared how I used rake to automatically generate a blog template for me and place it in Jekyll’s drafts folder. Now, I realized I’d also like to handle publishing that post with approximately...

  • Six Things I Bet You Didn't Know You Could Do With Chrome's Devtools, Part 2

    This is the second of two posts about devtools tricks; these are sourced from a conference talk I attended in early November as well as from other things I’ve picked up across the years. In the first post we covered: Time functions with console.time() and console.timeEnd() Watch any DOM element...

  • Six Things I Bet You Didn't Know You Could Do With Chrome's Devtools, Part 1

    I just got back from TechBash conference in Pennsylvania. It was a great couple of days of meeting new people, reconnecting with old friends, and of course learning a ton. Many of the sessions I went to were fantastic, but my favorite session by far was by Mike Rapa about...

  • The Surprising Power of Jekyll's site.data

    I’ve been speaking a lot this past year. This is new and exciting to me, and I want to track all my accomplishments, because each one of them feels new, exciting, and honestly a little scary. So keeping track of everything is a great way for me to mark these...

  • Accessibility the Easy Way With Deque's Linter

    I have been interested in, though never an expert in, web accessibility, for years. I believe common-sense affordances like alt text and keyboard navigability in a website are shining examples of the curb-cut effect, so while I am not (currently) disabled1, I do at least try to make my websites...

  • Who's Touching My Files? Watch Out With Watchman

    Is Mr. Game and Watch a watch-man? I don’t see why not. I have a weird setup at work with a lot of interlocking config files. (We sort of halfway support git’s sparse-checkout feature but with an internal tool that’s supposed to keep everything in sync outside of git. Don’t...

  • An Intro to vavr's Either

    Either an orange or an apple would be delicious. Either is an incredibly useful tool in a Java programmer’s handbook, one that brings functional programming control to Java. If that didn’t make sense, I get it. Either is much easier to use, to me, than to explain. What Either does...

  • How to set up a backend FastAPI server on nginx (or: I am bad at devops)

    I’m setting up a new backend server for a silly side project I’m working on, and every time I do this I forget all the steps I need to follow. These steps are for a FastAPI server, served through nginx running on a Unix box (an Amazon EC2 instance running...

  • Some Basic Rake Tasks for Jekyll Users

    I recently tweaked a few of the (very basic) rake tasks I’m using to keep this blog going. Ruby isn’t my thing, but writing these was interesting and I figured I’d share in case they are useful to anyone else. Wait, back up. What’s a rake task? Rake is a...

  • What I Learned From Reviewing Hundreds of Conference Session Proposals

    I did not actually give anyone an A+. Nor did I get the chance to write “see me”. Since last fall, I’ve been pitching (and giving!) talks at tech meetups and conferences. So far it’s been an excellent way to hone ideas, meet new people, and learn more about the...

  • Partially Mocking a Class in Java

    This is an example of complete mocking, but not the kind of mocking this post discusses. I love writing unit tests. i know this is an unpopular opinion but I just really like it. I love thinking of edge cases that could break code and then coming up with exactly...

  • What I Learned This Week: AI and Alt Text (Don't Do It)

    For those of us who are sighted, it is easy to forget that alt text is a necessity for navigating the Internet for the millions of blind individuals who use screen readers. Not to mention, there are still, believe it or not, Internet users who do not load all images...

  • Don't Sync State, Derive It! (With Apologies to Kent C. Dodds)

    Syncing is for swimming, not for state. This is a pretty standard lesson (Kent C. Dodds talks about it a lot in his React courses and on his blog) but it’s still something that has taken me a while to internalize. With BookGuessr, I have a bunch of state! I...

  • The Making of (and Redesigning of) BookGuessr

    A couple of years ago, I got into my head the idea that I wanted to make a Wikitrivia style game with novels. I love to read, there’s a lot of publicly available data about books out there, why not? I made the first prototype in a weekend, using a...

  • Secrets of the Git Commit Hash

    I attended an online presentation recently about very specific ways git can get messed up. To be clear, git can get messed up in many ways, but this fascinating presentation, by Mike Street, was about just some of the ways we run into problems with git. Have you ever gotten...

  • Save Time With Postman's Pre-Request Scripts

    Postman is an incredibly powerful tool for prototyping and testing APIs. If you ever find yourself making any kind of API request to any service (regardless whether it’s one you built or one you use), I really think you should be using Postman. In this post I’m going to share...

  • Some Tips for Working With the Google Sheets Java SDK

    At work, I’ve been working on a project that involves reading and writing data to and from a Google sheet. One could argue about the wisdom of using Google Sheets to hold any data, but for the sake of this post (and my sanity) let’s assume that the business requirements...

  • What I Learned at Work Today: Status Code Tricks

    At work yesterday, I came across this snippet of code in a Java class meant to handle HTTP responses: boolean isSuccessful(int statusCode){ return statusCode / 100 == 2; } My first instinct was to chuckle (and in fact I sent it to a coworker and we both chuckled). What a...

  • Cool Discovery: Over the Wire's Wargames

    I was nerd sniped this weekend by a coworker who told me about Over The Wire’s wargames, which are self-directed cybersecurity challenges. I am just about halfway through the easiest one, Bandit, which in addition to having me scan for open ports and base64 decode strings, is also teaching me...

  • Customizing the Command Line for Lazy People

    The shell is personal. Why not make it customized to your every whim? Actually, there are decent reasons not to go crazy customizing things – mainly, the logic goes, if you get too invested in having things a certain way that are ‘not normal’, then when you have to ssh...

  • Hidden Export Options in Google Slides

    To publish my slides for Reinforcement Learning for the Math-Phobic I had to do a lot of manual work. I cropped screenshots of the slides (and replaced some text-heavy slides with just text). I turned my speaker notes into complete sentences and interspersed them between the slides. (I was heavily...

  • Works In Progress: Generating a Maze in Python

    Last year I was messing around with maze generation. I thought I was going to make another game (more on that later). I didn’t get very far, but I did learn how to use the recursive backtracking algorithm to create a 2D maze. I was thinking about that algorithm again...

  • Advent of Code Day 14: That Won't Work

    I guess finding the answer to part 2 manually is not going to work. Imagine this GIF goes up to iteration 4999….

  • Composing Functions in Python

    Beethoven did not compose any functions, that I know of. I have not done a lot of functional programming, although someone I used to volunteer with was very into it. This weekend, while attempting to solve Advent of Code, I came back across some functional techniques. I probably should have...

  • About The F*ck

    Dunno how y’all are feeling lately, but I just have a lot of curse words on my mind. And by complete coincidence (actually no really), continuing with my theme of terminal tricks I have discovered the most perfectly named, magnificent app: The Fuck. It corrects your previous console command. All...

  • Webpack, Explained by Someone Who Just Learned What It Is

    Image by digital designer from Pixabay What is webpack? At a recent casual meeting of Women & Gender eXpansive Coders DC (a local group I’ve become involved with over the past year) a Python user asked me this question, and boy did I stutter out a non-answer. I think I...

  • Teaching a Reinforcement Learning Algo to Play Queens

    Once you have created infinite games of Queens, you need to play infinite games of Queens. I don’t have time for that, so the next logical step is to teach the computer how to play, taking humans out of the equation entirely. A very cool data scientist I know recommended...

  • In Which I Go Down a Complete Rabbithole About Bash Completion

    Ever wonder what is actually going on in your shell when you type, for example, cd ~/myp, hit <TAB>, and the shell completes ~/myproject? Neither had I, until recently. This was supposed to be a post about the next chapter of Efficient Linux at the Command Line, which is about...

  • Leveling Up on the Command Line

    I am lucky in that my first exposure to computers was through the command line. I wasn’t a wizard by any sense when I realized that I could type “echo hi” and the computer would ‘talk’ back to me*, but it means that I feel more comfortable in a non-GUI...

  • Learnin' Kubernetes

    At work, all teams are being asked to adopt Karpenter, which, as you can tell from the name, is related to Kubernetes. The adoption is a relatively simple process, thanks to pre-work other teams have done to automate most of the hard stuff. Realistically, I should just have to change...

  • What Is A Snowflake Stage?

    At work the past week, I’ve been working with large datasets, trying to figure out the most efficient way to process and transform the data without overloading other teams’ servers. Disclaimer, I’m not a data scientist and SQL is not my strong suit. Any mistakes in the below are mine...

  • More Fitbit Dev Resources

    The developing-for-fitbit journey continues… Breaking changes between SDK 4.x and 5.x The older Fitbit I have, a Fitbit Versa 2, uses software written with version 4.x (or lower?) of the Fitbit SDK. Modern Fitbits use… I think it’s up to 6.x? And excitingly, there were a ton of breaking changes...

  • Common Errors When Developing for Fitbit

    Or maybe just common to me? Problem: Install failed: RPC call to 'app.install.stream.begin' could not be completed as the RPC stream is closed Cause: Jury’s out on what causes this. It seems to happen when I sleep my laptop; the Fitbit simulator doesn’t seem to be able to recover. Solution:...

  • Developing for the Fitbit Versa

    In my previous post I said something about learning Android app development so I could make a Fitbit app. However, silly me– just because Google owns Fitbit now does not mean that Fitbits run Android. (: Android Wear is what powers Google-owned smartwatches, but if you have a vanilla Fitbit...

  • Firebase Crashlytics and Feature Flagging, or What I Learned at WITS Spring 2024

    The following info comes from the Women in Tech Summit which I attended in Philadelphia this weekend. I may type up a more fluffy post about how it felt to attend this conference later, but for now, these are my technical notes from the hands-on session I attended. Android app...

  • Local Firebase, or, how I learned to stop trashing my prod db

    Noodle has a lot of the hallmarks of a solo dev side project, which is fair, because it is. Stupid simple deploy pipeline (which is probably a good thing), no tests to speak of (probably not a good thing), no real dev environment. That means when I test Noodle locally...

  • Typescript-ifying Noodle

    Over the spring and summer, I built Noodle, a minimalist, privacy-focused event scheduling app. (more) My friends and I use it all the time, but development has kinda slowed. This is a problem, because if I ever need to fix anything, I’m going to have to go back and remember...