Steaky popcorn seasoning experiment, Mark II

My previous post about trying to come up with a steak-like popcorn seasoning led me to finally try making that recently. Over the weekend I blended up the spices in the proportions I wanted for Mark II using a coffee grinder, and the other night I tried some on a little popcorn.

Results: inconclusive.

Tasting the seasoning only on its own, it seems like doubling the black pepper was a mistake, and the onion powder even in a lesser quantity was too much, but it might otherwise serve as a proper steaky seasoning.

On the popcorn, however, I had different results. I used the Nordic Ware microwave popcorn bowl for this purpose; I’ve never had much luck with it in the past when using coconut oil in it, which all the videos I’ve seen say should be possible (it might be my crappy microwave), but I discovered if you give it enough time it can cook popcorn dry well enough. I made 1/8 cup (unpopped) of popcorn and then added a small amount of margarine (2 tbsp.), mostly so the spices would have something to adhere to.

The popcorn came out nice, but the margarine somewhat dominated its flavor profile. I found that when I sprinkled on what I thought was a generous amount of seasoning, I couldn’t taste it very well; adding more, it didn’t help much. I got a vague hint of pepper and I definitely picked up the savory quality of the MSG, but it was all muted. The smoky flavor all but disappeared.

I’m not sure Mark II is broken as such; except for scaling the pepper and onion powder back, I think it’d probably work dandy on something like a potato chip that’s already salty. But with popcorn, I’m completely reconsidering.

Taking this just as a popcorn seasoning, I think I need to put much more of it on my popcorn and readjust the proportions. I put on maybe a teaspoon worth, and it clearly needed more, but I think something much closer to the Mark I experience is called for. So for Mark III, I propose:

Steaky popcorn seasoning experiment #3 (proposed)

  • 1 part onion powder
  • 2 parts alder smoked salt
  • 2 parts black pepper
  • 8 parts granulated garlic
  • 8 parts MSG
  • 16 parts popcorn salt

I think the extra saltiness is very much the way to go when it comes to popcorn seasoning.

Posted in Uncategorized | Tagged | Leave a comment

Pointless controversy: The mall or downtown

This may be of limited interest to people outside of Syracuse, but I was directed to an article today in the local paper in which guest columnist David M. Rubin explains why the city should spend money revitalizing Hotel Syracuse and the downtown shopping district instead of supporting tax breaks for a hotel add-on to Destiny USA. And I’m going to explain why he’s wrong. (This isn’t politics as such; it’s logistics.)

But first, a caveat and some background. The caveat is that he isn’t wrong about the need to revitalize the downtown area. The city’s been trying to do that for decades. When I was little, we had a major mall downtown, and some big department stores like Sibley’s. Later the Sibley’s building became office space, where I ended up working for a few years (and therefore claim qualification to opine on this debate). The mall across the street from there is… er, sort of still a mall, but not a very popular destination.

But all the effort and money that’s gone into revitalizing downtown hasn’t done a darn thing, and there’s a simple and obvious reason why. The reason is so simple and obvious, I’m baffled why the city’s high mucky-mucks can’t figure it out—let alone why Rubin mentions it and trips right on past it in the dark without wondering why his shin hurts.

Choosing between the two seems, to me, a simple matter. A renovated Hotel Syracuse may bring back a portion of downtown. A new hotel at Destiny will only serve Destiny, surrounded by its moat of parking lots and high-speed roads. A Destiny hotel won’t develop any neighborhood. It’s meant to imprison visitors inside its outlet stores and chain restaurants at Castle Congel and keep them away from the city of Syracuse. Giving tax breaks to a hotel at Destiny is anti-development.

See it yet? Because Rubin doesn’t. Central to the very reason Destiny is thriving post-renovation is the fact that it has frelling parking lots. The presence of nearby high-speed roads isn’t so awful, either. Does the city seriously think that people want to spend ten minutes navigating a rat’s nest of confusing one-ways just to get downtown, then another half hour to find acceptable parking?

Downtown, there are many tiny lots but few garages, and there are also many tiny garages. The tiny lots and tiny garages mean “valet” parking is the norm, which means an attendant has to squeeze your vehicle into some other space where it may be blocked in to make more room. They hold onto your key, and when you need your vehicle again it takes a while to get it out.

And the traffic is little better. Salina Street is choked with buses, and has some cross streets where you can’t turn at all. The entire area around it is made up of one-ways with little rhyme or reason. When I first went to work up at Syracuse University, I was appalled by the haphazardness of it all; it got easier to navigate with familiarity, especially when I worked downtown at a later job, but it’s still crystal clear why casual shoppers avoid downtown. And if you ever need to get onto I-81 North or I-690 from Harrison Street within about an hour of 5 PM, just stay at the office and hit yourself with a hammer for half an hour; it’s a far more pleasant experience.

Of course there are the weekend festivals all summer long. Those aren’t half bad and can be worth the effort to park, and to work around the altered traffic flow, if you can navigate the crowds. I went with my in-laws to Taste of Syracuse one time, and we couldn’t get through the press at all. It made the State Fair, which I love, look like a ghost town. (The Fair has parking, by the way.) The festivals seem to be working, at any rate, but any given weekend I’d rather be at the Renaissance Festival up in Sterling, where the food is even better.

The city and people like Rubin are wrong about the two sides to this dilemma. On the one hand they think it’s a matter of giving tax breaks to a developer who, despite many flaws, has brought business into the region. On the other it’s throwing even more money at downtown, even though that hasn’t worked yet. But that’s not the real dilemma. It’s between those tax breaks, and finally addressing traffic and parking. Until the city does that, revitalizing downtown to its fullest potential is impossible.

Indeed, David, Hotel Syracuse might bring back a portion of downtown—iff the infrastructure exists to help it. Without that, they’re throwing tax dollars into a black hole. If they’re going to do that, may as well give Congel his tax breaks and stop whining. At least something positive will come of it. Meanwhile if you want downtown to thrive, and I cheer for that goal, stop asking how you can rearrange the brochures to make it look pretty and start asking why people don’t find it convenient to choose downtown as a destination. And then do something about it.

Or, you could trip over the point again.

That’s capitalism, you might say. Maybe the locals just can’t compete with the likes of the Cheesecake Factory. But think again. Our tax money helped build Destiny and provide the antiseptic, enclosed environment these chain establishments like: free parking, a clustering of restaurants, a critical mass of potential customers, games to baby-sit the kids, and a new feel. Our local restaurants get no such package of benefits at taxpayer expense.

Come on, David. Is free parking really such a bad thing? If Syracuse had better paid parking garages, there’d still be an economic disincentive to come downtown, because free parking beats $10 parking every time. But at least you would have the guarantee of finding a good spot, and that’s a lot.

There is of course only so far downtown can go anyway. Syracuse will have its weather, and that means during the winter, humid high summer heat, and rain, people would by and large rather spend their time in an indoor environment. You can’t fight Mother Nature, and her capricious moods rule central New York with an iron fist. Take for instance the widespread rain we have today, which we were inadequately warned about.

But to the extent that downtown can thrive, it ought to, and the first step to that is admitting you have a problem. Or rather, two problems. Fix the traffic, fix the parking, and spending a day downtown will look viable to a lot more people. If you don’t intend to do either, then stop peeing into the wind.

Posted in Uncategorized | Tagged , , | Leave a comment

Steaky popcorn seasoning experiment, Mark I

I mentioned recently that I was convinced a steak-like seasoning for popcorn and other muchies was possible, thanks to encountering a rather excellent job of it with potato chips.

After searching for a good beef powder to add—I still would like to try it if I can find some cheap and preferably on Amazon—I came up empty and decided to take a stab at faking it, using the parameters I had already set. The one addition was that I found some alder smoked salt, and felt that would work out well.

My first attempt mixed all these by eye, and as a result this is my best guess at the proportions:

Steaky popcorn seasoning experiment #1

  • 1 part alder smoked salt
  • 1 part black pepper
  • 4 parts MSG
  • 4 parts granulated garlic
  • 6 parts popcorn salt (I overpoured)

I blended that together the best I could and tried a few pinches; afterward I tried applying some to some white cheddar popcorn (it was all I had handy) just to see if I could get an idea of what it’d be like on regular. My observations:

  • The smoked salt was overpowering. It needs to be cut in half.
  • The garlic was a tad strong. Cutting that in half wouldn’t hurt anything.
  • The popcorn salt was overdone, as expected. It should be cut back to the level of the MSG.
  • The black pepper wasn’t strong enough. Double it.
  • Although my tolerance for onions is very low, I think a tiny amount of onion powder would not go amiss.

So with that, this is what I intend to try on my next attempt:

Steaky popcorn seasoning experiment #2 (proposed)

  • 1 part alder smoked salt
  • 1 part onion powder
  • 4 parts black pepper
  • 4 parts granulated garlic
  • 8 parts MSG
  • 8 parts popcorn salt

The only thing I’m wondering about, besides if it’s feasible to come by a basic beef powder that isn’t itself flavored up, is if a little butter-flavored powder would work here. I’ve found most butter seasonings to be lame, so my preference would be to powderize real butter by mixing a small amount of it with tapioca maltodextrin. Of course, if a light coating of butter is used on the popcorn itself for the spices to adhere to, that’s moot.

Folks who are sensitive to MSG might want to try finding a glutamate alternative. I read some time ago that there’s a dried mushroom seasoning sold in some Asian groceries that can act as an MSG substitute because it’s rich in glutamates. I haven’t tried it myself, but you can get it on Amazon; it’s imported from Taiwan. Wegmans doesn’t seem to carry it in their international food section, but I might have overloooked it; doubtless they’re not as well stocked as a proper Asian grocery, though. I don’t subscribe to the theory that “natural” is automatically better, but I admit I’ve been very curious about this stuff.

If you try your own version of this steaky seasoning, let me know how it turns out. Or heck, if you can find powdered beef and incorporate it, I’d like to know how that turns out too. It feels wrong to attempt steak flavoring without beef, even if I know it’s been done with relative success on a potato chip.

Posted in Uncategorized | Tagged | Leave a comment

Halflight lives?

I’ve mentioned before that since 2001 I’ve been writing the scripts for a Webcomic that never came to fruition. The plot was there, the jokes were there, but there was no art for it. It’s been in limbo, just growing and growing, all that time.

Last night someone mentioned the idea of turning one of their novels into a play. That sounds like an interesting exercise, as plays are so much different a medium and require different skills—but the learning process might help illuminate some truths about writing. As I pondered that scenario, Bad Idea Mode came down on me like an anvil.

I have tentatively begun novelizing the comic. The goal, if it works, would be to develop it into a series of short comic sci-fi novels.

This is very much an experiment, though. Books are different than comics. You can’t just cut away once the punchline is delivered; at least not all the time. Sight gags are practically out of the question. And with overlapping story arcs and a different concept of length, I honestly have no idea where a novel would end. If the comic had gone into proper development, my plan all along was for about the first 150 issues, spanning most of five systems, to make up one book; that’s a good figure for a comic book and it coincided with the end of a major arc. But the first issue takes up two distinct book scenes (it ended on a cutaway, which got expanded), and I have to figure each issue thereafter is about one scene on average—with the exception of some action sequences, which would cut it down a little, but more of those happen in later issues.

For a comic novel, length is probably my enemy. I’m thinking something in the 75K range for each book would be ideal, although a tad longer might not hurt—but 150K is right out. At my current pace that barely gets through the second system. And some of the more interesting developments and characters wouldn’t happen, then, till book 3 or so. How much of a problem is that, really? I don’t know.

This is brand new territory.

Posted in Uncategorized | Tagged , | Leave a comment

CSS cheat: Bilinear gradient

CSS gradients are amazing, wonderful things for what they can do. But there’s still a lot they legitimately can’t do. There are tricks people have used to try making conical/angular gradients, but recently I came across a need to use a bilinear gradient.

For those who haven’t run into this before, a bilinear gradient is what you would use on a square where each corner is a different color. Essentially on one side you’d have a gradient that went from color A to color B, and on the opposite side would be one from C to D, and as you moved between those sides you’d want one gradient to transition to the other. When the shape is not a square the math gets more complicated, but this is the gist.

The reason this came up for me was that I was working on a color picker using only CSS gradients. (If I’d used SVG it wouldn’t have made much difference, though; SVG has some more options that would fit what I needed, but they’re not widely supported yet.) Specifically, this picker would use a 2D selection area and a slider; the slider would represent the current mode of the picker, for instance hue (the default), while the 2D area would be two other parameters of the color, e.g. saturation and luminance. (In hue mode, though, I cheated and went with HSV instead of HSL because it looks better.) I had modes for hue, saturation, and luminance, but wanted to do red, green, and blue as well. This meant the 2D area had to transition from, say, no red on the left to full red on the right, and no blue on the bottom to full blue on the top. That’s a bilinear gradient because each corner has a diferent color and there’s no simple way to add them together.

After trying and failing to get anything right with diagonal gradients and varying the alpha of the top layer, I finally had a moment of clarity: This particular bilinear gradient can be done if one gradient is vertical, one is horizontal, the one on top has 50% opacity, and then the color level is doubled. First problem: CSS filters aren’t widely supported yet, so not so much with the color doubling.

However, this turned out to be only a minor setback. I realized that if I split my square into quadrants, I could fine-tune the gradients to get exactly the effect I wanted without needing to double the color values.

Here’s the breakdown, using green editing mode as an example. So green stays constant, and for the purposes of this example I won’t mention it again. Red increases on the horizontal axis, blue on the vertical. The left two quadrants each have a vertical gradient from black to blue, and the right two quadrants each have one from red to magenta. The horizontal gradients that go over these will be at 50% opacity. The bottom two quadrants have a horizontal gradient going from black to red, and the top two from blue to magenta.

Since gradients can repeat, this really only calls for four divs. One is the container, and I arbitrarily chose for it to be the left half; it’s full width and full height, but its right half will be covered up by the next div, which is in its contents. The next div is only half width and is positioned on the right-hand side. Each of these gets the appropriate vertical gradient. Then two more divs are placed in the container, each with full width but 50% height and opacity, one on top and one on the bottom, and these are for the horizontal gradients. This is roughly the code:

<div style="width:250px; height:250px; position: relative; border: 1px solid black;">
  <!-- left half (contains others half-divs) -->
  <div style="width:100%; height:100%; position: absolute; left: 0; top: 0; background: linear-gradient(to top, #000, #00f 50%, #000 50%, #00f);">
    <!-- right half -->
    <div style="width:50%; height:100%; position: absolute; left: 50%; top: 0; background: linear-gradient(to top, #f00, #f0f 50%, #f00 50%, #f0f);"></div>
    <!-- bottom half -->
    <div style="width:100%; height:50%; position: absolute; left: 0; top: 50%; background: linear-gradient(to right, #000, #f00 50%, #000 50%, #f00); opacity: 0.5;"></div>
    <!-- top half -->
    <div style="width:100%; height:50%; position: absolute; left: 0; top: 0; background: linear-gradient(to right, #00f, #f0f 50%, #00f 50%, #f0f); opacity: 0.5;"></div>
  </div>
</div>

Unfortunately I can’t display the result here with raw markup; the only way to do that is to use an image. CSS gurus will note that the outer div with the border has a specific size and also has position: relative so that it is an offset parent of the first element within. This method will work regardless of what the green value is, as long as it’s consistent between all four divs.

The reason this trick works is that ultimately we want the red and blue components to be additive. The 50% blend would be perfect for that except that it darkens the result. But if we go by quadrants, we can make sure that the corner corresponding to that quadrant is a common color in both gradients. E.g., in the upper right we go from blue to magenta, and red to magenta. Magenta averaged with itself is the same; and for all the others, they end up being mathematically exactly what we want for where they are on the full square.

Sadly, this technique is not applicable to generic bilinear gradients. That is, you can’t just take any old four colors and expect this to work. This method only works because the red value increases by the same amount regardless of where you are vertically, and blue increases by the same amount regardless of where you are horizontally. If the red and magenta corners got swapped, for instance, it wouldn’t work at all. (Funnily enough, though, it’d still be possible to simulate that gradient a different way.) Or if in place of magenta you had yellow, that’d fail.

Given that I was able to puzzle this out with some difficulty, though, I can’t help but wonder if there is a general solution that simply eludes me: some combination of splitting up the shape into components where a more simple layering can take over. I believe there might be a general solution if conical/angular gradients were available, but they’re not. Radial gradients don’t seem as if they’ll ever hold any promise for this sort of thing.

Posted in Uncategorized | Tagged , , | Leave a comment

How many bad blurbs does it take to change a light bulb?

“Inspiring.” “Illuminating.” “I was paid to say this.”

All the world needed was a little light, and the right blurb to change the bulb.

John Doe’s blurb is a humble one, but it has big dreams. Little does it know its world is about to change forever. When the light goes out, it knows what it has to do.

At first it can’t find a new bulb, but a friendly tagline shows it where to find a box of them. Together they will ascend a stepladder and conquer the unknown. But when they find out the switch was never turned off, will they react in time?

Join the blurb as it quests to save the world from darkness with the help of a tagline, a byline, a sales pitch, and the wise old Oxford comma. Can one blurb light up the world?

How Many Bad Blurbs is a page-turning tour de force from John Doe, bestseller in his mom’s quilting group, sure to delight fans of Jack Handey, Garfield, Frank Miller, bacon, and J. R. R. Tolkien. A heartwarming tale with unexpected twists and suspense, this book will leave you feeling breathless as a blurb and its neighbors discover the power of friendship.

Posted in Uncategorized | Tagged , | Leave a comment

Color sorting

Lately I’ve been rather fascinated by the idea of sorting colors in an aesthetically pleasing fashion. I’ve been working a bit on and off to create a color picker very similar to Flexi, but more powerful and entirely based on CSS gradients, and I thought it would be cool to be able to incorporate a small palette area. (In the process, I learned that you can’t simulate bilinear gradients no matter how hard you try. The SVG code that should work to that effect seems broken in Pale Moon, a Firefox derivative, or else it’s broken entirely. This means no red, green, or blue-only editing mode.)

Colors are tricky animals to sort because for most humans—except the totally or partially colorblind, or women who are tetrachromatic—they’re three-dimensional. All concepts of “color space”, a fascinating area of study, are based on at least three dimensions. RGB is the one most people are familiar with for computer graphics, CMYK for printing (technically that’s four-dimensional, but the black kind of counts as some of each of the other three), the primary pigment colors we learned as kids which fit something like the RYB color space, and then there are others like CIE LAB, CIE XYZ, etc. that have more relevance to visual science. Of course video has others, including YUV, and Rec. 709 used by HDTV. Back in the computer graphics world, we also have HSV (hue, saturation, value) and HSL (hue, saturation, luminance) which are cousins of each other and can be converted back and forth.

For sorting colors in a pleasing way in just one dimension, I found a very nice algorithm online. Start by sorting by your primary criterion, like hue. Then, go through the array one item at a time and find out each color’s “fitness” in its current position, and compare to other places where it could be inserted between two colors (or against an end). If you find a better place for it, move it there. Each time through the loop, if there were changes you go again. The complexity (possible iterations) of the algorithm is quite high, but in practice it stops after not too many changes. The un-fitness of a color is, on the end, just its distance to the next color; in between two others, it the combined distance between itself and each of its neighbors, minus the distance between those two neighbors directly. The end result is a line of color that experiences as little variation as possible from one to the next, with smooth transitions.

But this algorithm cannot be extended to two dimensions. There’s just no way to make it work.

After a lot of trial and error, I eventually discovered a method that did work and is actually very fast. I call it grid-fitting, because the goal is to map colors to a rectangular space. And I will share it now.

  1. Set up your grid, e.g. a 10×10 square. Any positions that will not be used, or you pre-fill with a color that will not be sorted (e.g., you might want grayscales off to one side), mark as locked. Every position on the grid has a simple x,y from 0 to length-1, so for instance this 10×10 square goes from 0,0 to 9,9. If you prefer to go from 1 to length it really doesn’t matter. The number of unlocked spaces must be exactly the same size as the number of colors to be sorted.
  2. Make a list of colors, where each one has an associated x,y position. Unlike the grid, x and y need not be integers or even conform to the grid’s scale at all. The x and y should be based on your dominant criteria. For instance, I made x my hue (scaled from 0 to 360), and for y I found simple luminance (0 to 1) worked best; this was in HSL color space. Working saturation into it didn’t result in any better sort for me.
  3. Begin fitting. The part of the grid that has not yet been filled (not counting locked spaces) will be called, appropriately, the unfilled grid in these next steps. We keep track of its corners throughout the process, because ultimately this will shrink and we’ll be filling it from the outside in. Colors not yet assigned will be called the color pool.
  4. Figure out which side of the unfilled grid’s rectangle is shortest: the vertical or horizontal. With a square you can go either way. The length of this shortest side will be L. Sort your color pool by the other direction. That is, if your shortest side is vertical, sort the color pool by x.
  5. Take a size-L slice from the beginning of the color pool, where the values you sorted by are lowest. Sort this slice by the same direction L goes in, so if you sorted by x in step 4, this is a vertical slice and you’ll now sort the slice by y. Fill in the grid with the colors in this slice, starting at the appropriate corner of the unfilled grid and moving down. If you encounter a locked space, skip that color. (Note: This algorithm will break down in cases where the number of locked spaces is very high, so that there’s not enough color pool left to get an L-sized slice.) Any unused colors go back into the pool, at the beginning; you can re-sort them by the pool’s sort (e.g., by x), but unless you’re running into a lot of locked spaces in the middle of the grid this is moot. Adjust the unfilled grid’s corner to account for the grid being filled in further.
  6. If this wasn’t the last column or row in the unfilled grid, repeat step 5 for the opposite side, this time taking an L-sized slice from the end of the color pool. Once again, skip locked spaces and put any unused colors back into the pool.
  7. Until the unfilled grid is empty, return to step 4.

The upshot of this algorithm in basic terms is that you’re filling the grid by filling in its outermost edges first. You pick a set of colors that belong in that row/column, and then choose the column/row for each; if the space it would fill is already taken, it goes back in the pool.

I tested this with the 140 colors defined in the CSS3 standard, but with duplicates removed so it was actually 138. This was in a 12×12 grid, with six spaces locked (unused) on the lower end of the rightmost column. The nine grayscale colors (no saturation) I moved over to the top of the left column, and locked them there. This is the result:

colorsort1

It came out much more aesthetically pleasing than I had hoped. The hue range looks quite smooth, with only the odd color here or there seeming out of place from its like-hued friends. This is obviously not as smooth a result as you’d get by hand-picking the palette to have an even distribution, but for an arbitrary set of colors, I was quite happy with it. (Boy, CSS3 sure has a lot of off-white defined, doesn’t it?)

The reason that you don’t simply take a smaller slice, when any spaces are locked, is that the sort can end up working against you. In the example above, when I tried to just take six values for the rightmost column, it ended up going from dark to very light in just six colors, which would look out of place next to the adjacent column. By taking twelve and then only choosing the darkest six (the spaces for the lightest being locked), it looks the way it should.

This algorithm can be expanded to other shapes such as a hexagon, although the sorting criteria would differ and there would be more corners to keep track of. For instance with a hexagon, you’d probably want hue arranged conically so that red was at one corner, yellow the next, green the next, and so on. The sort would still use linear directions, but instead of simple x and y you’d be sorting by, for example, x*sqrt(3)-y, depending on the side. (One side would be straight and would allow for just x and y.)

What I don’t think this can do is an arbitrary non-grid shape, such as a circle. If the positions were setup so that you could approximate a circle but used a square or hexagonal shape instead, it’d be fine; you could simply cut off the corners as locked spaces. A spiral would not be fittable with this method, though, and I’m at a loss to determine what would work there.

Posted in Uncategorized | Tagged | Leave a comment