Monday, November 7, 2011

My Evening Grapple With dd-wrt

I've got a Linksys WRT54GL router, which I immediately flashed to the infinitely superior, open source router firmware project dd-wrt. I've had close to zero issues with it, but today the wireless functionality completely cut out. SSID stopped transmitting, and I was unable to connect even by manually entering in the router's wireless info. All of the wired networking stuff continued to work like a champ, so when I logged into the control panel and checked out the Wireless Status tab, I noticed that 100% of the transmit (TX) packets were errors. And it was throwing about 10 per second.

At first I thought it was a problem with someone at the apartment complex, so I did a site survey and found about 6 devices operating on channel 1. My router was operating on channel 1 as well, so I tried to change it to the most unused channel (which happened to be 14 for me). To no avail.

Next, I tried to move the router away from my plasma TV, thinking that somehow the radiation from the TV was interfering with the transmission. I also unscrewed the antennas and re-screwed them back in. Doing that obviously caused me to unplug the router and plug it back in elsewhere. Again, no luck.

Then I tried to change the security mode on the router. Partial success! When I disabled all of the wireless security features, SSID broadcast worked and it started working perfectly. Except of course, this was unencrypted data flying through the air in an apartment complex. Unacceptable. Changing the wireless security mode back to WPA2 causes the previous symptoms to reappear, so we're kind of back to square one.

At this point, I noticed that the Wireless Status page was no longer showing information in the Wireless Packet Info section. It was completely blank to the right of the Received and Transmitted text blocks. Checking with Firebug and Chrome's Developer Tools, I noticed that there was a JavaScript syntax error occurring on Status_Wireless.asp. Weird, I thought.

After that, I tried to change the the dd-wrt firmware. I was running build 13064, which was the recommended version for my router. That build was a pre-SP2 beta, but it was running amazingly stable up until now. I decided to downgrade all the way down to SP1. I uploaded the firmware through dd-wrt's control panel, choosing to retain previous data. Still not working. The weird JavaScript syntax error was still happening, too.

Feeling pretty frustrated, I decided to upgrade back to build 13064, but this time I decided to go ahead and reset the router to factory conditions. When it came back to life, I proceeded to set up the wireless security to what it was before, WPA2 Personal with AES encryption. I refreshed the wireless networks on my MacBook Air, and there was my router, lock and all, ready to be connected to.

I'm still not exactly sure what happened, but a full setting reset seemed to work. Lame fix, but now it works. I'm more interested as to how the JavaScript error cropped up completely out of the blue.

Monday, October 24, 2011

The Digital Brink

If there's one thing about technology that I love, it's that it is always changing.  You can wake up one morning and go to sleep that evening with a completely different landscape.  Following the technology news is easy if you care about it, but forming opinions and trying to disseminate all of the information is something else entirely.

I've found that I think about technology all the time.  While I'm driving, taking a shower, walking to class...  It's almost the only thing that I think about these days.  So I've decided that I should try to write about these ideas.  Thus begins The Digital Brink.

The Digital Brink is a space for me to try to focus my thoughts on technology into fully formed articles.  My writing skill isn't exactly stellar, and I am by no means a journalist in the technology industry, but it makes sense that if I can articulate my thoughts into readable and enjoyable pieces that I might be able to come up with even more thoughts about this awesome world of technology that we live in.

Tuesday, October 18, 2011

Contact Requests. Why Isn't This a Thing?

Apple let the leash off of a slew of new stuff last Wednesday, not least of which being a new Mail/Contact/Calendar syncing service called iCloud.  As of right now, the only thing iCloud does is synchronize your stuff between your Mac, iOS devices, and it's web interfaces - something that Google has been doing for years with Gmail, Calendar, and Android.  What I can't figure out is why no one has used these services to let people share contact information with each other.

Both Apple and Google have had the opportunity to create a feature like this, and it seems obvious to me that they should.  As everyone knows, managing a contact list of everyone you know is an immensely tedious task.  Apple could easily roll out a system like this through iCloud and iOS, and Google could easily do it through Gmail and Android.  A user maintains their profile and the people they're sharing it with instead of trying to manage a static contact list.  Imagine asking someone for their Apple ID or their Gmail address instead of their phone number when you want to exchange contact information.

This awesome mockup was done by Cillian O'Keeffe. Thanks a ton!

The model for this system could take inspiration from Valve.  Steam has a very simple "Add a Friend" feature that lets you enter the email address of the person who you want to add.  Once you do that, an alert will show up on that person's Steam account that lets them confirm the friendship.  The exact same process could be done through iCloud and people's me.com address, or through Gmail.

Granted, Facebook already has something like this.  The Facebook apps on iOS and Android can synchronize your Facebook friends list with your device's contact list.  But it always isn't appropriate to be a Facebook friend with someone (like your boss or a client), as it gives them access to much more than just your name and phone number.

In the coming years, mobile phone plans will move away from a weird combination of gigabytes of data, voice minutes, and text messages to only data (and an unlimited amount of it), people will have the freedom to use a multitude of communication media.  For now, Google and Apple need to create a system like this so that they can maintain a list of connections for when phone numbers become obsolete.

Wednesday, October 12, 2011

Begun, the Job Hunt Has

Right now, I'm in my last semester at Texas State University. I'm set to graduate with a Bachelors of Business Administration in Computer Information Systems in December of this year. As such, it's time for me to begin searching for a job.

I should note right away that my college experience has been dismal at best, and a total nightmare at worst. I haven't felt like I've gone through more of a grind in my entire life, and that's a horrible thing. College should be challenging and enriching, but instead it's been mindless and dull. Trudging through class has been the bane of my existence for the last two years, and I honestly don't have much to show for it in terms of new knowledge. The vast majority of the new information that I have obtained throughout my college life has been independently and outside the scope of class.

The problem is that my overall GPA doesn't reflect the lack of challenge. Quite the contrary, in fact, it would seem from an outsider as though I struggled through, hanging on to the one lone thread of understanding from a particular course and pulling it through to obtain a barely passing grade. That is an unfortunate side effect from a curriculum that isn't engaging or enveloping. Frankly, I don't think the knowledge and experience that I have gained while on this campus is enough for me to be a worthwhile hire for a potential employer. So I've been doing other things...

I just hope those other things are evident to my potential employers when I apply for a job.

Perry Dental Health Consulting

The website for Dr. Perry's new consulting company, Perry Dental Health Consulting, is up and running! This was a project long in the works, and I think it turned out very nice.  It is using jQuery to show and hide the main content, which is all preloaded.  We also used Google Calendar to display information regarding Dr. Perry's speaking events.

Wednesday, October 5, 2011

AJAX, HashChange, and Twitter

I've upgraded troy swanson dot net to use the HashChange event, and converted the site to an AJAX-only experience. Now, one page is loaded, and any links that are clicked are fetched asynchronously using jQuery.

Also, I added a Twitter node in the side bar, and am working on creating a client that utilizes Twitter's Streaming API to fetch tweets in real time. Right now, I'm using the RESTful API to fetch tweets every 5 minutes.

Monday, September 5, 2011

The REST Tester

Back in March, I was experimenting with DOM and XPath stuff in my labs and created a little utility called the DOM Viewer. The DOM Viewer was a very specific utility that was only geared toward grabbing XPath values, and for that it worked like a champ. However, I found myself wanting to dig deeper into HTTP requests - adding POST values, new header fields, authentication, etc.

In the past, if I wanted to experiment with low level HTTP requests, I would code something from scratch using php and cURL and var_dump my way to victory. However, low level HTTP debugging is becoming increasingly important with the addition of so many RESTful APIs on the internet these days, so I decided to develop a new product called The REST Tester.

The REST Tester is a simple utility designed to help web developers debug RESTful API calls. The main purpose is to let web developers see what they're working with before they start cracking into the code. As of right now, you can call resources that return any kind of text data in the body of the response. I've also added support for image MIME types, so if you call a resource that returns binary image data, you should see the image in with the response.

In the works are Cookie values, custom header values, multiple HTTP Authentication methods, multiple HTTP request methods (DELETE, HEAD, etc.), and support for other content types. I also want to add some formatting to structured responses like JSON or XML. This is definitely just the beginning. If you have any suggestions or comments, please email me [at] troyswanson [dot] net.