Culture Eats Strategy For Breakfast

Originally posted on TechCrunch:

BillAuletCulture2 Editor’s note:  Bill Aulet is the managing director of the Martin Trust Center for MIT Entrepreneurship and a senior lecturer at the MIT Sloan School of Management. He is the author of the recently released book, Disciplined Entrepreneurship: 24 Steps to a Successful Startup

I used to think corporate culture didn’t matter. Discussion of vision, mission and values was for people who couldn’t build product or sell it! We had work to do and this MBA BS was getting in the way!

And then my first company failed.

Cambridge Decision Dynamics did not fail because we didn’t have a great technology or a great product or customers. It failed as a sustainable, scalable organization because we had no meaningful purpose to create team unity to fight through the tough times. Now the company sits comfortably in a perpetual state of what I like to call “deep stealth mode.”

View original 1,526 more words

Defining a Specification for a Web App/Website With Clients

Originally posted on GoAugust:

Recently I’ve seen a few articles about using Cucumber, FIT, RSpec and other tools for defining a testable specification for your code. One of these articles is “Why Bother with Cucumber Testing?” by a Rails developer, Jack Kinsella, who argues that the language that Cucumber uses for its specifications don’t match how clients think about web apps:

If it takes you ten lines to communicate the idea of adding subpages [to a website], then you’ve wasted my time

The problem with this way of thinking is that there are multiple layers in our discussions with clients. We have the top layer, where we have a vague idea of what we want, “adding subpages”. The details that Cucumber provides and lets you fill in are at the next layer, “adding subpages requires that the user is logged in and they pressed ‘Add subpage’”. The next layer after that is in the…

View original 80 more words

Charging for Free/Open Source Software

Originally posted on SourceContribute:

Memo to OSS developers: I can pay money for software licenses, even if the license is just “MIT, but we invoice you”, but I cannot just put business funds in your tip jar.

from an article about TarSnap, the secure backup service, and how it could be better run as a business.

This is an important insight: software can be licensed under the GNU GPL or MIT with a software fee included. This is allowed by the licenses and it makes it possible for businesses to buy your free/open source software. To developers, it’s seen as a donation to their project, but to businesses it will be seen as a justifiable business expense.Modern business concept

Personally, I’ve tried to convince previous employers that they should donate to free/open source projects that we routinely used. My justification to them was that we rely on the projects so much that the donations are essentially…

View original 150 more words

org-doing

org-doing

Inspired by the doing command line app, I decided that I needed something like it for Emacs. It lets you track what you’re doing now, and what you want to do later, and anything you’ve done.

The cool thing is that I’m hooking into org-mode which means that, with timestamps, you can create an agenda-view that displays the things you’ve done in the last day and the things you have remaining. You can add more notes or clock in the time or do whatever else you can do with org.

You can check out the code or the site.

Systems Past: the only 8 software innovations we actually use

Systems Past: the only 8 software innovations we actually use

Interesting post and he makes a good point:

I find that all the significant concepts in software systems were invented/discovered in the 15 years between 1955 and 1970. What have we been doing since then? Mostly making things faster, cheaper, more memory-consuming, smaller, cheaper, dramatically less efficient, more secure8, and worryingly glitchy. And we’ve been rehashing the same ideas over and over again. Interactivity is now “event-driven programming”. Transactions are now “concurrency”. Internetworking is now “mesh networking”. Also, we have tabbed browsing now, because overlapping windows were a bad skeuomorphism from the start, and desktop notifications, because whatever is all the way in the corner of your screen is probably not very important. “Flexible view control” is relegated to the few and the proud who run something like xmonad or herbstluftwm on their custom-compiled GNU/Linux.

in particular, maybe it’s time to bring more of what academia is doing out into the industry. For example, all the benefits of Haskell and type inference should be in mainstream languages (Rust is trying to do that, Go kinda failed). Another example is modeling, people are still modeling by either drawing boxes and sticks or by coding up small prototypes. Why not try out a modeling language like Alloy? Why not have more contract-based programming?

I think what we need is software devs looking at the bigger picture whenever they’re on a project. I don’t mean trying to bundle everything into a framework (which we see happening with front-end JavaScript development), but keeping in mind that some of the concepts can be used to solve harder problems. If the enterprise is building CRUD apps or transforming data from one format to another, there must be some other problem in there that needs solving, a deeper problem that can’t be solved with yet another framework but needs a new way of thinking or a new algorithm or data structure. Maybe it’s time to clamp down on the other parts of the dev process, like poor management or poor business practices that lead to failure in the development process. Or maybe we just need people to work on better projects where their talents can be harnessed, let the junior devs worry about yet another CRUD app and let the senior devs and chief architects bridge the gap between academia and industry.

Adventures in Rust 0.9: Arrays and JSON

I wanted to try Rust last year around this time but never got around to it. My friend’s taking a look now and so why not actually start learning the language? he mentioned having some issues with arrays, and I can barely understand the different pointer types (especially since they’ve changed which ones are available between Rust 0.9 and the latest commit).
Continue reading

Dimming JavaScript curly braces and brackets in Emacs

When coding in Lisp or Scheme, some Emacs users prefer to have the parenthesis/brackets dimmed. The reason for this is that it makes it easier to see the things that matter like variable names.

I’ve been coding more JavaScript lately and wondered if this would work for JS and indeed it does. While it doesn’t turn JS into CoffeeScript and you still have to type in in the brackets and curly braces and semi-colons, it does let you adjust the colour of them and let’s you dim them so that you can see the important parts.

Download parenface.el and then paste in the following snippet and you’re good to go. Don’t forget to customize the paren-face colour by doing this: M-x customize-group faces

Here’s a before and after shot (I’m using snow3 as the paren-face colour, the default provided by parenface.el is DimGray):

before and after enabling parenface for js-mode

before and after enabling parenface for js-mode

I’m not sure how useful it is to hide the ‘var’ and ‘function’ keywords. The cool thing is that all you have to do is alter the regex to suit your preferences.

If you like these kinds of snippets, check out Emacs-SOS, a StackOverflow search for emacs.