Reload CSS Every… Bookmarklet

One annoying aspect of writing a stylesheet is having to reload the page in your browser to see your incremental changes. There are ways to workaround this, but I find them less than ideal so I created ReloadCSSEvery. It refreshes only the CSS of a loaded page every 2 seconds so you can use your CSS editor of choice and see semi-real-time changes in your browser when you save.
Continue reading  

1-minute RAM buyer’s guide

There was a time when it seemed you could just order the cheapest RAM you could find on Pricewatch and be done with it, but it just doesn’t work like that, especially when you’re trying to upgrade a PC more than a year old.

You can easily spend hours reading about RAM density, ECC, buffering, registration, DDR(2), clock timing, and more hours doing awkward eBay and Google searches to find the right features just to end up with RAM that still won’t work with your system. Please save yourself the hassle.

  • Look up your PC/motherboard at Crucial, Kingston and 4AllMemory, and note the model numbers recommended.
  • Also check for these models at other reputable stores. NewEgg is known for excellent service, but also search and Froogle. Crucial is usually on the high side, but a safe choice.

BTW, pray you don’t end up needing a particular flavor of Rambus RAM.

Human cycles not wasted

Luis von Ahn creates simple games that have people solve problems that computers can’t (Google video). Every time you play a game of Taboo, the hinter generates associations between words and the guesser, by guessing the correct word, is verifying the quality of those associations. By isolating players via the web and collecting their responses, on online version of Taboo could generate mountains of data that help computers associate words with other words. Luis took this idea and created several games that use humans to associate words with images, objects within images with words, even words with what they mean… My favorite bit is that, given the same input (eg. a card in Taboo), he gets more good data by recording the actions of all human players and using them against other live players or even other recordings. Eg. Jim and Jane play a game. When Mike comes along, the computer can use Jane’s recorded actions as Mike’s partner. If Steve and Sue also played, the computer could even go back and match Steve’s recording against Jane’s and Jim’s against Sue’s, generating even more data without any human involvement. These “zero player” games wouldn’t give you new associations, but could aid in ranking them.


17 Dec 2006: Latest Posts now works again in the latest release 9.02. Huzzah.

My first Opera widget created back in July is now broken in Opera 9.02. The debugging and rebuilding process is so tedious that I probably won’t fix it very soon. A nice gesture on Opera’s part is the creation of an actual Widget API/specification for those in the trenches, but where can you find it? Nowhere on I had to google “Opera Widget Object” to find it tucked away apparently as a left-over part of a presentation given at a conference in Finland. If you want developers to use your technology, spending an hour to write up even some preliminary docs would be nice.

After giving them a real chance, I still say widgets are a flop (at least on the desktop). Beyond the persistent storage, a widget is just a website and having it run outside the browser is a neat trick, but one that already failed. And as for porting widgets to mobile devices, I forsee a lot of problems in the area of performance and memory leaks since most widgets don’t go out of their way to preserve bandwidth and none share Javascript libraries. Leave a half-dozen web2.0 sites open in any browser all day and watch the memory usage. Will a mobile handle it?

Audacity failing the audition

As much I want to root for Audacity for being an open source and multi-platform multitrack recording solution, it’s just not there yet. I set it up for my coworker to record lectures and, even in this light-duty (mono 44.1 recording, nothing fancy), after about 10 min of material the program starts to sputter and exhibit delays in responding. This is on a machine with a GB of RAM! Occasionally the project file becomes corrupted and, although you can open it, see the waveforms, and export, you can’t play the project anymore without a long crash. This happened this morning; I was able to export what was there, but skips and glitches made the track unusable. Even when the entire recording and mixdown does work, at every other edit point in the mixdown is an audible pop.

For all its instability, there are two very nice Audacity features that I’d love to see in Adobe Audition:

Visible RMS levels on the waveform.
This gives you a decent visual clue of how “loud” a track is across time. While RMS doesn’t equate to “loudness” (unless it uses a reverse equal-loudness contour), it’s mostly proportional to it if the overall frequencies stay the same (as with speech).
View results of volume-adjustment curves in real time
When you draw a curve you see the waveform change to the result of the curve as it will be applied, making it possible to truly dial in the exact volume change you want rather than repeatedly guessing and listening.

The above features allow you to quickly visually shape your desired loudness curve out of the existing wave. Speakers tend to gradually gain/lose volume over several minutes, so this makes compensating for that cake. These two alone make it worth keeping Audactiy around just for situations needing sharp leveling.

Rhythm guitar geniuses

Ivy frequently has stunning rhythm guitar parts–a little bit of extra texture, a little melody. Two examples: “Blame In On Yourself” from Long Distance, and Apartment Life’s “Quick, Painless, and Easy” The latter I’ve been casually wondering how to play for some time so I finally sat down and figure it out.

Ivy “Quick, Painless, and Easy” (rhythm guitar)

First, raise the B string to C so C and E can ring open together (it’s possible with standard tuning but the E+ is a pain to get your fingers in and out of). Everywhere but the chorus the A string quiet drones. The named chord is the effective harmony with the electric bass in the recording (how you might play it on piano, etc.)

Tuning = E-A-D-G-C-E (raise B to C)

  Amaj7      x-0-6-6-4-0
  Cmaj7/G    x-0-5-4-0-0
  Fmaj7      x-0-3-2-0-0
  E+         x-0-2-1-0-0
  Am7        x-0-7-5-7-0
  Cmaj7/G    x-0-5-4-0-0
  Fmaj7      x-0-3-2-0-0
  Cmaj7/G    x-0-5-4-0-0

Pre-chorus (twice)
  Amaj7      x-0-6-6-4-0
  Cmaj7/G    x-0-5-4-0-0
  D6add9/F#  x-0-4-4-2-0
  Fmaj7      x-0-3-2-0-0

  C          3-3-2-0-0-0
  D          x-0-0-2-2-2
  C          3-3-2-0-0-0
  D          x-0-0-2-2-2
  C          3-3-2-0-0-0
  D          x-0-0-2-2-2
  Fmaj7      1-3-3-2-0-0
  G6add4     3-5-5-4-0-0

Why I hate upgrading computers

Last month I spent many, many hours researching the seemingly simple tasks of upgrading the RAM on two of our PCs and upgrading the CPU on one.

“Compy” is our old Sony Vaio, which, after swimming through the documentation, I found requires extra-expensive and rare-ish RAMBUS RAM available from basically 0 reputable sources, so eventually I won an eBay auction: $40 for 256MB. This was 19 days ago and it’s yet to arrive. Long story short the seller had “Paypal problems” and didn’t get around to sending it until yesterday.

Compy also has an old P4 1.3G CPU and very foggy documentation told me it was “upgradeable” (but to what?) I figured out the fastest chip for that socket type was 1.7G. Fair enough, I found a “working pull” 1.7 for $20–for a 30% speed increase that’d be worth it. Chip shipped quick, never worked and, of course, I’ve no way to tell if it’s a MOBO compatibility issue (there’s no researchable MOBO chipset/model#, it may just not support the higher voltage) or if the chip was just DOA. $20 wasted.

“Homey” is my main desktop and, after much research, I determined it requires dual-channel RAM, but not the kind you see advertised everywhere, rather the much rarer “low density” dual-channel RAM. Maybe I should’ve just paid the extra $15 for RAM from, but a man’s gotta save money! I dug and dug through eBay listings and random vendors until I eventually found 512MB for around $58. It was an enjoyable two weeks before a power surge at our house managed to kill it tonight (when windows repeatably failed to load, I used the very handy memtest86 to verify the DIMM was dead).

Why do I suspect the RAMBUS RAM is gonna fail, too?

Update 9/23: (sigh) 26 days after paying for Compy’s RAM I got in the mail incompatible Samsung “ECC” RAM–completely different than the pictured non-ECC NEC RAM. Along the way the seller refused 4 requests for the shipping confirmation #. I’ve filed a complaint with Paypal.

Mark Wirtz

This compilation of Mark Wirtz-produced songs rocks. Especially if you like 60’s girl groups with wall-of-everything+kitchen-sink productions, dramatic breaks that are just waiting to be sampled, bubblegum pop songs with psychadelic edges. There are duds and some dumb lyrics here and there, but it’s a great variety of sounds and clever pop songwriting.

Some highlights:
Today Without You – Samantha Jones
Rumours – Kippington Lodge
I’m Waiting For The Day – Peanut (Best cover of a Beach Boys song?)

Could Expression break the tedium of CSS design?

I’ve been dealing with CSS layout quirks and bugs for seven years and, frankly, by now the thrill of designing an elegant style sheet by hand has worn off. The process of choosing the right lengths and font-sizes, and setting all these properties by hand (even with autocomplete) is just unacceptably tedious and just bogs you down. The “CSS panels” various apps have just don’t save enough time; I can almost always edit the rules by hand faster than scrolling through lists of properties and clicking in value boxes. Yes, a 2nd monitor auto-refreshing the page would help, but I’m still guessing at values, saving, repeating endlessly.

I just want to drag and drop elements into place, maybe in a DOM tree view in a side panel, then zoom in and adjust layout properties like margin and padding by dragging handles or using the mousewheel, same with font-sizes in %/ems. Even if it stores these properties in inline style attributes, this would be a huge time-saver. Just also give me a wizard to take all inline styles and merge them into my external files intelligently, maybe let me pick the ids or choose when to use various contextual selectors.

It looks like Microsoft’s Expression designer has some of these features. Dreamweaver has a nice page zoom and yeah, you can stretch tables around like it’s 1996, but it doesn’t cut it. Right now DW8 is my primary editor, but as I do less front-end work I can forsee it losing ground to more capable PHP editors (if they could just match DW’s site management tools).