Blogs

Well, It Seemed Like A Good Idea

It turns out that Adobe AIR’s embedded version in Windows is not the same as the version embedded in OSX’s AIR. Observe (click on a thumbnail to enlarge):

The pristine, Mac OSX version1.

The no-so-correctly rendered Windows version.

The biggest noticeable difference is the number “4” in the upper-left hand corner. There is no text-stroke, and no text-shadow on it. The second thing is that my box-shadow around the dark content box is missing. Again, it’s perfect on the Mac, but is not rendered on the Windows machine.

I’ve been trying to find documentation that specifies what version of Webkit (in relation to Safari) AIR seems to be running, but it would seem that nobody really knows that the people at Adobe are trying to get the “latest” version out there. I apologize for the lack of linkage, but even what I did find didn’t seem very convincing.

This is very promising technology, but fails on something very simple. I have to say that I’m a little frustrated that a piece of software that has the same version number for both Mac and Windows doesn’t provide the same experience on both platforms. Especially with how it’s marketed.

However, my enthusiasm for AIR is only slightly stifled. I’ll continue in the hope the fix this… and soon.

1 Yes, I know the aspect ratio is not right for the poster, but it’s going to be stretched on a monitor, so it’ll look right there, I promise.

Yet Another Reason Why Adobe AIR Is Amazing

On a project for a client, recently, a vendor he was working with dropped the ball, and in a last minute call, he asked me for my “solution” to a problem we had discussed before. I spent a few hours researching the how of solving the problem, VB.Net perhaps (bluh), maybe some snappy C#. I went through the different languages, looking for a solution. Essentially, he wanted to display a full screen webpage on a couple of multi-monitor systems. Finally, I came back to Adobe AIR.

AIR has a Screen class that allows you to enumerate screens and gather info about them. These was much better than importing DLLs from user32.dll in C# or VB.Net and had much better documentation.

After all was said and done, the application works flawlessly and said customer was very happy. (And I know everyone reading likes to have (or be) a happy customer! The nicest part, though, was what I also gained by using Adobe AIR.

The web pages that will be shown on those screens are not your standard web-viewing fare. They have quite a few custom elements and effects (text-shadows, drop shadows on things, etc). Since AIR uses Webkit I was able to use all of the really nice features that Webkit has to offer. Things like strokes, box shadows, and text shadows. And the best thing is… since these pages are going to end up on Windows machines, they’ll display as expected since AIR is displaying them with Webkit!

Adobe, you have made my day!

Skullcandy Smokin' Buds + Old iPhone Headphones = Headphones of Win & Awesome

So, I’ve been reading on the internet about people who have been modding their iPhone headphones with new earbuds. There is even a company who will do it for you. Where is the fun in that? There is none. Real men take care of it themselves. They get out their soldering irons, wire cutters, and drills and get down to business.

I didn’t take pictures during the bulk of the process. To be honest, it was very frustrating and, in hindsight, a different set of headphones would have been much easier. Explanation to follow.

The Skullcandy Smokin’ Buds were chosen because they:

  • are very comfortable.
  • were under $35.
  • are white.

The iPhone case on my phone managed to tear apart my old headphones, so those were already provided. In case you didn’t know, 3rd party headphones with a mic and button on the cords are fairly hard to come by, and expensive even if you can find them.

The Skullcandy ‘phones came apart after cutting around the rims with a razor blade. Their are epoxied together, so some sort of glue is needed to put them back together after they are separated.

Most headphones (like the iPhone headphones) simply tie the wires in a not to make sure the wires don’t easily get pulled off the buds. The Skullcandy wires were glued in-place inside the ear piece. This was the beginning cause of frustration during this part of the process, as we’ll see next. Pulling the wire out of the headphones will leave some of the wire jacket still in the shaft. This gets cleaned out later.

When preparing the iPhone headphones, it works well to cut the wires right under the knot. The unknotted wire doesn’t work so well when trying to push it through the rubber part on the Skullcandy headphones.

There is no picture for this, but the wire that comes with the Skullcandy headphones is quite a bit thinner than the wire on the iPhone headphones. WIthout modification, the iPhone wires would not go up the rubber part and into the earpiece. The jacket bunched up and was a real pain to get up there.

To get around this, part of the rubber on top of the earpiece (you can see it pulled away in the picture) was pulled back and a 1/16th inch drill bit was used to drill a hole pretty much straight through the headphone and through the rubber. This cleaned out any of the extra left-behind wire jacket that was glued, and also made the shaft big enough to accommodate the iPhone wire.

This step is extremely important, and great care should be taken to make sure you don’t ruin the jacket. Go through it once with the drill on low, and once it goes all the way through, then speed it up.

Soldering is pretty easy. Just match colors. A quick burst from a lighter or a match can burn away the jacket on the very small wires in the iPhone headphones. In the right earpiece, there will be 4 wires. Don’t worry about them. You can safely not solder them to anything and have your mic and button still work.

When they’ve been tested, you can reattach the buds to the ear pieces with super-glue. You can also glue the top rubber piece back over the drilled holes. This makes them louder, too.

Great success! Finally, headphones that are comfortable, sound great, and work flawlessly with the iPhone.

Put It Where It Goes!

Why can’t people just make the bodies of e-mails the content? Why do they insist on putting an entirely new message in a Word Doc, attaching that to a message, and then sending that message? Put it in the freaking body of the e-mail! It’s not that hard.

I don’t want to have to click to open the document and then have to delete the document. It’s not like there are graphics or pretty colors. Just names, and dates.

Put it in the e-mail body, where it belongs!

Movie Curiosity: Vicky Cristina Barcelona

This morning, I finally managed to finish No Country For Old Men. It was great. One of those genre overlapping movies that doesn’t fit into any one particular category. You might say it was basically a “chase” movie (as the Coen brothers called it).

The bad guy in that movie is Javier Bardem. He’s so good at it. Really great. As it turns out, he is going to be in Vicky Cristina Barcelona as well.

It’s a little deja vù with what Gerard Butler did with 300 and P.S. I Love You. One minute, the guy is a total ultimate badass putting fear and animosity into the hearts of any intelligent soul, the next he’s the reason all the lady’s are wishfully sighing and getting all teary-eyed.

His performance in this movie will be a very interesting contrast to what we’ve seen of him in NCFOM1.

1 Considering that I’ve only seen him in one other thing, my scope is limited. You might already know he’s a great actor.

Back From Vacation!

The cruise to Cozumel was amazing. Probably one of the best parts was turning my phone off for 5 days. At first I wasn’t sure if I could do it… but we got through it and it was such an amazing experience that I would love to do again.

While I was on vacation, I read Neuromancer and started reading The Dumbest Generation. Neuromancer was a great book. It was way ahead of it’s time, and if you have seen the Matrix and never read this book, you should. This book was written by the guy who brought into existence the words “cyberspace” and “matrix.” Totally worth the read.

The Dumbest Generation is about the death of reading in America’s youth. So far it’s been very eye-opening. I’m only about 1/3 of the way through it, but I’m going to try to get through it over the course of the next week.

Turning my phone back on after getting home only yielded 3 voicemails (2 about one thing, and 1 that wasn’t for me), 100 e-mails (already gone through and finished), and 1 txt message. Not bad.

I’ve still got some time this weekend to get re-acclimated to life outside of vacation. That’s great because my brain is still in vacation mode! Got more stuff going trying to get my business in a better state. We’ll see where it is in 5 months!

So Much For a Post Every Day

I’ve been really busy the past week or so. Leaving on a cruise to Cozumel on Saturday. Woohoo! So everything I’ve been doing is getting ready for this. I’ve still got to pack tomorrow and do a bunch of errands.

So I finally redid my office since my roommate moved out and I’ve been using it more. The old was was… well… see for yourself.

The desk was there when I moved in. It was falling apart. The black drawers I’ve had since my college days. There was pretty much no organization, no room to spread out, and very little room to move around.

Old & Busted. Pleh.

No shelves. Just big, ugly, empty walls. Gag.

New hotness! Woot!

All-in-all I spent less than $800 and the improvement is already having a great effect. I’m way more organized and I actually enjoy working in my office now!

Rsync Backups Using ExaVault

When I started Netoteric, I wanted to do everything “my way” (aka better than everyone else). As altruistic as it sounds, it’s much tougher to do in practice. One of the big things I’ve had an issue with is handling backups. For over a year, we’ve been doing disk-to-disk backups inside our servers. This is great for restoring an accidently deleted file, but if something else crazy happens, we’re SOL. Enter ExaVault.

I found ExaVault while looking for rsync providers online. They do a lot of FTP stuff but they’ve added rsync/Linux Backup with ssh, rsync, and sftp support. Not shabby. All plans come with unlimited bandwidth (with a note that you are required to do incremental backups after the initial first backup). I’m on the 25 GB plan for $15/mo. The sign-up is not instant, but I got my information within a few hours.

Their setup information was a little hard to find. After going through there site though, I was able to find the rsync setup page after going to the Support page. It walks you through creating the SSH keys for public-key authentication and a few simple rsync commands.

So far, they seem fast, and the price is better than other rsync providers as well. I’m going to give them a shot for a while and will post a follow-up later on.

Nifty Tool: PC Tools Password Generator

PC Tool’s Secure Password Generator is a nifty little online password generator. It lets you generate passwords that:

  • Are between 4 – 64 characters long.
  • Have letters, mixed case letters, numbers, and punctation (off by default)
  • No similar letters

It can generate up to 50 passwords at once and can generate phonetic output so you can read it out to someone over the phone. Some uses i’ve found: generating database, service account, and forgettable passwords (like ssh accounts that use keyed authentication). Pretty nifty. And by nifty, I mean frackin’ awesome.

Also, if you’re one of those Windows people, you can even download an executable that has some additional functionality.

Just a few of my favorite Things...


I’m horrible on keeping track of stuff. I’ve lost more crap and misplaced more stuff than anyone I know. For a while, “pulling a Nick” involved having something in your hand one minute, and forgetting where you put it the next. Ladies and gentlemen, yours truly is a changed man. Enter Things from Cultured Code.

Things is, by far, the most used program on my Mac aside from Textmate. If you are a busy person, are just plain forgetful and need a way to manage everything you’ve got going on, then you really have to try it. Give it a couple of weeks. I had to use it for about 3 weeks before it really started to kick in. Combined with Inbox Zero, Things has allowed me to become extremely productive. So productive, in fact, that I find myself visiting Facebook less and having more time. In fact, my office is much cleaner than it has been in the past few months.

My boss has even stopped by to ask me what has happened that has made me so much more efficient. I can’t brag about Things enough!

Try the beta now for free! If you sign up now, you’ll get a discount when the release it this summer. There is also a client out for the iPhone. It’s only $9.99 right now in the App Store, and doesn’t support syncing (although it’s coming soon).

You definitely won’t regret it. Really. No, really.

Druplified Netoteric Site Now Live

As a side note, the new, druplified Netoteric site is now live. The intention was to do a 1-to-1 conversion of the old site (which was just hand-coded… yes I know, tsk tsk). The result was almost a complete pixel-for-pixel duplication of the site. There were some changes made on the newer site: links removed, text changed… but other than that, it’s almost a perfect replication.

Just in case you were wondering, Netoteric is a company I started in January 2007 that builds and hosts websites and software. Now you know… the rest of the story.

Alternating Alignments On Full Node Views With Contemplate

While converting my Netoteric site to Drupal, there was a small problem with the portfolio page. The items in it alternate between left and right. Views Theme Wizard didn’t work. It was time for more desperate measures.

I added a function in my custom template file, which created an index number and assigned it to a node member.

/**
 * Display the nodes of a view as plain nodes.
 */
function theme_views_view_nodes_portfolio($view, $nodes, $type, $teasers = false, $links = true) {
	$i=0;
  foreach ($nodes as $n) {
    $node = node_load($n->nid);
		$node->__views_index_number = $i++;
    $output .= node_view($node, $teasers, false, $links);
  }
  return $output;
}

theme_views_view_nodes_portfolio overrides the Views default theme function, but only for the portfolio view.

Then inside the contemplate body template I just added a modulo function to alternate between left and right:

<div 
class="thumbnail <?=($node->__views_index_number % 2 ? ‘right’:‘left’)?>">

And voila! Now the images alternate between left and right…

Fixing a Quiet Volume Problem on the iPhone Speakerphone

Yet another design flaw in the iPhone. The speakerphone worked great for a long time. Then one day, it got so quiet I couldn’t use it anymore. I tried a volume hack when it was jail-broken but to no success. My problem wasn’t a bad speaker, it was the iPhone equivalent of ear-wax.

While pocket lint is nothing more than a nuisance for you and me, to the iPhone, it’s kryptonite. The phone has little holes on the bottom so sounds can go through. And you know what? Those little holes eat pocket lint for breakfast, lunch, and dinner.


The little holes in question.

Only the holes on the left (if you are holding the phone during regular usage) are utilized when playing music or using the speakerphone. Take a peek down there. Do you see any white, gray, or anything in those holes? If yes, please read on. If not, then I can’t help you. Move along.

Now, I have to warn you that if you do this too hard you can damage your phone and/or void your warranty. But, you probably don’t care, do you? I didn’t think so. So go grab your handy-dandy iPhone speaker-hole cleaner. Don’t have one? Just use a bulletin board stick-pin.


It’s hard to see, but it’s slightly bent at the end. Perfect!

Just gently fish it around in each hole. It should come out with a little time. Be patient. Push too hard and you could damage your speaker. That would suck. I blew a little in mine and a bunch of junk came out. A couple minutes later, the speakerphone was working great again. Hope this helps you!

New Snail Mail SPAM Tactic: Seek & Destroy

So in my weekly ritual of going through mail and shredding everything not of interest… my shredder choked pretty badly. Reverse. Forward. Still stuck. Pulled gently. Wouldn’t budge. Pulled harder. Used two hands. Finally it came out. Turned shredder back on. Still stuck.

What the hell?

After 5 minutes, a screwdriver, and some needle-nose pliers, I finally found the culprit:

One of the auto dealerships had put a key in an envelope. My guess is that in an effort to stop the spamicide of their mailing, they tried to take my shredder out ninja style.

Luckily, my shredder-fu is much greater than their spam-fu. After removal, the shredder kept devouring without a hitch.

Building a Website with Drupal: A Methodology

“How do I build X with Drupal?" I’ve received the question a few times… over the past few weeks as my friends and colleagues have been persuaded to give Drupal? a shot.
But there is still one question that remains. Once you get past that initial step of getting your feet wet, you want more… and how do you get it? Here is a guide.

Step 1: Ask yourself “What am I really trying to achieve?”

Don’t limit yourself by what you know. Write down what you really want your site to do and have. Make a list, but keep it general — don’t write down any specifics. Drupal is extremely powerful and flexible, but unless you can write PHP, it’s easy to forget that you’ve got to play by the rules and use what is already available in order to get the most out of it.

Step 2: Find out the “Drupal” way of solving your problems

This is probably the toughest task you’ll have in your endeavor. In this step, you’ll take the list of wants from Step 1 and find a module (or combination of modules) to make your ideas work in Drupal. There are a couple of ways you can go about this. One might work for you, but it’ll usually take combination to get your list taken care of.

  1. Head over to drupal.org Modules Page and start your search. Modules are arranged by category. If you create an account and login, you can filter by the version you are using.
  2. Just search Google for a rough idea of what you want. drupal.org is indexed very well and not only will it return module search results, but forum posts and handbook pages that might have exactly what you need.
  3. Check out the Drupal showcase. There might be a site that has already done what you want and you can benefit from their experience.
  4. Post in the forums. There are sections for Post Installation and Converting to Drupal where you can ask your questions, post scenarios. Be nice, though.

Some modules that can really solve a whole blanket of problems easily are:

  1. CCK – The Content Construction Kit allows you create and customize fields using a web browser. Custom content types can be created in core, and CCK allows you to add custom fields to any content type.
  2. Views – The views module provides a flexible method for Drupal site designers to control how lists of content (nodes) are presented. Traditionally, Drupal has hard-coded most of this, particularly in how taxonomy and tracker lists are formatted.
  3. Content Templates – This module was written to solve a need with the Content Construction Kit (CCK), where it had a tendency toward outputting content in a not-very-pretty way. And as such, it dovetails nicely with CCK, adding a “template” tab to CCK content-type editing pages and pre-populating the templates with CCK’s default layout. This makes it easy to rearrange fields, output different fields for teaser and body, remove the field title headers, etc.

Step 3: Have fun and play around

Install your modules, give it all a shot, and be patient. Drupal has a learning curve, but it’s well worth it if you play around with it and try not to rush. It’s tough to approach it with that frame of mind if you’ve got a site you “just want built” and don’t have the time (or the patience) to sit down and play around with it. There is a wealth of resources out of there on the intertubes. You just have to look for it.

There is a lot that can be achieved with what is out there now. It’s all about finding the right modules and implementing them correctly. You can build some pretty interesting sites without even touching a single line of PHP.

Step 4: Write a module

If you just can’t find the solution to a particular problem (or, more likely, the exact implementation of a solution, you’ll need a module. Modules in drupal are tough to start off. The API for drupal is pretty big. There may already be a hook that does what you need.

At any rate, there are some problems that can only be solved with a module. Also, there are some problems that can only be solved by patching drupal core. I don’t recommend the latter, because it can create problems down the road with upgrading. In general, you may want to explore a trade-off or look at another way to solve the problem if it involves making a change to the drupal core.

Drupal core, by the way, is anything that comes with a default installation of a downloaded drupal source tarball. There are reasons why certain things aren’t in core. Keep this in mind.

Writing about module development tactics could take up another post, so we’ll just leave Step 4 where it is.

I hope you found this post useful.


Theme & Icons by N.Design Studio
© 2008 Nicholas Vahalik
Syndicate content