PEBKAC

Mini-Review: Samsung Galaxy S 9000i

It's been about 10 days since I got my hands on the Galaxy S, and I think a mini-review is in order. I do not consider myself an expert reviewer and more comprehensive reviews, please check Engadget, GSMArena or PhoneArena. However, I can review it from a consumer's point of view as someone who will be using the phone daily and have actually paid for it. Without further ado. 

Pros: 
1. The huge 4" AMOLED screen: Definitely one of the biggest selling points of the phone is the huge, vibrant screen. Every app, every webpage, is rendered with crystal clarity. The phone feelss very responsive and the touch transitions look smooth. 
2. Browsing/Email: The built-in browser is fast at rendering detailed webpages (even JS heavy pages) and with the Froyo update will support Flash apps (The phone comes with Eclair). The GMail app syncs effortlessly with your Google accounts (GMail, Contacts, Calendar on both standard edition and Google for apps) offering you a single point of control for everything. And it allows tethering! 
3. FM Radio: Huge plus for someone like me who commutes everyday and loves listening to their favorite radio shows. 
4. Swype text input: Definitely something that impresses everyone, miraculous text entry by just dragging your finger across different keys. 
5. The battery life: You'd think that with a screen so huge, you'd barely get half a day with it, but I can get two whole days out of it and I'm definitely a phone addict. 
6. The Mario Live Wallpaper: Enough said. :D

Cons: 
1. No flash: If Samsung included an awesome 5 MP camera and 720p recording, I think it would've been a no brainer to include a flash as well. 
2. Samsung Kies: I'm not sure if this is a pain point universally or it's just my old notebook, but it took me a while to download this 130MB PC Syncing app, then at least an hour to install it, and then it threw fatal exceptions and didn't work. I haven't tried re-installing it yet, but that was a major frustration. I hope it's not as bad as iTunes. 
3. Android Market: Yes, it's true! Most of the apps in the marketplace are crap except for official apps (Twitter, NYT, etc). I'd like to think of this as an opportunity as a Java Developer, but for the common consumer, it sucks. Google really needs to work on making the market more usable for both consumers and developers, especially for the paid apps. 

So who is it for? 
Well, if you look at the specs of both Galaxy S and the iPhone4, you'll see very little differences in features (except the death grip, I tried it and the Galaxy S doesn't lose reception). In Australia, the cheapest Galaxy S plan is the $49 cap and the cheapest iPhone4 plan is the $59 cap (Optus, $0 handset), so it is a little cheaper. Any iPhone user should feel right at home on the Galaxy S, it does really feel like a top of the line smartphone. So it all comes down to choice. No longer is the iPhone lightyears ahead of every other phone. If you're sick of Apple's total control over your phone, or Jobs forcing you to upgrade your phone every year, the Galaxy S is for you. Try it, you'll never go back. 

Configuring Eclipse with Axis2 and Tomcat to create a SOAP web service client

I recently had to create a client for an Axis2 based SOAP web service and it took me a couple of hours to get the development environment functioning. I searched around the web to find a tutorial but all I could find were bits and pieces of information, so here's a complete guide to configuring Eclipse to get the development going.

Step 1) Get Eclipse for Java EE Developers. If you already have it, make sure it's up to date.

Step 2) Go to 'Window -> Preferences -> Web Services -> Axis2 Preferences'. Download the latest binary for Axis2 and add it's location there.

Step 3) Go to 'Window -> Preferences -> Server -> Runtime Environment'. Download the latest binary for Tomcat and add a runtime environment pointing to it's location.

Step 4) Go to 'File -> New -> Other -> Web Services -> Web Service Client'. On the next screen, you'll see some links under 'Configuration:'. Make sure your server runtime is the runtime with the latest Tomcat and the web service runtime is Axis2.

That's it. Things should work now, write a dummy class to read from your WSDL file to check functionality. During execution, you might be prompted that you're missing some files. Some of them are as follows:
JavaBeans Activation Framework activation.jar | Download
JavaMail API mail.jar | Download
Jakarta httpcore HttpResponseFactory | Download
These can be added by Right clicking on your project 'Properties -> Java Build Path -> Libraries -> Add External JARs' and then feed in their locations.

Now you get to the best stuff, actual development.

Posted July 2, 2010

A bunch of programmers

This past week, one of my professors released the requirements for an assignment. It was like my worst nightmare had come true, it was a team assignment. Yes, I hate team assignments. You never get to pick your team, you always end up with someone you're never comfortable with and the end project's grade always seems lower than you think you would get on your own. So I tried to get out of it. I posted a message on the unit's online board asking whether I can code up with project alone instead of in a 2 person team like specified in the requirements. I swear to God, I could've posted the reply myself. 

No. It is a team assignment. Working in teams is an important aspect of Software Engineering.

Agreed. 100%. Working in teams really is important. But, I'm not quite sure if "team" has the same meaning for this assignment and for Software Engineering. If you're working in a professional team at some respectable company, you'd be sure to find team mates with similar coding skills, a team manager and specified communication protocols. The 2 person teams for the assignments include none of this. You're matched with a random student, some who cannot code at all. Sometimes communication is huge problem, with late replies and endless excuses. Then there's always the difference in the level of enthusiasm. More often than not, the 2 member teams result in arguments regarding the project with no one available to resolve the matter. 

And then again, the 'team' is only supposed to look good on paper. There are no requirements about using VCS or about peer code reviews. You're never actually introduced to how teams actually work in the real world. Most of these projects end with one person completing most of it, and the other scoring a free ride. Or strict distinctions on modules to be coded by each member.

How can this be rectified? Simple, allow people to choose their teams, so they're working with people they're comfortable with (like a startup). Make sure the teams consist of more than 4 people. Make sure they use proper VCS hosted on the University servers (look for the checkins for individual contribution). Have requirements for proper peer code review and refactoring. You know, just try and make sure the teams imitate real software engineering teams as much as possible.    

Steve Jobs Says, "F**k you Ruby Fanbois!' | oppugn.us

Over the last 5-10 years though C has fallen out of favor with the young hipster coders. You know the guys I'm talking about. The ones that have those hot pictures of their slightly pimply faces all done up in their best super model "Blue Steel" looks off to the right of their eloquent prose about how awesome Ruby's latest incremental feature is the coming of Jesus. Or, the guys who just write endlessly about Cucumber, or whatever the testing framework of the week is.

These are also the guys who love Apple. Mostly because DHH loves Apple. Never mind that getting up and running with Ruby on Rails on a Mac takes a metric fuck ton of ass raping while on Linux it's next to trivial (well, at least if you aren't on Debian). Nope, real coders use Apple because the typography is sooooo awesome. "Look at the serifs on my Ruby do block!"

I have even heard one ruby coder say these words:

"Typography is the most important part of information science."

What?! Uh, huh? Information science has nothing to do with typography. Why would anyone ever think that? Information science is about books and human knowledge and how it's stored and searched for and the fucking font doesn't matter. That's like saying 1+1=2 but 1+1=3 because it's "emphasized font".

Well today, I am in love with Steve Jobs. He apparently agrees with me that these guys shouldn't be coding.

Microsoft rejection letter, 1987. (Scripting News)

In 1987, my company, Living Videotext, had a hit product -- MORE. It was one of very few products selling on the Mac platform, having shipped in the prior year. It led a new category we called Desktop Presentations. The other product in the category was PowerPoint, produced by a company named Forethought. Permalink to this paragraph

I had a meeting with Bill Gates at Esther Dyson's conference in 1987, and he popped the question every developer wants to hear -- Can we buy you? I said of course. So we started negotiation, agreed on a price and due diligence began. Then I got a letter from Frank Gaudette, the CFO of the company, and a phone call from Gates, saying they decided not to do the deal. They were buying our competitor, PowerPoint.  Permalink to this paragraph

I totally wanted the deal. In 1987 Microsoft was freshly IPO'd. The deal was for stock, and its value had doubled while they deliberated. So I sent a letter basically begging them to do the deal, but I got back the rejection above. PowerPoint became a household name, and MORE did well, but I probably would have had more fun at Microsoft, and certainly would have made more money.

The American Dream: 17 Years of Engineering Software

Seventeen years ago, on April 10th 1991, a plane landed in John F. Kennedy airport. That plane had just crossed the Atlantic carrying, amongst others, passengers escaping the crumbling Soviet empire. One of whom was me. I walked off that plane with a first ever taste of Coca-Cola in my mouth, a lame teenage mustache, and not a clue about what to expect.

When my sister emailed me on April 10th 2008 and reminded me of our immigration anniversary, I was suddenly overwhelmed with memories. A lot has happened since then. 17 years is such a long time that it is difficult to fathom. I am left with bits and pieces of memories and the person that I am today. Each memory by itself is rarely strong and profound. A single memory is a just a dot in your timeline. But when you pile the memories on top of each other, you get a bigger and better picture. Here is to everyone who made my American Dream come true and all of you who helped me grow as a software engineer.

Daring Fireball: New iPhone Developer Agreement Bans the Use of Adobe's Flash-to-iPhone Compiler

In the new version of the iPhone Developer Program License Agreement released by Apple today (and which developers must agree to before downloading the 4.0 SDK beta), section 3.3.1 now reads:

3.3.1 — Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited).

My reading of this new language is that cross-compilers, such as the Flash-to-iPhone compiler in Adobe’s upcoming Flash Professional CS5 release, are prohibited. This also bans apps compiled using MonoTouch and Unity3D — tools that compiles C# and .NET apps to the iPhone. It’s unclear what this means for tools like Titanium and PhoneGap, but it sounds to me like they’re on the wrong side of this new rule, and the folks behind Appcelerator already realize they might be out of bounds.

There was no mention of this change during the announcement event today, but the language in the agreement doesn’t leave much wiggle room. It could hardly be more clear if they singled out Flash CS5 by name. (Wonder what Adobe does now? CS5 is thisclose to release and the iPhone compiler is the flagship feature in this version of Flash. They’re pretty much royally fucked.)

Posted April 8, 2010

Seth's Blog: The Levy flight

An animal that forages will hang out in a small area, looking for nuts or berries, then will realize it has used up all the likely sources in this spot. It will then head off in a random direction, walk many paces, and start foraging again. When you plot the Levy flight, it looks like this:

Someone discovers your site. They poke and prod and join and return and return again. Then they feel as though there's no more benefit and they move on, surfing until they find another place to forage.

Posted April 8, 2010

AdLib: Apple’s Secret Weapon For Making Better Web Apps For The iPad

Back in December of last year, John Gruber noticed that the on-handset iPhone user guide exhibited a bunch of behaviors that web apps normally couldn’t. Tool bars locked in place, clicks felt natural, and scrolling elements seem to emulate those found in native apps. He did a bit of tinkering, discovering that this was all made possible by a custom Javascript framework built by Apple called “PastryKit”. This iPad sorcery appears to be an extension of that.

The guys who brought it to our attention, Done21, are tentatively referring to this unannounced, not-quite-public framework as “AdLib”, after the file that contained it all: AdLib-ug-ipad.js. This name is by no means official – it’s just the best thing we’ve got, so far.

Coming in at just shy of 45,000 lines of code, the entire purpose of AdLib appears to be to bring native app-esque functionality to Web Apps, often counteracting the default behaviors that make Safari play nice with the rest of the web.

Posted April 7, 2010