Blog Journeys of a Lifelong Learner
Subscribe
Software Lessons from the First Half of 2011 June 30, 2011
The first six months of 2011 have been thoroughly enjoyable and challenging.
Here are some of the transformative personal software discoveries thus far:
- MacVim is delightful, particularly when combined with Command-T, Ack, and escape key remapping.
- Version control with Subversion (via the command line and Cornerstone) and Git (via the command line and Git Tower/GitHub) is empowering.
- Using nginx as a reverse proxy for Apache can dramatically increase server performance.
- Navicat simplifies aspects of MySQL database administration.
- MySQL Workbench simplifies data modeling.
- The Yii Framework makes it a joy to build custom web applications with PHP.
- Drupal 7 makes it easy and enjoyable to build many types of websites.
- Sparrow makes e-mail easier to manage.
- Reeder for Mac elegantly optimizes Google Reader for the Mac.
- The dark Solarized color scheme makes computing more pleasant to the eyes.
- Upgrading to a solid-state drive (SSD) can breathe new life into a 4-year-old MacBook Pro.
The year is half over, but another half remains. How will you grow in the next six months?
Reinventing the Wheel November 22, 2010
Software develompent is filled with repetition. Some say that repeating old projects is reinventing the wheel. Wheels have been mastered, so making them could be called a waste of time.
Reasoning against developing software to solve problems that have already been solved might include statemens like these:
- Almost anything that can be done in software has already been attempted.
- There are very few truly original products.
- Existing solutions are available for almost every computational need.
- New code presents many opportunities for inserting errors.
Why, then, should new solutions to common software problems be attempted?
- New versions of old ideas help to develop personal software development skill.
- A better understanding of how things work can be developed by building things.
- Building new implementations of known systems can yield new insights.
- Skill in building and implementing software should start with known systems.
Reinventing the wheel is useful if it helps you understand how wheels work.
Building simple systems that are well understood provides a solid foundation for future excellence in developing non-trivial software constructions.
Working on custom implementations of these systems can yield tremendous benefits in the development of personal expertise, even if future projects make heavy use of existing software solutions:
- blog systems
- shopping carts and online stores
- general-purpose content management systems
- contact management applications
- microblogging platforms
- and many others
Familiarity with existing code and ability to work with it is very important, but completely neglecting original development and the learning experiences it provides will destroy potential software development expertise.
What is Computer Science? November 16, 2010
The general public sometimes confuses computer science with careers that deal with computers (such as information technology), or think that it relates to their own experience of computers, which typically involves activities such as gaming, web-browsing, and word-processing. However, the focus of computer science is more on understanding the properties of the programs used to implement software such as games and web-browsers, and using that understanding to create new programs or improve existing ones.
(From Wikipedia's entry on computer science.)
To WWW or Not to WWW? March 29, 2010
Should websites use the subdomain www by default or not?
The www was originally used to designate an address on the world wide web, as compared to other types of networks. Now it is understood that addresses are connected to the world wide web, making the www seem redundant.
Some developers avoid using www altogether. At the time of this writing, paulstefanort.com forces a non-www URL.
While I am attracted to minimizing the number of characters required for a URL, I am seriously considering reverting back to a policy of using the www subdomain for websites.
Here are some of the strongest reasons I see for doing this:
- Other services (including webmail, calendaring, and document sharing) use subdomains.
- The use of the m subdomain has become a standard practice for providing a mobile web version of a site.
- Security certificates are generally associated to a particular subdomain, making e-commerce projects easier for www-prefaced URLs.
- www.somesite.com — for the standard ("desktop") web interface
- m.somesite.com — for mobile devices
- mail.somesite.com — for webmail
- docs.somesite.com — for documents
- calendar.somesite.com — for calendaring
- somesite.com (without domain) — automatically redirecting to www.somesite.com or m.somesite.com, depending on the device in use