I many 10-5 developers not working directly with ajaxified web 2.0 applications I was not able to go to the Google I/O conference. I don’t feel so bad not going since Google has just released video recordings of over 70+ technical presentations from Google I/0. Most of the technical presentations are pushing Google’s APIs such as Android, Google App Engine, GWT, and Open Social.
As an aid for myself, and maybe other Google App Engine developers, I have organized the pertinent App Engine presentations as follows…
Painless Python for Proficient Programmers
Python is a popular very-high-level programming language, with a clean and spare syntax, simple and regular semantics, a large standard library and a wealth of third-party extensions, libraries and tools. With several production-quality open-source implementations available, many excellent books, and growing acceptance in both industry and academia, Python can play some useful role within a huge variety of software development projects.
In Windows you can map a network or local disk directory to a letter drive. I have found that I needed to do this recently because Windows doesn’t handle well directory names with spaces in them, even though the recommended folder for applications is C:\Program Files! When writing scripts that reference a directory path with a space you need to either escape the black space, quote the path, or map a letter drive to the application path.
To map or mount a letter drive to a network resources you can use the following command.
net use z: \\\\MY-SERVER\\PATH\\TO\\MAP
When the resource to map in your local disk drive you can use the following command.
It is hard to keep track of all class files you may need to edit in large project, much less the package those classes reside in. When I need to lookup and inspect a class I use the Ctrl+Shirt+T to open the Open Type dialog. This dialog allows you to enter the class name, or a regular expression of the class name, and will list all classes available to your project that match your query. One good feature about the Open Type dialog is that for each class type that it does match, it will display the package, jar, and location where it found the type.
If you don’t want to open the the type in the default editor you can instead use the Ctrl+Shirt+H shortcut to open the selected type in the hierarchy view.
Instead of a class, if you need to quickly lookup a XML, JSP, Properties or other resource files you can use the Ctrl+Shirt+R shortcut key combination to launch the Open Resource dialog. You can pretty much query lookup all resources with the Open Resource.
I was recently asked for a few tips for negotiate a pay raise. There is not much to asking for a raise, the key is to ask at the right time. Ask for a raise when the company is on a high note, an up swing such as having recently closing a big deal or accomplished a critical milestone. Before asking for a raise you should get a good sense of the current job market and the value you add to the company. If you want a 10% raise ask for 15%, if you want 15% ask for 25%. In addition to just a 25% raise, I would ask for a new title, more training, higher team leadership and management role. When asking for a raise you will have a better chance if you also step up and ask for more responsibility, not just money but a bigger and more visible role in the team. Just to make sure you make every point in asking for a raise, print out a one to two page document which highlights your accomplishments for the past year, take some initiate and make some objects for yourself for the coming year, and also detail your request for a pay raise, new title, additional responsibilities, and other fringe benefits.
Some manager have canned answers for when employees ask for a raise, such as the pay structure is pretty flat in the company, or that you don’t have a required skill or degree required for a given salary range. No matter what, do not walk away with nothing, negotiate either for concessions of other benefits, perhaps educational reimbursements or corporate training.
So go ahead, get that raise, you deserve it.
If you have any tips that worked for you in getting a raise, feel free to comment on them.
The big hype and spin cycle out of RailsConf this year is the news of a new Ruby implementation, MagLev. MagLev is only the nth implementation of Ruby to make waves, after JRuby, Rubinius, and IronRuby. MagLev is based and powered by a SmallTalk VM from GemStone. Avi Bryant described as a ‘full stack Ruby implementation.’ Avi also said that MagLeve still does not run Rails and is not RubySpec compliant, but it will soon be. From the language in the news and articles available on MagLev, it seems that this implementation of Ruby will be positioned as a ‘enterprise-y’ implementation for large-scale deployment.
I just migrated a 4,000+ Java class project from Java 1.4.2 to Java 6. I’ve already mentioned some of the issues to be aware of when migrating a large code base to Java 6. In Java 6, enum is a reserved keyword so I had to renaming variables that had that name, I also had to upgrade to a more recent version of Apache Commons Lang for a similar reason. I also had minor issues compilation issues, such as the removal of compareTo(Object obj) method was removed from the String class, and Apache classes that once shipped with the JRE 1.4.2 where removed.
But what irked me the most about Java 6 was recent changes to JDBC 4.0. The ResultSet interface, in Java 6, has 197 methods that need be be implemented if you are working with custom ResultSet implementation. I am just shocked at the sheer number of methods required for a basic ResultSet, most of which are not used, or will ever be used by our custom implementation! This is what is wrong with Java. The good thing is that Eclipse auto code generation features saved me from typing all of those methods but I wished there was a basic ‘do nothing’ abstract adapter like WindowAdapter.