Monday, June 2, 2008

5 Tech Gadgets I Can't Live Without (Seriously)

I'm a big nerd, and I don't care. I love gadgets, and I love depending on them and exploiting every facet of technology for my benefit. If there's an electronic device or service that can make my life easier or better then it's probably owned by me, or something I will own soon. I literally get a hard on for technology.

1. My PDA/Phone/Smart Device

This is perhaps the greatest marriage of devices in tech history, besides of course for the mouse and keyboard. Just a few years ago people would carry multiple devices (I was one of them!) but the day these two gadgets decided to get it on will live on as the greatest step forward for mobile computing. Pockets around the world cheered in relief. I use a Moto Q and it is absolute bliss. My life is on my phone, and my life would be nothing without my smart device. I feel naked without it.

2. My Car's GPS Unit
Whether you have a top-of-the-line device, or your phone is spitting out turn by turn directions, it is by far one of the coolest affordable tech gadgets you can get today. As a person who likes having information available to him instantly, and who always wants to know what's going on, how could I not have a GPS device? GPS is simply awesome, and when I drive a car without one (even if I know where I'm going) I feel lost. Having the ability to always click the "Take me home" button if I'm somewhere I don't know is a very reassuring and soothing feeling. All cars should come standard with this feature - no questions asked.

3. DVR and/or TiVO
I've had my DVR for just one week and I'm already spoiled. How cool is it to pause live tv when you run into the kitchen for a snack? Or to record shows simultaneously while watching another channel? I've already set my DVR to record every single COPS episode in existence. The only thing I wish they'd add is the ability to skip commercials from recorded programs, or to include a "Jump ahead 30 seconds" button to quickly get to your program. Do you hear me Pioneer? Make this functionality and you will make even more money with your DVR devices. But even without this it is still just awesome.

4. My Laptop
I have a TX series Vaio from Sony, which is one of their smallest series. When I need computing power that I can't get in my phone I pack up my Vaio and head out the door. It is my little baby, and does everything I need it to do when I'm not at my main computer at home. I've even downloaded a program called PDANet which allows me to get wireless internet through Sprint so I can browse websites whenever (and wherever) I want. My laptop is the perfect device to go to a meeting and take notes with, and to show presentations on. And when it's time to play I pop in a DVD and it's instantly a portable DVD player. Without a doubt it I'd be lost without it.

5. 360 and Wii
God made videogames so we can blow up our friends virtually. There is nothing quite like getting a group of friends together, drinking, and shooting things. Videogame consoles provide a mechanism to relax and have some fun unlike anything else out there. I love my 360 (even though it's died once) and I find the Wii to be so incredibly unique that I play it almost as much as my 360. Take these two things away from me and I might blow up my friends for real, and who'd want that to happen?

Wednesday, September 5, 2007

HTML form Tags

The <form> tag in HTML is used to wrap data elements (textboxes, checkboxes, radio buttons, etc.) on a webpage to prepare them for submission to the server. Nearly every form you fill out on a website uses a tag of some sort. But there's one cosmetic issue that plagues tags, they don't ever display in true inline!

When you wrap data elements with a tag you will probably see that there is additional whitespace above and below the and </form> tags when you're viewing the actual website. This is because the <form> tag doesn't respect true inline styling when it is rendered (or rather the browser doesn't treat tags with true inline styling). This can sometimes be annoying when you're attempting to layout a precise spacing scheme for a website you're working on.

The best solution is to include a style attribute in the tag specifying a display element as inline. So you may want to do this:

<form action="test.php" method="post" style="display:inline">

form elements here

</form>

This will get around the cosmetic issue of the extra whitespace on both sides, and gives the developer ultimate control in spacing choices.

Wednesday, May 30, 2007

PayPal SOAP API = Wishy Washy Solution

So you're working with the PayPal (PP) DoDirectPayment API huh? I hope you're enjoying it as much as I am. The API allows web programmers (like myself) to make real-time processing calls to PP and charge credit cards online. The solution uses an underlying XML-based SOAP architecture with about 100+ pages of complex specifications. Luckily, PP was kind enough to provide SDKs that abstract away a lot of the insanity. But even with the SDK I've still found it to be incredibly stressful.

I'm using the PHP version of the SDK and it took about 5 days of serious coding to get a working transaction. It should not be that hard! I even ported some example code PP includes with the SDK and tried to re-work that. Finally I was able to strip things down to the bare essentials to get it to work.

Some things that tripped me up that you will want to avoid:
  • The sample scripts make things more complex than they ever need to be. If you're dealing with US dollars you can replace a lot of the dynamic definitions with hard-coded strings for US-only specs. This helps you maintain sanity in the otherwise insane examples.
  • Work with the sample scripts to begin with, and don't try and develop API calls yourself. The scripts are a great starting point once you make them legible.
  • Include directive for the SDK inc file should make sense for your local setup, do not assume the include directory makes sense for your /home/usr/etc. directory. You will probably have to change this.
  • Don't confuse DDP API calls with the EC solution. They are SEPARATE and should be treated separately. DDP is the one for processing CCs, and EC is the one for processing PP account payments.
  • I used 4111111111111111 as my sample VISA when testing DDP. DON'T USE IT! The # is special to PP and will result in an endless loop without responding. Instead, Google fake credit card numbers to generate another false number. This will then work.
  • Sandbox versus Live. This was a pain in the ass when I moved to a live version of the solution. Make sure all your declarations which were normally set to 'sandbox' are now set to 'live'. This includes the lib/ directory files which you might forget about.
  • ACK_ERRORS are your friend in debugging why the hell things are working. Make sure to print_r your ACK_RESPONSE to see detailed errors. They're usually pretty good at telling you why you're an idiot.
  • Hide your PayPal API files in a directory that normal visitors can't access. The API should only be accessible by root to avoid any type of hack attacks.
  • Once you have things down to a point where you understand them, it helps to make a separate function call in your core code that accepts the primary CC info and then makes use of the PP API. This is easier (for everyone) rather than including ALL the PP required stuff in every instance where you'd make a CC purchase.
I have refined my PP code down to an exact lean science. If you'd like additional pointers on what's need, and what's not, feel free to email me at art@geigel.com.

Saturday, May 26, 2007

The next big thing to hit the web...

Being an active web programmer I often ask myself and others what the next big thing is going to be for the web. I purposely leave the question vague to get un-coerced answers. I also try to vary who I ask -- moms, friends, business associates, and others in the tech industry -- so I can get a perspective from all types of people.

What's most notable however is that no one really has a "good" idea of what is going to be the next "good" idea. Just two years ago if someone said, "Let's make a video website where users can upload movies," it wouldn't fly. Today YouTube (2 years old) sits on top of billions after selling out to Google. When Facebook was created in the dorm rooms of Harvard there weren't any grand visions of what it was to become. MySpace, the internet's trash yard, turned it's founders into multi-billionaires after news giant NewsCorp bought into the hype. eBay, Amazon, and even the mighty Google all started as a decent idea that became something more. So what's that oomph factor? What's that "tipping point" that blossoms a decent website into a rockstar? What "new" thing is right on the tip of all of our minds that just has to become a reality for us to say, "Why didn't I think of that?"

I even struggle with answering my own question. The YouTube idea is so simple and yet it took a matured internet (and wide-spread broadband) to make it viable. Facebook and MySpace are nothing really special, but yet again they are. I could code a basic Facebook or MySpace in about a day.

There are usually two answers I give when discussing this topic.

Answer 1
Websites that evolve to include user generated content ("user-gen") and required some sort of personal interaction will have a greater chance at becoming popular. User-gen means the company responsible for the website doesn't need to create the content; hence focusing it's attention to ongoing growth of features that fuel the user-gen fire. FB, YT, and MS are good examples of this. These website, by accident or by design, become a resource of information too. A website that controls good information (whether it be hard facts and/or for fun) should do better than a website that doesn't. I check FB at least five times a day -- if not more. Just a year ago I visited The Onion news website daily -- now I never visit it. What's the difference? I think it has to do with the reasons I just mentioned.

Answer 2
Software as a Service (SAAS) will become one of the biggest trends in the web over the next 5 years guaranteed. Google is poised to become the go-to "online operating system" with all of the information and services it's amassing. From word processors, email, spreadsheets, blogs, news, maps, financial, etc. you can pretty much do anything in the world from your internet browser. And it makes sense! You have a working operating system literally anywhere there's a connection.

Companies are beginning to understand the benefit of running line-of-business software online. Hyland Software, my ex-employer, offers document management software as a hosted service. Three years ago they were doing $15k a month for the service. Today it's grown to far beyond that as has become a real generator of additional revenue complimenting their standard desktop application sales.

Whatever the web becomes over the next few years we can count on it becoming something better. And one of the best parts you ask? Microsoft has little or no say in deciding what it will be.

Tuesday, May 22, 2007

10 Years of WNBA! Have you seen her? Who Cares?

Well, it's been 10 years since the WNBA experiment was launched. It's been a harrowing decade for the die-hard fans and tireless players. Cleveland has seen a team come and go (did anyone notice?), some chick was the first broad to ever dunk in a televised game, and men had yet another thing to laugh at by the water cooler. Ah yes, quite a decade indeed.

Now with the NBA playoffs getting hotter it seems as if the WNBA is trying to ride the wave of excitement to promote it's fledgling league. What's worse than that is the marketing tag line for the majority of their ads which states, "Have you seen her?" The implication is of course that we have not seen whoever they're talking about, and we should start giving a damn about "her" and watch an exciting WNBA game. What's funny is that they've already conceded the fact that most of those watching the ad have never seen a WNBA game.

Who was the Einstein at the WNBA marketing-camp who thought up that awesome tag line by the way? A woman no doubt. I can envision the meeting perfectly -- 8-10 women in a conference room chatting it up, drinking their mocha-latte's from 'bucks, and nodding in agreement over their self-serving fantasy that people are going to give a crap, and that "a women's basketball league has a place in American entertainment."

Yeah... Well... I've never seen any of the players you're talking about in your ads, and I don't plan on starting -- now get out of the way so I can watch Lebron.

Little Children

As a huge movie enthusiast I'm always eager to watch a new film that I've heard great things about. One such film is Little Children.

I'm happy to say that this movie was excellent. It was directed by Todd Field who also did another film I liked a lot called In the Bedroom. Field has a real talent for setting an unsettling mood while at the same time not becoming too overpowering and uncomfortable. In both pictures the characters share overlapping relationships (often strained) until an ultimate crescendo and resulting catharsis.

Only to be watched when you're in the mood for a real drama. I found Little Children to be quite engaging and rewarding. Perhaps a tad long, but nonetheless good. For comparison sake, it's a little darker than American Beauty which parallels similar themes.

Monday, May 21, 2007

Marco and Polo

Today I want to talk about my fish.

I have two fish (a beta and some other kind) that keep me company during the day while I'm working. Their names are Marco and Polo. While I can't say that they've added to my work-efficiency; I can definitely say that they've decreased my stress.

Whenever I'm stuck, or just need a mental vacation, I can take a look in their tank and feel a sense of peace.

Sometimes they chase each other, sometimes they just swim around and "chill", and sometimes (as if by accident) they end up looking right back at me.

It's really nice though -- for a short minute I dream about being at the ocean, or floating in a pool, or just waking up on a lazy Sunday morning not having to do anything in the day. It's enough to clear your head and turn your focus back again on your work.