Mazurka for Guitar

I have been learning LilyPond for music engraving lately and I love it!

I have always been intrigued by the intersections between music and programming. LilyPond really appeals to the coder in me because you are basically writing code in a text editor, and out comes beautiful sheet music.

Here is a work I did many years ago, Mazurka, for guitar. I used this as a learning example because it presents several problems for music engraving, in a nice short work that doesn’t require one to commit to a huge ordeal. It covers basic notation issues such as fingerings, arpeggiation, a free-form cadenza, dynamics, tempo, and articulations.

The PDF of the work will remain available right here, and I’m releasing it under a Creative Commons Attribution-No Derivative Works 3.0 Unported license, so please feel free to download it, play it, and redistribute it as you wish–just always attribute the composer, and don’t alter it in any way. Enjoy, and thanks!

Oh, and if you do perform it or have any questions on interpretation, please feel free to let me know in by posting a comment.

Pennini’s Gluten-Free Pizza

Gluten-free pizza. ‘Nuff said.

Gluten-free pizza at Pennini's

OK I’ll say some more. Pennini’s began serving a gluten-free pizza option yesterday. My pizza orders this evening were numbers three and four. The reason I give five stars is this: The guys have nailed it with regards to serving up a gluten-free pizza in a laid back and casual atmosphere.

I ordered two pizzas just for the heck of it, and stuck to the basics: Pepperoni. My two boys and I (they are 4 and 7) dusted everything. Gone. Zip. Destroyed. Game over man! One, two, three, up with the skirt, and it’s gone! I am the only celiac in the family, but the boys could have cared less. They ate more pizza than you could shake a stick at.

The things were delicious. Real pizza on a thin crust, nice and traditional-like. But the best part was that the guy that cooked it, Greg (I asked if I could print his name here), came out and described in detail the steps he took to ensure that this pizza was indeed as free as possible of any potential gluten contamination.

Since I like to work as a human guinea pig, I can attest to the quality of their process. It is several hours later, and I am happily here sitting on my recumbent bike machine at home doing at least an hour’s penance for the debauchery that just ensued – grease, cheese, oil, and processed meats are the stuff of pizza made the way god intended. If there were even a tiny bit of contamination with wheat, I’d be sick by now. But I’m great!

In summary: Great gluten-free pizza, totally laid-back atmosphere, awesome friendly staff, family loved everything else they tried on the menu, and I’m stuffed.

See you guys again real soon.

Foundation Website Creation with CSS, XHTML, and JavaScript

In a real bookstore

I would have announced this earlier, but somehow with the trip to Taiwan, the subsequent jet lag, and the whopper of a cold I had this past week has delayed me from getting this post out until now. But here it is: My book titled “Foundation Website Creation with CSS, XHTML, and JavaScript” is now out! I saw two copies of it today on the shelf at Barnes & Noble in Walnut Creek earlier today (pictured).

This project came up at a real interesting time. I was just starting the final quarter of my masters degree program through University of Denver in computer information systems, and the last thing I wanted to do was to take on extra work. But of course, this opportunity to collaborate on this project was too good to pass up, so I opted for no sleep for a few months and somehow got both done last June. Man, it feels good to be done.

My fellow authors Jonathan Lane and Meitar Moscovitz and I have put together a book that covers a professional introduction to the core technologies involved in front-end website development. In it we have tried to convey modern best practices from a web standards perspective as well as from a user-centric project management perspective to give the emerging web developer a solid foundation as to what to expect in a professional web design workflow. I hope the readers of this book find the information contained therein to be valuable platforms for further exploration and learning.

The book may be ordered from Amazon, and you might even find it on a local bookstore shelf!

The non-importance of !important

Molly Holzschlag raised a good issue via Twitter yesterday regarding the !important rules in CSS, reprinted here in more or less the order in which her tweets appeared thus far:

TwitterPoll: What does this mean to you? !=

TwitterPoll follow-up. What does this mean to you? !=good

TwitterPoll: Let’s remove the equal sign. What does this mean to you !good

yes, yes, I’m asking ultimately how the fuck !important means BANG IMPORTANT when realistically it should mean not important.

re: !important in CSS? Kill it. Specificity to the rescue.

Say it ten times fastL Specificity, specificity, specificity. Forget !important. Write specific selectors sez me. And night night!

I love Twitter. When it is up and running that is… πŸ˜‰ Such a lively place for discussion.

Random photo of Taroko Gorge from my recent Taiwan trip, just for color.

Molly makes an excellent point here. My little position with the !important rule is that I always thought this to be somewhat of a funny-looking construct. It is just as Molly points out – the exclamation point preceding the word ‘important’ is odd, kind of stuck on there, and is especially confusing to those of us coming from that programming background where the ! means ‘not’ – as in != reading ‘not equal’ and that sort of thing.

The construct itself is generally frowned upon in production-level CSS code. The specificity of the !important rule overrides anything with normal inheritance values, and if your code is littered with it then you really need to go back and look at what your rules are doing with regards to the cascade. A good production stylesheet should be free of any !important rules.

I take from Molly’s tweets that she argues in favor of abolishing the !important construct and that people should use the cascade properly. While I understand this position and agree with it on a philosophical level, I think somehow this functionality should be retained. My proposal is as follows:

  1. Change !important to just important, doing away with the confusing exclamation point and instantly making CSS more legible
  2. Make some declaration that user agents should ignore the exclamation point and really just pay attention to the word “important,” for the sake of legacy support. Yeah more detail is needed here, but you get it.
  3. Make validation issue an explicit warning stating that important should only be used for debugging purposes.

How this would look in the wild:

#hyrule {
  color:blue important;

Not a big change really, but it gets rid of the somewhat confusing exclamation point, gets us more towards the ideal which is reduced abuse of the rule in question, and promotes better use of the cascade.

Yes that photo is completely random given the context of this discussion, but I thought it was pretty and it reminds me that I need to do a follow-up on my recent Taiwan vacation… πŸ˜‰

iPhone and mouse events

PPK has written his impressions regarding his shiny brand-new Jesusphone. (I wonder did he get black or white?)

In his post, he tells us the initial reports for the behavior of mobile Safari with regards to things like documentation (missing), mouse event implications (game changing), and how the disjunct state of finger tapping and dragging compares with the continuous state of the traditional OS desktop mouse pointer. In particular, he points out the fact that the assumed ever-present mouse pointer (the little cock-eyed arrow which points black and to the upper left on Mac, and is white and points to the upper right on Windows) can no longer be counted on. And in fact, there is no icon any more. Your fingertip is it, my friend!

With the coming of the iPhone the mouse model has lost its inescapable logic. Mousemove, mouseover and mouseout (and even poor old :hover) have been downgraded to device-specific events that may not survive in the long run.

May not survive… hmmm, interesting impact. I think he could be right here.

But β€” and here lies the problem β€” these events are used in countless web sites and applications for a variety of purposes, and Apple simply cannot afford these sites not working on the iPhone.

Interestingly, so far Apple has found that it indeed can afford to dispense with Flash and Java on the iPhone platform, and while most complain that the checkbox isn’t complete, some argue that Apple is doing just fine and won’t be in any hurry anytime soon. Certainly demand for these babies has been extremely high so far. I would be interested to see how many of such sites absolutely depend on such functionality to work, and how many of those either change their site behaviors or create iPhone-friendly web presences as the demand for the mobile web increases. Wondering… but at the very least, things like these aforementioned mouse events – Flash, Java, and the like – are not yet queued up on Apple’s priority list, or else they chose to take the less-is-better approach. It is an interesting question: How much of the specifications do browser vendors adhere to on such a limited platform such as mobile devices? What is practical? What is feasible?