Time Management Fail

I should be getting ready for work right about now, but I feel like writing too. So writing wins for now. I’m getting myself psyched up for 2011 with plans and ideas for how I’m gonna keep things interesting for this Monday-Wednesday-Friday regularity of posting. My work schedule actually calls for Tuesday, Wednesday, and Thursday off, and I have no plans to change that. So I’ll be writing a week ahead or two.

Mondays are gonna be fairly mixed with regards to music. Reviews of varying formality, top 10s, that sort of thing.

Wednesdays, my wildcard days, will likely have a lot of gaming. That’s for sure. That and whatever else I feel like writing about.

Fridays will be split between reviewing fragrances and a journal tracking Diana and I as we attempt to make custom perfumes, we’ve got about a year of off-and-on experience with it and I think we’re going to be stocking up on some new oils too. We haven’t broken out the EOs since we moved in together, so we’re both excited to get back to it.

Unrelated note, but if you haven’t been following the Steam Holiday Sale, you’re missing the true reason of the $ea$on. You can buy 55 games for $55, for crying out loud.

PHP Lessons to my 16-year old self.

Over the past five days I’ve turned a sketch for a Basenotes March Madness site into a real, working application, and did it with efficiency, normalization and security in mind. Web design was something I started messing with when I was about 10 or 11 years old, with a little 64-page book that actually gave a good understanding of the basics. Though I don’t need to consult that book I still keep it around, maybe I’ll find some young nerd to pass it along to although quite a bit of it is deprecated code now. It wasn’t until 18 and in college that I learned C and subsequently PHP, and really got a feel for the database design that had always intrigued me. I’ve had several projects of varying scales, and picked up a significant bag of tricks. If I could go back and get my 16 year old self to do all the stuff he wanted to do, I’d have these words of wisdom for him.

  • Go pick up a copy of The C Programming Language. Forget about Perl, C will get you where you want to be.
  • MySQL is much, much easier to get started with than Oracle, and forget about ColdFusion, it’ll be dead soon.
  • JavaScript is sometimes a necessary evil. It can do things that are either way too cumbersome or flat-out impossible any other way. But don’t worry, JavaScript is becoming respectable.
  • Keep all your code from old projects. You’ll be amazed how much wheel reinvention you’ll save yourself when the time comes to implement a login system again.
  • All those ideas you’ve had in your head? You need to use $_POST[] and $_GET[] to make them work. That’s how you send data from page to page. GET is only useful if you only care about one variable, you’ll find yourself using POST much more often.
  • Normalize your databases. If you’re storing the same data in two places, consider the best way to eliminate that redundancy. This is the cornerstone of relational databases and something you’ve got to master. You can and will make tables whose whole existence are to join two tables together via commonly used data. This is desired and much faster performance-wise. Use unique identifiers for each row, even if you think all your data will be unique; then when you need data you only have to carry that one ID with you as data flows.
  • Comment your code, even if it’s after the fact. The longer you’re at it, the more you evolve and adapt different styles to do tasks, and when you look at some of your earliest code you can find yourself going, “What the hell was I trying to do here?” On the same note, try and use an identical approach to commonly used functions. For example, you’ll make a lot of MySQL queries, so using the same approach each time will instantly let you know as you scan your code that that block is a query.
    $q_selectfrags = "SELECT * FROM Fragrance WHERE (Gender = ".$gender." OR Gender = 2) AND House = '".$house."' ORDER BY Fragrance ASC";
    $selectfrags = mysql_query($q_selectfrags,$conn) or die(mysql_error());
    if ($selectfrags) { do $stuff; }
  • On a related note, there are several ways to do loops (that is, returning a list of data), and while a do-while loop appears the easiest, and for loops are a bit more elegant, when you’re iterating through data a very efficient way of doing it is send your query, and then use while($row = mysql_fetch_assoc($result)) { blah blah, echo $row[‘Username’]; }. It’ll do it once for every row of data returned. Instant pro.
  • Keep related functions and actions in one physical file, set your forms with action=””, and give your submits unique names. Then you have whole functions that only execute if ($_POST[‘submitname’]) { }. Fewer files to keep updated has it’s advantages, but one disadvantage is if your code is sloppy, you break a whole set of functions instead of just one. So don’t be sloppy.
  • Use variable names that are descriptive enough that if you return to your code in six months, you can still tell what’s going on. $i, $j and $k are fine when you’re doing math problems for homework, but in a professional environment it just reeks of poor team skills. Others are going to be reading what you code, so go easy on them.
  • Tables really aren’t that hard to learn, you pretty much just use the tr tag to specify a new row, and then td tags inside for each column within that row. Use the colspan attribute to stretch across multiple columns. This is also handy way to organize that info you’re spitting out with your while loop.
  • Those paper sketches you’re doing are not going anywhere soon. There are design programs like Visio but there’s nothing as useful as sketching it out by hand, and the relationships between tables in your databases. If you can sketch it, you can code it, every single time.
  • Be patient, but be creative. If you want to try designing something, go for it. It’s all useful practice for a real-world skill that can make you a lot of money.
  • Listen to more Juno Reactor. It helps.

Audio Infinitum (Or, Five Songs Forever)

Music lovers know exactly what someone means when they say “I love the song, but I can’t listen to it all that often,” or something to that effect. Then there are comfort songs, songs to listen to when you’re happy, pissed off, maybe even drunk. (I’m not here to judge.) But what about a song to listen to forever?

It’s funny, this is actually a project I do inadvertently when I make compilation CDs to put in the car, or playlists to listen to on repeat. There will inevitably be weaker songs that I’ll grow tired of well before others. So I’ll tweak the selections, and try to come up with that perfect playlist to represent a genre. I know myself well enough to say I could listen to these five songs, on repeat, more or less perpetually, in this order.

BT – Dark Heart Dawning

Dark Heart Dawning is a relative sleeper track of BT’s, it never appeared on a single or EP after being released on the album Emotional Technology in 2003. While I have other favorites off the album (P A R I S and The Last Moment Of Clarity in particular) none of them exhibit the understated beauty of Dark Heart Dawning. Downtempo pedal steel guitar and a simple story segue into a powerful second half with a heavy gospel overtone. That’s off-putting to some, but I love the emotion you find in a song like this. Deep down I hope BT likes this one as much as I do.

Stevie Ray Vaughan – Riviera Paradise

I became a fan of SRV not long after I started playing the guitar, probably around age 14. I had a copy of Couldn’t Stand The Weather that I still think is one of the most complete displays of skill by a bluesman, from the slow, somber tale of “Tin Pan Alley” to upbeat rock riffs like “Scuttle Buttin'”, and a cover of Jimi’s “Voodoo Chile” that rivals the original. But it’s his instrumental work that surprises me the most. A guitarist listening to “Tin Pan Alley” or “Cold Shot” might come away thinking Stevie has a “bag of tricks” that he doesn’t want to deviate from. But listen to something like Riviera Paradise and you’ll find he’s talented enough to work his way through a beautiful, slow nine-minute instrumental without repeating himself, and displaying some chops that you rarely see out of him. I’ve spent plenty of time with Riviera Paradise on repeat by itself, this one would make it for sure if I had to narrow it down to three or two songs.

Joe Satriani – Why

Trying to narrow down my Satch discography to one song was tough, but I’ve listened to Why more than any other song of his, it’s timeless, it has a ton of memories attached to it, it’s just a work of pure talent by a guy that has no lack thereof. His more recent work has moved away from the shredding, pitch-axis dominant stuff he helped pioneer and into more thoughtful stuff, but listening to him play this one live in 2003 was nothing short of an honor.

Guns ‘N Roses – Sweet Child O’ Mine

Having worked tech retail while Guitar Hero II was on demo, I got to listen to Sweet Child O’ Mine no less than 20 times a shift. And I can’t think of a time where I thought to myself, “That’s about enough of that.” I don’t know what it is about it, a beautiful memorable melody, great energy and emotion, and a great guitar solo with tons of soul, Slash at his best. It puts a smile on my face pretty much every time I hear it.

Onoken – Vijore

Readers that had heard of every artist up to this one, don’t take it personally. Onoken is a Japanese electronica artist known primarily to folks in the Bemani scene. Most of his work has never made it out of Japan, but his album “Swell Strings” did, and out of a great album I find this as his best work, maybe ever (don’t hate on me, K8107 fans). The song has an underlying complexity that is beautiful as it is challenging to decipher, there’s something new to listen for every time. And there’s emotion, and tons of it! If you don’t feel anything from the dynamics and pitches used, you’re being really stubborn. In an age of dubstep and hardcore I point to this and say, “This is original and beautiful. And simple. And accessible.”

Food for thought, I hope. Feel free to think it over, and try commenting back with five songs to listen to forever.

BMM11 Behind The Scenes: Best Laid Plans

I began preliminary work for Basenotes March Madness 2011 today, a paper sketch that I always seem to need to do before designing a website or a database. I’ll be designing both in this case, but the core of the game will of course be on Basenotes. The site I’m building will host the nomination and voting process to select what fragrances make the cut, and will also manage the bracket challenge, where users attempt to predict the outcome of each game. At the end of a day’s games, I simply give the website the final results for the day and it records it, and gives me the code for the next day’s events.

What’s the website look like now? This. But believe it or not, the hard work is nearly over, the actual construction of the website is a pretty simple process having done work with databases for so long.

I’m still spotty on a lot of details, but I can tell you several major changes from prior years events:

– There will be two concurrent tournaments, men’s and women’s. I didn’t run a women’s tournament the first year because I was uncertain as to the popularity of the event, and the second year because I didn’t feel I’d have time to do both because of the amount of manual work involved. The tournaments won’t be segregated by gender, men can vote on the women’s contests and vice versa. The only difference is the brackets themselves will be quite different.

– Instead of the prediction contest’s old scoring system, where each game in round 1 was worth 1 point, then doubling in value for each round, users will be able to bet varying amounts for each game. Essentially each round’s old point values will be multiplied by 10. A round 1 game is worth 10 points, but a user can bet as few as 5 points or as many as 80 points on any given game, but their total for the round must equal 320. Successful bets pay 1:1. This will let people go with their gut a bit more, it encourages riskier play and also lets people hedge their bets on toss-up matches. I think it’ll be a lot of fun.

rd gms pts min max total
r1 32 10 5 80 320
r2 16 20 5 80 320
r3 8 40 10 120 320
r4 4 80 40 160 320
r5 2 160 80 240 320
r6 1 320 320 320 320

– I’m introducing new AI to complement The Zeitgeist. He surprised me last year, but I believe the dataset was large enough that an AI that picked with the majority on every game that ended up precisely in the middle of the field is telling. I’m introducing 4 new algorithms to see if there’s an underlying correlation between an observable metric and the voting results. Where The Zeitgeist gets his data from the submissions, three of the four AIs will get their data from the fragrances themselves. The last AI is a control, a voter that selects totally at random. I’m also getting my dad, who knows precious little about the industry (he knew of two of the entries last year), and have him fill out a bracket.

That’s the bulk of the outward-facing changes that I can announce right now. I have one other rather large issue, sponsorship, that I want to run by Grant. I’d love to see Luckyscent or someone have a prize for the winners of the contest. I can’t promise anything at the moment, but I’ll provide more information as I can.

Chanel Platinum Egoiste – The Prophet Biggie Smalls

How does an early 90s aromatic fougère get street cred?

“…easy, call em on the phone and Platinum Chanel cologne and I stay, dressed, to impress…”
-Notorious B.I.G., Nasty Girl

I’m fairly sure Platinum Egoiste is the only bottle in my collection that has been rapped about, but smelling it, it’s hard not to see that Biggie was on the right track. Platinum Egoiste is an aromatic fougère, meaning it combines the fern, lavender and oakmoss trio of a traditional fougère with additional woods and spices. 1993 was a transition year for the fragrance industry, some of the last few heavy-hitters and offbeat mainstream offerings before CK One and L’Eau d’Issey Miyake in 1994 set the stage for the aquatic-dominant industry we find ourselves in now. Where most current offerings are either soapy, inoffensive aquatics, or cloying sweet club scents, Platinum Egoiste is neither, and instead opens with a blast of rosemary, clary sage and vetiver that is herbal, slightly bitter, and very “aromatic”. Give it a bit to settle down and you see that the top notes have made some room for the cedar and even a fleeting floral hint, which Basenotes lists as geranium. This combination is unique to my collection, Pasha de Cartier comes close but Platinum Egoiste does a more classy job of it. It’s fairly linear from this point, drying down and losing some of that effervescent, sparkling quality but retaining the slightly sweeter herbal scent.

It’s my belief that fougères are some of the best out there when you need to show a professional, mature side. It’s my go-to scent for job interviews, for example. It rarely overpowers unless grossly overapplied, so it’s workplace friendly. Projection is right about where I’d want it, longevity is average at 5-8 hours.

The marketing campaign for the original Egoiste in 1990 was pure Chanel, dramatic and memorable. See below.

It was another four years before viewers saw the second half of it. A rough translation would be “Selfish, you’re just selfish. You know I follow your trail like a dog. Beware, some day I will steal your perfume to finally take your place, Egoiste.”

Creator and Chanel house perfumer Jacques Polge has no lack of perfumisto street cred, with Chanel icons like Antaeus, Coco, and Allure to his credit and also created Basenotes fan-favorites Ungaro III and Tiffany For Men.

So is Platinum Egoiste a celebration of the ego? The name would lead you to believe so, and the commercials don’t exactly help, but to me it’s not all that serious about it. It is serious, however, a straight-laced sort of scent that is there to put in a full day’s work with you. Given the near-worldwide availability of Chanel, this one is available to sample at pretty much any department store, and I highly recommend doing so if you don’t have a handle on what an aromatic fougère is, or how good they can be.

Polished Turds and Reinvented Wheels

I did a pretty major reskin of the blog, in anticipation of some upcoming projects. I liked the previous theme, don’t get me wrong, but it was difficult to work with and had some nasty bugs of it’s own. This one is simple and quite a pleasure to use so far.

One thing I’ve come to accept is for the past 7 years I’ve been blogging, it’s been largely an emotional outlet. I have Twitter that serves admirably in that regard, and it’s taken away from the amount of other writing I do. I’m hoping I can keep motivated through 2011 and stick to the weekly schedule of Music Mondays, Wildcard Wednesdays (photography, gaming, rambling), and Fragrant Fridays. The latter will be crossposted on Il Mondo di Odore, a blog run by several high-profile Basenoters and some good friends. I’ve never been a contributor to a blog that wasn’t my own, so I’m quite excited about that.

The site is more secure than ever, I’m seeing the occasional 500 error I can’t pin down, but a refresh always seems to clear it up. I have four days to finish my final group project for Professional Writing and then I suspect I’ll start trying to get a feel for the self-set schedule and how much work and design I want to do. Stay tuned.