Meetings

Have you ever been in too many meetings in the name of Agile, or the lack thereof? Convince them of too many unnecessary meetings: http://www.expensivemeeting.com

08858487db1237f4bc818b002f761713

meeting

Advertisements

Thoughts from the Web

On Full Stack Development: I consider myself a “Full Stack Developer” because I’ve had a great deal of front-end, middle-ware and back-end experience, but that doesn’t mean I’m proficient at all layers of the stack. I prefer C# over CSS. This quote restates is nicely: “Full-stack development is about exposing yourself to a broad range of ideas.”

Using a rules engine for a generic problem kinda looks and feels like a universal hammer that turns any problem unto a nail. One has to wonder, is a rules engine the best solution for a generic problem, or does the problem need to be redefined?

Whenever you approach a new legacy code base, the first thing you should do is get a high level overview of all the dependencies in that project. This lets you know what parts you need to refactor first and which ones need the most attention. Check Source Monitor, a free static analyzer.

Web Summary of the Day

On dynamic versus static typing: “fully expressive language is one that supports the delicate interplay between static and dynamic techniques. Languages that force only one perspective on you, namely the dynamic languages, hobble you; languages that admit both modes of reasoning enable you and liberate you from the tyranny of a single type. Let a thousand flowers bloom!” (https://existentialtype.wordpress.com/2011/03/19/dynamic-languages-are-static-languages/)

Agile was never meant to be commercialized. Agile is a set of values, not a certification. One blogger boils it down to: “Being resolute to work with others to always steer to the next possible “better” seems to work nicely.” (http://zuill.us/WoodyZuill/2014/03/31/to-me-this-is-agile/)

Learn to negotiate well behind the keyboard.

For fun, here is an API for insulting people: http://pleaseinsult.me
If you don’t have a Mac, but need one, you can now run one on the cloud: http://www.macincloud.com

Migrating a Legacy Repository from SVN to Git on Windows

There may come a time when you stumble upon an ancient SVN repository nested with multiple projects and need to efficiently collaborate with others on a single project in that repository. Well, we all know Git is better than SVN in many ways. It’s faster and the decentralized, distributed nature of Git provides better security and redundancy. We all remember the story of codespaces.com, where a single hacker hacked into their Amazon servers in the cloud and they were forced to shut down. All users who had their single SVN repository on codespaces.com lost it all.

There is a simple tool that migrates SVN to Git quite well. Atlassian has provided documentation on how to do this with their custom tool, however it’s slow and does not work well on Windows. Using the svn2git gem, migrating a 400MB SVN repository is a breeze and only takes a few minutes.

  • Download the Ruby for Windows installer.
  • Download the svn2git gem: gem install svn2git.
  • Create a new empty folder for the git repository
  • Run svn2git.bat <svn-project-sub-path> –no-minimize-url
  • Be sure to add a .gitignore file then, commit and push to the remote origin.

That’s it! Still need to keep your SVN repository in sync for some strange reason? Check out the SmartGit Client.

Code as Poetry

I was once asked to write a poem during a job interview submission. I found that quite humorous. My thoughts went to towards structuring code as poetry. I turns out I’m not the only one who thinks this is an art form. Below is a poem I found by Paul Illingworth.

2014-11-04_17-23-11

Although I don’t agree completely with the statement this poem makes, I wish there were a collection of other related code poems for perusing.

Recent Tech Finds

Must Read: Twelve factors to creating bullet proof web apps/services.

Great article on software architecture.

The M# programming language looks to take over C# and reduce 90% of boilerplate code through meta-programming. Haxe looks promising too.

Great article on ugly code and how a company overcame a big ball of mud by switching to an event-based model. “The solution that Oliver finally came to was event sourcing. With this technique, you never store the state of an object, only events that have happened to the object.”

F# is a wonderful language! How to you track if an float represents inches or feet? C# and Java do not support unit of measures, like F# does. Although, this may be possible by using your own generics Measurable<Feet> and Measurable<Inches>. Thinking in unit of measures, not just data types can help with debugging and readability where necessary.

AI is good but is Super Intelligence bad for us?

On Personality Science

What does your personality say about your greatest fears and motivations? After viewing the Pluralsight course on “Human Behavior for Technical People,” I started wondering how my personality affects how I write software. From a psychological stand point, do I stay away from cutting edge languages and frameworks because I prefer things that are safe and sound? If so, is that why I don’t enjoy being an early adopter of technology? The more I ponder the implications, the more I see. For example, my Enneagram personality type is 4, The Individualist. You can take the test yourself (There are tons of other personality tests like the Myers-Briggs Type Indicator). I realized then that I often try to individualize the way I program to the point of ignoring common conventions and standards just to carve my own path and be different from others. The can be a good thing or a bad thing. As an individualist, I know I need to express my creativity but still listen to the common wisdom of the “grey beards” and not get too carried away by my own curiosity. Understanding how your personality affects how you write code not only gives you a lens into your own fallacies but also a better understanding of why other programmers in your team write code the way they do.