Articles on being a better programmer (Career Development Advice)

Quick Reads

This is a quick read: Making the Good Programmer … Better

And another: 5 Tips for creating good code every day; or how to become a good software developer

Longer Reads

Find where you’re at, Improve It and your Career in the process

**** Recommended ****  If you are looking to get a job or updating your resume, you might want to know where your competencies stand.  The Programmer Competency Matrix very thoroughly lists attributes in the disciplines of Computer Science, Software Engineering, Programming, Experience and Knowledge and provides 4 levels (numbered 0 – 3) for each attribute describing what knowledge you have to be considered at each level.  I think it should be a mandatory professional TODO for any serious programmer to rate where they are at and what they need to do to achieve further competency.  Its a career development guide for the technical and soft skills a developer is required to have in a world that is growing ever more competitive.

In Signs that you’re a bad programmer the blogger talks about Symptoms and Remedies of bad, mediocre and ‘shouldn’t be a’ programmer types.  Its an excellent tool to look at yourself critically and see where you could be improving. 

Stay Informed

Most of these articles I picked up by following the DZone site on twitter, who are also behind those awesome Refcardz that help you get up to speed or revise on a particular technology in very short time.

I also follow a lot of other renowned technical guru’s in the Agile, Java, Spring and Groovy spheres.  Usually, they are all following each other and when there is a good article, they all retweet it (a validation of what is good).  If you look at my twitter profile, you can see who else I’m following and add to your sources of development info.

Somewhat due to the number of developer emails and twitter posts I dont read tech books as often as I’d like, but there are some important ones that every dev should read, usually everyone has their own list with a bias to a particular technology they use more often.  The one here is a fair example of books I’ve read or own.  There are plenty more ‘good programming list’ posts, just google or look on Amazon.

Key Promoter for IDEA

This is one of the best plugins that I’ve come across in IDEA.  It simply pops up an unobtrusive window every time you do something with the mouse, that has an equivalent keyboard shortcut to remind you how you can get to that action quicker.  This means you can become more productive.

An even better feature though is that if you use an action that doesn’t have a keyboard binding, after about 3 times of using an action it will ask you if you’d like to set one and take you to the preferences dialog (I’ve configured mine down to 2)

Speaking of plugins, Thoughtworks Neal Ford has a neat presentation online about some of the most useful plugins in Idea and Eclipse.  There were a couple in particular I wasnt aware of

CTRL+E – Open recent files list – This makes using tabs redundant.  A small popup list of files you’ve recently looked at for you to choose using, regardless of if they are appear on the tab bar, you closed or IntelliJ took the liberty of closing for you because you’ve exceeded the default 7 tab limit (super annoying coming from Eclipse, BTW)

ALT+SHIFT+CTRL+N – Symbol lookup (aka CTRL+N on roids) – Find a symbol (variable, method name, whatever) in any file.  Obviously slower than CTRL+N since it has more to look through, but a zillion times efficient than opening the Find dialog and navigating its controls.  BTW, Eclipse has CTRL+O, but from memory, that only looked in the currently edited file only.

Some Groovy Little Tips

My favourite Groovy/Java/IntelliJ web presenter, Vaclav Pech, has a short 20min Parleys talk on using Groovy with IntelliJ.

What I found neat was IntelliJ’s ability to take a Java class, rename it as a Groovy one, then refactor all the annonymous inner classes.  I also learnt about the capabilities of Groovy, the part where a class gets defined as a Map.  Wonderful stuff.

Also neat, was showing how refactorings apply not only to Groovy and Java, but also to Scala code in the same project.

http://beta.parleys.com/#state=state_player&slide=7&id=354

JVM garbage collection behaviour on virtual machines

Interesting blog about how multiple virtual machines running on the same metal, each with their own JVM instances performing garbage collection can degrade app performance when the hypervisor has to swap out memory

http://www.devwebsphere.com/devwebsphere/2009/08/why-you-shouldnt-overcommit-memory-on-virtualized-servers-running-java.html

Given at work, we will be switching platforms so everything is moving to the supposedly common good of redundancy that virtualisation provides, its worth noting.  I wonder if the new G1 garbage collector is any different, or if staying on Solaris with its Sun/Java roots and using zones instead manage this any differently?

.htaccess Tips

Sometimes I have to play with htaccess files.  This is usually followed by a process of ‘its been a while since I used htaccess, what are the options again?’ and a search of various blogs, manuals and other articles.

Here is a nice summary of what your htaccess should cover when deploying a new page.

http://www.noupe.com/php/htaccess-techniques.html

Monkey’s Brain Can “Plug and Play” to Control Computer With Thought

This is pretty cool.  The title says it all… well maybe it should be plug then play a few days later since there is still a learning curve. However the idea that you can attach a prosthetic to some neurons and eventually you’ll have a cortical map form so your brain can repeat the same actions – fire those same neurons in the same pattern to control the device over and over again. 

But there is a further element of coolness (excluding the fact that the monkeys are exploitmented on – dont know a solution for that one) in that once researches figured out a mapping between neurons, brain signal patterns and intended control, the monkeys could adapt to different mappings that had the weightings in the mapping a little ‘off’.  So basically the cortical map the brain formed had adapted too.

The downside is that the implementation currently is still in the lab stages.  And its attaching directly to your brain so only people looking for permanent solutions (ie those with disabilities) need apply.  But it is a step in the right direction to be able to interact more efficiently with machines and eventually and more importantly, interact with each other.

http://spectrum.ieee.org/robotics/medical-robots/monkeys-control-computer-with-thought/0

Patellar Tendinitis

I have a contact in the health-fitness industry point me in the direction of this condition after I explained I was having an on/off pain under my kneecap.

http://www.athleticadvisor.com/Injuries/LE/Knee/patellar_tendinitis.htm

http://en.wikipedia.org/wiki/Patellar_reflex

Need a map?  http://www.innerbody.com/image/skel12.html

http://orthopedics.about.com/cs/patelladisorders/a/kneecapdisloc.htm (not this bad, thank goodness)

Usual disclaimer about not following self-diagnosis and getting a 2nd opinion from a medical professional applies.

Multitail

Here is something that sounds neat… There’s nothing on earth like a genuine, bona fide, electified, six-log multitail, what’s i’d say? multi-tail.  What’s it called? multi-tail.  That’s right! Multitail! … multitail, multitail, multitail…

http://www.vanheusden.com/multitail/index.html

Basically it lets you tail multiple files in one console, all placed side by side

For linux, solaris and friends.

Folk IT – and other articles about dealing with the business

An interesting article for those who have the time.

Its about business coming up with solutions to IT probs – ‘Folk IT’ – since they learn the IT terminology when things go wrong, they may as well contribute to the solution right?  right?  wrong….

http://iansrobinson.com/resources/representing-the-enterprise/

Taken from the Thoughworkers article list here.  Something I’d love to read more of when I have the time.

Shared Libraries on Linux

Fun = figuring out shared library deps on linux.  Not…

This useful article (Program Library-HOWTO) talks about how lib files are discovered and what you can do to force them to be found.

LD_LIBRARY_PATH which I’ve seen many times before, allows you to specify a library ahead of others so you can do

LD_LIBRARY_PATH=.:/my/better/lib.so:$LD_LIBRARY_PATH

If you want to see which libraries a process is using then do

ldd /path/to/your/process

There is still a magic to how those libraries then link off and refer to others but this is considerably more than I knew 24 hours ago 🙂