IPhone fun, yet again

For anyone who’s missed this:

Teen Releases First Jailbreak App for iPhone 3GS

You’d figure Apple would learn eventually and stop trying to lock down it’s products… Oh, wait.



The epitome of gimmick

*** The original address for this post is https://bigendian.wordpress.com. If you read this post anywhere else, it means: A. It’s stolen.  and B. You read some mighty boring sites (That would steal THIS). 😉  ***

I haven’t had much time to update in the past couple of days (lots of fun Java work) but I wanted to share a small site which I think is a serious contender to the “Epitome of Gimmick” award: http://blackle.com/

The concept is simple: Darkness takes less energy than light, therefore, if we make our screen entirely black, it will take less energy than if it were white (like Google).

It’s a gimmick for two reasons.

A. Depending on your screen, black may actually take more energy than white, and

B. If you had said this five years ago, people would have looked at you like you’re nuts and asked you if you didn’t have anything better to do. If you say it five years from now, people would look at you like you’re nuts and ask we don’t you invest your energy in some REAL energy saving solutions.  But now, right now, people are already concerned enough about the environment to listen to things like this, and clueless enough to actually follow them. This leads to a site which has no distinction other than its color scheme becoming a major destination on the Net.

Something that isn’t special, but has something that looks special enough to attract your attention. Yup, that a gimmick alright. 🙂 Personaly, I’m waiting for the IPhone app that would blacken the touch screen…

Ok, Back to JavaLand.


Asking questions that mean something.

Here is a trivia question for all the minutia lovers out there: what former US surgeon general looks like colonel sanders and has a name that has something to do with chickens?

Go ahead. Type that into Google, bing, or Wolfarm alpha, and see what you get. Chances are it’ll be a long laundry list having to do with Obama picking his surgeon general, KFC, or chicken jokes. In fact, you will get a whole load of matches to your query, but you will not one simple thing: an answer.

This is, of course, because search engines don’t understand questions. They simply scan your search terms for keywords and try to give you relevant pages. They do some rudimentary grammar analysis to try and determine the subject of the query (IE the thing you are actually looking for) but more often than not, they get it wrong (which is why you get more entries about chicken then the surgeon general). Search engines have a hard time with descriptions, too. A ‘man who looks like a thing’ is the sort of thing that a search engine simply can’t handle. And finally, search engines can get easily confused in determining what pages to return that might contain an answer (Consider this post, for example, it has links to search engines, chicken jokes, and observations about grammar. If you had to quantify it by keywords, you’d end up with some mighty odd matches)

I say this because there has been a trend recently of creating “answer engines” – search engines that can understand your question and miraculously supply you with the answer. It started a few years ago with “ask Jeeves” (now part of ask.com) and had its latest arrivals in the much publicized Wolfarm Alpha and the bing “decision engine”. Sadly it seems that hype aside, there really is no noticable difference between a search engine and a answer engine, with the possible exception of Wolfarm – the first engine that has the desency to tell you when it doesn’t understand what you want.

I’m not faulting search engines developers, mind you. Understanding plain-English questions is a hugh and daunting task, and the field is really only init’s infancy. Search engines have gotten a lot better over the past few years, and will continue to improve (and users will continue to get better in searching, which is a different topic for a different day.) But we’re still far far away from the day when all the knowledge of the Internet is at our fingertips. Search engines can fill in many details, but they’re no replacment for a structured approche to learning,  no replacement for simple thirst for knowledge, and no good in trivia. At least, not yet.

Big Endian.


For anyone who’s wondering, the answer is

C. Everett Koop

C. Everett Koop

a great name, if I ever heard one.

Fair use vs Piracy

I mentioned a week ago that a certain site seems to be stealing programming-related content from several blogs including my own. I took it upon myself to notify the two other people who’s blogs I found and telling them too, and so I was delighted to hear from sriram chewsthefat – one of the two – who wanted to know how to lodge a complaint against the site in question. Sriram: Due to the fact that the site doesn’t have any email or contact information, I ended up lodging a complaint with their HOST company, called HostGator.com. You can find exact directions on how to lodge a complaint at http://www.hostgator.com/copyright.shtml Good luck.

During the course of the week I discovered yet another site which was stealing my posts: http://iphones.analyzetime.com/just-because-its-mobile-doesnt-mean-you-should-move-it/ (You might notice that the headline sounds awfully familar..) Yet, I don’t mind this one nearly as much, for a very simple reason: Whoever copied my post put a link to this blog at the bottom of the page. They didn’t pretend that they wrote my blindingly witty comments about the IPhone, they attributed them to the source.

That’s the small but oh-so-curcial detail. Above all else, a writer want to be read and recognized. When I write a piece about facade classes, of java Strings, or even why IPhones suck, I want who ever reads is to benifit from it, and I want that person to be able to respond to me. I don’t really care how a person found my words. I care that he finds them, reads them, knows who wrote them, and occationally write something back. Nothing is more exciting to a blogger then comments (hint hint) , so when a site uses my words but strippes out my name, that’s piracy, and it makes me mad. Where as a site that links back to me will never hear me complaining. And why should I? They’re just helping advertise my blog, it’s fair use. And if they make money in the process, well… I’ll chuck that up to advertising fees. 🙂

Good weekend,


P.S., On the same topic, check this out: http://gawker.com/5301674/wired-editor-steals-content-for-book-about-how-content-should-be-free

Just because it’s mobile, doesn’t mean you should move it…

Two tidbits caught my attention today:

1. According to Engadget the Autonet Mobile router, which turns your car into a wifi hotspot, will now be sold via Amazon for the paltry price of $299 (plus a $29 monthly fee.) The move was announced after both Chrysler and General Motors, who had been Autonet business partners, have recently gotten into financial trouble. While personally I have to applaud the company for it’s tanacity and customer empowerment , I still have to ask: Who ever came up with the notion that this is a good idea? Have we really become so connected that having Wifi IN THE CAR seems like something we absolutly need?

2. A recent study by SquareTrade finds that over 20% of IPhones have been damaged by accident within 22 months of purchese (report published on Techcrunch.com) .  According to the study, 66% of the accidents involved dropping the phone on a hard surface, while and additional 25% involved water damamge, such as dropping your phone in the toilet. In the face of such numbers, I do feel that one has to ask: Is it possible that some of these “accidents” weren’t so accidental? Could some of it be just the end results of IPhone users trying to actually get some use of their phones? Just wondering.


De-Coupling MVC with Facade classes

Please note: The original url for this post is: https://bigendian.wordpress.com/
If you are reading this on any other web site, this content is stolen.

One of the best and worse things about Java is the easy way it allows you to create GUI elements and their associated commands together, which makes for very simple way to develop user interfaces.  This is one of the best features because it allows developers to concentrate on developing program logic, and simplifies interacting with the user to a level attainable even by beginners. It is one of the worse because this integration can lead to a very tightly coupled View and Control. Two of the three major part of the Model View Control (MVC) design pattern. MVC calls for each part to be separate and independent, so as to allow better code re-usability, easier maintenance, and better task grouping. This is certainly possible in Java, but requires more work then just building the control logic right into the GUI classes, and so developers don’t always bother to make the separation.

My current project, for instance, uses exactly this kind of tight coupling, which I’m trying to undo. I am looking to separate the view and the controller into independent code, and actually into different programs. The controller and model code requires administrative privileges to run and need to run all the time, while the GUI code requires just regular user privileges and only when the user wants it. So I’m separating them into two separate programs which will communicate over a shared channel.

The problem, as I mention, is that my GUI and the actions that it creates are coupled very tightly with the controller code itself. There is no point were controller threads are registered on GUI components and get notify()ed of state changes (yes, a Java method as a verb. Live with it). Rather ActionListeners directly invoke methods in the controller classes to make things happen in the program. It works, but it’s a bit messy, and can be a real problem considering that in the new paradigm, all commands and feedback are going to travel over one point of contact (the Channel). There are twenty-some methods being invoked from three classes that are part of the program cotroller. All of thoes need to be brought under one roof.  I could rewrite every one of them to call my ChannelCommunicator class instead, and ask it to transmit the command to the controller, but this is both tedious and potentially dangarous since I don’t know what else in the code is dependet on those methods being invoked in this certain way.

Facade classes to the recue! A facade class is a class which presents a simplified view of a subsystem and makes it easier to use. In my particular case, this means that I can create a facade for each of the three classes mentioned above. The facade function as an abstraction layer which implements the methods that my GUI classes expect to finds on on side, and passes calls to the ChannelCommunicator in a unified way on the other side. The GUI is happy because nothing has changes (except for the class name), the ChannelCommunicator is happy because it gets one type of call and doesn’t need to deal with special cases, and I’m happy because I don’t have to re-write every method that’s involved! Fantastic!

The thing to remember about this paradigm is that your facades come in pairs, and thus there is a certain amount of duplication involved. Why pairs? bacause I have to put a facade for the controller between the GUI and the ChannelCommunicator and, on the other side, I have to put a facade for the GUI between the ChannelCommunicator and the controller. The nice part about it is that these classes are really nothing more than parsers which translate the specific format of each command into a standard format the communicator can understand, and parse it back on the other side, so the logic involved is not very complicated. Still, this is a stopgap solution to allow MVC decoupling without having to redesign major parts of the code. In a perfect world you’d be better off re-writing the methods. But then, in a perfect world you wouldn’t have this problem to begin with. 🙂


P.S. To learn more about design patterned I would highly recommand Bruce Eckel‘s book Thinking in Patterns, which is available to download for free.

Being Spammed as a way of meeting new friends.

I mentioned in my previous post that a certine site seems to be stealling content from my site. And not just mine, incidentally, I found two more victims:

http://mishalsoftwareprofessional.wordpress.com (Post:differences-between-software-development-and-software-engineering)
http://sriramchewsthefat.wordpress.com (post:/a-simple-logic-for-swapping-values-of-two-variables-without-using-temporary-variable-or-pointer)

Beyond being annoying and kinda pathetic, the problem that any blogger has with their posts being stolen is that it may result in lost readership from people who might have otherwies read to post in it’s proper place on the blog. So once I discovered that my posts are being stolen, I looked to see if there are any comments on them that “belong to me”.

While I’m happy to say that I didn’t find any real comments, I did find one spam comment about a money making scheme through Google. The whole thing wiffed of a scam from the get-go. I LOVE scams, and consider them some of humanity’s greatest work of fiction and innovation, so with a little screat throb in my heart, I clicked the link.

The scam itself was pretty basic, and a quick search for the guy’s name revealed a really neat site explaining the makeup of a scam page in detail, which was very interesting. But what caught my eye was the third link in the search result: a woman asking the guy from the scam page to stop spamming her. The synopsis was cute and witty, so I clicked on the link and discovered Clara Todd from Cambridge, UK,whose blog Anglodoodlge, managed to cram posts about the IPhone, a chicken coop, Poetry, and Bra sizes all in one page of posts. And make it funny, on top.

The kicker is, of course, that I would have never found Clara’s blog if we weren’t both (in a distant way) targets of the same spam. Seems to me there’s a new startup company here waiting for someone to start it: “Tell me who spams you and I’ll tell you who your friends are”. Could be the next big thing…