I’ve previously mentioned a passing interest in F# because it was sufficiently different from languages I knew and had many concepts that sounded immediately useful. It took me almost 2 years to take the plunge and implement a non-trivial app in F#. It took 3 tries to get something that felt usable and idiomatic. This the first part of my journal of lessons learned. Starting out I didn’t buy any books or take any classes, but I did read every bit of literature online before writing anything at all.
Planning for things to go wrong is important. Even with all the ounces of prevention, there still needs to be some cure to catch what slips through the cracks. When anything breaks there are two parts: Knowing what broke and a solution to get things working again. I’ll take three examples: Bicycle, application, server. Bicycle I got flat tire, it took me longer than I’d like to admit to notice it.
I started off my career thinking that coding was the hardest thing I had to do every day. That fixing bugs, building features, and writing documentation was the toughest part of building software. It’s what I spent all my time studying in school, so I figured that once I knew how to code well enough to make things work, the rest of the job would be easy. I heard “The first programing language is the hardest”, so I expected to struggle with the basics.
Once upon a time my primary editor was vim. I picked it up early in CS1 after hearing about the dreaded emacs pinky and used it at a novice level until I left college.I never stuck in an any single environment for long enough to become accustomed to any default bindings. Eclipse (and family), VS, Processing, Matlab, Notepad++, NetBeans, KWrite, Textmate, GEdit, Anjuta and vim were all about equal with familiarity.
A Reintroduction I’m moving my content from tumblr to here. I only used tumblr before because it was resonably public and seperate from other blogging and social networks that I already had established. Now I have a dedicated site serves that same purpose (with a higher cost to me of course). Tumblr had fine formatting tools and tagging, but since I didn’t visit it often or interact with anyone on the site I figured I might as well just make my own island for this stuff.
A recent project had me looking for cheap micro-controllers that are supported by a particular industrial automation platform. As part of this, I found that the most readily available micro-controller runs on 16-bit DOS and the last supported compiler is more than a decade old, so it carries this disclaimer: The Software was not designed to operate after December 31, 1999. It may be incomplete and it may not function properly.
I’ve wanted to work in a pair programming environment, but it was always difficult to justify the lost initial productivity of two programmers working on the same task. When the tasks are numerous and trivial it makes sense to break them up so they can be solved in parallel. Even when an individual task is difficult, I’ve found that it can be even more challenging for two people to see the same solution to a problem.
Recently, I’ve been lucky enough to find more personal blogs with a similar theme to this blog: A programmer trying new things and jotting down what they think about the technology without the technical details. What I’ve found so far has been a pretty consistent body of knowledge. Everyone appears to agree on the same basic tenets but takes their own personal spin based on their needs and origins. These aren’t persuasion pieces, there’s generally no central argument or consistent theme.
When given the choice between using a library or adopting a framework to accomplish a task, the choice is often between the power and usability. Libraries often focus on simplifying a task by providing a layer of abstraction, where frameworks focus on making categories of tasks easy. For integrating with existing applications, it’s more difficult to use multiple frameworks than it is to use multiple libraries. But when starting a new application, it’s often easier to pick a framework and then select libraries that can easily inter-operate where the framework doesn’t provide a solution.
tl;dr Use Bing I’ve been using Bing as my default search engine at work for 6 months, and in that time I’ve gotten about $30 of Amazon gift cards and other rewards with no downside. I don’t understand everyone’s obsession or devotion to Google search. The search results aren’t that different between major search engines for specific queries. Most of the time I’m using a search engine because I don’t want to type in the exact url, or dig through a long tail of bookmarks.