RSSAmplifier

Blog

Milwaukee Maven

Hi, I'm Andy Glassman. I post all sorts of things, from thoughts on programming, to reviews of trash tv shows. https://www.linkedin.com/in/andyglassman/

blog.andyglassman.comRSS feed ↗18 posts

Latest posts

Ecto - Using select_merge for flexible aggregates

Problem PostgreSQL is a rock solid database. I've been using aggregate expressions for a number of features over the past few years in various languages. They can be used to build powerful features for your platform. When teamed up with Elixir and Ecto, you get amazing flexibility in your query generation. Typically the data you want to retrieve via a select is fairly static, or there are only one…

Phoenix LiveView: Async Assign Pattern

UPDATE: LiveView has added a built in, more robust way of using this pattern. Check it out here ! I've been using LiveView for about two years now. It's a great framework that makes snappy and responsive pages. One anti-pattern I see fairly often is loading a lot of data in the initial page render. For the un-initiated, the mount/3 function is called twice. Once for the initial 'dead' render, and…

Custom Kaffy Styling

I recently gave a talk at Empex NYC ( link to talk ) on why you should be writing admin tools from day one . In my talk, one thing I highly suggest is to make it very obvious what environment you are in when providing a web admin UI for your team. We've been using Kaffy at SwayDM since the beginning. At the time, you couldn't easily overwrite the styling. I maintain a private fork of Kaffy for…

ELI5: ChatGPT is a Giant Plinko Game

Photo By: sumofus ChatGPT is like a giant Plinko game. Plinko is a game where you put a coin in at the top. The coin falls down the board, hitting pins that influence it on the way down. At the bottom are slots, with various points or prizes. Depending on where you put your coin in at the top, you have different chances of which slot it will land it at the bottom. It's not random, some slots will…

Write Admin Tools From Day One

UPDATE: I gave a talk expanding on this blog post at EMPEX NYC 2023 . The Problem Writing useful features for your users is key to a successful product. It makes sense then that you should maximize your time writing features for those users. This approach is very effective at the beginning of a product's life, but over time, you may find you are spending more time maintaining the product that…

Your Software Should Suck

Good software is really hard to write. When software is good, you almost don't notice it. The UI / UX doesn't get in your way. You can do what you want easily. When software is bad, it's frustrating, but you still use it because the alternative is worse. Maybe it's replacing a manual / tedious process, or provides functionality that simply could not exist otherwise. People will put up with bad…

Fingerprinting Knock errors for Sentry in Elixir

At SwayDM , we use the fantastic Knock platform to define notification workflows, and deliver emails, and SMSs to our users. Our codebase is written in Elixir , and we use Sentry for error reporting via sentry-elixir . One thing you can do with sentry-elixir is report an event to Sentry every time your app logs at the error level. You can also specify which metadata logger keys are forwarded to…

Don't Outsmart Yourself

The great Richard Feynman had a saying. "The first principle is that you must not fool yourself and you are the easiest person to fool." I believe there is a similar principle that can be applied to software engineering. "Don't outsmart yourself." As a software engineer, it can be easy to: Over-engineer a solution to a simple problem. Strive for elegance over ease of understanding for others. Use…

The Prototype Maturity Model

Moving Fast, Taking Shortcuts Not all ideas are good ideas. In fact, the majority of your ideas will not be good. When it comes to building software, it doesn't make much sense to build out a prototype of a new idea with all the best practices a full fledged software product requires. This is why we rapidly prototype software for a new feature, or product. We want to validate the idea as quickly…

It's Business (Logic) Time

( Sea Dragon Pirate Cruise - Panama City Beach) If you've worked at a company where your job is to deal with software code, you've most certainly heard the term "business logic". Recently I had a conversation with my team at Frame.io, and it was clear that we all had different interpretations of what this lingo actually meant. I figured each person's experience around the use of the term business…

So Long, and Thanks For All The Pizza

On a cold Wisconsin day in December 2014, my good friend Jonathan Kupcho and I patiently waited next to 2 large Dominos pizzas, and a case of warm Diet Coke. We had 11 RSVPs. Some of them would show up... right? Had we given clear enough directions, and parking instructions? Did people deem it too cold to journey out that night? Our fears subsided as the first attendees started to trickle in. I…

To The Moon - Game Review - Humble Indie Bundle X

I picked up Humble Indie Bundle X last week. After installing the games, I didn't know where to start. I looked over the titles and their screenshots. One in particular caught my eye. The title was To The Moon . I was intrigued by it's 90's sprite-ish overhead Japanease art style. I like this style as it reminds me of many great games I have played like ChronoTrigger , Zelda, and Pokemon. I also…

Extremely Fake Cheapskates! Season One Recap

If you've been browsing Netflix lately, you may have noticed a recent influx of trashy reality TV shows. While I normally avoid these like the plague, there was one that recently piqued my interest. I've been reading the Mr. Money Mustache blog lately so I just HAD to watch Extreme Cheapskates . Have these extremists used any of MMM's penny pinching tactics? Maybe there would be some useful tricks…

Java 8 - Using Parallel Streams

Java 8 is not slated to come out until Spring 2014, but the features are so enticing that I just had to download the snapshot, and give it a test run. After messing with python the past few weeks the Java 8 feature that I am most looking forward to is lambda support. The second feature I'm digging is the new Stream API. Now these are both very useful APIs on their own, but I really like how Python…

Taming the GWT PopupPanel

I was working on a feature of a GWT application today, and decided to fix a problem that had been bugging me. While the issue was not a server crashing bug, it was a usability nuisance. Between the main content of the app, and the navigation bar, there was an Anchor. When a user moused over the Anchor, a PopupPanel would be shown with some user data in it. Everytime i moved my mouse up to the…

Why NOT to Ditch Your Crappy Old Smart Phone

Like many people out there, I was pumped when I got my first flashy, sleek, touch-screen-having smartphone. A Samsung Acclaim was my entry level purchase. The "new phone" haze soon wore off as I realized this was a bulky, slow, laggy beast of a device. The UI was so laggy, there were times I almost missed calls from not being able to swipe the answer button. I pity the soul who would need to use…

Fat, Sick, & Nearly Dead: The Most Genius Infomercial Ever Created

Fat, Sick, & Nearly Dead : The Most Genius Infomercial Ever Created By Andrew Glassman A Brevielle Juicer It's 3:30am, the late run of Die Hard has come to a conclusion, and John McClane comes out victor once again. Next up on the schedule, "Paid Programming". It's the crack-cocaine of late night television, the infomercial. The testimonials are fake, the products are cheap, and when you wake up…

Honeymoon in Hawaii

Well, I'm back from my honeymoon in Hawaii. This was the first vacation that Amanda and I have taken as just the two of us, so it was a lot of fun to get away from it all! We left Wisconsin on Thrusday 10/27. Waking up at 4am was definitely a treat, especially after the 2$ High Lifes that we had at Chuck's the previous night. (it's vacation, don't judge). Our flight out went relatively smooth…