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.

The Simplest Tool for the Job

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.

The Small Internet

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.

New Tools for Old Problems

Two major thoughts here: Have you seen the Azure ML workspace? It makes doing machine learning easier than setting up Matlab. There are other machine learning services hosted by cloud providers, but this one can go from no coding required by dragging boxes and drawing lines all the way to an integrated environment for Python and R. This just blows my mind. I thought that Matlab was going to be the easiest way to set these sorts of things up, but this just makes it stupid simple.

Big Software

Simplicity - the art of maximizing the amount of work not done, is essential. Most teams simply don’t spend enough time on this. A sense of urgency often overrides careful planning. The problem here is careful planning makes things get done faster. During the planning stage it feels like you’re not getting anywhere, but you are setting up for a quick sprint. This setup is often overlooked, and we end up with not only complicated software, but complicated development habits, complicated code, and generally poor software design.

Dev Lesson 2

Knowing something is possible does not make it easier, it just makes it more frustrating when it doesn’t work the first few times. This even goes for things you already know how to do. Putting the pieces together is much more difficult than the design. It’s true that a good design can help the pieces fit together seamlessly, but ‘bad’ designs can have the simplest implementations. Then what makes the design ‘good’ isn’t the ease of implementation, it’s the reliability, impact, and extensibility of the completed system.

Building A Village

So I’ve been spending an inordinate amount of time on IT related activities lately, and boy have I gained some respect for people who do this everyday. My very first jobs when I was a kid were essentially help-desk level IT: setting up networked printers, digging through backups, making cables, removing viruses, installing drivers, and using more advanced Windows tools to automate things. These were all things that I could do because I generally had no real insight into how computers worked or how to program.

Breadth of Languages

I spent most of today reading Julia documentation. It looks pretty slick, but I guess I’ll have to try it out on something new to really kick the tires. It does strike me as more of a hyped up Matlab instead of a JIT’ed Python. For a new ecosystem I’m a little concerned that it might be too much too soon. It has all the shiny things about being a new language, like consistency and lots of involvement, but I don’t know what will keep fueling the momentum.

Gave a Hoot

I found my boss’s old programming blog. He’s much more practical in his writing than I. It starts at his job search experiences and then moves into his discussion of introductory coding experiences. The posts are very focused on process and application, never mentioning a specific language or technical details(Two things I’m keen on detailing!). It’s clear he also spent some time reading Yegge and books on best practices. He discusses these practices through his book reviews, much like my blog reviews.