Ever since I watched this year’s MacWorld keynote, I (like most geeks) was completely captivated by the iPhone and its apparent endless feature set. However, the one “why hasn’t anyone done that yet?” feature that stuck out for me was visual voicemail. I couldn’t believe that I hadn’t even thought of it. For some reason, for years now, cell phone companies have totally disregarded and overlooked how rediculously difficult it is to perform a simple task like checking your messages. Well friends, I have a solution. Not only does it solve the problem and allow you to have visual voicemail right now, it also works with any carrier. It is called CallWave. And I’m here to tell you that it is awesome. I’ll save you some trouble and paste in their about me and feature set right here:
CallWave Visual Voicemail enables you to manage your mobile phone messages on your desktop. And it comes in two, easy-to-use flavors that are free and work with virtually any cell phone and network, on a PC or a Mac. Keep your same number, carrier, and phone. Which Visual Voicemail are you?
- Sends copies of your messages to your email in-box, which you can play, pause, replay, save or delete as you wish.
- Gives your powerful text reply and call back features details.
- Automatically creates a PC-based contact list.
- Notifies you of new message via a detailed SMS text that’s sent to your handset
There is also a widget (all flavors) that will list out your voicemails and missed calls in a “very familiar” fashion.
Quit wasting your time reading my rantings and go signup for CallWave right now!
Sign-up For CallWave Visual VoiceMail!
Whenever I’m coding a site, I spend a lot of time in the DOM. For some odd reason, I tend look up the built-in JavaScript methods the most. For instance, I can never remember the parentNode method name. Lucky for me, I don’t have to anymore thanks to to Prototype. As of v1.5.0_rc1, Prototype has added some connivance methods for navigating the DOM.
These methods include things such as: ancestors, descendants, up, down, next, previous, previousSiblings, nextSiblings, and siblings.
Here is example markup we will be working with:
<div id="app">
<ul id="nav">
<li id="main"><a href="/main.html">main</a></li>
<li id="articles"><a href="/articles.html">articles</a></li>
<li id="examples"><a href="/examples.html">examples</a></li>
</ul>
<div id="content">
. . . content . . .
</div>
</div>
In the interest of time and text, I’m not going to cover how to update the content div element using AJAX. But, in order to show a trivial use of the DOM methods in Prototype, I will demonstrate how the to add classes to the markup when the user clicks on different links.
We are going to do this all unobtrusively. We’re going to start by attaching ‘onclick’ events to the anchor tags.
function attachOnclicks(event) {
$('nav').descendants().each(function(element) {
if(element.tagName == "A") {
Event.observe(element, "click", navOnclick, false);
}
});
}
Event.observe(window, "load", attachOnclicks, false);
The Event.observe call, works like this: observe the window object for load Events and when a load event occurs call attachOnclicks. You can pretty much ignore the ‘false’ at the end of method call, it has to do with event bubbling, and (as of yet) it isn’t supported that well across browsers.
Once the page has loaded, the ‘attachOnclicks’ method gets called. ‘attachOnclicks’ gets the element with an id of ‘nav’, which is the ul tag. It then calls one of those special DOM methods, descendants. The descendants call returns all children, recursively, of the ul element. It then enumerates over each descendant to find the anchor tags. There is then another Event.observe call, that gets triggered 3 times (once for each anchor). This catches all click events on the anchor tag and calls the ‘navOnclick’ function when it receives them.
function navOnclick(event) {
Event.stop(event);
var clickedLink = Event.element(event);
var clickedLi = clickedLink.up();
clickedLi.siblings().each(function(sibling) {
sibling.removeClassName("active");
});
clickedLi.addClassName("active");
}
And finally we have the ‘navOnclick’ function. navOnclick takes an argument of event that is passed in by the browser when it gets a click event (you don’t need to do anything, this happens automatically). The first line stops the browser from navigating to the anchor the user clicked. The second line figures out which link the user clicked. It does this by calling the prototype function Event.element, it takes an event as a parameter that you provide. Luckily, you can just pass in the event that you received from the browser.
Then we get to use another DOM method, up. The call to up returns the li tag that surrounds the clicked link. Once we have the li tag a quick enumeration over the siblings removes the “active” css class from all of the other li tags.
Finally, we add the active css class to the clicked li tag. This gives you the ability to style #ul li.active to look different from the other li tags, showing the user which page they are viewing. This post ended up being a how-to of events just as much as DOM walking, but that’s okay, since it does show some of the power of these newer DOM methods.
So by now I’m sure anyone reading here knows I’m a HUGE fan of all things AJAX. That being said the true love I have is for those who use it to make their sites/apps have that extra special touch. Digg Spy is a great example of this.
For those of you who may not know, Digg Spy, is a real-time view of any/all actions that occur throughout Digg. Examples of actions are story submissions, diggs, comments, and reporting of stories. In Digg Spy, these actions are displayed in a list that refreshes itself every few seconds, thus allowing the user to see an overview of everything happening in real-time Digg.
Here we’re going to look inside and explain the inner workings of Digg Spy. Starting by looking at what’s going on behind the scenes, then infering and designing a probable database schema, and the come up with a possible implementation of the server-side and client-side code needed to create something similar.
We’re going to focus on JavaScript, thus concentrating on the client-side portion of the application, and leave the back-end portion for a future article. Keep reading for the tutorial.
AJAX. It is an awesome technology ushering in a whole new generation of web applications like Google maps, Backpack and others. But AJAX can also be a very dangerous technology for those who use it improperly.
For this reason, I’ve compiled a list of the many common mistakes developers using AJAX sometimes make. Javascript itself is sort of a ‘clunky’ and dangerous interface technology, but I tried my best to keep this list centered on AJAX techniques. Keep reading for the list.
Every now and then I see people using some pretty silly css code. That’s why I decided to put together this little collection of tips for people who could probably use some advice on how to use css the proper way. This is by no means definitive or complete. It is also surely not perfect, but its how I like to do it. Continue reading for the tips.
I just can’t sit here and stay quiet about this any more. I’ve been reading around the interweb about Fox News a lot lately, and what I’ve discovered, may shock and not surprise you. Check out this page on The Huffington Post. It clearly depicts a Fox News INTERNAL memo stating:
“Be On The Lookout For Any Statements From The Iraqi Insurgents…Thrilled At The Prospect Of A Dem Controlled Congress”…
The sad part about this is not the obvious one, its the fact that this shows one of two things. Either A.) Fox News actually believes the extremist, right-wing propaganda that they spew out every day, or B.) they understand exactly what their doing and playing to the hype of the “old-folks” and traditionalist mindsets that are holding our country back. I know this is a tech blog, and I know this post is still heavily biased, but even the most conservative of minds can understand that this memo was written for a specific purpose. It is also (one can assume) one of dozens sent out every week. I don’t know the answer, but the question is simple: When are we going to wake up, see things for what they really are, and discover the truth?
I have a new favorite company. ColorwarePC is amazing. They’ve also recently announced support for the Sidekick 3. For those not in the know, Colorware has long been known for their stunning paint jobs on many consumer electronics. The process is simple, you place an order on their site (designing how you’d like your device to look) and then you pay a fee and send you device off for a few days and when you get it back, it’s got a geeky facelift. I’ve always wanted to try their services but have never had the courage to send my powerbook off to a bunch of strangers with screwdrivers. But now that they offer coloring of Sidekick 3’s I think I just may have to bite the bullet and give it a try. Here’s what I’m going for:
Wow. I never would have guessed that posting links to mp3 files on my website would be such a bad idea. I just discovered I was basically wasting about 5 GB’s of bandwidth a day. The culprit? Crazy little hot-linking teenagers. I just checked my logs (for the first time in way too long) and found a bunch of referrals from flash song players being used on about 300 myspace profiles as well as other such sites. Needless to say the files have been deleted and will be re-uploaded at a later date once I figure out a way to protect against this. I’m sure its an easy fix, but I’m lazy. Anyways, if you’ve got any good suggestions on how to shield myself from this, let me know.
The moral? Seriously, if you find something on the web, and its not yours, ASK! The internet is all about freedom of information and bringing control back to the people, but it is also about community, and just like the word implies community comes from communication. Wow that was cheesy. Ok, (*tries to save myself from a full house moment*) don’t f’ing steal my songs you little bastards :)
Ok, so this Myspace thing. Its pretty popular. The kids, they love it. The adults, they want to be the kids so they love it. But what about those people who hold a special place in all our hearts? There’s quite of few of us out there who would love to get a deeper view into the private lives of our favorite celebrities. Its for this reason, that I’ve created this listing of “Celebrity Myspace Pages.” Feel free to fact check me on what I have so far. And of course, if you have anyone to add to the list go ahead and post the name and link in the comments of this post and I’ll give it a look and go ahead and add it on. Alright kids, lurk away. [Just please don’t harass anyone, and if you do, don’t mention my name ;)]
Link: [ Celebrity Myspace Pages ]
So I’m about to install Windows Vista for the first time in the long history of betas. I’ve been following the release cycle closely, but I honestly haven’t cared enough until now to give it a try. I’ve been living in OS X Heaven for the past few months. I do all of my work there and have become very productive. The main point of me even trying Vista is to see if Microsoft has fixed any of the problems that I’ve been complaining about for some years now. I’ll be updating this post with screen shots and my thoughts and musings on the process.
UPDATE: 1 Hour Later
After A LOT of unrar-ing trouble I’ve got a usable Vista RTM iso. I’ve got it copied safe and sound on my old xp machine. I’ve created a virtual machine inside Parallels Desktop on my iMac. I’ve booted up and begun the install (So far so good).
Update: 2 Hours Later
UP AND RUNNING! I’m updating this post from within Windows Vista. Now I must saym there’s been quite a few changes. And although my emulated environment doesn’t support all the “Aero” bells and whistles as it probably should, I’m actually a bit impressed with the new organization. At least they’re trying something different. Will post more as I discover it.
Search Blog |
||||
Latest Photos on Flickr |
||||







