Play 8 Red Squares

I re-deployed 8 Red Squares, a site that allows you to play through the 8 Queens Puzzle on different sized boards. Future enhancements I’d like to add are Timer (for each segment), and total running time until the users solves n=8. Better mobile support (board size 9 and 10 don’t handle small screens well). Foundational solutions checklist, e.g., if a user wants to find all possible arrangements (excluding symmetries and rotations). ...

September 15, 2024 · 1 min

From a Mouse to a Trackball

I recently bought the Kensington Slimblade Trackball to replace the Logitech MX Master mouse that I have been using for the last year. This is the first time that I’ve used a trackball. A couple of thoughts worth noting that are either omitted from or in conflict with other reviews: The device is too large for me. It takes up almost an entire mousepad, and it is wide enough to force frequent movement between the trackball and the keyboard (I use a Glove80). I blame this partially on the desk, as it requires a roll-out keyboard holder that was not made to accommodate the split keyboard and the trackball. But for a trackball with “Slim” in the name, I expected it to be smaller. ...

September 14, 2024 · 3 min

Lessons learned on dashboard design for early-stage apps

What follows are a few takeaways from a recent app launch, where I had some successes and some things I had to fix. I also maintain dashboards for a wide set of clients on a different project that will be overhauled soon, and would like to apply these learnings during the redesign. The three guiding business questions for initial design are: How are we getting users? What our users are finding value in when using the application? ...

September 7, 2024 · 17 min

Daily SNAP News Aggregator launched

Site is accessible here, and the accompanying GitHub repository can be accessed through that site as well. It is based on a Google Alerts RSS feed, built every ~6 hours with Jekyll and GitHub Actions. Monthly commentary will be included on that site in the future. Immediate next steps are to add in more news aggregators as sources, to try and get articles that are missed. I would like to integrate Google Scholar as well, but it does not appear they offer an RSS feed or any simple method. Article display filtering is currently done on a keyword basis, which has been working fine, but would like to move to a classifier model. ...

June 11, 2024 · 1 min

April SNAP Updates

Note a slightly different format to topic, rather than state-based. Snap Interview Waivers in some places expiring Expiration of Waiver of Interview Requirements for SNAP Benefits in Mississippi Beltrami County SNAP interview waiver ends April 30 I would be very curious to see any study performed exploring differences in program administration and case outcomes between while the waiver was in effect, and the before / after where the waiver is not in place. How has the speed of applications changed? Overpayment or underpayment rates? What do the caseworkers think about this change? I also came across this Reddit thread on the impact of interview waivers, but would like to see a structured case study. ...

May 5, 2024 · 8 min

Joint & conditional probabilities with pd.crosstab

pd.crosstab is one of those built-in functions in the Pandas API that I forget about routinely. I instinctively reached for df.groupby('x')['y'].count().unstack(), but when I wanted to normalize the values, it takes more and more steps to get where I wanted. This was a nice straightforward overview of the pd.crosstab function. To document for myself, below, create a sample correlated DataFrame with integer columns ActiveUsers and CompletedProfile. import pandas as pd import numpy as np # following code from Github Copilot np.random.seed(0) n = 1000 # Number of samples p = 0.7 # Probability of True in the first column rho = 0.8 # Correlation col1 = np.random.choice([True, False], size=n, p=[p, 1-p]) col2 = np.where(col1, np.random.choice([True, False], size=n, p=[rho, 1-rho]), np.random.choice([True, False], size=n, p=[1-rho, rho])) df = pd.DataFrame({'ActiveUsers': col1, 'CompletedProfile': col2}) ActiveUsersCompletedProfile0TrueTrue1FalseFalse2TrueFalse3...... Sample of the constructed DataFrame ...

May 2, 2024 · 2 min

Identifying outbound IP addresses of a Azure Function

Here is Microsoft’s documentation page on the topic. The only reason I am documenting this is because the Azure Resource Explorer failed to load consistently across devices for me. Some tutorials I found, like this one, seem to be outdated and the outbound IP addresses weren’t listed in any Properties menu in the Function App in the Azure Portal. The Azure CLI method was what worked for me: az functionapp show --resource-group <GROUP_NAME> --name <APP_NAME> --query outboundIpAddresses --output tsv az functionapp show --resource-group <GROUP_NAME> --name <APP_NAME> --query possibleOutboundIpAddresses --output tsv I wanted this as I was hoping to whitelist the IP addresses in the database firewall to allow for scheduling some SQL scripts to run daily. The issue with this is the following, copied from the above linked Microsoft documentation: “because of autoscaling behaviors, the outbound IP can change at any time when running on a Consumption plan or in a Premium plan.” While at least a few people say whitelist these IPs anyway, the recommended course of action is to set up a virtual network within Azure. ...

May 1, 2024 · 2 min

Why (not) write online?

a) improve communication skills by forcing myself to formalize an opinion. Feedback from anonymous readers may either point out an error I made while translating what I think to a written document or a flaw in the argument itself. Of course, I need to be willing to be wrong, and reminding myself that I am excited about learning is an powerful way to cope with finding errors in my work. Writing online is a low-barrier opportunity to become comfortable with this. ...

April 28, 2024 · 7 min

Replacing a mouse with a pen and tablet?

These are some thoughts about using a Wacom Intuos Wireless Pen and Tablet to complement a mouse and keyboard over the past few weeks. I made this purchase in an effort to decrease forearm and finger pain from overuse working at a desk. Previously, I’ve been using the Logitech MX Master 3 For Business mouse, and I was hoping that switching to a pen and tablet would limit some of the forearm rotation that was causing me pain. While I put the mouse to the side, I am still using a Glove80 keyboard, as well as Windows Voice Access. ...

April 22, 2024 · 10 min

My UChicago MSCAPP Application Essay Answers (2018)

These were my answers to the application essay questions for UChicago’s MSCAPP program back from the 2018 round. Only piece of advice - make sure you know what skills or knowledge you want to get out of any MS program - which means work for a bit prior to attending. Why is a combined program between policy and computer science a good match for your career goals? (max 300 words) With a M.S. in Computational Analysis and Public Policy, I can support the shift from Michigan nonprofits solely serving constituents to leading communities. My primary career goal is to increase volunteerism through developing the technical expertise of the nonprofit sector. By applying data science techniques, I will provide organizations with evidence of successful interventions and expand their capacity to deliver services. To accomplish this, I need intensive direction to develop my quantitative analysis skills through computer science and statistics courses. ...

April 17, 2024 · 5 min