THE DAILY STREAM

Mike's site

Stuff and things

Latest updates
Newest first

Wub is in the air

This weekend I was buying cables in Guitar Center and they had just the most terrible sounds going in the pro audio department, maybe even worse than the sounds that are always coming out of the guitar department.

It was a fairly generic female singer doing some kind of singer-songwriter, almost-pop ballad stuff, but over the most obnoxious Skrillex-style American dubstep.

I like James Blake but I just can’t imagine anything more incongruous than the blaring wub-wub with the mellow vocals, it’s like a DJ randomly mixing two records with no regard to content.

Does anyone have any idea what this is so I can avoid it in the future?

Discuss

Mainstream success is super imminent

✏️
UPDATE: About a year after I posted this, we were already done, though we probably played more shows than the other Make-a-Band groups. I did, however, go on to form An Empty Room with David the drummer, which lasted until he moved to Switzerland. I'm also still in touch with the band "producer" Mike. It was, all in all, a great thing to do.

Life since the move is mostly an endless series of boxes, but I have managed to get myself embroiled in one of the weirdest artistic situations of my almost 20 years of playing music.

I'd seen the Make-A-Band posters around town but hadn't really given much thought to what it even was. Erika saw an ad in the Eugene Weekly and convinced me that I was sufficiently musical and lacking in dignity to do it. So what is it? Basically, a bunch of musicians audition for 6 producers, who pick them to form 6 bands. The bands then perform in a competition.

Make-A-Band Poster

The producers are local studio owners, record engineers, and (in the case of the ones who picked me) people in the business of video game scoring. The auditions are 3 minutes. And the competition is downtown, outdoors, for the whole damn ass world to see.

Even with Sharks, I don't feel like I ever took traditional, above-ground routes to musical performance and networking. It was always the DIY, punk rock thing — which of course in Austin is the only way anybody manages because it's a "who you know" situation and I've rarely known anything or anybody. But regardless of how this thing turns out, I've met some like-minded people and many of the folks making the Eugene music scene tick.

So here's the band, Gravity Nocturne. We're doing a jazzy, updated take on trip-hop. We're also all like 21, except me.

Gravity Nocturne

Don't worry, I'll be back to playing for nobody soon.

Discuss

Smashing runs down Style Guide tools

UPDATE It's amazing, looking back 9 years at what was available then. We moved from Stocco to Storybook shortly after and that's become a standard since. But in the meantime there are so many more tools, and Figma's Dev Mode just came out of beta a couple days ago.

Pretty good overview here.

At D&B we started with the PHP-based Style Guide Boilerplate tool but ended up maintaining the most low-impact (but highly manual) system possible. It was a single web page. Comments in the HTML told developers where to grab pieces of markup. Not high-tech, and it required a lot of manual maintenance. But it was easy to keep it looking just like the PSD version.

At PAS I implemented StyleDocco using Grunt-StyleDocco. Display leaves a lot to be desired so I ended up diving into the source to modify it. I can now change the template (which is a simple Jade file) and style if necessary.

Why StyleDocco? Short answer: it shows the CSS code. This was important to our developers. StyleDocco creates a new page for every Less file, splits it up by the <h1> elements in the comments, and shows those pieces alongside the HTML and samples.

Discuss

RIP to Stan Freberg

I'll be honest, I wasn't sure that Stan Freberg was still alive when I heard the news he'd died yesterday (from Weird Al Yankovic's Instagram). But I spent a great deal of my childhood listening to him, thanks to my parents' taste for vintage comedy.

Of all the things that played in our house — like Paul Simon or Dave Brubeck or Louis Armstrong — Spike Jones and Stan Freberg stand out. Simon's inscrutable lyrics are not something a kid can identify with. But if you're even remotely aware of Dragnet, then Freberg's "St. George and the Dragonet" is a hoot.

So maybe I get just a little extra sad thinking about Stan Freberg than the average celebrity death. My mind free-associates his voices and sketches with my mother. But at the end of the day, his work is funny. It's clean, but not cheesy. It references pop culture of its time, but feels timeless.

Check out the entirety of his radio show on the Internet Archive.

Discuss

My favorite recent mixing plugins

The plugins I've been using lately have changed dramatically from when I started mixing. Sometimes I'm guilty of buying into hype, but I've started to discover what I like. And I'm always waiting for it to go on special...

Criteria

So what makes a good plugin? For me, it's less is more: less options, less possibilities to twiddle, and less graphical EQ curves. Sight is a strong sense, and it can fool even an experienced ear.

EQ

PSP Audioware McQ

This 4-band plus high/low filters isn't a true analog modeler, it's a hybrid. But it sounds great, is easy to use, and doesn't hit your processor hard. So really, it's safe to put on just about everything. Its bands are hard to read (Why is it ".10kHz" instead of "100Hz"?), but they're highly controllable. So you can do both broad strokes and somewhat detailed surgery.

Waves API 560

Under ideal cirumstances I'd have the whole Waves API 500 series bundle, but this one went on sale. It's fun to have a graphic EQ sometimes, especially one with only a few bands. It sounds great on a wide variety of sources too.

Waves Scheps 76

Another modeler, this one after a console. The gimmick is the integrated preamp. The bands aren't fixed on this EQ but the knobs have huge steps so you can only dial in a few possible frequencies each. The Qs are not variable. It sounds great on drums, especially kicks. Given those few bands, it's easy to crank the 60Hz and then throw one on the bass and drop the 60Hz there so they don't fight. The preamp section can add smooth overdrive to the bass as well.

Maag EQ4

An incredible EQ. It's got four fixed bands, a fixed Q, and some frankly weird frequency choices. But those bands were supposedly picked to cause the least amount of phase effects. It sounds absolutely magical. It's possible I bought into the hype with this one, but I got a deal and I can't say I feel any regret. I do feel almost guilty using it though; it requires barely any thought to make vocals, acoustic guitars, and even some drums sound amazing.

Nomad Factory PulseTec

Nomad Factory is the Rodney Dangerfield of plugin companies. I'm not sure if this thing sounds remotely like a real Pultec but it goes on all my master busses. It was completely bonkers to me at first to be able to simultaneously boost and cut the same frequencies, but man it does the trick. Not great on the top end (the Maag can handle that), but it thickens and tightens mids and low-mids.

Tokyo Dawn Labs SlickEQ

Another super transparent phase-free EQ, but this one is geared toward the master buss and costs nothing.

Dynamics

Waves CLA-76

I waited a great long while for this to go on sale. I've always wanted an 1176 that wasn't the Bomb Factory BF76 that comes with Pro Tools. It's everything I wanted it to be and I use it everywhere — primarily drums but it'll tame a problematic source quickly and with character. At its full price, it probably still wouldn't be bad.

Waves Renaissance Axx

I wonder how many people use this thing. I mean, everyone's got the Native Power Pack, right? But Renaissance Axx is one of those tools that feels like cheating. Just slide the threshold down and watch it magically even out guitars and basses. It uses so little processor I get pretty generous slapping it on guitar tracks. I've heard a few pros cop to using this thing and why the hell not?

T-Racks Opto Compressor

IK Multimedia is another company that gets a lot of poop from people. But I've had their opto compressor for a long time and it's one of my favorite tools for vocals. It can open up a weak track by an inexperienced vocalist who's all over the place or who didn't project. You can get miles of compression out of the thing with much more transparency than an 1176. Sometimes I'll double a difficult vocalist's track, overdrive it, crank the mids and highs with a smooth EQ like the Maag, and then flatten it out with this compressor. Mixing in a little bit of that adds presence and is probably a super old trick not worth mentioning. But this is a good comp to do it with.

Tokyo Dawn Labs Kotelnikov

I'm still learning this feedback compressor, but it's smooth and transparent. You almost have to watch the meters to see that it's compressing, but it can make the master buss sound great. And though you can spring for the "Gentlemen's Edition" (?), the basic version is super great and costs zero dollars.

DDMF The Strip

This is actually a full channel strip so it's both and EQ and compressor, in switchable order. It has a Neve look and that's the starting point for the modeling. But this amazing plug goes a little farther into original territory than most models. DDMF is one of the few developers who can get away with charging next to nothing for plugins yet still get respect from GearSlutz. I got it for $30 as a launch special and I'm crazy impressed. Even the knob motion reveals just how much thought went into this. The developer is also a mixer, and it shows.

Flux Bittersweet

Sometimes you need simple transient shaping that'll get the job done without interfering with other dynamics processing. How's one knob? How's free? It sounds nice too.

Other Stuff

Blue Cat Patchwork

The Blue Cat folks make some great stuff. This is a simple but flexible plugin chainer that gives me solid performance loading VSTs or AU plugins into Pro Tools. DDMF's Metaplugin would also do the trick, probably very nicely as well.

Blue Cat FreqAnalyst and IK T-Racks Meters

With these two free metering tools, I can monitor what my sound "looks like" for the low cost of free.

Discuss

Thanks, Byword

UPDATE in 2024 Byword costs $11 now, but it's still here and still works great. Using Eleventy and writing mostly short posts, I tend to use a code editor now, but anything longer and out comes Byword.

David Sparks still loves Byword and by golly I do too. I write most everything that's longer than this post in it, although lately I've been running things through Hemingway as well.

I struggle with the hype that inevitably surrounds each new and shiny Markdown or RTF editor that costs $40. Most do literally nothing that Byword hasn't been doing for years now for five bucks.

Discuss

Solving the seven sins of CSS

Recently, the ReactJS community has set its sights on a new method of building styles into React-based front ends. It comes straight from the source, Facebook.

I think this presentation makes a lot of sense to a lot of developers who've begun to think in the component-based (and honestly very sensible) React methodology. But there are a lot of strange justifications and a path paved with over-engineering that leads to vjeux's ultimate solution.

Warning: This is long.


The "Problems"

First, here are the problems that vjeux outlines. I'm not here to provide better solutions for them, but I will say that in many cases, they're not really problems at all.

1. Global Namespace

Firstly, I think this is key to illustrating why a developer of vjeux's caliber can have a great thought process but miss the boat to some degree on CSS. He calls a class a "global variable." This seems at first like a matter of introducing programming semantics into the conversation so we all know what we're talking about, but I think it's conflating what a class and a variable actually are. The word itself indicates that the value of a variable can change — if anything, a CSS class is a constant. It's simply a pointer or reference. If you prefer, a class or ID selector is a set of rules more akin to a function (or, in OO, a class... probably no coincidence there).

But getting away from a concept I honestly feel somewhat inadequately equipped to really talk about at length, the "namespace" issue itself is the first of these that isn't really an issue. A class living on its own, even one attached to an element (e.g., div.myclass), does inhabit a "global" namespace in the sense that you can use that class anywhere with no limitations. Only good practice will limit you. But writing self-contained rules is not incredibly hard, is it? Take this piece of LESS (roughly identical in SCSS):

.specific-container {
  input.super-specific-input {
    /* style rules */
  }
  label.super-specific-label {
    /* style rules */
  }
}

In the sense that .specific-container is available to use and abuse anywhere, it is a "global" element. But that class in itself becomes an effective namespace for anything within it. And a few simple naming conventions can take that further.

I can barely think straight to comment on these (literally) backwards extensions that the Facebook team apparently wrote before arriving at the conclusion that they should abandon CSS altogether.

2. Dependencies

I'm not entirely sure I understood this section, mostly because the expectations of CSS working like a build process (i.e., errors should cause everything to break) is such a foreign concept to me.

Maintainability and monitoring the Cascade used to be a huge issue with CSS. This is something that preprocessors have solved incredibly well, even though they don't change many fundamental aspects of CSS. That includes the Cascade itself, but one of Less's early counterarguments was that the ability to write such modular CSS discourage "proper" or cascading use of styles. I'm not exactly pedantic on that myself, but if one were so inclined to write completely modular Less/Sass with no globally-impacting styles and no large-scale cascading, it's not very hard to do. Basically the above example, repeated numerous times as separate files and associated with each module or UI component, becomes a set of dependencies. These are easily managed by Less/Sass imports.

3. Dead Code Elimination

Near as I can tell, what they're referring to as "dead code elimination" is a product of their own solution. I can't really speak to this.

What I can say is that poorly-maintained, long-running, legacy CSS (the old way, without the concatenation made possible from preprocessors) is a problem for a lot of people. This is not a fault of the language itself. Less/Sass certainly make it easier.

4. Minification

Maybe someone can help me here, but I'm confused about this one — the old, extended-CSS solution let Facebook's developers use incredibly weird, non-semantic, but very short class names in order to save a couple bytes. It's bizarre but has its logic. So how does programmatically replacing a token with a long list of inline styles — which are maintained as a single component but echoed into a page once for every instance — save bytes? Not sure. If semantic class selectors is a problem of byte size, that's fine, but I don't think it's one that huge, redundant inline styles can solve.

5. Sharing Constants

What's the old quote? There are two hard things in computer science: cache invalidation and naming things. Making your stuff sync up between content, presentation, and behavior is a problem old as the hills, but most teams don't have the specific problem in this deck because they're not working with this weird system.

What vjeux shows here is a worst-of-both-worlds scenario where style has been mixed into behavior, but not all the way. I would argue that yes, in fact, his completely inline solution is a better answer than the hodgepodge here.

var buttonPadding = 5;

Reading that physically hurt me. He says "unfortunately there are many real world use cases where you need to do it." Not sure I buy that. If you really, really feel this need, there are tools for your Grunt or Gulp file that will transform a list of Less/Sass variables into Javascript at build time and thus keep the values synced automatically.

Upon reading the solution they developed, I got pretty confused at "CSS Variables."

6. Non-deterministic Resolution

This is another case of holding CSS to the same standards of behavior as a logical programming language, which it is not. The "linear" flow of later rules overriding earlier ones is always something that programmers struggle with because they can't organize things according to how they like; they must organize according to how the web browser is going to read the document.

Writing with the modular, "namespaced" blocks of Less/Sass eases these problems in two ways: one, confining the rules to their own pocket of markup will keep them from affecting anything else in the application, and two, the ease of auditing the styles will prevent unexpected cascades.

7. Breaking Isolation

I feel sad for the team at Facebook who've been burned by a poor understanding and even poorer practices of CSS writing. Overriding in the way shown in the example is unfortunate. But imagining myself as a designer in that organization, forced to think in an upside down way about my CSS, it kinda feels like it's no wonder the designers reach for non-ideal solutions as long as they work.


My Problems with the Solution

I can certainly see the appeal of just styling within the component as Javascript. The author does fall into a pattern that is common among devs (I've done it too): a post-hoc justification.

Second, style is actually a much better name than class. You want to "style" the element, not "class" it.

Let's not bring the semantics into it — I get that the actual english words make more sense, but we've all agreed on what that word means in the context of markup. This is a side point though.

1. Redundant bytes and information

Whether you're talking in terms of human readability or the space taken on disk/downloaded over the internet, I have to question whether multiple references to a single CSS class:

.btnClass {
  background: #333;
  border-radius: 2px;
  color: #fff;
}

is not preferable to

<button style="background:#333;border-radius:2px;color:#fff">One button</button>

repeated over and over throughout the application. And here of course I'm using a very simple example; most real-world CSS rules are going to be significantly larger. This is one of those questions that I assume has been empirically answered, but there isn't a lot of usage of this method going around yet, so I don't know.

2. Separation of Concerns

I get the very real benefits in React of mixing concerns while separating physical application pieces. Everything associated with this piece (structure, style, behavior) is in one place, so I know exactly what needs to be done in order to make a change to that piece.

But part of the benefit of the classic "separation of concerns" philosophy is the ability to take a holistic look at the styles. For all the supposed solutions with regard to maintenance and dead code elimination, I'm afraid this has created many more potential ones. Obviously, this is to some degree going to be dependent on how a React application is structured, but components can't truly share stylistic elements, even if they have individual styles in common. So the ability to change that stylistic element from a central place is now lost.

The best we can really do with this method is reference a central variable, or possibly (I'm not even sure about this) something like a mixin. Like any of the CSS-based solutions that vjeux writes off as non-enforceable, this requires good practice.

3. Separation of Work

vjeux himself admits that part of the motivation for Facebook's crazed bolting on to CSS is due to having a large team of developers working on highly focused portions of code, most with limited expertise in front end. This is, let's be frank, not an uncommon problem but it is a specific one.

Though tools like KSS have been around for a while, style-guide-based development is just now coming into its own. Mailchimp, Starbucks, Lonely Planet and others have made huge and very public strides in building component libraries that developers can then reference and drop into new pages.

The benefits are easy to see: a streamlined design process, easy enforcement of standards, and a refocused approach that encourages solving problems with the same design patterns where possible.

With all styles inside the React components, control over front end is not only not handled holistically, it is handled entirely by developers who may or may not have much expertise with browser discrepancies, best practices, and all the other myriad of things that CSS writers actually focus their time on.

4. Missing Features

Generated content and other pseudo-class selectors are pretty much not available here. Is it overkill to impose a hover state just for a color? Perhaps not with React, whose bread and butter is state change.

And what about media queries? This is beyond unfortunate:

Not the best Responsive Design

Toward a better way

These are all fairly new issues. vjeux's still giving this presentation, and it only went online in November. React developers are still discovering the process and trying it on. The argument on Hacker News is still somewhat active.

My problem is not with upending dominant paradigms. It's not with trying to find new ways of styling. But ditching most of the primary benefits of CSS/Less/Sass and justifying that with arguments based on some inaccurate assumptions is a paradigm shift that doesn't quite feel necessary.

Discuss

So long, and thanks for all the Lone Star tallboys

I spent 7 years in Pittsburgh, another in Detroit, and now just shy of 7 years I'm leaving Austin. That's as lucky a number as any, although it feels like an incredibly short time in a city that grows and changes as rapidly as this one. But ultimately, the exciting stuff in this town suits young people who go out a lot, tech-libertarians, people who aren't yet sick of Texas's inability to "do" public transit, and the sort of day drinkers who've always occupied the Town of Linklater Films.

At least, I'll probably continue telling myself that indefinitely.

But there's a lot of truth there — it really is tough when you have a young child to even imagine enjoying the fruits of a town known for its nightlife, and eventually you start to wonder if that's really for you anymore. As a musician, it's hard to always play for nobody or to keep pace with the younger, better looking indie-poppers filling up the increasingly snobby and hard-to-book venues. As a person who tries to have some perspective, sometimes taking a step back you realize how much Austin is clinging to its fun slacker persona, even as it gets big enough that it really could stand to clean up its act maybe just a little before it loses everything that people love about it.

This isn't about how "Austin has changed, man"; That was old even when I moved here. Of course places change and that's part of what makes a town ok to continue living in more than 7 years. But I'm not a lone wolf slacker musician, I'm now some kind of "family man" (imposter syndrome doesn't just work at your job) and that is a super rewarding part of my life that's taking me away from the both the eye-rolling mustachioed coolness I'm so over and the merciless, dash-cracking sunshine I love so much. So yeah, there is a flipside.

I wasn't too great at making friends until moving here. I've become more social and worked in an office again, so I'm leaving behind maybe the closest, coolest bunch of people ever — people who, I'd like to think, "get" me.

I'm not exactly headed to unstable territory now, but if I'm being real it's difficult to leave behind 75-degree winters, constant restaurant openings, or that slight swell of pride when even a big city slicker's eyes brighten at the mention of where you live. It's even harder to leave those friends I've worked with, played music with, or lived next to. Having them all gather at a party for us yesterday was beyond cool — it was downright humbling that that many people care enough (A friend called the beautiful weather "one last kick in the nuts").

Now... It's not in the least bit hard to leave constant traffic, lines to sit in literally every one of those restaurants, or the Texas government, none of which are gonna go anywhere anytime soon. And I could do without the hypocritical faux-liberals who nod sagely about how we need affordable housing and mass transit, but then get all predictably NIMBY when it comes time to do something.

UPDATE IN 2024: OH NO EUGENE

But rather than dwell on what great things I'm leaving or bemoan the bad ones, I think it'd be more productive to commit yesterday's laughs and hugs to memory, give thanks for the all that's happened to me here, and think of what other positive stuff lies ahead.

I know I'm going to a culturally rich, meteorogically mild place with incredibly friendly people, and my new commute is going to add hours to my week (time) and probably years to my life (I-35 stress). But that's just the beginning. Now that I'm a little better at life than I was seven years ago, my hope is that I can create an even more amazing one there.

If this is me in the "Before" picture, look for the "After" soon. And at least check out my Instagrams from the road.

Discuss