Main

August 5, 2011

Just launched: Keep Track of My Games | Posted at 12:12 AM

I just launched a new website, Keep Track of My Games.

homepage.PNG

It lets you add almost any game you want to a list where you can organize and track unreleased games. The app will email or TXT you when a game's release date changes, when it's released, or when it's about to be released.

February 23, 2009

How To: Get Hotmail on Outlook/Thunderbird | Posted at 3:21 PM

smtp-settings

Recently the Windows Live team enabled POP email access for all Hotmail (Live Mail)-based accounts. I found a great resource for how to add your accounts to Outlook (and with Thunderbird it's pretty much the same).

What are Windows Live Hotmail's POP3 and SMTP Settings?

In Thunderbird, for incoming you choose POP. For outgoing (SMTP), you need to add it in the Outgoing Server account and instead of SSL, choose TLS with a port 25. Type in your username as well.

Yes, it works with Hotmail-based accounts too, like my Student Partners email address.

[via Ask Leo]

February 6, 2009

New Intrepid Studios Website [3, 2, 1 Launch!] | Posted at 4:00 PM

Intrepid Studios Screenshot

Last week I released my new Intrepid Studios website. I've fixed a lot of the bugs that were causing problems and I am constantly working on it to improve it.

I have a new vision for my studio site, where it will serve as a resource and content site instead of only a "look at my designs!" site.

You will see a lot more articles, tutorials, walkthroughs, screen casts, et al showing up on the site, I am pretty excited.

You can read more on the launch post.

January 13, 2009

Lightweight Rich-Text Editor [jQuery] | Posted at 11:49 PM

jQuery Lightweight Rich Text Editor for ASP.NET

Thank you to Batiste Bieler for the original script, jQuery Rich Text Editor Lightweight.

I heavily modified it to support ASP.NET forms (and their funny client IDs) and to work a bit more efficiently. It’s tested with PHP and .NET both. It should work with any kind of form.

Visit the jQuery Rich Text Editor project page for details.


                              
                              
                           

January 10, 2009

How To: Programmatically Add Nodes to the SiteMap For Your .NET Site [Tips & Tricks] | Posted at 6:23 PM

Problem

The Web.sitemap file stores only static URLs, so if you have a page like this:

http://yoursite.com/news.aspx?view=4

Your sitemap breadcrumb will not reflect the fact that you are viewing a an actual news item. If you're like me, you also reflect the breadcrumb in the title of your page. So instead of seeing:

Breadcrumb: Home > News > A headline!
Title: A headline! : News : My Site

You see:

Home > News
News : My Site

Read on for how to solve it.

Continue reading "How To: Programmatically Add Nodes to the SiteMap For Your .NET Site [Tips & Tricks]" »

January 5, 2009

Use CSS to Create a Dynamic Sidebar, with a Fixed Element [Tips & Tricks] | Posted at 11:24 AM

CSS Sidebar Normal

I am working on my new Intrepid Studios website and I came up against a CSS wall. I needed a sidebar that had a "main image" for a design and then list extra images or extra information. However, I wanted it to look cool, so I wanted the image to overlap the header and always appear in the same place.

I needed the design to follow these guidelines:

  • The photo must always appear in the same place no matter the height of the header. Sometimes there is no photo.
  • Sidebar content must always appear below the header.
  • The header has a variable height, so it should push the sidebar content down if it's larger than the photo.
  • I want the sidebar content to come after the body content in the HTML, because it's extra information.

Read on fair reader, to see how I solved my problem

Continue reading "Use CSS to Create a Dynamic Sidebar, with a Fixed Element [Tips & Tricks]" »

January 1, 2009

WEB 1001 and WEB 1002, Introduction to Web Design [Webinars] | Posted at 11:48 AM

I've made available my old seminar reference sites here:

http://intrepidstudios.com/tutorials/WEB%201001/

http://intrepidstudios.com/tutorials/WEB%201002/

I made them awhile back when I gave two seminars to my high school program that I was in, the Lighthouse Program. It was for gifted and talented students, so the material was geared toward a younger audience which is apparent in the slides. You won't find much high-level web design thoughts, but it is a good primer on getting into web design if you're interested.

December 19, 2008

Oh My God, Browsing the World in 3D [Google Earth] | Posted at 12:05 PM

Minneapolis in Google Earth, 3D Buildings

(Not a photo. Click for larger. Source: Google Earth)

So I read a little post about the new Google Earth update and how NYC is in 3D.

I decided to download Earth and look at Minneapolis (see above). So. Awesome.

To enable 3D buildings, just check "3D Buildings" in the sidebar. Then hold down right-mouse button and zoom in. Once you're in far enough, the view still start to tilt and the buildings will take on depth.

It is SO COOL to just fly around the city, I was looking at the U of MN campus and I recognized all the buildings instantly. I was half expecting to see little people moving around. I think they should add that, just for fun!

Welcome to SimWorld.

December 13, 2008

SurveyMonkey Broken in Firefox 3 on Windows XP | Posted at 1:13 PM

It seems as though SurveyMonkey is not working properly in Firefox 3 using Windows XP. I used it fine on OSX Firefox 3, but two machines using Windows XP are unable to use the site because it seems to be missing some .NET scripts that enable post backs. The JavaScript console asserts that __dopostback is undefined. Strangely, it works in Windows Vista.

Hopefully they'll get this sorted out, it's ironic that I can't contact them because I need those scripts in order to use their forms.

This is why I make sure to design in a way that does not require Javascript to use the site's major functions. Like logging in and reporting bugs.

In the meantime, IE and Opera work.

December 9, 2008

Review: Where Wizards Stay Up Late by Katie Hafner | Posted at 7:39 PM

Where Wizards Stay Up Late Ever wonder what that little "@" sign means in your email? What about why we put "www" before we visit a website? How about the origin of email itself? Look no further than Katie Hafner's Where Wizards Stay Up Late: The origins of the Internet. In it, Katie and co-author Mathew Lyon outline the origin of the Internet from concept to implementation, from the very first networked terminals in ARPA to the modern TCP/IP-driven Internet we know and [mostly] love.

This is not so much a book of the technical underpinnings of the Internet, though there is much of that, so much as it is about the people who did it all. Let it be known that I love technology, I live for it. What amazed me while reading this book was the people who were involved that no one except people knee-deep in computer science/networking talk about. Take J.C.R. Licklider, a prominent psychologist turned computer enthusiast. He was put in charge of ARPA (the Advanced Research Projects Agency department), a strange choice considering he was a behavioral psychologist. However, without him we may not have had the Internet as we see it now. The ARPANET was the predecessor to the Internet and without ARPA and Licklider's passion for keeping the department alive there would not have been an ARPANET. The book says it best:

"Lick's thoughts about the role computers could play in people's lives hit a crescendo in 1960 with the publication of his seminal paper "Man-Computer Symbiosis." […] In the moment Licklider published the paper, his reputation as a computer scientist was fixed forever. He shed the mantle of psychology and took on computing. There was no turning him back." (pp. 34-35)

To think a former psychologist would be the one are the forefront of computing, it was amazing even back then.

There were other fascinating facts that I had never read about before contained in the book. For example, people keep citing the development of ARPANET was a way to protect national security after a nuclear attack. In fact, my IT Infrastructure teacher cited this reason! I didn't know better until I read this book. Bob Taylor, one of the former heads of ARPA and the starter of ARPANET, has tried his best to distill this common myth, having known "the project embodied the most peaceful intentions—to link computers at scientific laboratories across the country so that researchers might share computer resources" (p. 10).

Later in ARPANET's life, there are still surprises to be had. Will Crowther, who I had never heard of, developed a game called Adventure for ARPANET. It was a cave exploring game, it even had graphics, and "was a simplified, computer version of Dungeons and Dragons" (p. 206). When Crowther, dispirited by a recent divorce, ceased development of the game and left it on a BBN computer, Don Woods, a graduate student at Stanford heard about the game and downloaded it from there. He got the source code from Crowther and fixed it up, adding new features and ridding it of bugs. He created a guest account for people to login to the Stanford computer to play it and it was a huge hit. Myself being a gamer, this little tidbit of fact was especially fun to read.

Reading Where Wizards Stay up Late is definitely not a chore. I definitely recommend picking this one up, you won't be disappointed. It's a joy to read, both for the interesting historical anecdotes along with the conversational and engaging storytelling nature of the narrative. It is definitely not a vanilla history book but rather is a deep and fascinating read about the lives of those who spent nights upon nights building us one of the most valuable tools in human history: the Internet.

Review: The Art of Deception by Kevin Mitnick | Posted at 6:39 PM

Art of Deception

When you think of a hacker, what comes to mind? A scruffy man sitting in his parent's basement, the constant whirring of servers and computers in the background, staring at all three of their computer monitors, Moutain Dew cans strewn about, typing away madly while streams of code scroll madly down one of the screens? At some level, that may hold true but in the case of social engineers, that is, the craft of conning persons into divulging sensitive or seemingly innocuous information, a different impression should be formed. By their very nature, social engineers are friendly, helpful, clean cut, and have a very good way of making you trust them. That's the other kind of hacker, the kind, it could be argued, that is more dangerous.

This is the mind of the person we are privileged to enter through Kevin D. Mitnick's recent book, The Art of Deception: Controlling the Human Element of Security. Mitnick, one of the more famous, or perhaps infamous, social engineers of our time shares his secrets about how the mind of a social engineer works and how they ply their trade.

Mitnick discusses two ways of formulating a social engineering attack: from the outside and from the inside. By that, he means that you can either use the telephone or actually entering the premises. He cites several techniques a social engineer uses to compromise a victim including directly asking the question, building trust, causing a problem then fixing it, reverse social engineering, email attachments/phishing scams, and a "reverse sting" or causing the victim to ask the attacker for help. A social engineer uses psychological methods to appeal to people's specific emotions like guilt, empathy, and trust.

What I most found interesting in this book was the way Mitnick explained the techniques and methods. Instead of outlining how to attack, he created fictional (but based on real attacks) stories that are from both the attacker's perspective and the victim's perspective. I found that these really helped me understand how social engineering worked, along with his definitions and "Mitnick Messages" peppered throughout. Sometimes, however, I felt that he used too many anecdotes when instead he could have explained more about the background of the attacks. There was minimal use of actual, non-fictional stories to illustrate his points which I think would have increased the impact of these stories. Despite these shortcomings, the stories are very illustrative and thought out, often raising your curiosity as to how these types of attacks can actually succeed. Indeed, there are many stories that will tickle your spine as you realize how vulnerable these large corporations really are.

Mitnick doesn't only provide all the different kinds of problems and attacks your company is susceptible to, he also outlines an entire policy to combat the weaknesses in your human element of security. However, no amount of security policy will ever protect you from all social engineering attacks, as Mitnick warns, "unless everyone in the enterprise understands that security is important and makes it his or her business to know and adhere to a company's security policies, social engineering attacks will always be a grave risk to the enterprise," (p. 259). Even so, there are important ways you can minimize risk from attacks. Some of these include:

  • Classifying your data effectively such as Confidential, Private, and Internal.
  • Extensive and detailed verification and authorization procedures
  • Management policies aimed at executives and management-level employees

There is an entire chapter dedicated to a large and extensive security policy.

While social engineering may not have been something you've heard of, after reading Mitnick's book it is apparent that this is a serious consideration in any organization's policy. Chances are you have been victim of a social engineering attack, I know I have. One time, a solicitor who came to our house was so friendly and convincing that I went out of my way to donate money to his cause in exchange for a magazine subscription. Needless to say, I never got one. If I had read The Art of Deception before that con-man had manipulated me, I might have been smart enough to catch his lie. Don't get caught like I did, do yourself a favor and buy this book, or you may end up losing far more than $20.

December 6, 2008

Sample: Using A Strongly Typed Data Source in .NET [Exercise] | Posted at 1:40 PM

From my IDSC 3102: Intermediate Programming class, here is the second program we had to complete. It was a simple Database connection project, but I used and played with a strongly typed dataset.

Screenshot

What It Is

A grading program that allows you to input grades for a select number of students, save changes to the DB, and view a semester report. The report should show a list of students and their cumulative semester average calculated using a specific formula. It should also display a "printable list" for your students to view their grades, showing only the last 4 digits of their SSN.

What You Will Learn

  • How to set up and utilize a typed DataSource (DataSet.xsd)
  • Dynamically save any changes from a DataGridView to its underlying Datasource
  • Validate and prevent data entry errors
  • Set up a Mask (i.e. ***-**-1234 for a social security number) for a  column on a DataGridView control

Download Source

Download zip (165KB)

October 24, 2008

Lala.com – All Sorts of Awesome [Music] | Posted at 2:27 PM

If you don't know about Lala, you're missing out. I heard about it on Buzz Out Loud and decided to give it a try, it's awesome.

Basically, there are several things you can do:

  • You can buy albums/songs as "streaming only" versions for only 10 cents. Albums cost 80 cents.
  • You can buy the MP3 for 89 cents. If you bought the web only version, then it's only 79 cents to upgrade.
  • You can listen to any album or song the first time for free.
  • You can match your collection to Lala's and access your collection online anytime, anywhere for free.
  • Oh yah, it's DRM free.

I think what really makes Lala great is the ability to listen to any song or album you want for free the first time. This really does it for me since I like to listen to all sorts of artists but Amazon/iTunes/everywhere only has 30 second previews which are useless. With Lala, I can listen to the whole album before buying. The quality is also great, I'd guess 128kbps.

The other thing that makes Lala awesome is the ability to buy web only versions of the song. This is great because it's cheaper at the expense of not being able to put it on my MP3 player.

Of course, if you buy the web songs… you have to hope that Lala stays in business to keep your songs. I would assume that if it happened that they had to close, they'd refund your songs.

Shoutout to WebHostingSearch.com [Friends] | Posted at 2:15 PM

I want to thank Eva from WebHostingSearch for letting me be added to their site, WebHostingSearch.com. Check out the site for a running list of design and hosting companies around the nation.

On that note, I am getting ever so closer to releasing my brand new Intrepid Studios site. It's looking good so far. I'll post a preview soon.

October 6, 2008

How To: Get $10,000 Worth of Stuff [Digital Dorm Room] | Posted at 6:16 PM

Want lots of free stuff? Want $10,000 worth of free stuff?

Head on over to my other blog to learn more. Or just enter the damn sweepstakes. Be sure to give me credit and choose U of MN Twin Cities. Please?

September 29, 2008

UMN MSP Blog [Wired] | Posted at 9:46 PM

I've created a separate blog using Windows Live Spaces. All it really means is that I will be posting exclusively on Microsoft stuff on that blog rather than filling this one up. I'd rather push people to a more official blog so they can check that for updates.

In other news I have an official email:

kamran.ayub [AT] student-partners [DOT] com

Content to look forward to:

  • Windows Live Writer review
  • Windows Live Mesh preview
  • Windows Live SkyDrive preview
  • Windows Live Workspaces preview
  • HP 2710p Tablet Review
  • Zune 8GB Review
  • Information about Zune Social/DDR Sweepstakes
  • Upcoming events I'll be hosting

Oh, I will have a busy October.

New Facebook Page [Being More Social] | Posted at 10:33 AM

image

I've created a new Facebook Page for Microsoft Student Partners at my University. I'll be using it to promote events, contests, reviews, etc.

Later this week I'll be creating profiles on MySpace and YouTube as well, so look out for that.

If you're reading this, make sure to become a fan!

August 26, 2008

Watch Hulu On Your TV [Awesome] | Posted at 10:12 AM

I use a little program called TVersity to stream my music, videos, and pictures to my Xbox 360. Once I discovered Hulu, I wished TVersity supported it. Alas it was not to be.

Enter PlayOn. PlayOn is still in beta but it works! It will stream YouTube, CBS, Hulu, and ESPN to your console (PS3 and Xbox). Unfortunately, just glancing around I didn’t find any full episodes from CBS.

I tested it out and I watched The Daily Show and a handful of YouTube videos (TVersity supports YT as well).

Once they add a few more networks so I can watch Lost in HD, we’ll be golden. NetFlix support will be redundant for 360 considering the Fall update but for PS3 users that might be some good news.

There is a 30-day trial and after it expires you can pay $30 to activate it. If you ask me that’s well worth the price if you’re like me and don’t have cable and don’t want to watch TV on your monitor.

Thanks Penny Arcade!

August 22, 2008

Movable Type 4.2 Released – UThink Still Behind | Posted at 11:20 AM

On the 13th, SixApart released the newest version of MovableType (this blogging platform), version 4.2.

UThink, this blog provider, is still using the (very) old 3.33 version. It’s unfortunate because UThink is such a great blogging provider considering its awesome Google ranking and SEO. That’s why I didn’t just create a "DivideByZero-Blog.com,"? and instead used UThink.

I’ve talked to Shane, the head honcho of UThink, about upgrading before. He basically said it will be done at some point and back when I first asked, he said not to expect it until Fall. It’s fall! I hope we’ll see some new version soon… I really want to use the sweet plug-ins MT 4+offers like Activity Stream and Related Entries.

Well, here’s hoping for the best!

Amazon Daily Deal and Friday 5 for 5 [Aphex Twin] | Posted at 10:48 AM

Today’s MP3 deal is Aphex Twin’s Classics. I don’t own any Aphex and $2 for a compilation definitely isn’t bad.

image

Aphex Twin – Classics

Today’s Five for Five deal is also worth checking out. The nicest deal is the Beach Boys’ Songs of Summer, an compilation with over 30 songs for only $5. It was an immediate buy, for a fan of classic rock.

image image image image image

Also up for grabs is Beastie Boys, Weezer, Fleet Foxes, and Pink Martini.

[via Amazon MP3]

August 20, 2008

Fix: Suckerfish IE7 Disappear/Sticky Bug [Yay!] | Posted at 11:50 PM

After searching Google and reading comments, I could not find a solution to a problem I had while using the Sons of Suckerfish drop-down menu.

My problem was not only that the drop down stuck when you clicked somewhere first, but also the drop down would disappear when I got past a certain point (probably the height of the containing <li>).

Here’s how I fixed it:

ul#nav li:hover div, ul#nav li.over div

{

    left:0;

    zoom:1; /* fix ie7 disappear */

}

ul#nav li:hover, ul#nav li.over

{

    height:auto; /* fix ie7 sticky */

}


Note that I have a containing <div> within the <li> element. That is because my drop-downs are a bit more customized with headings, background, etc. Just change "div"? to "ul"? if you just have a <ul> inside the <li>. Note I also use "left:0"? because the containing list element aligns text to the center, so an auto left margin centers the drop down which isn’t what I want.

Thanks to css-class.com for their list of fixes. This works in all browsers I own.

Tested in: Firefox 2+, IE6+, Safari 3, and Opera 9

How To: Read RSS/Atom Feed Using .NET and the XmlDataSource With Or Without Namespaces [Coding] | Posted at 12:43 PM

Today I was working on my site and I wanted to show some recent blog entries on the side. Used to PHP I was looking for an RSS reader I could use. I found one but it didn’t quite work with what I needed.

Stupidly, I realized that all the things I needed were right there!

Hit the jump for all the details!

Continue reading "How To: Read RSS/Atom Feed Using .NET and the XmlDataSource With Or Without Namespaces [Coding]" »

August 18, 2008

New Design: Homecoming 2008 [UMN] | Posted at 2:47 PM

Today we made the new Homecoming 2008 website live on SUA.

homecoming08

This year the folks in charge of homecoming wanted a very reusable template that would stay the same for homecomings to come. Since we had been used to doing custom templates for all previous homecomings, designing it was a bit of a challenge. I wanted to have a template that would be true to UMN style and homage but also be able to reflect the yearly theme.

My first design was this one:

homecoming08_old

It looked pretty cool. But, of course, it was very highly driven by the theme and it didn’t leave much up to interpretation.

The new design still looks really good and I’m happy with it. Everyone else seems to be happy with it as well.

One of my favorite things about the site is the sweet countdown clock. I used a JavaScript snippet from JavaScript Source to do it.

August 14, 2008

Today’s Woot: 32” Westinghouse LCD TV - $400 | Posted at 12:43 PM

image

Grab it while you can. My girlfriend just bought a 22? LCD for $375, we should have waited to see what Woot had to offer, now I feel stupid.

Also on Sellout.Woot there’s a Sharp 37? 720p LCD TV for a mere $700. If it was 1080p I’d get it, but right now I have my sights set on a Toshiba 37?.

August 12, 2008

10 Tips for Speeding Up Your Web Designing [Tips & Tricks] | Posted at 9:55 PM

homeless-coder Recently on Digg an article was posted on some tips for saving time with your web design. Although it’s just a personal list, I thought that some tips could have been better and so I offer my own little list. I won’t bother rehashing the good tips the author posted, just adding to it.

This list isn’t comprehensive nor is it a detailed breakdown of each idea. It’s meant to be an overview and a jumping off point, not a How To article. These are the methods I employ and they serve me well!

1. Drop Down Menus: I use a simple tutorial from A List Apart on creating a CSS-only dropdown menu, called Suckerfish. Using a simple <ul> with no style tags and one or two classes, you can build a functional drop down in minutes, and not have to worry about styling someone else’s possibly inept code. This is also standards-compliant whilst also being the best choice for navigation in general due to degradability.

2. Make Reusable Stylesheets: Anything relating to style, positioning, and layout can be done using CSS and should only be done using CSS with a few minor exceptions. A great thing I’ve learned is to create small, cross-site CSS that can just be copy/pasted to a new website you’re working on. For example, I have a “base.css? that I use in every site I create that can be copied to another and then be done by changing a few values like fonts.

3. Image Capturing: If you’re on a Mac, use the all-powerful Apple + Shift + 4. This lets you drag an area rectangle and capture anything on-screen. It is saved natively as a PNG and just drag it onto Photoshop to manipulate it. Easy as pie!

If you need to edit a lot of pictures, I use Picasa to adjust filenames or color in photos. See my previous experience batch editing and scanning lots of photos.

4. Use FTP Software to Edit Files: This mostly applies to Mac, but there must be a good power combo on PC that I’ve yet to use. This tip could be substituted for “Use the software that fits the purpose.? On my Mac at work my power combo is the following programs:

  • TextMate
  • Transmit
  • Photoshop

With only those 3 programs open, I can pretty much create and work on a website quickly and efficiently. Recently I had to create a <select> box with all the majors offered at my University. The list was long. However, I did it in literally 30 seconds using some simple keyboard shortcuts. On this page, hold Apple (Mac)/Ctrl (PC) down within Firefox 3 and drag your cursor over each table cell containing the major.

Copy/paste into TextMate and it will paste in plaintext. Then highlight all the lines, hit Apple + Ctrl + Shift + W and type “option? to wrap each line in a specific tag. All done!

Additionally, TextMate allows you to instantly save a file directly onto the webserver without any annoying extra clicking. Transmit has many useful functions including duplicating files, tabs, and very quick batch uploading. Double-click a file and it will open in TextMate, if you specified an external editor.

5. Better Multi-Browser Testing: Setup some Virtual Machines to test different browsers, or just install Multiple IE and be done with it considering most problems occur in IE if you code for Mozilla-based browsers (which you should be!). Personally, I installed Safari, Opera, Firefox, and Multiple IE. Really, though, only IE6 and IE7 should be enough.

6. Code Minimally: This goes hand in hand with using CSS effectively. Your webpage without CSS should be a typical flow document. There shouldn’t be any large images across the screen, background images, mis-aligned text, non-standard font sizes, etc. Basically, a good webpage should be fully functional/navigable without CSS or JavaScript. The added bonus is less coding!

7. Design for Accessibility: There are many reasons why designing for accessibility yields good results. Besides the fact that it should be an obligation for a disabled user to be able to access your site, designing with accessibility in mind also lets search engines index you faster and more accurately, getting all of your content. This applies to image search and content searching. This also allows your design to degrade in old browsers, text-based browsers, and mobile browsers.

8. Install Useful Extensions: By far the most useful extensions I own for Firefox are Firebug and the Web Developer Toolbar. Without them, I couldn’t design as fast as I can. I can’t count how many times I’ve used Firebug’s “Inspect Element? feature to debug CSS or to copy values between sites.

9. Mockup Designs First: By far one of the most timesaving elements of designing a website for me is doing an initial mockup. It only takes a few hours and you can present a complete picture of the site for the client before you actually do any coding. I personally use Photoshop because later I can slice it up to get background images for use with CSS. The client can critique it and it also lets you visualize the site yourself.

10. Use Photoshop Wisely: Some people don’t know how useful the Slice tool is. Instead of making everything but the portion of the screen you want invisible, trimming it, selecting all, copying it, then pasting into a new document, then Saving for Web, all you need to do is use the Slice tool to create “slice up? your design. You can name the slices, adjust their dimensions to your liking, and when you’re done, you can just save them all at the same time! In addition, each slice can have its own specific format like GIF or JPG or PNG. It saves me a lot of time.

Don’t use slices to make an HTML layout. You should only be using slices to get the images you need to use in your layout.

And there you have it! 10 tips to improve not only the speed and efficiency at which you work, but also your overall design skills!

Happy coding!

August 8, 2008

How To: Integrate Google Picasa Onto Your Own Website Using PHP | Posted at 12:19 AM

I mentioned when I posted about finishing a website that I had made some custom scripts, and this was one of them.

This assumes you have all the Google PHP scripts ready on your site, comments have been made at appropriate areas. The HTML included is meant to be styled and is just the structure I used to make it. You can see the implementation right over yonder.

Features:

It’s tested and working, make sure you configure it properly. As always, feel free to add on as you please.

This was a quick script so I’d add some more error checking if I were you. It doesn’t use classes or anything, it’s just down and dirty.

Download Source Code (.zip)

gallery.php

<?php

/************************************************************

****    Picasa and PHP Integration Script

****    Created by: Kamran Ayub (c)2008 Intrepid Studios, Inc.

****    http://www.intrepidstudios.com/

****    This is just a very barebones implementation! No fancy

****    classes and whatnot. Feel free to improve it.

****

**************************************************************/    

//set_include_path("/local/home/"); // set if Zend folder isn't in the same directory as gallery.php, e.g. it's below it

 

// Vars

$user = "YOUR_GOOGLE_USERNAME";

$pass = "YOUR_PASSWORD";

$albumId = $_REQUEST['albumId'];

$albumName = $_REQUEST['albumName']; // This is just lazy, because when you are using the newAlbumQuery method, the name of the album can be gotten anyway.

$page = $_REQUEST['page'];

$maxResults = 15; // Max Results per page

$maxImageSize = 800; // don't go over 800 otherwise you won't be able to embed the larger photos

$zend_dir = "Zend/Loader.php"; // should point to your Zend directory

 

// Functions

function Paginate($numPages,$currentPage,$albumName,$albumId) {

    // Create page links

    

    $s = "<ul class='page-nav'>\n";

    for($i=1;$i<=$numPages;$i++) {

        $class = "";

        

        // Current page?

        if($i == $currentPage) {

            $class = " class='selected'";

        }

        $s .= "<li".$class.">";

        $s .= "<a href='?albumId=".$albumId."&amp;albumName=".$albumName."&amp;page=".$i."'>".$i."</a></li>\n";

    }

    $s .= "</ul>\n";

    

    return $s;

}

 

// Picasa Web Albums

require_once($zend_dir);

Zend_Loader::loadClass('Zend_Gdata_Photos');

Zend_Loader::loadClass('Zend_Gdata_ClientLogin');

Zend_Loader::loadClass('Zend_Gdata_AuthSub');

 

// Authenticate

$serviceName = Zend_Gdata_Photos::AUTH_SERVICE_NAME;

 

$client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $serviceName);

 

// update the second argument to be CompanyName-ProductName-Version

$gp = new Zend_Gdata_Photos($client, "Google-DevelopersGuide-1.0");

 

 

// Default page

if(!isset($page)) {

    $page=1;

}

 

if(isset($albumName)) {

    $albumName = urldecode($albumName);

}

?>

<html>

<head>

    <title>Integrate Picasa and PHP Demo</title>

    <link rel="stylesheet" type="text/css" href="base.css" media="all" />

    <link rel="stylesheet" type="text/css" href="gallery.css" media="all" />

    <link rel="stylesheet" type="text/css" href="awesomebox.css" media="all" />

    

    <!-- YUI, older -->

    <script type="text/javascript" src="http://yui.yahooapis.com/2.2.0/build/yahoo-dom-event/yahoo-dom-event.js"></script>

    <script type="text/javascript" src="http://yui.yahooapis.com/2.2.0/build/animation/animation-min.js"></script>

    

    <script src="awesomebox.js" type="text/javascript"></script>

</head>

<body>

    <h1>Photo Gallery</h1>

    

    <div class="albums">

    <h3>Albums</h3>

                

        <?php

        try {

            $userFeed = $gp->getUserFeed("default");

            echo "<ul>\n";

            foreach ($userFeed as $userEntry) {

                echo "<li><a href='gallery.php?albumId=". $userEntry->gphotoId->text . "&amp;albumName=". urlencode($userEntry->title->text) ."'>". $userEntry->title->text . "</a></li>\n";

            }

            echo "</ul>\n";

            //print_r($userFeed); // Debug

        } catch (Zend_Gdata_App_HttpException $e) {

            echo "Error: " . $e->getMessage() . "<br />\n";

            if ($e->getResponse() != null) {

                echo "Body: <br />\n" . $e->getResponse()->getBody() . 

                     "<br />\n"; 

            }

            // In new versions of Zend Framework, you also have the option

            // to print out the request that was made.  As the request

            // includes Auth credentials, it's not advised to print out

            // this data unless doing debugging

            // echo "Request: <br />\n" . $e->getRequest() . "<br />\n";

        } catch (Zend_Gdata_App_Exception $e) {

            echo "Error: " . $e->getMessage() . "<br />\n"; 

        }

        ?>

     </div>       

    <?php

    // List photos from album

    

    if(!isset($albumId)) {

    ?>

        <div class="grid">

        <p>Choose a photo album to view.</p>        

        </div>            

    <?php

    } else {

        $query = $gp->newAlbumQuery();

    

        $query->setUser("default");

        $query->setAlbumId($albumId);

        $query->setImgMax($maxImageSize); 

        $query->setMaxResults($maxResults);

        

        if(isset($page)) {

            $query->setStartIndex((($page-1) * $maxResults)+1);

        }

    ?>

        <h3>Photos from <?= $albumName ?></h3>

        <div class="grid">

        <?php    

        try {    

            $albumFeed = $gp->getAlbumFeed($query);

            

            // Number of results

            $numResults = $albumFeed->gphotoNumPhotos->text;

            

            // You should probably check if $numResults is a number...

            

            // If there are more than $maxResults, we need to paginate this...

            $numPages = ceil($numResults / $maxResults);

            

            if($numPages > 1) {                            

                echo Paginate($numPages,$page,$albumName,$albumId);

            }

            foreach ($albumFeed as $photoEntry) {

                $contentUrl = "";

                $thumbnailUrl = "";

                

                if ($photoEntry->getMediaGroup()->getContent() != null) {

                  $mediaContentArray = $photoEntry->getMediaGroup()->getContent();

                  $contentUrl = $mediaContentArray[0]->getUrl();

                }

        

                if ($photoEntry->getMediaGroup()->getThumbnail() != null) {

                  $mediaThumbnailArray = $photoEntry->getMediaGroup()->getThumbnail();

                  $thumbnailUrl = $mediaThumbnailArray[1]->getUrl();

                }

        

                echo "<div class='photo'><a rel='gallery' href='".$contentUrl."'><img src='" . $thumbnailUrl . "' alt='" . $photoEntry->title->text ."' title='" . $albumName ."' /></a></div>\n"; 

            }

            //print_r($albumFeed);

            echo "<div style='clear:both;margin-bottom:6px;'>&nbsp;</div>";

            if($numPages > 1) {                            

                echo Paginate($numPages,$page,$albumName,$albumId);

            }

        } catch (Zend_Gdata_App_HttpException $e) {

            echo "Error: " . $e->getMessage() . "<br />\n";

            if ($e->getResponse() != null) {

                echo "Body: <br />\n" . $e->getResponse()->getBody() . 

                     "<br />\n"; 

            }

            // In new versions of Zend Framework, you also have the option

            // to print out the request that was made.  As the request

            // includes Auth credentials, it's not advised to print out

            // this data unless doing debugging

            // echo "Request: <br />\n" . $e->getRequest() . "<br />\n";

        } catch (Zend_Gdata_App_Exception $e) {

            echo "Error: " . $e->getMessage() . "<br />\n"; 

        }

        ?>

        </div>

    <?php

    }

    ?>

</body>

</html>


August 7, 2008

Amazon Daily Deal: Dragonforce [Awesome] | Posted at 10:52 PM

Oh yah, who’s awesome? Me.

“Today's Amazon MP3 Daily Deal goes out to Kamran Ayub of Minnesota who requested a little more metal. Dragonforce's The Valley of the Damned, down from an everyday low price of $8.91 to $2.99.? – Amazon Daily Deal FB Notes

image

Damn. Right.

This album was before they went mainstream and is chock full of cheesy awesomeness. Needless to say, I bought it.

August 6, 2008

A Tale of Backup Woes and Redemption [Crappy Software] | Posted at 10:05 AM

Yesterday, it crossed my mind that I should try and restore a very old website, one of my first, to showcase on my new redesign of Intrepid Studios. The plan was to make it work at the least and then offer it up for people to look at and download. There are a few reasons of doing this.

I made the site News by Teens International back in 2001, it was my first experience in programming for the web. I was a budding ASP developer (oh how things might have been different if I’d chosen PHP) and NBTi was my first real project. At first it was a team but then all the developers left because they didn’t think it’d work. I took it on myself, with another guy as my “boss.? I made it work and the site saw average success for its lifetime. At some point, it became apparent that the site philosophy, letting teens write, submit and discuss news articles was not very popular among our demographic, so I shut it down.

However, at one point, an upgrade had been planned. This upgrade was actually very near completion. It was dubbed "NBTi .NET" my not so subtle way of saying I was using .NET to program it. This was when .NET was coming out... but I learned VB and got very far on the site. This is what I wanted to resurrect yesterday. I thought about it beforehand for awhile. I spent many hours working on it, for it to amount to naught. However, I feel like I should at least just let people download and look at it because I developed many custom components for it.

At the ripe old age of 15 or so, this is what I had developed for the site:

  • Member Profiles with profile information, avatars, and custom fields.
  • Messaging system ala private messaging.
  • Custom forum to integrate with member system.
  • News submission system.
  • Commenting system.
  • Polling system.
  • Who's Online functionality.
  • Planned to do a Journal component.

Do those features sound familiar? They should, they include the basic components of a social networking site. Unbeknownst to me, I had really developed a decent social networking site before the bigwigs like Friendster, Facebook, and MySpace had come along. There may have been social networking sites back then, but they were not so prominent and these features came to me because they made sense for the site's purpose. While primarily the news portion of the site was the focus, all the social interactions were just as important in my eyes... one of the reasons I decided to release this is because it showcases my ability to create social networking features, even if it was 5 years ago.

In the original NBTi, it had member profiles, a phpBB forum, control panel, polling, and commenting. That was written in ASP by myself. I had even attempted to integrate PHP with the ASP member system but that didn't work quite so well. It did kind of work, it added members when they registered on NBTi.

I rewrote the site from the ground up, giving it a new look and everything. I feel that for a 15 year old it was quite an achievement... so I wanted to release it for free. I thought about how I could do such a thing and I decided that I'd convert the site to .NET 2.0 and offer it up.

However, way back when my server was having problems so I had to back up my development on the computer. The back up software I used must have been poorly written because what it did was convert the first file in a folder to a folder. Yes, that's right, it effectively erased everything in the file and made it unusable. Suffice it to say, when I found out the software did this, I stopped using it. (If you are interested, SyncBack SE is an excellent backup software).

When I went back yesterday to try and convert the project, I had some errors in Visual Studio. It didn't get farther than one file and it said that it couldn't open it. I went and checked and to my horror found out that this project was one of the ones that got hosed.

Awesome, so now I can't release the site unless I go back and recreate the lost files, a time-consuming ordeal. I was frustrated and decided to just forget about it and delete everything as it wasn't usable anymore. So I did, from my server and from my own computer.

Then today, as I was riding the bus to work, I reflected on it a bit longer. It was an impressive project... and it wouldn't be insanely difficult to redo one file per folder, would it? I figured I could probably do it.

So, just a few minutes ago, I went onto my computer and tried to see if I could restore the files I deleted. One probem, I emptied the Recycle Bin. Awesome! I tried to use TuneUp Undelete which did find most of the files, but many of them were in "Bad" condition. Now almost all hope had vanished. I was ready to give up, when I remembered that I scheduled backups of my development folders on my server. I went onto the server and into the backups. Lo and behold, there was a backup of my development folder, old, but the NBTi .NET folder hadn't been changed in aeons. I restored it to my computer successfully and jumped for joy!

So now, the real work begins. I have to use all the errors to try and figure out what the original file looked like and I'll have to write "new" functions that will do whatever it is they are supposed to do. Luckily, if I remember correctly I comment my code a lot, and I name my functions appropriately so I hope I can restore them.

It's kind of exciting... once I release the new Intrepid Studios site soon, I can add this to my projects portfolio for people new to .NET or interested parties to dissect and borrow code. It's probably not the greatest since it was written way back when, but who knows, maybe I'll redo some of the components properly...

August 4, 2008

How To: Use PHP to Grab Event Date from Google Calendar RSS [Tips & Tricks] | Posted at 7:52 PM

Recently I finished a site that required me to use Google Calendar to manage events. I thought that it would be nice to show what events are up and coming, so I used SimplePie to grab and show their calendar feed.

However, the RSS date was the date the event was added, not the date that the event happens. This makes sense but makes it a bit harder to be useful in the website.

I used some simple RegEx to get the event date… it’s rough but it works and I’ve tested it with events spanning multiple dates, all day, and specific times.

<dl>

    <?php

    // Feed: http://www.google.com/calendar/feeds/[google account]/public/basic?max-results=5

    foreach ($feed->get_items() as $item):

        

        // Grab When: date.

        $content = $item->get_content();

        $content = strip_tags($content);

        

        if(preg_match("/When: (.*!?)/", $content, $matches)) {

            $content = $matches[1];

        } else {

            $content = "No Date Found";

        }

    ?>

        <dt>Event:</dt>

        <dd><a href="<?php echo $item->get_permalink(); ?>"><?php echo $item->get_title(); ?></a></dd>

        <dt>Event Date:</dt>

        <dd><?php echo $content; ?></dd>

    <?php endforeach; ?>

</dl>


This assumes you have a SimplePie feed… you can just use the RegEx in any other implementation instead…

New Website Release – Business Association for Multicultural Students [Web Design] | Posted at 7:24 PM

bam-screencap

As I just posted on my company blog, I’ve just finished another website. The site is for the Business Association of Multicultural Students, of which I will be a member of soon.

I met with some officers of the group last Tuesday. That was when I started developing the site and in less than a week and 30 hours later I was finished and met the budget. How’s that for turnover?

Here are some of the features I implemented:

  • Google Calendar for managing events.
  • Google Picasa for managing photos, along with a barebones custom PHP photo gallery script for the website itself.
  • Google Analytics for site stats and tracking.
  • Poll script and administration using SimPoll.
  • Integrated WordPress blog.
  • Integrated phpBB3 forum.
  • JohnDesign’s SmoothGallery for homepage “animations.?
  • SimplePie RSS reader for showing upcoming events and blog posts. I use RegEx to parse the date an event occurs from their Google Calendar RSS feed.
  • Custom admin control panel for uploading member resumes, along with a password-protected section for recruiters to view them.
  • Fully degradable design for accessibility, functions without JavaScript or CSS, like always!

Wow, that’s a lot of features, and all of the scripts were free! Unfortunately due to time constraints I was not able to skin their blog and forum, but perhaps at a later date they will want me to.

I know some people will be interested in my PHP + Picasa Photo Gallery integration and my parsing of Google’s Calendar RSS feed, so I will post those soon and update this post!

Updated (8/4/08 7:52PM): PHP code for the RegEx is posted.

Updated (8/6/08 11:03PM): You can view the old site as well, if you wanted to see a before/after.

Updated (8/12/08 8:31PM): I posted a how to on integrating Picasa using PHP.

July 30, 2008

There is a God! Morroblivion Converts Morrowind to Oblivion’s Engine! | Posted at 11:11 AM

OK, this is seriously freaking awesome. I hope some blogs out there start writing about this because this is one of the coolest mods ever.

For all of us who loved Morrowind but disliked Oblivion somewhat, this could be our salvation! Morroblivion takes on the daunting task of converting all Morrowind files to work with Oblivion...

You can already download the latest builds to try it out and since I'm at work I can't...

Even if we have to use Oblivion-type methods for the menus and alchemy, etc, it will still be awesome… since I do like the Oblivion combat system, alchemy system, magic system, etc.

The tool will convert Morrowind, but to actually play it you need the Morroblivion Expansion mod. This is the mod that will deliver us the true Morrowind game itself.

If you’re a modder or a programmer or whatever, I would offer your help to these guys… the potential for this is huge!

Done right this could be RPG nirvana.

[Welcome to Morroblivion via Morroblivion]

Update: Looks like me and my friend succeeded in getting this posted at Kotaku, FTW!

July 14, 2008

Amazon Daily Deal: The Doors | Posted at 9:41 AM

Are you a Doors fan? I have a couple albums thanks to my girlfriend but I couldn’t pass this up.

image

$4 The Doors – The Future Starts Here: The Essential Doors Hits

[via Amazon MP3]

July 9, 2008

How Not To Design a Website | Posted at 1:35 PM

Was this made in 1997? I hope so because otherwise I will personally find and murder the designer of this website:

http://www.5safepoints.com/

God help us all.

July 8, 2008

SUA Design Update [7/8/08] | Posted at 1:00 PM

So today I decided I disliked our contact forms that we had on the bottom of some pages. Here’s what they looked like before I updated them:

sua-contact-footer-before

As you can probably tell, I was not fond of them. First, they were tables so that wasn’t cool. Second they were fairly ugly. So I decided to convert them to CSS-only and to beautify them a bit to match our template better.

Here is what I ended up at:

sua-contact-footer-after

Better, I hope? We thought so.

You can take a look at this page which uses one, if you’d like to see it in person.

July 7, 2008

A Yahoo Bot Conversation | Posted at 8:35 PM

I met this really cool guy named Matt Santana, who I can only assume was born in 1971. He's neat because he sent me a few links that, if clicked, would probably infect my computer with spyware!

mattsantana71: U there? lmuyb
Kamran:  yes?
mattsantana71: ywngcHey subkamrandascg
Kamran:  afkhasfHeyasfasf
mattsantana71: qcnrhHey subkamranpragm
Kamran:  893nasfsaHeyHeya;sfaf33
mattsantana71: fdvfzhow ya been cutie?sjpysmtyjt
Kamran:  asfkafk3352goooood3532kgags
mattsantana71: seiylit's, Shannon!jcgzowanhm
Kamran:  89124ffffOMGRLY-0352fffff
mattsantana71: sdbhgu wanna get together some time this week, with me a girl friendsvrjzxwe can meet somewhere close by for some fun! ;)kabhrymbsc
Kamran:  1dadsaa333yah i really want to that'd352352gggd be cool33fafoef
mattsantana71: qyhcghere is my pic http://www.h%6f%6f%6b-up%73-%72%2d%75%73.%63%6fm do u think i'm cute?podnm
Kamran:  3fjfokay i'll just click a link that will probably infect my computer with lots of malware!sfhasf333
mattsantana71: lrzeetake a look @ our profile http://www.a%64u%6ct%68%6f%6fk%2d%75%70s.n%65%74 rqoah
Kamran:  sha22awesome352d
mattsantana71: wfwdbhere is my pic http://www.%61d%75%6c%74hoo%6b%2d%75p%73%2ene%74 do u think i'm cute?erbeo
Kamran:  38fhfoh yah real cute too bad i cant see it because my computer is all fucked up from the previous links!kasfa333
mattsantana71: kphhktake a look @ our profile http://www.h%6f%6fk-%75p%73%2dr%2dus%2e%63%6f%6d hzljl
Kamran:  883wait you sent me this! i thought this was your pic!fasl333
mattsantana71: hcjottake a look @ our profile http://www.%68%6f%6f%6b-ups%2dr%2du%73%2e%63o%6d zyxdr
Kamran:  ksfhI dont understand why is it two different URLs and why are they URL encoded so that an unassuming horny teenager cant see past your facade?!lksf933
mattsantana71: natfwtake a look @ our profile http://www.%68%6f%6f%6b%2du%70s-r-u%73%2ec%6f%6d zfsrz

There was nothing important after that. It was too bad, I was hoping for a great branching conversation involving the exchange of pictures and email or MySpace pages!

July 6, 2008

Amazon Daily Deal: Van Halen, 36 songs for $7 | Posted at 6:42 PM

image

Today’s deal is a $7 album worth over $35. 36 songs for $7!

And I don’t have any Van Halen, so this was an instant buy.

July 1, 2008

Blogging for the Long Tail | Posted at 2:09 PM

If anyone has taken a business management class or a supply-chain logistics class, they’ve heard of, if not examined, the idea of the “long tail.?

For those of you who aren’t familiar with the long tail, it is when companies provide products that have low demand individually but add up to a lot cumulatively. It’s complicated enough to warrant a whole book but that’s the idea.

As an example, digital distribution caters to the long tail because long-tail items don’t cost much different to keep in inventory than popular hits (i.e. pop albums vs. classical albums). That’s why a platform like Steam does so well, it’s able to keep old games for a long time.

So what do I mean when I say “blogging for the long tail.? I am sure many bloggers have realized this but I’ve found it is better to blog about topics not many people blog about than to blog about topics lots of people blog about. More specifically, in my case I write how to articles for seemingly mundane things like LAN’ing someone’s favorite video game.

Here’s the thing, though. People like to find answers to problems. While many people can perhaps eventually find a solution to these problems by lots of Googling, if I write articles with a walkthrough and screenshots, I get more visits and readers. I do it, because as a user myself I search for problems with Google and it takes me awhile to find a straight answer. Now, I find an answer and then I blog the answer with an easy to follow list. Let’s take, for example, some of my recent popular articles.

Before I wrote the article on how to LAN Red Alert 2, I was maybe getting between 10-20 visits a day. Since that article came out (a month ago), I’ve gotten about 235 visits by people using keywords containing “red alert.? That article is one of my top hits (362 page views). Since I released the Age of Empires III Hamachi article (a week and a half ago), I’ve gotten about 100 visits from people searching (178 views).

There are a few other examples of traffic increasing by writing some other articles (e.g. IPX on Vista). My point is that catering to the “small? demographic with many articles can turn out to be your biggest traffic generator. I went from an average of 15-20 visits per day to now over 100 in less than a month. I have plans to write many more how to articles, since they seem to be very popular searches.

Even though it’s not on the economic side I think there is still a “long tail? idea to blogging. Since a blog can keep posts indefinitely if you choose to, there’s really no limit to how varied you can make your articles. I choose to cater to the computer problems crowd because it’s a heavy hitter but there are many other small niche topics that you could blog on.

June 30, 2008

How Much I Save Using Audible | Posted at 9:47 PM

If you don’t know, Audible is a subscription-based audiobook website that offers thousands of books for your download and listening pleasure.

I have been a member since December 2007, so it’s about high time to see whether or not it has turned into a good investment. I have the Audible Gold Membership which means I get 1 credit a month for $14.95/month and 30% off regular prices. That’s basically any audiobook of my choosing per month plus my member discount for regular non-credit purchases.

So, let’s take a look shall we?

Book I Spent: Real Price:
Lamb 1 Credit $23
A Thousand Splendid Suns 1 Credit $20
The Diamond Age 1 Credit $25
Snow Crash 1 Credit $25
Wyrms 1 Credit $17
The Pillars of the Earth 1 Credit $30
Screwtape Letters $6.46 $7.66
Brief Wondrous Life of Oscar Wao 1 Credit $20
Shadow Divers Free ($25 gift) $25
Membership: $82.27 --
Totals: $88.73 $192.66

So, let’s see, by subscribing to Audible for $15/month (and $8/month for 3 months) in 7 months I’ve saved $103.93, assuming I would have bought these separately (which I would not have). I did not add the accidental order of Snow Crash the abridged version for $13. I accidentally used a credit there when I forgot I had already bought Snow Crash. If I had known and used that credit for good, that would have added a nice $25 to that final total.

That means I saved more than what my subscription was worth (I saved 54%)!

Then let’s add the priceless sum of knowledge and worldliness granted by reading books and it turns out the Audible subscription is well worth its price.

That means that you should subscribe to Audible. It’s awesome!

Thank you to TWiT for introducing me to Audible.

June 24, 2008

Cheap $2 HDMI Cables | Posted at 7:49 AM

Grab them over here. Dirt cheap, I wish I knew about this a few days ago.

[via Amazon]

Amazon’s Daily MP3 Deal: The Police | Posted at 7:42 AM

Amazon’s Daily Deal for MP3 downloads today is “Synchronicity? by The Police for $1.99. Can it get better, people?

Grab it over at this here link.

There’s also a FREE 10-song sampler from Nuclear Blast for people like me who enjoy metal.

June 23, 2008

User Experience Design | Posted at 10:49 PM

At work (SUA), we’re revamping the entire Events & Conferences sub-site because it’s nigh unusable for our users.

We conducted a handful of usability tests and while it wasn’t horrendous, there was definitely stuff we could improve on. Audio and video package rates were hard to find, policies were hard to find, the whole finding a room process was convoluted. A bunch of things.

One of my favorite parts about my job is revamping a sub-site. I’ve done two revamps (well, three if you count the entire site-wide template design) so far, one for the Student Groups site and one for the Events Calendar.

The E&C site is real exciting because we’ll probably be doing an AJAX JavaScript application to easily browse rooms. We’re also revamping the room-specific pages, probably doing PHP arrays. I suppose if it becomes unwieldy, we might do MySQL instead.

I don’t know why, but I really enjoy making designs better. You saw what I did to the Facebook Application, GamePie. I think it’s fun to see if you can make things more usable. I should consider doing fun mock-ups of big name sites with better usability and accessibility design.

I mean, have you seen Amazon without CSS and JavaScript?

amazon_no_css

That’s not even close to usable or accessible. Granted, they do have an accessible text-only site, but it’s much less toned down than the “Amazon PC? homepage.

amazon_accessible

Did I mention I didn’t see a link to the accessible page on the Amazon homepage? Maybe it’s buried somewhere but I couldn’t see it.

Plus, I’ve heard that not all products are on the text only site. Yah, way to think of the disabled population Amazon. There’s no excuse to not have a good, usable and accessible website. They make billions of dollars, it’d take a month to just redo everything (alright, not really, but to actually make a usable design and code a static page, seriously…).

I know that there’s bureaucracy and maybe the site designers do want to make their site better, but it has to happen at some point. I don’t understand why the “greater web? (i.e. corporate big wigs) don’t listen to reason. Hasn’t anyone told them that accessible design will make their business increase, SEO rank increase, and generate buzz? Disabled users can’t shop effectively at Amazon… that’s pretty lame.

SUA is a top Google ranker because of how well we’ve done on the usability aspect. It’s compatible with screen readers, text-only browsers, and all major (and minor) web browsers except MSIE 4 (test it out with BrowserShots.org). If you search for “SUA? we’re no. 3. Cross-site linking and lots of content will do that for you.

Anyway, I’m thinking doing some small mockup projects for sites like these just for fun. See if I can make their pages better and more usable. It would be fun!

More eBay Delays | Posted at 10:01 PM

So I got my fifth positive feedback today from the item I bought. Thinking, “Alright, now I can finally list my item with Buy It Now,? I go to finish listing my item.

I still can’t and it’s 9pm, I got my feedback in the morning. Does it take that long for eBay to update my seller account? I talked with a support person and they said it might be delayed and I should send an email to their Trust team, which I did.

I suppose I’ll have to list it tomorrow.

Update: A support representative emailed me back:

Kamran, I would like to inform you that, there is a problem going on from our side and that is the reason you are not able to find the option of "Buy it now".

Thank you for your message. I've forwarded the information you provided to our Tech team and they're working to correct this.

Thanks again for taking the time to alert us to the problem. I apologize for any inconvenience this may have caused.

Well I am glad I told them… some people seem to be having the same problem because I’ve gotten Googled with similar search phrases.

May 20, 2008

Exposing Hollywood: A Short | Posted at 1:21 PM

For Geology and Cinema (GEO 1005), we had to create a geology presentation for lab. Well, my team and I decided that it would be fun to do a little animation. So we did. It came out well, I never animated before and Premier Pro isn't that great at animating. I'd rather use Flash instead, but the audio is one mp3 file, which makes it impossible to sync in the Flash timeline. With more time, I would have split the tracks.