First they ignore you, then they laugh at you, then they fight you, then you win.
Today, I got started with Amazon Web Services.
Among other things, you have to install some CLI tools, to help you interact with AWS.
To do so, there are comprehensive instructions for Linux/UNIX and Windows. Also, as usual, the Linux/UNIX instructions apply to Mac OS X, which I currently use.
To begin with, you have to define an environment variable JAVA_HOME to point at the directory that contains the executable file named “java”. Sadly, the instructions did not work for me (probably because I use the java version that comes preinstalled with the OS).
I got an
Unable to find a $JAVA_HOME at "/usr", continuing with system-provided Java.
error.
To fix this, I duckduckwent around and I found this great post.
In a nutshell (and for personal future reference), what you have to do:
1. in the terminal execute:
ls -l `which java`
The output will be something like:
/usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
2. open your ~/.profile or ~/.bash_profile (or whichever one you use) with a text editor. If you don’t have any of these files, create one (I go with the ~/.bash_profile).
3. Insert the following line:
export JAVA_HOME=`/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java_home`
If you notice, what you insert, is what you got from the step 1 and appending the “_home” part (Actually that was the tricky part for my case).
That should do the job.
To confirm:
1. restart the terminal
2. execute:
$JAVA_HOME/bin/java -version
following the AWS instructions and the output should be something similar to:
java version "1.6.0_29"
Java(TM) SE Runtime Environment (build 1.6.0_29-b11-402-10M3527)
Java HotSpot(TM) 64-Bit Server VM (build 20.4-b02-402, mixed mode)
New year’s resolutions:
But a company is all about money. Therefore I need something to log the money-related stuff. Therefore I built my own app:
Hyper-basic functionality, but it gets the job done.
More soon!
I code, therefore I am, right?
But I need something to code in.
For years and years I roamed the text editors’ plains. During the pre-professional era I found myself wandering on vast valleys of poor choices: Bluefish, Emacs (you heard me!), Gedit, Kate, Screem. I chose Screem over the others, simply because it had a cool name.
Then I entered the professional era. I had to code PHP for €s on a Windows machine, so the obvious choice was Notepad++.
A couple of weeks later I realized that the IDE was the way to go. Aptana was a well established choice among the colleagues, but I preferred the Eclipse way. That lasted about 4 or 5 hours and I switched to the Aptana and everything was fine from then on. Until version 2.
Holy crap, dude! What happened?
They managed to convert a perfect IDE to a heap of rubbish!
After a good year and a half of solving problems in Aptana (Windows XP first and Mac OS X later), we had to solve one extra problem: which IDE?
The team tried the Netbeans and the Netbeans was good! Well, ahem… never mind the projects navigator (refresh button anyone?). And the flawed SVN support.
The chosen twos so far (Aptana and Netbeans) had one thing in common: Java. Which translates to 1 GB of RAM after 3-4 hours (and rising of course). A simple windows-y terminate and restart solution, was a solution, but a windows-y one. Not to mention that, since the OS was the Snow Leopard, each JVM update was a tragic nuclear accident waiting to happen. So a real solution was necessary.
Having tried the Emacs approach many years ago (it could be 6 or 7 years) I remembered the ever-lasting emacs-vs-vim war. Hmmm… Let’s see what the ‘net has to say about vim. A thorough - 5 minute long - research proclaimed the vim as a low-system-requirements, cross-platform and full-featured IDE. Only one drawback: steep learning curve. Steep like years. Even decades.
Great! Let’s give it a shot!
$ vimtutor
And 5 five minutes later I realized that I want to code with it until the day I die.
Sadly, I could not just give up Netbeans and start coding in vim. At first, I discovered the jVi Netbeans plugin, which sort of simulates the vim behavior and it’s good thing to begin with. The best tip I found on the ‘net about jVi was to disable the arrow keys, which helped a lot, since you are forced to use the h j k l keys instead.
About 4 months later, I decided that I am almost as productive in vim as in Netbeans (without the jVi), so I installed MacVim and I used them side by side (no vim plugins yet installed, only a few basic configurations in .vimrc) for about 3 or 4 weeks.
Vim only from now on :D
[oh snap… my first post ever and I have already accidentally ⌘ + W’d the browser window after a good 30 mins. No “Stay on Page” - “Leave Page” alert? Now I have to start all over :C ]
I finally gave in and bought a smartphone. The “Samsung Galaxy S Plus”. It already sounds smart by the name alone! It even makes me sound smart as I say it!
“Samsung Galaxy S Plus!”
“Samsung Galaxy S Plus!”
I already feel 3.35% smarter!
But let’s put that aside…
What do I really have to say about it?
Well, off we go then: “COME ON! It feels like I was in a freaking coma for the past 4 years and managed to wake up today! The UX leap forward is immense! O! M! G!”
And let’s continue on a calm manner…
Yes, I used from time to time some of my friends’ smartphones (Android, iOS and Windows Phone versions) but that was only for a couple of minutes each time. I never had the chance to tamper extensively one. I didn’t feel cheap enough to ask and they didn’t feel greathearted enough to give, I reckon…
BUT! The day has finally come! I decided to embrace the “mobile developer” niche, thereafter I needed a “mobile” to “develop” my applications on. Most importantly, I needed to get familiar with the (multi)touch interactions, so that I may be able to create a decent (at least) UX on my applications. And BY NO MEANS I spent quite more than a few days hard earned dough just to show off! (see below)
Two candidates distinguished after a thorough research on the ‘net: the winner “Samsung Galaxy S Plus” and the aged “Samsung Nexus S (S-LCD)”. Actually the latter was an excellent choice for my (development related) purpose, but the price difference and the features difference created a better value-for-money ratio for the former (Super AMOLED! YAY!).
To be honest, I fancied the idea of the touch screens and multitouch gestures (and miniature PCs) from day one, but since I always thought that the iPhone’s price tag classified the device to the extravagantly luxurious ( === desperately-need-to-show-off) category, I never bought one (and no-one gave it to me as a present! Fancy that!). Plus, my hands are very very clamsy. [My hands! Not me! I’m a very dexterous person!]
One weekend day, about a year ago (actually it was Sunday, the 14th of November 2010), I decided to write a simple application for the iPhone, just to take a look at the whole “mobile developer” concept. So, I installed the Xcode and I put together a tic-tac-toe game. With no iPhones around to test it, the simulator was just fine. I was really pleased with the result, but not yet convinced to buy one.
So, a couple weeks later I thought: “OK, Android’s turn now. Let’s build a tic-tac-toe game”. What was a matter of a Sunday noon on the iOS, turned out to be a crusade that lasted months on the Android (Yeah, I didn’t bother with it that much. It had nothing to do with Apple after all). But, I finally got it [Note to self: write a post with the differences between the two development environments - spoiler alert: the iOS development is embarrassingly easier to get started with].
Which gave birth to the (not original) dilemma: native app’s quality or cross platform app’s audience quantity? Unfortunately I could not answer the question back then, but due to a project that came up at the company I work at, we tried the cross-platform approach.
In two days the application was ready: Behold the Phonegap! Simply put: it is brilliant! Same code, many different stores / markets. Extra special bonus: Having a web applications background (a.k.a JavaScript and - even better - jQuery) you don’t have to learn (or dive into) any of Objective C or Java or WWAAWW [Note to self: Hmmm… I think that I should post a tribute to MS… After all, they’re the reason I’m sitting in front of a laptop right now… Or should I start my medication again… OMG! IE6! HEEELP!!!]! […] [Alright! Pills are goooood! Let’s move on!] However, the downside is far from painless: buggy UI (the “native” controls misbehave) and probably slower application.
I have to sincerely admit that the latter is merely an educated guess. We did not have the means (a.k.a time) to test it, but what we did have was the unbeatable-years-of-experience-brain-power-combo™ to guess it!
To conclude (before every last one of ya falls asleep and smashes the keyboard with the forehead), I decided to raise the native app flag. I prefer to deliver the best application that I am capable of, using the platform’s best resources and hacks. So what if I address to smaller audience? My chances are better that they will embrace my applications! The word to mouth advertising is priceless! My brand name will shine! The future awaits me bright!
Now, if I could only get my hands on a weary, used iPhone 3GS to test some javascript stuff I wrote back then…
people