Technology with opinion
Sunday, November 14, 2010
They were giving out these instant coffees at the PATH station. Just to be clear, I've never been a big fan of Tasters Choice coffee or any of the other big coffee makers however I did like Starbucks instant coffee but found the price a bit steep.
I chose a normal size mug, not an over sized mug, to pour one of these packets into as the higher ratio of water to instant grounds will make it weaker. The coffee produced from this packet was pretty good, at least the Columbian Roast was. The body was even, low acidity but strong for an instant coffee.
Overall about as good as the Starbucks instant and at a fraction of the cost. Amazon has both brands as cheap as 70 cents per packet for the Starbucks instant compared to 17 cents for the Nescafe. Verdict: recommended as alternative to mediocre work coffee or on the go.
Why Learn Objective C?
Objective C has made C programming cool again and it's making a comeback. I've been interested in learning Objective C for many reasons: iPhone Development, statically compiled language with dynamic features and to brush up on my C programming.
It's been many years since I've done any C or C++ programming. If the C language gave birth to C++ then Objective C would be its sibling. Current versions of Objective C is basically the C language sandwiched with Smalltalk sprinkled with the goodness of dynamic programming and syntactic sugar.
Many people struggle writting iPhone applications in my opinion because they neglect the fact that Objective C is a first class language and like C# (.Net) or Java require time and patience to learn it first before learning the frameworks and paradigms. This would be akin to trying to learn C#, HTML & JQuery for the first time on an ASP.Net MVC project.
I will be treating Objective C like a first class language and I will be learning it on Windows first because I want to focus on the language first and not the frameworks (such as Cocoa). My first goal is to get a running development environment on Windows for Objective C programming, write a simple "Hello World" app and compile it using both gcc and a make file.
Setting up Development Environment on Windows from scratch
GNUstep is the cross platform, free & open source version of Objective C. First download and install GNUstep Core, GNUstep System, GNUstep Development Environment and your favorite text editor such as Notepad++. After installing this a group will be added to your Start menu in Windows named GNUstep, beneath it is a shortcut to a "Shell". Once open, you will be in a full command shell (BASH) you will be able to compile Objective C code files using make or gcc but we will first have to create a class file
The gcc that comes with GNUstep can compile C or Objective C apps. We will first start with a Hello World app that uses C header files and then tweak it to use Objective C header files to make sure everything is lined up and configured correctly in your development environment. Create a file called main.m and paste the following into it.
Within the GNUstep Shell navigate to the same folder and compile it (within GNUstep shell C:\YourProject would be /c/YourProject) by typing the following:
Then test the output in shell by running the app and make sure the output is correct before continuing.
Next we will modify the helloworld source to use Objective C library and make a build file for it so that it will compile. First, update main.m to below:
GNUstep provides makefiles which include the references to the libraries and folders that you will need. Create a file named GNUmakefile in our project directory and put the following into it.
Now to build it is simple, just type the following into our shell.
Some warnings should appear from the compiler but it should compile. Run the output which should be in a folder named obj and verify the output. There we go, our first Objective C app. For more info on make files within GNUstep see the reference manual.
Friday, November 12, 2010
Even simple trips doing from one part of Manhattan to another can turn into an hour if you get lost or have to walk 20 long blocks. Manhattan is a deceptively large place and just because it looks like a short walk on the map doesn't mean it is. Take the subway as many connection to get as close to your destination as possible. Trust me, you will get plenty of exercise going up & down stairs and walking a few blocks from the subway.
Google Maps (web & mobile version) do an excellent job of providing directions & connections through NY transit but don't rely entirely on it because you will find yourself underground without a signal and if you cannot read a subway map then you will have to resort to begging complete strangers for help.
Streets in Manhattan are like a grid and they are very straight and consistent. Numbered streets are positioned North (higher numbers) to South (lower numbers) and avenues are positioned East (lower numbers) to West (higher numbers). You can use these numbers as a compass and easily figure out which subway to go on since most subway lines in Manhattan run North (Uptown/Bronx) to South (Downtown/Brooklyn).
It's tempting when going into the subway to be coming down the stairs and hear "Ding... Ding" and think: "That's my train". It may be the completely wrong train or the right line in the wrong direction because remember each line goes in two directions (unless you are at the end of the line). You will find yourself on a train on occasion after rushing onto the wrong one, always double check yourself and make sure you are on the right line and going the right direction. It's not a big deal to get off at the next stop and go the other direction.
Avoid the Bus
If you live right near a bus stop that drops you off within walking distance of your destination then you cannot complain too much. For everyone else the unpleasantness of the stop & go driving on top of the unreliability of the bus makes it a terrible way to travel not to mention the Manhattan Bus Terminal being a daunting place to learn the NYC bus system by. Stick to the subway for simplicity & affordability.
During rush hours avoid them empty seats
Choosing a seat with empty seats next to you just allow anyone to sit next to you and during rush hour the entire place it going to be packed and face it you don't want the smelly guy that takes up two seats sitting next to you. Men, if your choice in seating is between an attractive young lady or an unknown quantity (and the possibility of overweight & smelly sitting next to you) you know what you are going to pick. Ladies may choose to sit next to a young clean guy or choose the empty seat and stand the risk of sitting next to a bum rambling to himself or mole lady.
Choose the Train (heavy rail) for Long Distances
The train is blazing fast over long distances. I swear I don't have time to even do small amounts of work before arriving at destination. Train rides will cost about double the fair of the subway but if your time & comfort is more important than choose the train.
Sidenote: La Guardia Airport Sucks
La Guardia is an awful airport. Commuting to it is terrible because you cannot take a train or subway without having to transfer through a slow ass city bus. Also the terminals are disconnected which means if you get dropped off at the wrong one you cannot walk through corridors to get to your desired terminal. Choose JFK (my 1st pick) or Newark (in NJ). Sidenote's sidenote: also JetBlue rocks if you have a chance to fly them, they make flying pleasant again).
I have a terrible sense of direction and I've gotten lost plenty of times, went the wrong way on the wrong line and wound up in Brooklyn instead of uptown, just work smart not hard in the NY transit system and you will be finding your way around in no time.
Sunday, November 07, 2010
For the previous two years I had worked at Loomis in Houston and I have enjoyed my time there. We worked with many banks and retail establishments which offered a lot of opportunity for integration and working with cash management systems. I also had the opportunity to work with some people in IT that I really appreciated and
In my short time here, I have enjoyed myself working on a project with one of the banks, developing on a trading platform. Some of the challenges working on a WinForms trading application are: multiple threads & concurrency, separation of concern in a traditional WinForms app and the performance on a real-time system.
Relocating a family and settling in takes time but as things return to normal I'd like to blog about some of the following things I've been thinking of:
- Learning Objective C on Windows
- A fluent API for UI development
- Surviving a .Net 2.0 Project and enjoy it