I began my career as a programmer early in High School, before I had regular access to a computer. I would write down programs on paper and then type them in when I could get computer time at school. In time the other students were soon happily playing the video games I wrote. I found programming to be addictive and fun. I’ve never felt any differently. I program in a variety of languages, and perhaps more importantly, I pick up new languages quickly.
Here are a few thoughts of mine on programming.
I believe in properly commenting code, writing unit tests, and programming with established best practices. For example, when programming in Perl, "use strict" is of course a must.
Peer review of code should be done with a constructive and cooperative approach. Every time my code has been reviewed or I have reviewed other people's code, good things have come from it.
We programmers often have a desire to write things from scratch, even when they already exist. It's usually best and more time efficient to use well-established solutions and pre-existing code where possible.
The "coolest" solution is not necessarily the best. Using existing code has many advantages. It's also usually worth going for the solutions that are the easiest, quickest, and most straightforward to implement.
When stuck on a programming problem, the fastest solution is often looking for help. Googling finds the answers to most problems, but beyond that, there are many forums and various online communities. It's also worth knowing lots of experts who you can ask. I have many very smart friends.
This is an Open Source refrain that continues to ring true.
I have designed and coded many large systems. But I still like showing off this little graphical program that I wrote. I came up with the math and the concepts. To see it, click here.
Problem: All licenses were being hand generated. Turn around time was slow. A large team was required to handle the requests. Customer satisfaction was low and errors were common.
Solution: Project managed and was primary programmer and designer of a web and email based tool to automatically authorize and distribute permanent and temporary licenses for internal and external use. Key-O-Matic generates licenses for multiple licensing mechanisms, multiple computer platforms, over 100 products, and for multiple countries. Evaluation license durations, number of licenses, and marketing letters can be customized by product. Both web and email forms are easy for customers and license administrators to use. This tool has vastly improved accuracy, efficiency, and customer satisfaction. It has been in production since 1994 and is still being used by customers today.
Problem: The backup system at Industrial Light and Magic failed more often than not and was badly designed. Management was unwilling to pay the high price (about $35k) for an off the shelf backup system for backing up over 100 SGI and Sun machines. ILM had some backup challenges other companies did not face.
Solution: I designed and coded an elegant backup system. The configuration file was straightforward. The automatically generated backup results log was also easy to understand. Restoring files was not hard. It worked elegantly with the roughly 24 backup tape drives and 100+ machines. Unlike most facilities, we moved machines constantly. The backup system retried machines throughout the night whenever needed. Once implemented, it performed flawlessly. A week after it was put in place, it restored the animation for a velociraptor that had been accidentally deleted.
Problem: At Industrial light and Magic, before Nagios existed, we had no decent reporting tools to let us know what machines were running out of disk space, having tape drive errors, getting low on memory, and a myriad of other vital system admin issues.
Solution: I designed and coded a system that checked all of the machines regularly, and sent a daily e-mail with the highlights. When a high priority situations were detected, I was alerted right away. The system operated beautifully and made it far easier to properly manage the many machines I was in charge of.
Problem: Different users deserve different amounts of trust. This was an important element in The Human Creativity Project.
Solution: Designed and wrote a system to normalize ratings and compute trust across a variety of parameters. This was built on top of a MySQL database.
Get in touch and chat about your company or project.
Julian Cash 415.738.9385 julian@HireThisGeek.com or see the contact page.