Categories
Music

Permanence Objects

A while back, I went to a concert given by a friend of mine. It was her capstone presentation, a sort of thesis-equivalent for music majors. That sort of presentation is something I have some experience with, and so I’m pretty comfortable saying that Sabine knocked it out of the park with hers.

One aspect that I liked, especially compared to my blogging-it-after-the-fact style, was that she built the whole thing around a multimedia web experience. Every piece had, at very least, a page on the site with lyrics; one had a multi-page version that felt like a high-budget lyric video.

I’m going to continue to encourage her to put her music on the various paid streaming services so she can get at least a little bit of money from people listening to it, but in the meantime, please do check out her site, it is… an experience.

Categories
Playlist

Playlist of the Month: April 2020

Remember back when time was a meaningful concept?
Cologne – Haux on Something to Remember – EP
Sober – Edwin Raphael on Sober – Single
Falling Down – Harrison Storm on Falling Down – Single
Angel – H. Kenneth on Angel – Single
F**k Collingwood – Hayden Calnin on F**k Collingwood – Single
Hard Lines, Hard Times – William Wild on Hard Lines, Hard Times – Single
everything i wanted – Billie Eilish on everything i wanted – Single
Don’t Take the Money – Harry Strange on Don’t Take the Money – Single
This is Where it Ends – Richard Walters on This is Where it Ends – Single
Borders – Nathan Ball on Borders – Single
Lies (feat. H. Kenneth) – Syence on Lies (feat. H. Kenneth) – Single
Blinding Lights – The Weeknd on Blinding Lights – Single
Magic in the Hamptons (feat. Lil Yachty) – Social House on Magic in the Hamptons (feat. Lil Yachty) – Single
Let Me Down – Run River North on Monsters Calling Home, Vol. 2 – EP
I Gave It All – Aquilo on Painting Pictures of a War – EP
The Box – Roddy Ricch on Please Excuse Me For Being Antisocial
Falling (blackbear Remix) – Trevor Daniel & blackbear on Falling (blackbear Remix) – Single
Somewhere (feat. Octavian) – The Blaze on Somewhere (feat. Octavian) – Single
Slowly – ODIE on Slowly – Single
Lie – Jake Scott on Year of the Sunflower
ROXANNE – Arizona Zervas on ROXANNE – Single
All My Life – William Wild on Rental House / All My Life – Single
Pines – ferdinant. on Pines – Single
New Shapes (feat. Octavian) – Diplo on Europa – EP
Prayers to the Trap God – Roddy Ricch on Please Excuse Me For Being Antisocial
Four in the Morning – Harry Strange on Four in the Morning – Single
Girls – Balcony on Girls – Single
not ur friend – Jeremy Zucker on not ur friend – Single
Light Again – bobbycrush on Light Again – Single
Baby Girl – Bryce Vine on Baby Girl – Single
Numb – Elderbrook on Numb – Single
Tongue In the Bag – XYLØ on The Ganglands of My Heart – EP
Faith – The Weeknd on After Hours
Hardest To Love – The Weeknd on After Hours
After Hours – The Weeknd on After Hours
Morning Prayers – Steve Benjamins on Morning Prayers – Single
In Your Eyes – The Weeknd on After Hours (Deluxe)
It’s Getting Worse – Gavin Haley & Mokita on It’s Getting Worse – Single1
Stars (feat. PRIDES) – ARCADES on Stars (feat. PRIDES) – Single
Walk Away – Eskei83 & H. Kenneth on Walk Away – Single
Too Late – The Weeknd on After Hours
I Can’t Help (with Sarcastic Sounds) – Shoffy on Flash
Snowchild – The Weeknd on After Hours
Peanut Butter Waffles – Ryan Caraveo on Peanut Butter Waffles – Single
Water Fountain – Alec Benjamin on Narrated for You
Not Like Falling Out of Love – Nick Wilson on Not Like Falling Out of Love – Single
scorton’s creek – Isaac Dunbar on scorton’s creek – Single2
Mean It – Lauv & LANY on ~how i’m feeling~
Redemption Song – Mahmood on Redemption Song – Single
Tati – Gavin Haley & Yung Pinch on Tati – Single
Just Asking – Aquilo on Just Asking – Single
Can’t Get You out of My Head – Mattis on Can’t Get You out of My Head – Single
Just Say Something – Nathan Ball on Just Say Something – Single
Marionette (feat. Carl Brave) – Random on Marionette (feat. Carl Brave) – Single
crowded room – Christian French on crowded room – Single
Missed You (Bonus Track) – The Weeknd on After Hours (Deluxe)
makeup drawer – Isaac Dunbar on Makeup Drawer – Single
K. – Reece on K. – Single3
After All – Miles Hardt on After All – Single
What Could Be as Lonely as Love (Unplugged) – Amber Run on What Could Be as Lonely as Love (Unplugged) – Single
Lonely Star – Oh Wonder on Lonely Star – Single
Devil On My Back – ferdinant. on Devil On My Back – Single
I miss you, I’m sorry – Gracie Abrams on I miss you, I’m sorry – Single
Pages (feat. Rory Hope) – JacobNeverhill on Pages (feat. Rory Hope) – Single
Learning to Live Again – DANIEL SAINT BLACK on Daniel Saint Black – EP
Young And Beautiful – Glass Animals on Young And Beautiful (Quarantine Covers Ep. 2)
Church – Charles Fauna on Yonder4
Been Thru This Before (feat. Giggs, SAINt JHN) – Marshmello, Southside, Giggs & SAINt JHN on Been Thru This Before (feat. Giggs, SAINt JHN) – Single
Bed (Live from Nest Recorders) – SYML on Live from Nest Recorders – Single
I Love You Always Forever – Donna Lewis on Now In a Minute
Heavy – Haux on Violence in a Quiet Mind5
Enough For You – Lani Rose on Enough For You – Single
PDLIF – Bon Iver on PDLIF – Single
Let There Be Light – Alex Sampson on Let There Be Light – Single
Magic – Coldplay on Ghost Stories
Shadow and a Dancer – The Fray on Helios
Nunca Estoy – C. Tangana on Nunca Estoy – Single
Friday – Charles Fauna on Eulogy – EP
Sunlight – Maty Noyes on Sunlight – Single
No Man’s Land – HAEVN on No Man’s Land – Single
Poison (feat. Take A Daytrip, Obongjayar & Santi) – Octavian on Poison (feat. Take A Daytrip, Obongjayar & Santi) – Single
Goliath – Woodkid on Goliath – Single6


  1. Warning: the chorus is likely to get caught in your head. 
  2. This is a rare one in that it made it onto my monthly playlist and one of my specific-mood playlists at the same time. 
  3. This song was nice and hard to find. The iTunes search algorithm hasn’t improved at all, and also kept crashing when I was trying to look things up. Helpful. 
  4. This is probably my #1 recommendation from this list. Listen to the whole album, actually, it’s quite good. (And the intro song feels intensely like the beginning of a ride at Disneyworld.) 
  5. I am extremely excited for this album. 
  6. New Haux and new Woodkid? It’s a good month for music. 
Categories
Portfolio

Personalization

Based on a reading from User Friendly.

Personalization. 1. Users are people, treat them like it. 2. Don't be creepy. 3. Be polite. Respect social norms. 4. Anticipate their needs.
Categories
App

Fluidics 2.0

At long last, I am quite happy to share that Fluidics 2.0 is now available on the App Store. If you’d like to see the full feature list, check out the release post over on the new Fluidics website; this is going to be more of a ‘making of’ sort of post.

So, what’s new in Fluidics 2.0 that warrants it being Two Point Oh?

To start with, I rewrote it from the ground up. Which is widely considered to be a bad idea, but I stand by the decision. I built Fluidics as a project in undergrad; while that wasn’t all that long ago, I’ve learned a great deal since then.

And beyond that, the iOS world has changed. Fluidics 1.0 was built on storyboards and imperative programming; Fluidics 2.0 is entirely SwiftUI. (The only storyboards present are in the widgets, which… cannot be built without storyboards. Maybe in SwiftUI 2.0?)

And while I wanted the core of the application to stay the same – I love the visual of the screen filling up, and the way the colors transition from the ‘above water’ to ‘under water’ areas never fails to make me smile – I also wanted some of the more idiosyncratic stuff to… fit in better.

Screenshots showing the new Settings and Quick Add screens, which match the iOS design language.

That iOS-y Feeling

Gone are the cards.

Settings is now a full-screen experience, and that extra room to breathe makes for a lot easier navigation.

For the Quick Add, I went with the new style of cards in iOS 13, which are just as easy to dismiss thanks to the universal swipe-down gesture, and have fewer… weird bugs.

One of the key ideas of the design program I’m doing right now is that “you are not your user.”

Which, in this case, meant I had to buckle down and accept what my actual users kept telling me. Cool as I think it is to swipe from screen to screen, other people mostly just found it confusing. Tabs? Tabs are standard for apps, which makes them easy to understand; they’re also very well-integrated with VoiceOver, which is something the swiping always struggled with.

Dark Mode

SwiftUI also comes with effectively free Dark Mode support. Most of the actual work, for me, was in finding slight variations on the colors that looked as good in Dark Mode as the originals did in Light Mode. (Day Mode?)

Finally, this new version of Fluidics is something like a tenth the size-on-disk of the previous. This comes from a few places: some actual clean-up work I did helped, but the biggest gains were from updating to the latest version of Swift; that means that, instead of including Swift itself in the app, I can just use the system-level one. So it’s iOS’ problem to keep track of that whopping couple of megabytes of code, and not Fluidics’. Nice.

Similarly, switching to iOS-standard cards instead of the custom ones saves some room. While I was working on dependencies, I switched from a weird, all-local, very-unstable implementation of StoreKit to RevenueCat, which is much easier to work with and saved me a great deal of tearing out my hair.

The final big change was a bit of a side project itself: a new website for Fluidics. The old one was… fine, I suppose. It gave me a chance to try out static site generation with Jenkins (on GitHub Pages), but… hand-coding HTML and CSS, while something I can do, isn’t something I really enjoy doing.

Screenshot of the new Fluidics website, fluidics.app

WordPress

In the interim, however, WordPress has had some excellent updates, the Twenty Twenty theme is easy enough to tweak, and Gutenberg with some plugins makes for a very good editing experience, so here we go.

The new site looks better, and makes it a lot easier for me to do things like, say, having a blog where I can do visually-interesting update notes for each release.

Categories
Playlist Portfolio Travel

Data Visualization

A quick post of a class assignment we did a while back – tinkering with data visualization. I went with my travels and my playlists as the data sources.

(Obviously it’s low-resolution data, for the most part, but you try showing more granular data on a map of the world.)
This was compiled through a lot of tinkering in Numbers. I’d try to write a script to do it, but given that I am, presumably, the only person on the planet who could actually make use of it, I’m going to not.
Categories
Portfolio

Uninvited Redesign: Blink

It’s been interesting to watch electric vehicles grow in popularity, a trend that I expect to continue unless someone decides to pour marketing money on hydrogen. That said, aside from Tesla’s Supercharger network, EVs are seriously lacking an answer to the refueling infrastructure of gasoline vehicles.

I’ve tried a couple of the different commercial offerings, and have so far found them all to be a horrible user experience. (Current winner? The charging stations at the public library, which were installed recently enough that they haven’t been activated. There’s no sign to indicate that, no information on the stations’ display screens, and if you call their support to ask “what’s the deal?” they’ll tell you that “those stations were decommissioned.”)

Blink is, at least in my area, the most robust charging network, and thus is the only one whose app I’ve bothered to try. And it is… not great.

So, continuing on in the proud Design Student tradition of uninvited redesigns, here’s my takedown and redesign of Blink’s app. (And hey, if someone from Blink is reading this – send me an email, I’d be happy to flesh this out a bit more. Or write some of the code.)

Also available as a PDF, if that’s your jam:

Categories
Playlist

Playlist of the Month: March 2020

These playlists have been getting longer over time. Eventually I’m going to wind up just posting a list of every song in my library.1
Cologne – Haux on Something to Remember – EP
Sober – Edwin Raphael on Sober – Single
Coincidental – Betcha on Coincidental – Single
Falling Down – Harrison Storm on Falling Down – Single
Angel – H. Kenneth on Angel – Single
F**k Collingwood – Hayden Calnin on F**k Collingwood – Single
Haunted – Saint Claire on Haunted – Single
On Our Last Day – Hayden Calnin on A Life You Would Choose – EP
Hard Lines, Hard Times – William Wild on Hard Lines, Hard Times – Single
Without Fear – Dermot Kennedy on Without Fear
everything i wanted – Billie Eilish on everything i wanted – Single
Dolly Zoom – Elliot Moss on Boomerang
Don’t Take the Money – Harry Strange on Don’t Take the Money – Single
This is Where it Ends – Richard Walters on This is Where it Ends – Single
Borders – Nathan Ball on Borders – Single
Eight – Haux & Rosie Carney on Eight – Single
Chanel – Frank Ocean on Chanel – Single
notice me (feat. BENEE) – ROLE MODEL on oh, how perfect – EP
Take Me Apart – SYML on Take Me Apart – Single
Apollo – Charles Fauna on Yonder
Lies (feat. H. Kenneth) – Syence on Lies (feat. H. Kenneth) – Single
Blinding Lights – The Weeknd on Blinding Lights – Single
Rapide – Mahmood on Rapide – Single
Circles – Post Malone on Hollywood’s Bleeding
Wherever You Are – Kodaline on Wherever You Are – Single
Middle of the Night – Elley Duhé on MIDDLE of the NIGHT – Single
Soil’s Daughter – Aisha Badru on Soil’s Daughter – Single
Higher – Byron Langley on Light On – EP
Magic in the Hamptons (feat. Lil Yachty) – Social House on Magic in the Hamptons (feat. Lil Yachty) – Single
Tremors – SOHN on Tremors
Let Me Down – Run River North on Monsters Calling Home, Vol. 2 – EP
I Gave It All – Aquilo on Painting Pictures of a War – EP
twenty four seven (feat. John McDonald) – Andy H on twenty four seven (feat. John McDonald) – Single
The Box – Roddy Ricch on Please Excuse Me For Being Antisocial
Falling (blackbear Remix) – Trevor Daniel & blackbear on Falling (blackbear Remix) – Single
Somewhere (feat. Octavian) – The Blaze on Somewhere (feat. Octavian) – Single
Slowly – ODIE on Slowly – Single
hertz – EDEN on no future
Lie – Jake Scott on Lie2
Love Me (feat. Haux) – Smeyeul. & Galvanic on Love Me (feat. Haux) – Single
Better Off Without You – Aquilo on Painting Pictures of a War – EP
Where There Is Love, There’s Hope – Aron Wright on Where There Is Love, There’s Hope – Single
The Night We Met – Alle Farben on The Night We Met – Single
ROXANNE – Arizona Zervas on ROXANNE – Single
All My Life – William Wild on Rental House / All My Life – Single
2020 – Great Good Fine Ok on 2020 – Single3
Hurts Like Hell – Wrabel on Hurts Like Hell – Single
Be Slow – Harrison Storm on Be Slow – Single
no one wants to dance anymore (feat. Yung Pinch) – johan lenox on cancel the party
Losing You – Aquilo on Painting Pictures of a War – EP
Sorry – Declan J Donovan on Sorry – Single
Pines – ferdinant. on Pines – Single4
Never Seen You Get So Low – Aquilo on Painting Pictures of a War – EP
New Shapes (feat. Octavian) – Diplo on Europa – EP
White Morning – Seoul on I Become A Shade
Out the Other Side – Future Thieves on Emotional Cost
Roll Dice – Roddy Ricch on Please Excuse Me For Being Antisocial
Hue – SOHN on Hue / Nil – Single
Prayers to the Trap God – Roddy Ricch on Please Excuse Me For Being Antisocial
Waiting – Aquilo on Painting Pictures of a War – EP
Someone to Watch Over Me – Col3trane on Someone to Watch Over Me – Single
Dogcatcher – Elliot Moss on A Change in Diet5
Father Daughter Dance – Kesha on High Road
Stubborn – Daniel Allan & Jake Neumar on Stubborn – Single
No Time To Die – Billie Eilish on No Time To Die – Single6
Human – Aquilo on Painting Pictures of a War – EP
Wash Away the Wild – KAWALA on KAWALA – EP
Love Me Wrong – Allie X & Troye Sivan on Cape God
Sober – Aquilo on Sober – Single7
me & ur ghost – blackbear on me & ur ghost – Single
Slow Ride (feat. H. Kenneth) – Nick Martin & H. Kenneth on Slow Ride (feat. H. Kenneth) – Single
Explain You – JP Saxe on Hold It Together – EP
Four in the Morning – Harry Strange on Four in the Morning – Single
Make It Easy on You – Aron Wright on Make It Easy on You – Single
Girls – Balcony on Girls – Single8
not ur friend – Jeremy Zucker on not ur friend – Single9
No Alibi – Benji Lewis on Here, Then and Now – EP
Light Again – bobbycrush on Light Again – Single
Baby Girl – Bryce Vine on Baby Girl – Single
Numb – Elderbrook on Numb – Single
Tongue In the Bag – XYLØ on The Ganglands of My Heart – EP
2020 – EDEN on no future
Faith – The Weeknd on After Hours
Hardest To Love – The Weeknd on After Hours10
Where Do We Go When We Die – Quinn Lewis on Where Do We Go When We Die – Single
After Hours – The Weeknd on After Hours
Morning Prayers – Steve Benjamins on Morning Prayers – Single11
bad guy – Billie Eilish on WHEN WE ALL FALL ASLEEP, WHERE DO WE GO?
when the party’s over – Billie Eilish on WHEN WE ALL FALL ASLEEP, WHERE DO WE GO?
bury a friend – Billie Eilish on WHEN WE ALL FALL ASLEEP, WHERE DO WE GO?
Oh My My – Blue October on Oh My My – Single
In Your Eyes – The Weeknd on After Hours (Deluxe)


  1. Which, thinking about it, would require only a very small modification to my playlist script… 
  2. Scene: someone asking me what my taste in music is. “Sad hipsters crooning into microphones,” I reply. 
  3. By the end of the year I’m expecting at least one song named 2020 that’s just four straight minutes of swearing. There’s no backing harmonies, but the rhythm section will be awesome
  4. Excellent for signing along to – the main riff is very catchy. 
  5. I believe I’ve finally listened to this entire album, so it’s time to start hoping he’s got a new one coming out sometime soon. 
  6. It took me rather embarrassingly long to realize “wow, this song sounds like a James Bond intro song” and “hey it’s got the same name as the new James Bond movie” were both really obvious clues that this is the new James Bond intro song. 
  7. I only have two songs named ‘Sober’ in this list, but it feels like more, for some reason. 
  8. This song has hilariously chaotic energy; the music video is weird, as well. 
  9. “Sit down/if you need someone to lean on” is such a powerful line, I love it. 
  10. This whole album is very good, and very ‘80s. 
  11. I’m still not quite sure what the lyrics here are, but I’ve been hearing them as “sycophant blessings.” 
Categories
Portfolio

Dark Patterns

Dark Patterns are tricks used in websites and apps that make you do things that you didn’t mean to, like buying or signing up for something.

Dark Patterns

For a recent class assignment, we had to choose three dark patterns, find a site or service using each one, and then propose an alternative version that didn’t use that dark pattern.

You may notice that I’ve actually done four here – the last one was an interesting variant on some of the example dark patterns, and I wanted to explore that a bit.

You can also download a PDF of the presentation – it will work better in screen readers:

Categories
Programming Tools

Playlister

In the past couple months, I’ve had an ongoing series on converting iTunes playlists to text files, with a brief digression into scripting with Swift. While I doubt that I’m entirely done with the topic, I have reached a point where I’m ready enough to do another write-up.
This morning, I made playlister available to the public. It is not a consumer-facing application like my others; it is very much a tool for people who are comfortable with the command line.
In between the previous iteration of this tool and the current, I actually had a version of playlister built and shareable (Chase has that version installed on his Mac, actually) but, before releasing it to the public, I looked at the code and thought “I can do better.”1
So I buckled down and spent some time indulging in my love for API design, and tried some tricks I’ve been wanting to try.
The rewritten version ships with a library, LibPlaylister, that provides the basic ideas — protocols that allow for interacting with the library, playlists, and tracks; conversion to Markdown — as well as some neat new tricks. There’s some hooks for customization, such as the RatingFormatter protocol, and included FiveStarRatingFormatter, and the new LinkStore protocol, which provides a layer of abstraction on the SQLite-based caching of links.2
It was also an excuse to add to my Swift toolbox. I worked with SwiftCLI for a while, and then converted to ArgumentParser when that was released. I’ve done file interactions, and a lightweight database. I’ve learned a lot about Swift Package Manager.3 I learned a bit about XCTest, and figured out how to get it working in GitHub Actions. (And, more interestingly, figured out how to conditionally include frameworks in an SPM package. I wanted the tests running on Linux, but Linux… doesn’t have the iTunesLibrary framework, shockingly.)
I had fun building this, and will probably continue to tweak it. (I mean, it could be fun to get it automatically pulling links from the iTunes Search API, and just asking ‘is this the right link?’ instead of requiring manual entry.4)
For now, though, it’s ready enough to share, and made for a fun write-up and a good way to de-stress by tinkering.


  1. Interesting aside from giving that to Chase: Did you know that macOS has a ‘quarantine’ flag it puts on executables sent via AirDrop? That was some fun googling to figure out. The solution: xattr -d com.apple.quarantine ./playlister 
  2. That caching is definitely the biggest productivity gain of this, as compared to the previous version — now, when I go to write up my monthly playlist, the whole first part of the playlist doesn’t require any interaction at all. 
  3. Coming from working with nom’s package.json format at work, SPM Package.swift files are nice. Like, you can have comments in them! And, more, you can have actual code, so you can do neat stuff like this
  4. Although, at that point, I’d probably wind up writing it up as a SwiftUI app so I can show images. Which… might have been part of the inspiration for making LibPlaylister a separate library. 
Categories
Education

User Testing

I am rather bad at the whole concept of relaxation. I say this as an introduction, because writing this post is my idea of taking a break from putting together the final presentation for my class on user testing.
The course has been interesting overall. I will readily admit that I don’t intend to make a career of user research, but I am glad I’ve had the experience. Research is, after all, critical to design and development both. We can try to stick to the whole “if we asked people what they wanted, they would’ve said ‘a faster horse’” thing, but, shockingly, we actually aren’t omniscient. We aren’t our users.
Throughout the course of the course (and now you can tell my brain is a bit fried, because I’m throwing in wordplay), we’ve used a few different techniques. My favorite so far has been card sorting: it’s easy to explain, quick to do, and works very well for figuring out a sensible way to organize a bunch of stuff.1
I also quite enjoyed the competitive analysis assignment—going through, as best as I could, the entire market for a specific category was a surprisingly fun challenge. It’s also immediately visible how useful it is, from a strategic perspective: at the end of that assignment, I closed out an open project I had where I’d been putting together sketches for a fitness application. While it would’ve been fun to build, it really wouldn’t have had anything truly unique to establish itself in the market, and I’m too much of a Broke Millennial to be able to devote that much time to ‘fun to build.’2
We also did some quantitative and qualitative user testing, which I found interesting, but also served as the main argument for my “I don’t have a career as a researcher ahead of me” stance. Interesting, yes; useful, when done right; surprisingly difficult to do right, absolutely.
The qualitative structure was a bit more forgiving than the quantitative. We used UserTesting.com, which has a well-polished interface for assembling a test, a slightly less well-polished interface for going through a test, and a checkout page that leaked memory at an astonishing rate.34 Those complaints aside, the actual data I got was very helpful—the biggest issue I had with it was because of my own mistake, and the more open nature of the test meant that even that failure helped me sort out the answer to a different question I had.5
Going into the class, I thought I was going to like the quantitative testing more—I majored in computer science, and threw in a minor in math at the end, I’m a Numbers Guy. In execution, though, I wasn’t a fan. Part of this is probably due to the software we used: I was utterly unimpressed with Loop11. Their test assembly and reporting interface felt very Web 2.0, which I always find a bit alarming for an online-only business, and while the test-taking interface was a bit better (hello, Material Design 1.0!) it was unusable in Safari and a privacy disaster waiting to happen everywhere else.67 And for all that trouble, the data I got wasn’t all that useful. Though, a caveat to that: quantitative testing is more appropriate for summative testing, verifying that your completed design/product works as it’s supposed to, and I won’t be in a position to actually do that sort of testing for, oh, months at the earliest. Certainly not in time to use the results for this class, so I misused the technique a little bit in order to have something to work with.
As I said at the start, though I don’t intend to make a career of this, I’m glad to have taken the class—at very least, it means I’ll have that much more respect for the work my colleagues who do make a career of it are doing. And I sincerely doubt that this will be the last time that I do some testing myself; it’s important to do, and I quite like having the data to validate my designs.


  1. You can do it with actual cards, if you have time and are actually in the same place as your participants. If not, you can use online tools. We used OptimalSort, which is available as part of the OptimalWorkshop suite of tools. If that’s the only thing you’re going to do with it, I honestly can’t recommend it, because while it’s a good tool, it is not, on its own, worth the price. (Having seen their pricing structure, am I considering breaking into that market? Only vaguely.) 
  2. But hey, while we’re on the topic, check out some of my apps
  3. I left the tab alone for ten minutes and came back to 30,000 error messages in Safari’s console and about 2 gigabytes of RAM consumed. On their checkout page. C’mon, folks, that’s just embarrassing. 
  4. To be fair, I’ve got a pile of content blockers enabled, and at a quick glance quite a few of the error messages where a result of that. On the other hand, you shouldn’t be throwing that many little privacy-violating scripts at people to start with, and you definitely shouldn’t be doing it so badly
  5. I’m being intentionally vague about what I was actually testing, because it’s something I may yet fully develop, and I don’t talk about things until they’re good and ready. 
  6. I suspect Safari’s refusal to work with it was related to the latter concern; I didn’t dig into what was going wrong, just threw my hands in the air in disgust and installed Firefox. 
  7. As far as I can tell from some cursory inspection of the functionality of their ‘no code’ feature, it works by having your testers install a browser extension that… executes a man-in-the-middle attack, of sorts, on every page they view. When asking people to do the test, I told them to install the extension, do the test, and then immediately uninstall the extension—and that because I didn’t want to try walking people through installing a completely separate browser to do it in, like I did. 
Categories
Collection

TEDxMcMinnville

I recently had the opportunity to attend a TEDx event. I’m not a big TED Talk person, but I’ve watched or listened to a few, so it was interesting to see a few in-person.

I also used the opportunity to practice my sketchnoting – the ones I’ve done in the past were at my leisure, so I figured it’d be a bit different at a live event.

Which it was – it’s harder to go back and edit when you’re trying to keep up in real time, and it’s a different approach to thinking about what you’re putting down.

I’m not sharing all of my notes here – for a couple of the talks, the notes I got weren’t really interesting in any way, or were too messy to be worth sharing.

Still, I enjoyed the experience, and I’m glad I went.

(As of this writing, the videos from the event are still being edited, so I don’t have direct links; check the TEDxMcMinnville site for updates.)

School: purpose in learning, emporment to learn - becomes - scale from Apathy to Stress. Grades do not equal progress! Grades = pressure, pressure = focus, focus does not equal critical thinking. Good grades lead to secondary education acceptance, scholarship, jobs, which makes them stressful. “Just stop using grades altogether.” An assignment isn’t just a collection of points. Grades decided by conversation. From a gatekeeper to a coach, mentor. Experimentation, going out on a limb, and yes, failing spectacularly. But celebrates the failures and the learning. Equitable! Not just the “smart kids”, the ones who know how to game the system. “It makes me responsible for my grade.” “It’s not me versus the system.” “The world . . . cannot be changed without changing our thinking.” - Albert Einstein
“Start A Learning Revolution. Throw Out the Gradebook” – Matt Brisbin
Mentoring isn’t broken, it’s backwards. “Your voice is the most powerful tool you have, so use it when someone isn’t meeting your needs.” “How can I support your professional development?” From “MENTOR + mentee” to “mentor + MENTEE” The mentee owns their growth. The Egg Sandwich Principles: 1. Flip the narrative! 2. Find your unlikeliest - the person most un-like you. Learn new skills and perspectives! 3. Own your growth - figure out what type of support you need. A mentor’s job is not to reshape you or remake you, but to help your growth.
Mentoring: The Most Underutilized Secret to Success – Cinthia Manuel

I’ll add here that I misspelled Cinthia’s name in the written version, for which I apologize.

Predicting Heart Attacks 1/2 of the people who die of a heart attack have normal cholesterol levels. Age + gender + cholesterol + smoking = heart attack risk? No. Heart attacks are mostly caused by lifestyle. So DNA tests? Not helpful. But markers of inflammation are helpful. except: too variable day-to-day. Big idea: Use a more stable marker! From CRP to GPF. Exercise 30 minutes a day, and your GPF levels fall. Prevent premature death.
New Risk Factor for Heart Attacks and Strokes – David Farrell, Ph.D
Children oscillate between grief and joy. But adults try to be neat and tidy. Ambiguous Loss: Not death, but still a loss. Dementia, divorce, deportation, etc… No end, no conclusion, no resolve. So why grieve? Because we need to process. Suppressing your grief makes it bigger and less manageable. Don’t pull the emergency handle on tough emotion. Have a pity party! Acknowledge your difficult, complex emotions. Acknowledge the circumstances you’re living with. We don’t need to squash or ignore painful emotions. 1. Name your losses as they happen. Stop minimizing them! No “somebody has it worse than me.” 2. Ask for help! Decide how long you need to vent. Ask someone to… just listen. no fixing, no silver lining. Just listen. 3. Ask for more time. Embrace the ambiguity.
Embracing Ambiguity – Natalie Bowker
Service: * Tranquility * Zest for life * Longevity * Wellness * Happiness * Purpose * Health * Friendship Appeal not to altruism, but to self-interest.
Should Self-Interest Motivate Service? – Patrick Galvin
10 childhood traumas are linked to every major chronic illness. How to survive? “Resilience. Sheer perseverance.” Children who believe they can grow do better in life. Restorative approach: * Face the situation directly * Come up with a collaborative approach * Fix the damage to the relationship If a child doesn’t know how to behave, don’t punish. Teach. “People do well if they can.” Behavior is like any other life skill. We should teach it. Detention/suspension teaches kids they don’t belong. Resolving Conflicts: 1. What happened from your perspective? 2. Who was affected by it? Both parties have a share, and co-create in the solution.
Restorative Practices In Schools Have The Power To Transform Communities – Liz Knapp
“We are probably (statistically) extinct.” What is extinction? “What happens when a species dies.” - but - Can cloning bring a species back? A species fits a very specific space in an ecological puzzle. Take one out, and the puzzle rearranges to fill the space. Bringing in a clone? It has to make a new space for itself - making it a new species. The mind is an ecosystem of information. Information you forget isn’t gone, just… misplaced. But your brain can make a new space for it. Extinction isn’t a kind of death, but a kind of memory loss. Extinction is what happens when an ecosystem forgets a species. -but- no memory is a faithful reconstruction.
Extinction: Death And Memory – Leonard Finkelman, PhD
Is your work enabling the life you want, or interfering with it? Work is broken. Burnout, stress, wage stagnation… “The Life I Want” project - documenting an alternative way, making work work for you. Even if you love your work, other forces can break it. We need: employers empowering people; communities working together; governments… governing. 1. Employers: ask your employees what they need & want. Employees: ask for what you need! 2. We need community - not just at work, but outside of work, too. 3. Governments: proactively think through what we need to thrive. Healthcare, labor laws, infrastructure, “right to disconnect.” What is the community that you want? The world that you want?
The Life I Want – Christine Bader
Categories
Playlist

Playlist of the Month: February 2020

Since last time I have rebuilt my system for doing these playlists… four times? Some people hike to unwind…
Cologne – Haux on Something to Remember – EP
Sober – Edwin Raphael on Sober – Single
Coincidental – Betcha on Coincidental – Single
Falling Down – Harrison Storm on Falling Down – Single
Angel – H. Kenneth on Angel – Single
Fuck Collingwood – Hayden Calnin on Fuck Collingwood – Single1
Haunted – Saint Claire on Haunted – Single
Crying at the Party – Harry Strange on Crying at the Party – EP
On Our Last Day – Hayden Calnin on A Life You Would Choose – EP
Hard Lines, Hard Times – William Wild on Hard Lines, Hard Times – Single
Without Fear – Dermot Kennedy on Without Fear
Hollow Coves – Firewoodisland on Hollow Coves – Single
Drive – OTR & Panama on Drive – Single
everything i wanted – Billie Eilish on everything i wanted – Single
Dolly Zoom – Elliot Moss on Boomerang
Don’t Take the Money – Harry Strange on Don’t Take the Money – Single
When I Need a Friend – Coldplay on Everyday Life2
This is Where it Ends – Richard Walters on This is Where it Ends – Single
Back Around – Harry Strange on Back Around – Single
Borders – Nathan Ball on Borders – Single
Silver + Gold – Elliot Moss on A Change in Diet
Eight – Haux & Rosie Carney on Eight – Single
Chanel – Frank Ocean on Chanel – Single
Swing – Sofi Tukker on Swing – Single
Hard Times (Acoustic) – RITUAL & Robinson on Hard Times (Acoustic) – Single
Million Pieces (feat. The Chamber Orchestra of London) – Bastille on Doom Days (This Got Out of Hand Edition)
notice me (feat. BENEE) – ROLE MODEL on oh, how perfect – EP
Lucky Me (feat. Great Good Fine Ok) – The Knocks on Summer Series: 2019 – EP
Take Me Apart – SYML on Take Me Apart – Single
Apollo – Charles Fauna on Yonder
Barricade – Elliot Moss on A Change in Diet
Rossetto – Random on Rossetto – Single
Sober – Harry Strange on Sober – Single
Stay – Alt Bloom on Stay – Single
Hvn – TEME on HVN – Single
Lies (feat. H. Kenneth) – Syence on Lies (feat. H. Kenneth) – Single
Bodyintoshapes – Elliot Moss on A Change in Diet
Blinding Lights – The Weeknd on Blinding Lights – Single3
hungover & i miss u – gnash on hungover & i miss u – Single
Chain – Lolo Zouaï on High Highs to Low Lows (Deluxe)
Top Dom – Avery Anthony on Top Dom – Single
Rapide – Mahmood on Rapide – Single
Rabbit Roads – Elliot Moss on A Change in Diet
Circles – Post Malone on Hollywood’s Bleeding
Wherever You Are – Kodaline on Wherever You Are – Single
Middle of the Night – Elley Duhé on MIDDLE of the NIGHT – Single
Soil’s Daughter – Aisha Badru on Soil’s Daughter – Single
Higher – Byron Langley on Light On – EP
In the Same Place – Elliot Moss on A Change in Diet
Eleven – Khalid on Eleven – Single
Father’s Son – Declan J Donovan on Homesick – EP
Phases (feat. Trove) – Go-Jo on Phases (feat. Trove) – Single
A Sky Full of Stars – Coldplay on Ghost Stories
Beautiful & Brutal – Plested on Beautiful & Brutal – Single
Shadow – Kesha on High Road
High Road – Kesha on High Road
Hearts Ain’t Gonna Lie – JacobNeverhill on Hearts Ain’t Gonna Lie – Single
Magic in the Hamptons (feat. Lil Yachty) – Social House on Magic in the Hamptons (feat. Lil Yachty) – Single4
Alive – Lontalius & singular balance on Alive – Single
Tremors – SOHN on Tremors
Chasing Thunder – Kesha on High Road
Light Up – Isak Danielson on Light Up – Single
Let Me Down – Run River North on Monsters Calling Home, Vol. 2 – EP5
Desire – Zola Courtney on Nothing To Lose – EP
I Gave It All – Aquilo on Painting Pictures of a War – EP6
Out of the Cold – Kevin Quinn on Out of the Cold – Single
Most of Us Are Strangers – Seafret on Most of Us Are Strangers – Single
Kinky (feat. Ke$ha) – Kesha on High Road
The Wheel – SOHN on Tremors
Off by One – Elliot Moss on A Change in Diet
Stay Forever (feat. STRFKR) – Whethan on Stay Forever (feat. STRFKR) – Single
A Part – INTET on A Part – Single
Nil – SOHN on Hue / Nil – Single
Ghost – The Franklin Electric on Ghost – Single
Mutually – Firewoodisland on Mutually – Single
A Change in Diner – Elliot Moss on A Change in Diet
Dust – Oh Wonder on No One Else Can Wear Your Crown (Deluxe)
twenty four seven (feat. John McDonald) – Andy H on twenty four seven (feat. John McDonald) – Single
Better Now (Acoustic) – Oh Wonder on No One Else Can Wear Your Crown (Deluxe)
Is It Love? – JORDY on High Score – Single
The Box – Roddy Ricch on Please Excuse Me For Being Antisocial7
Falling (blackbear Remix) – Trevor Daniel & blackbear on Falling (blackbear Remix) – Single
Somewhere (feat. Octavian) – The Blaze on Somewhere (feat. Octavian) – Single8
Slowly – ODIE on Slowly – Single
Heartless – The Weeknd on Heartless – Single
Scusa a a a – Random on Scusa a a a – Single
Ibiza (feat. Romeo Santos) – Ozuna on Aura
Be Somebody – Kings Of Leon on Only By The Night
hertz – EDEN on no future
Lie – Jake Scott on Lie
Decide – Jelani Aryeh on Decide – Single
tides – EDEN on no future
Me – Nick De La Hoyde on A Beautiful Mess
Chameleon – Mako & Elephante on Chameleon – Single
Love Me (feat. Haux) – Smeyeul. & Galvanic on Love Me (feat. Haux) – Single9
Maybe – Jake Scott on Maybe – Single
Better Off Without You – Aquilo on Painting Pictures of a War – EP
Where There Is Love, There’s Hope – Aron Wright on Where There Is Love, There’s Hope – Single
Pyres of Varanasi – Thirty Seconds to Mars on LOVE LUST FAITH + DREAMS10
Aliens – The Griswolds & Transviolet on All My Friends – EP
The Night We Met – Alle Farben on The Night We Met – Single
ROXANNE – Arizona Zervas on ROXANNE – Single
All My Life – William Wild on Rental House / All My Life – Single
2020 – Great Good Fine Ok on 2020 – Single


  1. So a fun side-effect of my playlists-in-git setup is that I can see when artists take advantage of the “it’s a streaming platform” aspect and change the names of things. Usually it’s little spelling tweaks, like this – from “F**k” to “Fuck”. 
  2. I keep getting just the “holy, holy” chorus line in this stuck in my head, and consistently try to figure out what choir piece it’s from before I realize. 
  3. A lot of my music discovery is piecemeal, so I didn’t know The Weeknd actually had a new album out until, like… three days ago. 
  4. It’s about here in the list where I realize that I can’t remember where the January/February line hit. How can February have been such a long month? It’s the shortest month. 
  5. I can’t tell if this is a cover or a very effective earworm, and I don’t want to google it to find out because it’s more fun this way. 
  6. This is an old album by Aquilo, but I found it while stumbling around in Apple Music, and I’ve been really digging it! 
  7. Credit to Braden for getting me to listen to this, it’s great. 
  8. This and Slowly are my two favorite additions this month. 
  9. God, I love Haux, and this captured the exact same feeling they did when I first listened. Impressive, considering that I’m a continent and a few years away from that. 
  10. This is back because I got a different song from this album stuck in my head, but… I like this one better. 
Categories
Programming

Relational Databases

Inspired by a mix of Julia Evans and how much fun I had last time, I threw together another sketchnote on the basics of relational databases.

Relational Databases: How we store data! They model relations between things. Databases have tables, which have rows and columns.  A column has one type of data, like CHAR, VARCHAR, and NVARCHAR for text, INT, BIGINT, FLOAT, and DOUBLE for numbers, BOOL for booleans, and DATETIME for dates and times. Columns can also be nullable, which basically means ‘optional.’ Having a single type of data per column allows databases to be very fast and efficient. Rows are the actual data in the database, and are also referred to as ‘records’ or ‘entries.’ Keys: a table has a column as its primary key. That means that each row has a unique value there, which you can use to identify the row. Kinda like a social security number, or your phone number - it’s uniquely yours! A foreign key is a value that is the primary key of another table. You can use it to reference a row in a different table.
(Obviously I’m skipping over a lot of detail, but as a very quick intro to what a relational database is, I think it works!)
Categories
Education Portfolio

Value-Sensitive Design

The first unit in our course on Advanced Design and Prototyping focused on Value-Sensitive Design, and a couple of the assignments we did as part of it were pretty fun.

The first was to do a sketchnote on the concept itself. I’ll admit, I was a bit skeptical of the concept of sketchnoting – I thought it would be fun, but I didn’t think it would actually be all that useful. In doing it, however, I found that it helped me to coalesce my thoughts a bit – though, admittedly, that may have more to do with the fact that it forced me to go through my typed notes again than the sketchnoting itself. Still, it was a fun way to do that bit of studying, so I think I’ll try to add it to my workflow in the future.

Presented with apologies for my terrible handwriting.

Another activity was to put together a presentation, going through some value-sensitive design processes and presenting our ‘findings.’ Of the available prompts, I chose the one that boiled down to “your team has just been hired to design a photo-sharing application; you’re in charge of the VSD portion. Go.”

Categories
Portfolio Review

Competitive Analysis: Fitness Apps

The second unit in my course on User Experience and Evaluation was on competitive analysis — looking over the competitive landscape in a given marketplace, and using that data to figure out both the low-level design and high-level strategy you should use to effectively compete.

While I considered doing an analysis of the productivity management/to-do-list marketplace (an area on which I have many opinions), I realized that the end result of that analysis would be “the marketplace is saturated, and the ‘table stakes’ level of functionality is prohibitively expensive to achieve.” Not the most exciting result.

Instead, I looked at another area where I’ve gone through a surprising number of apps: fitness tracking. Specifically, workout planning and tracking – I did a previous assignment on how people use the gym, and one of my findings was “hoo boy are there a lot of different systems for planning and tracking a workout.”

After downloading quite a few apps and compiling a rather monstrous spreadsheet, I put together the results into a report, which I’m now posting here.

(Will I be using these findings to develop an app? … No comment.)

For those using screen readers, or who prefer their own reading environment, you can download the full presentation PDF here: