Monday, July 14, 2008

I do not own an iPhone.

I own a MOTORAZR.
My poor phone has had its balls unceremoniously removed by my wireless carrier. Yes, I admit, I have Verizon.

My Verizon contract is expiring in November. Since the standard cell contract is 2 years, I have been shopping for not only a new phone but a new carrier. I'm going to be graduating with this phone, and this carrier. Verizon got me when I was graduating high school. They were appealing on plan cost, "in" calling. I didn't care much about phones or features. Times have changed. I'm addicted to the internet, I need e-mail at my beck and call, IM available at all times...just in case. My life is ruled by Microsoft exchange. I'd really like to have that calendar at easy access.
My iPod is beginning to die out. Bad battery, freezing hard drive...it's out of warranty. Why buy two devices when I can get one? Unfortunately the only "one" device is the iPhone. There are a few that come close in cool. And given the type of people who've jumped on the iPhone...I've really been trying to avoid buying an iPhone.

So I've been looking for my transition phone on the eve of the release of Apple's next massive lifestyle addon. And HOO-Boy, it's hard to avoid.

However there are several other phones available on the market (Closed source/proprietary OS phones only...I have yet to see hide or hair of a LiMo or Android phone) with compelling feature sets.

This excludes the Windows Mobile and Blackberry phones. I don't know why, but it always feels like these phones are trying to violate my corneas in incredibly inappropriate ways. SO! I ignore them.

The LG Dare: 4 Cool points.
The LG Dare is an all touch screen feature phone. I think it is of note because it is the only phone I have seen that has a concept resembling a desktop, and not just a collection of shortcuts. The "dumped" look of the icons on the "desktop" is very interesting, and very indicative of the amount of eyecandy the phone presents. The phone uses the same mobile e-mail app as most Verizon phones. It also has its balls removed, like most Verizon phones. The calendar is passable by itself, but it doesn't sync to...anything. The e-mail app on the touch phone doesn't provide the most compelling interface, since it's just an update of the old app to use touch interaction, but it serves well. The screen is very bright and clear and the touch is very responsive. But in the pure-touch contest it can't compete with the Samsung Instinct or the iPhone, it just doesn't have the features those do.

The LG Voyager: 6 Cool points.
The Voyager is a dual screen phone carried by Verizon. There is a touch screen on the front allowing access to the phone, contacts list, some other features. It does a very good job here, the phone is very easy to use. To use any of the advanced features like the browser or the text client, you simply FLIP the phone open to reveal a full QWERTY keyboard and another GREAT screen. This one's not touch though. Aside from the interface differences (The keyboard, the dual screen) this one doesn't have anything on the Dare. The Dare I used at the store actually had the e-mail app installed, the Voyager didn't. The phone actually loses there. The Voyager does have several cool points on the Dare, simply by virtue of its unique interface.

The Samsung Instinct: 8 Cool points.
This phone is seriously one of the coolest things I've ever held in my hands, next to girl-parts. This is another all touch screen phone. It has a very large screen, a bit smaller than the iPhone's, but larger than pretty much everything else on the market. Even those eye-porking blackberries. The colors are smooth, the screen is great...even for video. The browser is marginally better than the Verizon standard browser. The phone also has a pretty-ok music player and a standard headphone jack. Which serves my purposes well. I love the interface on the phone, the menus are very intuitive, the keyboard is surprisingly good, the phone app is slick. The haptic feedback is done quite well, it's present but not obnoxious. Sometimes it lags a little bit when switching layouts or moving between applications but it's still better than anything Apple's done. The e-mail application on the phone configures almost effortlessly to work with Outlook Web Access, but doesn't sync to the calendar. The lack of calendar sync is really the ONLY thing I don't like about the phone. Since they're scraping OWA already it'd be pretty inconsequential for Samsung/Sprint to hook this into the calendar, much like the Evolution Linux e-mail client. Unfortunately the platform the phone runs on is closed so no one can write a bridge...Samsung will have to do it, and they really ought to do this, if they want to compete with the iPhone. And WOAH they want to compete with the iPhone.

Apple iPhone 3G: 9 Cool points.
This phone has been written and talked about ad-nauseum. I'll keep it short. Think of the Samsung Instinct: now make it a little wider, taper the edges, brighten the interface, add calendar synchronization to Exchange, add some more applications on the phone by default, remove the haptic feedback, double the maximum storage capacity (but remove the expandability), and add an SDK. The iPhone uses a heat sensitive screen for its touch, not pressure like most of the touch phones on the market, slight difference but given the SDK people could actually use this. Also add that it's an Apple product, and everything that comes along with that.
...Turtlenecks, berets, inability to upgrade computer hardware, a strange desire to round all the corners on websites, goatees...


So there is the not quite objective review of feature phones. Despite my very strong desire to NOT like the iPhone, it still wins on cool...but only barely beyond the Instinct. Unfortunately Apple's always going to have the upper hand since the phone runs OS X under the hood and that allows for the robust SDK. A proprietary platform like the Instinct's will never compete with this. Samsung's only move would be to adopt LiMo or Android. (*wink*) I have reserved the 10/10 cool point rating for a phone like the Samsung Instinct running an open platform. An unencumbered phone WILL beat the iPhone...because OSS developers will make it so.

--PXA

Wednesday, July 9, 2008

Exchange Form-Based Authentication and WebDAV in Python.

Since I've become employed fulltime at RIT, in addition to my part-time work with Synacor and trying to maintain something resembling a sleep schedule...I haven't had too much time to write. I did complete a successful test of the gcal sync software and then realized that IMAP won't allow me to place appointments into it making 2 way syncing impossible. So I have been forced to try to re-architect the script using Exchange's poorly documented WebDAV API.
WebDAV is supposed to be an XML web service that goes over HTTP/HTTPS. Unfortunately Microsoft can't do anything right. DAV uses several non-standard HTTP methods, like SEARCH, PROPFIND, PROPSET...instead of the standard HTTP GET, POST, and PUT methods.
Microsoft Exchange also has a bit of a quirk called Form-Based Authentication. When you enable Outlook Web Access, this is the only way to authenticate. Without OWA you can use Basic HTTP Authentication which is pretty easy. With OWA you have to do some interesting maneuvering to get your query in. From a theoretical point of view, what you need to do is simple:
  1. Fake an HTTP Post to the owaauth.dll file.
  2. Receive the response headers and pull the cookies, store them.
  3. Send these cookies back to Exchange while making your "special" DAV SEARCH request.
However, implementing this gets a little annoying. I've been using Python...which has a pretty slick high-level network protocol API, called urllib2. Which can automatically create HTTPS connections, parse HTTP response headers and grep out the cookies, create requests and urlencode GET and POST strings, all sorts of happy things. Unfortunately this library only deals with GET and POST, unless you write your own "handlers". I wasn't sure how to go about extending the library so I chose to go the dirty hack route and implement the functionality I needed at the low level.


import httplib,urllib2,cookielib,sys,getpass,Cookie

exchserv = raw_input('Exchange server: ')
loginex = raw_input('Enter Exchange Username: ')
passex = getpass.getpass('Enter Exchange Password: ')
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPSHandler(),urllib2.HTTPCookieProcessor(cj))
urllib2.install_opener(opener)
owabody = 'destination=https://'+exchserv+'/exchange/'+loginex+'/&username=main\'+loginex+'&password='+passex
owaheaders = {'Content-Type': 'application/x-www-form-urlencoded',
'Connection': 'Keep-Alive',
'User-Agent': 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.4322)',
'Host': exchserv}
owareq = urllib2.Request('https://'+exchserv+'/exchweb/bin/auth/owaauth.dll',owabody,owaheaders)
owa = urllib2.urlopen(owareq)


conn = httplib.HTTPSConnection(exchserv)
conn.set_debuglevel(99999999999)

#there is nothing I like better than manually constructing HTTP headers.
conn.putrequest('SEARCH','/exchange/'+loginex+'/')
conn.putheader('Content-Type','text/xml')
conn.putheader('Content-Length', len(davapptquery))

stringofdeath = ''
for i in cj:
stringofdeath += i.name+'='+i.value+';'
conn.putheader('Cookie', stringofdeath)

conn.endheaders()
conn.send(davapptquery)

resp = conn.getresponse()


Where davapptquery is an unholy string containing a SQL query wrapped in some XML.
I pretty much suck at python, but this does work. Someone better could probably more easily create a handler for exchange's DAV insanity.

Monday, June 23, 2008

Complaints and Grievances

George Carlin died today, of what I understand to be a heart attack.
That sucks.

I started listening to Carlin around the time I was a Freshman in High School, and for better or worse, he shaped a lot of my outlook back then. And still does, but really it's hard work being that angry all the time so I had to calm down. He might have major psychotic fucking hatreds, but for me it's OK to have pet peeves.
My first idea for mourning the man was to go to the bar with my friends and raise a pint of Arrogant Bastard Ale, for a real Arrogant Bastard...unfortunately due to the New York State Driver's Assessment fee I'm dead broke. SO for now I'll just recount some of my favorite Brain Droppings. And go to the bar after I get paid on Friday.


  • "I don't have Pet Peeves, I have major, psychotic fucking hatreds"
  • "Just last week I either ran over a sheep, or a man standing in the road wearing a sheepskin suit."
  • "If you're looking for self-help, why would you read a book written by somebody else? That's not self-help...THAT'S HELP! There's no such thing as self-help...if you did it yourself, you didn't need help! Try to pay attention to the language we've all agreed on."
  • "And one more item about children: this superstitious nonsense of blaming tobacco companies for kids who smoke. Listen! Kids don't smoke because a camel in sunglasses tells them to. They smoke for the same reasons adults do, because it's an enjoyable activity that relieves anxiety and depression."
  • "Either get a hat or don't. No one's interested in the top of your head. Go back to the store and tell them to give you the rest of the hat. They've cheated you."
  • "And then we're gonna colonize deep space. With our microwave hot-dogs, and plastic vomit, fake dog shit and cinnamon dental floss, and lemon scented toilet paper, and sneakers with lights in the heels. And all these other impressive things we've done down here."
  • "The truth is obedience and respect should not be automatic. They should be earned, and based on the parent's performance. Some parents deserve respect. Most of them don't. Period."
  • "You ever notice anyone driving slower than you is an idiot and anyone driving faster than you is a maniac?"
  • "I have a strong immune system and it gets a lot of practice. My immune system is equipped with the biological equivalent of fully automatic military assault rifles, with night vision and laser scopes. And we have recently acquired phosphorous grenades, cluster bombs, and anti-personnel fragmentation mines. So when my white blood cells are on patrol reconnoitering my blood stream seeking out strangers and other undesirables, if they see any...ANY suspicious looking germs of any kind they DON'T FUCK AROUND. They whip out the weapons, wax the motherfucker and deposit the unlucky fellow directly into my colon. No nonsense. There's no Miranda warning, none of this 3 strikes and you're out shit. First offense: BAM! into the colon you go!"

For some reason I can't go a day without thinking of these 2:
  • "You know when I wash my hands? When I shit on them!"
  • "You just need to wash the 4 key areas: Armpits, asshole, crotch, and teeth!"


And of course:
"Shit, piss, fuck, cunt, cocksucker, motherfucker, and tits."

Listening to Carlin I noticed how easy it could be to use language to change something that made me mad into something I could laugh at.

Thanks, George.

-- PXA

Monday, May 26, 2008

Indiana Jones and the raiders of the temple of the lost crystal ark

I have seen Indiana Jones 4. My impression are thus:
Harrison Ford is old, but surprisingly good.
Harrison Ford is old, so his pants are suddenly incredibly baggy.
Mutt is a STUPID name for a character. I don't care if he's a greaser.
It's hard to write a greaser without making them fix their hair every 30 seconds. It's creepy, stop.
Lucasfilm has lied to me. They have billed Cate Blanchett, but in actuality have cast Lime Helmet Cat. I guess he was cheaper.





And (SPOILER)












What the hell is up with the hook? In raiders the ark was just a box until they opened it, temple of doom it was just a sect until the magical heart ripping out thing. Even in last crusade there was nothing magical until they found the knight and drank from the cup. The whole time through #4 there's some crazy crystal skull which is magnetic (despite being crystal) but also somehow attracts gold, scares away plus-size jungle ants, drives space miners insane. (Right: picture of insane space miner)

And seriously...inter dimensional aliens? Maybe you should'nt have explained the skull to us, George.










However, it could have been much worse and I actually enjoyed it. As a matter of fact, I wouldn't be opposed to the concept of more Indiana Jones, even if Harrison Ford is old.

Sunday, May 11, 2008

Setting up for failure.

As an IT student it, certain things about the way IT is viewed by the rest of RIT. Not the least of which being why everyone I meet always says "Oh, don't you mean 'I Tried'?" when I mention I'm an IT major. I always feel like I need to defend my major, because really...in college we are defined very much by our majors, because once we graduate these will be our careers and we'll be defined by our jobs. Sorry, Fight Club.

As depressing as it is, though, I realize there's an amount of truth to the myth of I Tried. In some sense, anyway. I don't know a single washed out CS or SE that went to IT because they couldn't hack "real programming".

RIT's first mistake is using Java to teach Programming and OOP to IT students. At least in CS you're eventually exposed to C++, but that leaves a bitter taste with a lot of people. They get used to the language coddling them and holding their hand, which is what Java does. In addition, it's incredibly well documented which makes it easy to teach. But the way the sequence is designed, all you do is learn to write code...they don't teach anything about design, or WHY OOP, or the more groady low-down details of programming.
Not that I have any idea what would make a better language...Python maybe? The problem isn't the language, but how they teach it. They spoonfeed you things, and never teach you how to be a programmer. It sets people up to fail when they think they know how to code but don't actually know the finer points.

Since I am on the web track, I had to take RIT's programming for web class, but was lucky enough to be allowed to bypass it. I helped out tutoring some of the students and I was initially horrified at the way to class was taught. It taught students to use procedural, spaghetti code. Now while there isn't anything wrong with procedural code...make spaghetti of HTML and PHP is very bad. It's hard to maintain, confusing to debug, and makes it nigh on impossible to correctly design a large project.
Soon I moved from horror to disappointment when I realized that that was how I learned to code PHP, but I moved on. Unfortunately what I had that RIT doesn't (Maybe can't?) teach is the idea that there is more beyond this.

What they're not doing, is exciting people about programming. Now I'm not saying that they should be trying to get people to become programmers if they don't like it, but there's gotta be a decent amount of people in these classes...especially track courses...that already like programming or are just looking for a reason to.
In programming for the web, RIT should show off some cool stuff that PHP can do. CMS, templating code, sessions, security layers, image editing...interact it with some javascript. Make it do cool stuff on the backend, like talk to other services and send info back to the browser...and not just databases.
All they teach is code-by-numbers quizzes and blogs. Some basic "stick some PHP in here to pull from MySQL and bake a dynamic website" stuff. Yes it's simple and gives you enough to learn the basics of the language...but people need to know it's a spring board to REALLY dive in, and not the end of things.

RIT's failing us as IT programmers, and it's making us look bad. Not cool, dudes.

--PXA

Monday, May 5, 2008

Shenanigans!

The requisite post describing how sweet Steak And Whiskey Night was will be coming soon. This post is serving as an announcement, I am calling shenanigans on the IT department.

I have found a security vulnerability in http://it.rit.edu/, the IT department's public facing website which allows me to arbitrarily inject faculty and staff into the site's database. I have made the department aware of this issue, however should they fail to acknowledge the issue or attempt to take any action against me I will make the exploit publicly available.
Also should they fix it, I will also make the exploit (and my theories for how they fixed it) publicly available as website security is an interest of mine...being a web developer. It should be an informative adventure.

Also the IT department has elected to not offer the course I need to finish my concentration in fall, meaning I will likely not get to take it until winter...and I'm sure will somehow play a role in prolonging my stay at RIT.

-- PXA

Thursday, April 17, 2008

Checking for life...... Not found.

Since the last update to BE, RIT has been bending me over the desk as is its custom. I have a small amount of time free at the moment and I feel I need to keep a modicum of momentum in my quest to have a regularly updated web log. Since I have nothing major to report I will just summarize.

RIT SG:
RIT Student Government Elections are this week, I have already voted. My initial thoughts on the election can be found at the RIT Sentinel:
http://sentinel.ironcouncil.net/2008/04/07/sg-election-time-2008-edition/

As a note, apparently SG will actually count votes for the cockboat this year.

Unfortunately, due to academic concerns, I was not able to make it to the RIT Parking Advisory Group meeting this month. Which is actually quite a pity considering I finally don't have class or work during the hour of the meeting and would've have been able to go if my System Administration lab hadn't taken 6 hours to do. It's hard to find the time to be politically active.



Google Sync:
I have made a pretty decent amount of progress on the Exchange -> Google implementation, however there are still some problems translating Microsoft to Standards. This makes for some annoyances when applying recurring appointments. I was hoping to avoid having to parse and then reassemble the RRULE myself, but this appears to be the only way to get Google to play ball. The UNTIL clause of some RRULEs uses a date/time format which looks like "20080512T010000" or yearmonthdayThourminutesecond. According to Austin from Google's API team I should be saying "20080512T010000Z", I don't get why something that is likely just looking at the day/month/year stuff cares about what timezone the stamp is in (Z refers to Zulu time which was an older name for what became UTC)


Samba:
Recently a co-worker upgraded all the Vista computers in the office where I work to SP1 of Vista, which generally went unnoticed until he went to update our department's intranet site (called DSWeb). DSWeb has been a bit of a pet project for a while for me, working on my sysadmin skills in a practical application environment. The new update to Vista breaks the way it talks to standard Samba servers. Windows based shares (Win 2k3, XP) are likely not affected but the open source implementation Samba, which emulates bits of Windows networking in Linux to allow Linux to do things like Windows File Sharing or join Active Directory managed domains, cannot speak the new dialect that Vista is using. Something about SP1 causes Samba to fail decrypting the challenge when a Vista machine is trying to authenticate. After much misadventure I found that Samba released a bugfix version, 3.0.28a, to address the issue. This is generally marked as unstable or testing by most distributions and must be explicitly installed at this time. However, I have seen no major issues with it and it did fix the Vista issue without even having to modify the configuration file.


Steak & Whiskey Night:
Back in the fall my apartment began a celebration/tradition called Steak & Whiskey Night. It can be celebrated at any time, as often as we want to. This became quite popular, even in the short span of time it existed before Rochester weather became too cold to enjoy the outdoors.
This May, Steak & Whiskey Night returns! It is currently planned for Friday, May 2nd. Attendees are encouraged to bring their own cuts of meat or custom steak rubs. It promises to be delicious.


Graduation:
Is approaching, that is all. With any luck if I can hack around some requirements and get another co-op soon, I will likely be RIT Alumni come next Winter. This concept is bizarre, and frankly a little frightening. I have paid over $32,000 a year for 4 years of my life for this education, and everything I consider at this point to be a marketable skill I have no learned from RIT. I have taught myself, or learned on the job. When my knowledge and RIT's curriculum overlapped, I was told I was out of luck and had to sit through their version. My self-motivation and ability to learn very technical skills on my own was NOT rewarded like I always thought it would be in college, it was effectively punished. So...if they're not going to teach me anything...and I'm not learning anything...Why am I paying this much again? And why does this degree matter? ...Do these skills even matter?

It's probably just Realworld-phobia. I hope.