Monday, October 26, 2009

The iPhone's Mindshare

I keep reading on tech blogs how when Android and other multi-device mobile operating systems gain a significant market share, the consumer will feel overwhelmed by all the smartphone choices out there, as an abundance of choice fills them with fearful thoughts of making the wrong choice. At the face of this daunting task the consumer will run to the loving arms of Apple and their iPhone due to its simplicity and the fact that it's only one device, knowing they're getting the best.

But is it really the best? Even after 3 years, my iPhone 3GS fails to bring me one of the most useful features in a PDA/Smartphone: Multi-tasking. I have to quit Pandora and interrupt my music in order to write a spur-of-the-moment idea in the notes app, or to browse the web, or look up a location in Google Maps. Really? There is no accessible file system. Lack of customization. It took them 2 iterations to include a simple copy/paste mechanism.

Apple apologists will continue to recite their chant about Apple "protecting the experience" but it is painfully obvious that the reality of the matter is they don't give a shit because they've already got their hand in your pocket. It's like the guy that's no longer chivalrous because he already got into your pants.

After 3 years, finally, there are choices out there. Good choices, and choice goes a very, very long way. Will the average consumer care? Probably not. Let them get their iPhones. As soon as a comparable Android device comes to my network, my iPhone will find itself in a selling ad on Craigslist.

Friday, October 23, 2009

On the Socialization of Healthcare

Oh, how many heated arguments have I been in, with valid and invalid arguments flying back and forth on the topic of socialized services. The question is, why is America so adamant in rejecting a public health care option? You wouldn't need to stop getting health insurance, if you don't trust your government-provided alternative. If you chose to use your public option, employers wouldn't have to discount a premium from your paycheck.

The main problem is taxes. Of course, here in America, taxation is a big deal. A really, really big deal. Consider its history: The very reason why the puritans packed their bags and came to the New World was precisely to run away from a tyrannical monarchy and unfair taxation. Their liberties were being stomped on, they were being forced to observe one religion, money was taken away against their will, and they were fed up with it. This country was founded on the premise that the government should not have the power to force you to do anything.

What happened then? Along came taxation. Taxation was imposed on the citizen in 1862 in order to finance the Civil War. The statute underwent several rate increases until 1918 when it reached an all-time high to finance World War I. Up until now, taxation and, more importantly, the distribution of tax rates among the people based on their income, has been one of the most controversial political topics in the country.

You might argue that several European countries have socialized systems that work. Of course, that depends on your definition of "working system". To many Americans, it's not a working system because your liberties are being taken away by forcing you to pay taxes for something you disagree with. This is an easy assumption to make, looking at Europe from our vantage point, that they are all unhappy about having to pay all these taxes and Big Brother is twisting their arm for them.

However, after speaking to their citizens you might get a different idea. After hearing some of their opinions, they seem perfectly happy with collectively footing the bill for everyone's basic needs. Their reasoning is the following: I'm taking care of my neighbor because down the road I will need my neighbor to take care of me. It seems that they agree with being taxed for these basic services, out of their own volition.

What are "basic needs" then? I've heard arguments that the term is ambiguous and thus it is invalid to consider health care a basic need. The problem is many regard health care as not a right, but a privilege. As a privilege, they don't consider it a basic need. However, I think we will agree, no one with health problems should be left to die due to limited finances. With that premise in mind, it is easy to acknowledge that health care is indeed a basic need, as are food, shelter, police protection, fire protection, and education. If its population has limited or no access to either of these, a country will have a sub-par standard of life.

Where does that leave socializing certain industries, like education, postal service, fire department, police department, and health care then? The main argument against it is that your liberties are taken away because your money is being taken away without your consent, against your will. This particular problem of a government limiting a citizen's freedom to deny pitching into the collective pile from his or her income to many is a direct contradiction of the premise of this country's foundation. It's certainly not a question of money: For the average household, the increase in taxes for socialized health care will be comparable to the amount taken away from your paycheck by your employer for health insurance. Even if the increase is marginally more, it wouldn't pose a problem of financial stress.

How do we solve this problem then? We can all agree that the current system is tragically flawed. When a person meets his or her demise due to a death-causing illness that went untreated because of the person's limited finances, we know things need to change. Nationalized health care seems like the way to go, if not for the aforementioned forceful taxation.

A simple solution would be for the government to give the citizen the choice to opt out of being taxed. If the citizen chooses to opt out, he or she doesn't get to take part of the socialized service he she decided to opt out of. For example, if you opt out of paying education taxes, your kids cannot go to public school (or you have to pay a monthly/yearly premium for them to do so, effectively making private school payments). If you opt out of paying taxes for postal service, you don't pay subsidized mailing rates. If you opt out of paying health care tax, you don't get health care unless you have insurance, or foot the bill yourself (the way it's done now). This way, the government will only tax those whom of their own volition choose to be taxed for these services. Services like the police and fire departments, sanitation, road services would remain the way the are now, as everyone needs these services available to them.

In the end, a perfect system that caters to everyone's needs and makes everyone happy will never see the light of day. One thing is clear though: The current system is broken and it can be made better. It is up to us to think up better ways to approach the way basic needs are met for the population of our country. In the 21st century, we cannot be the only developed country in the world that lets its citizens die because they cannot afford to pay stratospheric health care bills.

Tuesday, October 20, 2009

Apple Magic Mouse

Apple introduced today a mouse with a multi-touch surface and one giant button that clicks enclosing its body. While it is absolutely a beautiful device, the early hands-on impressions across several tech blogs seems to point that it's not much of a detachment from Apple's earlier mishap, the Mighty Mouse.

So, is the Emperor (so many connotations there) really wearing no clothes? We'll see as soon as the reviews start bubbling up.

Monday, October 12, 2009

Why grinding in MMOs is bullshit

I got into an interesting argument with a friend I play Aion with today. The argument ensued when I mentioned my disapproval of the crafting system in the game. My argument was that it is so tedious and requires so much brainless grinding that makes the game feel a lot less like a game and more like work. I'll be damned, I said, if I'm going to pay all this money and a monthly fee for a game that (in order to get the cool stuff) expects me to go through a process that is inherently not fun.

My friend's argument goes into the psychology of playing videogames and stated that games, and particularly MMOs rely on a false sense of achievement to keep the players engaged and happily throwing away their $15.00/month. In order to have this sense of achievement, he asserted, it is necessary to make it tedious, time-consuming and boring to achieve things. This way your success will feel ever so much sweeter, enjoying the fruit of your labor.

For this reason, he said, grinding is a necessary part of any MMORPG. It feels like work because it IS work; just virtual work. The game provides a level of pleasure because you achieved something you worked hard for. There is no way to feel that pleasure of having accomplished something if you didn't have to go through pain to get there.

Apologies to my friend, but I partially disagree. I agree that achievements should be the fruit of hard work and time spent, but I completely disagree with the notion that the process towards a specific goal must be the opposite of fun in order for the result to be enjoyed. If we break it down to process and result, we can use all other game types as examples. Consider, for instance first-person shooters:

When you start playing an FPS, you get killed easily and lose a lot because you're not used to the weapons, don't know the maps and aren't familiar to the pace of the game. If you take losing very seriously, it is really easy to get frustrated and give up. However, if you want to get to leet l337 status, you have to play, and play, and play. This is the process. The result, of course, is that you'll be pwning n00bs all the way to victory. But you see, even the process is fun! Getting really good at an FPS by practicing a lot is also fun, even though you're losing half the time.

Why, then, can't an MMO make the process of leveling or the process of getting a high crafting level fun? I attribute it to lazy game design when the game producer fails to come up with a way to make the process fun, resorting to using old techniques that hinder the otherwise pleasant experience of playing their game. In the end, my point is the following: hard work and dedicated time is necessary to achieve a high status in any game. However, if the time dedicated involves tedious, boring and brainlessly repetitive work, you're doing something wrong.




Thursday, October 8, 2009

Public peeing etiquette

Dear guy peeing next to me:

Please don't speak to me while we've got our respective cocks in our hands. Please don't turn your head and attempt to make eye contact. It's creepy. It's uncomfortable. Kthxbye.

Monday, August 31, 2009

Connecting to a MySQL database using JDBC

I found this article to be pretty useful when learning to connect to a MySQL database using JDBC.

http://www.kitebird.com/articles/jdbc.html

Thursday, April 16, 2009

Mo' quotes

"Public opinion, or what passes for public opinion, is not invariably a moderating force in the jungle of politics. It may be true, and I suspect it is, that the mass of people everywhere are normally peace-loving and would accept many restraints and sacrifices in preference to the monstrous calamities of war. But I also suspect that what purports to be public opinion in most countries that consider themselves to have popular government is often not really the consensus of the feelings of the mass of the people at all, but rather the expression of the interests of special highly vocal minorities — politicians, commentators, and publicity-seekers of all sorts: people who live by their ability to draw attention to themselves and die, like fish out of water, if they are compelled to remain silent." - George F. Kennan

"Condemn me, it does not matter: history will absolve me." - Fidel Castro

Wednesday, April 8, 2009

Favorite Aristotle quotes

"A tyrant must put on the appearance of uncommon devotion to religion. Subjects are less apprehensive of illegal treatment from a ruler whom they consider god-fearing and pious. On the other hand, they do less easily move against him, believing that he has the gods on his side."

"Money was intended to be used in exchange, but not to increase at interest. And this term interest, which means the birth of money from money, is applied to the breeding of money because the offspring resembles the parent. Wherefore of all modes of getting wealth this is the most unnatural."

"It is simplicity that makes the uneducated more effective than the educated when addressing popular audiences."

"The young have exalted notions, because they have not been humbled by life or learned its necessary limitations; moreover, their hopeful disposition makes them think themselves equal to great things—and that means having exalted notions. They would always rather do noble deeds than useful ones: Their lives are regulated more by moral feeling than by reasoning.... All their mistakes are in the direction of doing things excessively and vehemently. They overdo everything; they love too much, hate too much, and the same with everything else. "

"Even when laws have been written down, they ought not always to remain unaltered."

"The basis of a democratic state is liberty."

Friday, April 3, 2009

Update a particular number of rows

There are times when you only want to update a specific number of rows. In Oracle, the way to do this is to use the rownum variable in the following way:

Update x
set x.foo = 'hello'
where rownum <= 500;

This way, Oracle will only update the first 500 records it finds.

You can use rownum in virtually any DML statement. Try it on a select statement:

select x.foo
from x
where rownum <= 10;

Your result set will only have the first 10 records displayed on the screen.

Thursday, April 2, 2009

Joins in an Update statement

I spent a great deal of time trying to find out how to do an efficient JOIN in an UPDATE clause on Oracle. Tom has some great input on this:

http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:164612348068

Friday, March 20, 2009

Internet Explorer 8

I thought I'd never say this about any version of IE, but I like it. It borrows heavily from Google's Chrome browser, and with good reason; Chrome is fast, reliable and has a nice set of features. The slices (borrowed from Safari) and accelerators (borrowed from Firefox) are pretty good ideas and it's great that you can manage them by adding or removing whichever accelerators you'd like. It's also faster than IE7 (still slower than Chrome, though) and, lo and behold, if an application inside a tab crashes, you get the chance to just close that tab and not lose all your other tabs. That is of course also borrowed from Chrome. Based upon this and their next big release, Windows 7, it looks like perhaps Microsoft is moving in a new direction in which they give usability much more importance than before. If it is, It is a welcome change. It takes the aggressive competition of Apple for them to wake up.

Monday, February 9, 2009

User input in SQL

Sometimes you need to accept user input in an Oracle SQL script. There are a couple of ways to achieve this. 

Suppose you have a Student table that holds information about all students in a school. You want to display all students that share a specific first name. You want the user to be able to enter this first name and the script should take care of the rest. You could use:

SELECT 
std_id
std_fname, 
std_lname 
FROM 
student
WHERE 
std_fname = '&fname';

Oracle will automatically ask the user to enter the desired value to substitute &fname with.
In a script in which you only reference &fname once, this works perfectly. However, sometimes you want to refer to this value more than once in the script. Oracle would ask you for the value each time. 

A solution to this is to use double ampersands &&. The script would then say 

WHERE
std_fname = '&&fname';

What Oracle does in this case is store the &&fname value in memory for the duration of the current session. That way, if in subsequent commands you need to use the same user-provided value, it will be readily available and require no further user input. The problem with this is, sometimes you want to use this same value, but you may at other times in the same session require the user to provide another value for it. If you call this script twice within the same session, it will use the same value the second time, without requiring the user's input.

The way around this is to use the PROMPT...ACCEPT clause.

PROMPT
ACCEPT FNAME PROMPT "Please enter the student's first name: "

Then you'd reference fname in this way:

WHERE 
std_fname = '&fname';

This method will allow for user input every time the script is run, and allow for different first names to be used for comparison within the same session.