Unit Test Your Dev Environment

15 years, 9 months ago
[ Geek ]

This is likely one of those parties I just happen to be late showing up for, move along if this sounds like old news. I had an issue this weekend related to having the wrong version of a framework running in one of my development environments. It eventually became clear that was the issue as the bug only existed on one machine, worked fine on others.

This isn’t the first time I’ve been bitten by this pattern of bug and it won’t be the last. My guess is you’d be hard pressed to find a developer who hasn’t ran into this. In an attempt to put this headache to bed once and for all, I added a test to the unit test suite that scrapes the version of all the required frameworks and validates they’re the ones expected. Hopefully I’ll spot this issue quicker next time it hits.

(trying syntaxhighlighter for the first time)

        # check elixir
        import elixir
        version = elixir.__version__
        self.assertEqual(self._elixir_ver, version,
                "Incorrect Elixir version, expected '%s', local is '%s'" %
                (self._elixir_ver, version))

Fresh KM eyes?

15 years, 9 months ago
[ General ]

Some notes from a paper I’m writing here at Brainpark

In his book Notes On The Synthesis Of Form, Christopher Alexander talks about architecture as form, context, and ensemble:

“The form is a part of the world over which we have control, and which we decide to shape while leaving the rest of the world as it is. The context is that part of the world which puts demand on this form; anything in the world that makes demands of the form is context. Fitness is a relation of mutual acceptability between these two. In a problem of design we want to satisfy the mutual demands which the two make on one another. We want to put the context and the form into effortless contact or frictionless coexistence.”

Applying this to knowledge management (KM), traditional KM has focused almost solely on the form, ie the resulting documents we have control over. They’ve ignored the context. As Alexander explains, it’s the context that stresses and places demands on that form. Forms don’t fail in isolation, they fail because of the demands of a context. We need a new view of KM that’s aware, and understands the concept, of context and strives for fitness between form and context.

DemoCampGuelph8

15 years, 10 months ago
[ Guelph Tech ]

The date is set at March 4th for DemoCampGuelph8. How can you help?

  1. Go here and sign up to attend, and show up.
  2. Talk us up everywhere you can! More details here if that helps.
  3. Think of people you’d like to see demo’ing and suggest it to them. Have them contact me asap with their pitch if they’re interested.

Discourse

15 years, 10 months ago
[ General ]

“a discourse actively maps out a terrain of possible and valid statements, sets the boundaries of that terrain and constitutes the legitimate objects of study within it.”

Traditional knowledge management has historically focused too much on the storage and management of “legitimate objects” and not enough on the discourse. In theory legitimate objects inform discourse, however, in practice legimate objects only come into existence through discource not vice versa.

What am I babbling about? At brainpark, we’re working to facilitate and stoke the fires of discourse. Doing so allows you and your team to better understand which legitimate objects deserve your time, attention, and energy. That’s all, just talking out loud.

I Like to Watch

15 years, 10 months ago
[ Linux ]

In the category of lovely commands you may not know about, the watch command. You can take almost any command and throw watch in front and it will recurse for you. A quick example: You’re copying or ftping a large amount of files into /tmp directory and you want to keep an eye on the progress. Let’s say you’re also interested in file details so this will give you a snapshot:

ls -lh /tmp

To keep an eye on it, just prefix with watch:

watch ls -lh /tmp

Default is to rerun every 2 seconds which is a bit much for this. The following will run every 30 seconds allowing me to keep a watch on progress:

watch -n 30 ls -lh /tmp

MicroBlogging and opening sources

15 years, 10 months ago
[ Geek ]

If you’re interested in such things, great explanation of twitter, laconica, and OpenMicroBlogging here. Make sure you check out the comments as well, some great points in there including a hint at where twitter could be headed for a business model.

I’ll admit I’m biased as I met with Evan recently and he lives here in our little country but I’d still tie my wagon onto laconica over twitter had I to choose. I’m also not the type to chase business models tied to selling people’s patterns and data so if that’s where twitter’s headed then god speed.

While it’s not the main point of the above article, there is mention about twitter and it’s use of open source technology. While it’d be lovely if everyone using open source was able to contribute back into it, that’s not a requirement and I’d be cautious about suggesting it should be. As well, it’s not always obvious how that contribution occurs. Maybe some of twitter’s developers contribute heavily to these projects in their off hours? If this return contribution was required then it should be in the license. If they aren’t violating any licenses then they’re good.

[Wow, am I actually defending twitter??]

If you’re involved in open source, do you really want businesses like twitter choosing NOT to use your projects simply because they’re business model, horribly flawed or otherwise, prevents them from contributing back in an equal and fair manner? I’d think not, you’d want anyone and everyone using it regardless. Sure the ideal outcome is twitter participates in OpenMicroBlogging and open sources lot’s of their technology. If that’s not possible what should they do? Certainly we’re not suggesting they have to use all commercial software are we?

Hiring Tests

15 years, 10 months ago
[ Office Gossip ]

I was part of a working session at BOS with the topic of ‘hiring and keeping great developers’. The topic of testing in interviews came up. The majority of people agreed that testing was important, however, they acknowledged fundamental flaws in that people could be nervous, feel rushed, etc. The point being it doesn’t accurately reflect how they’ll function in the real work setting.

The issue with most interview testing is that the test environment is completely unlike the real work environment. Maybe I’m naive but isn’t the fix to make your test environment as much like the real work environment that you’ll be requiring that person to function in?

Are you hiring someone to stand in front of a room full of strangers and write software on a whiteboard with no outside resources? Or someone who can sit in a room alone with pen and paper and write pseudo-code?

I doubt it but if you do, you’re in luck. Most of the existing testing environments are perfect for your company. If, however, you need to hire a developer who can leverage all the resources available, work alone, with a team, and produce creative solutions to stated requirements? Then keep tweaking your test environment to get as close to that setting as you can.

Cooper design has been doing this for years with their interaction design exercise. Recently we started using simple developer tests for both brainpark and boc meant to put the candidate in a work-like environment.

How? Find a simple tutorial publicly available on the net that’s technically related to your work. The tutorial should take the average person 1 to 3 hours to complete and should end in a functioning application. With brainpark we use the django tutorial. We have the candidate go through the tutorial on their own time with their own resources and then submit the code when complete.

You could provide clear directions such as satisfying a requirement not in the tutorial or just leave it open ended. We’ve benefited from leaving it open ended, it gives us a view into how the person is able to leverage opportunities. Do they take a few extra steps like ensuring the application will install and run? Maybe add some features relevant to what you’re company is up to? Do they go too far and bloat the feature set and UI? All of this is great information for you in assessing where this person may, or may not, fit into your team.

Then sit down with them and their resulting application, run it and walk through the code. You now have the opportunity to discuss real code…why did you extend that class? would that method be difficult to maintain? Why doesn’t your application run? It’s amazing what a difference it makes to talk about real code instead of fictional examples.

The goal isn’t to filter people, it’s to give candidates an opportunity to shine and truly show you what they’re really capable of in a setting reflective to your working one. Hopefully it allows you to find the people who best fit with your team.

Context

15 years, 10 months ago
[ General ]

Over the years, people have commented to me about the look on my face in the photo I used for the front page of this site. I look aloof, I don’t care, I’m mad. I was looking through some old photos and saw the original recently. It goes to show, sometimes it is all about context.

Healthy Conflict in Product Design

15 years, 11 months ago
[ Software Development ]

Warning: generalizations and stereotypes follow.

In all software companies, likely all companies, there’s a constant battle of varying degrees of ugliness between sales and design. Sales spends all her time with customers and potential customers. All they want is for design to just do what they ask. My client needs the product to do this, just make the product do it.

Design on the other hand doesn’t like knowing that real humans exist. Design prefers personas or focus groups and doesn’t want to hear what sales wants built. Instead design wants to lie on the grass, get inspired, simplify, contextualize, and maybe design a feature or two. Will design solve real customer problems? Well in the best companies yes but likely not in the way sales suggested.

So we have a divide? A constant conflict between sales and design. What do we do? Well we get them in the same room together and hug it out right? Build consensus, get sales and design to agree and get on the same page.

Naw. Sure you need some of that, however, only so much as to have a respectful relationship between the two. The phrase ‘if two people always agree then one person is redundant’ applies here. If sales and design always agree then the good news is you can get rid of one. The best approach is to recognize and embrace the conflict and the divide. There’s strength and value in it, don’t get rid of that. It’s healthy dysfunction, keep it but make sure it’s just enough that you can still be productive.

Taking One For the Team

15 years, 11 months ago
[ Office Gossip ]

Neil writes here about a recent visit they had from Tim Lister. One of the observations Tim made was:

“that individual team members, especially developers, need to de-optimise themselves to optimise the team. The aim isn’t to get developers developing in the most efficient way: it’s to deliver a complete product. An individual developer might need to sacrifice some personal productivity for the benefit of the overall project. He might need to change the way he works, or throw away some code, or go off and do something else for a bit, so a tester can test sooner or better and the project can run quicker.”

That’s great but companies need to watch for mixed messages they’re sending. I mentioned the idea here of having your compensation plan focus on company interdependence and a common goal. The issue with what Tim suggests above is that most compensation strategies send the opposite message. They rewards teams, or worse individuals, for hitting their targets. Yes I know, the wise managers are meant to craft those team metrics to be in line with the overall company goals but that’s never delivered on, or maintained. As well, how much are you paying your high priced managers to maintain your compensation plan? Is that money well spent?

Be cautious about the clever schemes you devise. People love games and love gaming the system. If you’re not careful you may build a company of people who are excellent at gaming your reward system and leave no one tending your business.

Men’s Warehouse has a history of firing their best sales person in certain locations. The results are that the overall sales for the store increase. What they know is that the fired overachiever was gaming the system by hoarding contacts, information, etc so they could be #1. That’s their job, be #1 right? All Tim’s suggesting is that instead of firing your top performers, find them a role to play in raising the level of your entire company. It’s infinitely more challenging to create an environment that sends that message instead of one based on internal competition.