Tag Archives: ponderings

Uncategorized

Playing in communities of practice

I love playing in communities of practice. Not many things light up my brain more than the sort of flow I can achieve when I’m embedded deeply enough in a community of practice that I can smoothly follow a technical discussion, or better yet, anticipate some-but-not-all of the structure and details of a discussion, or better yet, enter into a creative dialog with another practitioner, or better yet, achieve actual artifacts of note within the field. A minute of that stuff is worth days of small talk and regurgitated opining, to me.

(By the way, the book Communities of Practice is pretty cool, from what I was able to read before someone else recalled it.)

At a recent Ames MakerSpace meeting, we were talking about the mission of the group. There already exists a mission statement, but if I were to state my personal mission as a member of the group, it would be something along the lines of: to facilitate growth within, and connections between, local communities of practice. I suppose that sounds pretty generic, but there’s a reason: any community of practice is fun to interact with if my interlocutors bring passion*.

It also might sound strange that I didn’t mention the tools and the space. That’s because the people and connections have a lot more value to me than those. But, I should add that tools and shared space are an important part of the process by which a community of practice forms and deepens its intimacy. These, and the artifacts and works-in-progress created by the community, embody a level of sharing/communication/expression that can’t be achieved by talk alone. It’s amazing what even just a sprinkling of that stuff adds to the interactions.

Seeing and helping others succeed is a great joy for me (I assume that’s true of most other people, too). Aligning myself with appropriate communities of practice helps to ensure a somewhat steady stream of such experience.

 

* In my time with the MakerSpace, I’ve heard people express their passion for, among other things: web development, sewing, miniature cattle, wire sculptures, storm doors, coffee brewing, rapid prototyping, bicycles, recycling electronics, gardens, metal fabrication, alternative currencies, fish, GIS, CNC, radio protocols, ecology, intranet collaboration, solar cells, robots, CAD, image analysis, power tools, winter dress systems, … I’m just scratching the surface, but that’s already a pretty great list. As measured in units of passion-diversity-intensity-per-hour, it’s been a good investment for me.

General

Temporological

Not many hits come up in search engines for the word ‘temporological’. Nothing like ‘psychophysiological’, for example.

But I did think of a reason to make such a compound today. I was thinking about how in software code*, for a given ‘location’ in the code (line number, basic block, etc.), there are a set of temporal and logical conditions that hold there. For example, “after this line in this block, the Person object has been created and all its fields are null”.

I’m kinda fascinated by that aspect of programming, but I can’t explain precisely why yet…

* I normally wouldn’t use a weird phrase like “software code”, but I didn’t want to say just “code”, and I didn’t want to say just “software”. Huh.

General

TV firmware

I wonder when the day will come when the firmware in more consumer-electronics devices, like TVs, will go open-source. I would love to be able to modify the firmware in my TV. For one thing, there’s a very annoying video bug that I’m 98% sure is a firmware bug, but Sharp (ooops, I didn’t mean to say the name of the company, but it’s too late to backspace now) refuses to acknowledge that it’s a bug or fix it. I bet if I had a source tree/build tools/loader I could fix it in about a day, regardless of the fact that I don’t know anything about TV firmware.

But the real reason is this: some PS3 games do 720p and some do 1080p. When the mode switches, my TV has an indicator that comes on briefly that says “Video: 720p” or “Video: 1080p”. I want to change the former indicator to “Video: 720p (teh suck)” und express the anger than I am feeling about games that don’t do 1080p.

General

Nature software

Hmmm, looking at the credits on an episode of planet earth, I don’t see any credits for software/IT support staff. I’m sure there _is_ some, but the fact that it’s uncredited probably indicates that there isn’t as much computing going on in the production of such a series as there ought to be. I can think of lots of ways that software and computing infrastructure could support efficient production, insightful exploration of A/V materials and data, exceptional editing, etc., and I’m sure that current off-the-shelf software can’t be doing everything that can be done there.

So, if anyone reading this is a nature documentary producer, I’ve got two requests of you: produce lots and lots more content on the level of quality of planet earth (even a level or two lower quality would still be great), and talk to me about how to make more and better stuff through software magic.

General

A choice

We can choose to see the past as a set of templates against which we can train our souls to perceive the peace and joy of every configuration of the universe.

General

Teaching programming

Someone (I don’t really like to mention a lot of specific names on my blog) asked me today what suggestions I might have to someone who’s about to start teaching a university course in programming in MIS. I had some fun hypothesizing about it; here’s what I wrote:

[I have to preface all my remarks with: I’ve never taught anything bigger than parts of a three-day course in the architecture of a specific application, and even then I didn’t try any of the blue-sky ideas I’m about to mention. But, if I did try to teach something like a college course, I would try them.]

My first thought is that the most important thing to emphasize is that programming is about structuring thinking and activity, and not really about the structure of computer programs, so I think a project-based approach seems like a good idea.

I’m going to just go full-hypothetical here and give a transcript of the first monologue I’d give :-). Hopefully people would interrupt me…

“Contrary to what you may have been told, programming is not really that much about languages and syntax and stringing together a series of canned solutions. Well, good programming is not about that. Mediocre programming is about that, and you can get by in the commercial sphere being a mediocre programmer, so if anyone is truly satisfied with that, we can have an independent study course where I assign you a textbook and you do problem sets and tests.

However, what I’d rather we all do is learn good programming, and by the method that I think makes most sense, which is to actually build something together and enjoy building it. Good programming is about structuring thinking and activity, both on your own and with others. It’s really just a particular discipline of problem-solving and communication, both of which I assume you all know a good deal about.

The project we’ll be doing is the software for a POS system. You might think “that’s boring”, which I hope to convince you doesn’t have to be true, and you might think “that’s quite practical”, which is true but not all that relevant.

What is relevant is that it’s something big enough that it will take the whole semester. Today is the last ‘lecture’ of the class. I mean, there’ll be plenty of opportunities to take notes if that’s your thing, but what I’ll be doing is not lecturing; I’ll be participating in the discussions that come naturally from the project, and bringing in whatever I can from my years of experience when the need arises. You’ll want to take notes on what you and your classmates say more than on what I say.

If you’re thinking about grades, and it’s OK to admit that you are, I think everyone will be graded by classmates. I won’t let you be too hard or too easy on one another, but other than that, you’ll be deciding grades. Inherent in the structure of a complete software system is some sort of assurance that what you’ve built is high-quality. So, for example, there’ll be people making test systems that will test modules that other people are making. It will be clear to both of those teams how well the other team did. You’ll be giving grades at the end of the second, fourth, eighth, and sixteenth weeks.

Speaking of teams, let’s start talking about the pieces of the system and the workflow for building them. I think we can accommodate everybody’s interests and talents somewhere in here.”…

[Some pieces of work/ideas I might bring up if they didn’t come up: user interface/ease of use, network protocols, language and coding style decisions, source control (use SourceForge and get the added effect that ‘anyone in the world might see your code’), error handling, exception handling, auditing, security, existing code and libraries, storage and redundancy, issue tracking, performance, testing, data formats (i.e. floating point is not necessarily good for financial data), customization/branding, data mining, what happens if the whole thing ‘crashes’, legacy system integration, self-check systems, …]

General

The switch flips

It seems like the direction of technological progress has been to reduce the number of moving parts in use, but now we may be starting a trend in the other direction. MEMS are getting hot, for example: MEMS switch tops 26 GHz, or DLP Pioneer….

[Ha, I accidentally made a funny when I said they’re ‘getting hot’. See, cuz the thing about MEMS systems is that they don’t get hot, like larger-scale mechanical systems. Ha.]

It’s pretty amazing that we’re seeing switches that thunk back and forth 26 billion times in a second, or projectors where every single pixel has its own little mirror wiggling independently hundreds of times per frame. What would Archimedes think of these?

And (of course) I see interesting roles for software coming up in concert with such systems. Whenever you can affect something in the real world at a rate of MHz or GHz, you can drive it with software and do some things you wouldn’t have believed…

General

Psychology of info-space navigation

I’m also fascinated by the psychology of getting around in unfamiliar info-spaces. In order to find a workaround for my problem outlined in Geek TV: open source rocks, I had to:

  • find anchor points
  • learn terminology
  • learn systemic interactions
  • build an environment for experimentation
  • build models of a system with dozens of components
  • perform experiments
  • twiddle code

and finally, reason about interactions between things I don’t understand, within a system I don’t understand, driven by a practical problem that I wanted to solve. And this all took place in a period of days, in a total of a couple dozen hours, on and off, with the final effort between getting annoyed with the problem and having a workaround occurring in a couple hours.

I’d really like to know more about how all that happens. I know that lots of academics have spent lots of effort on learning about that, and I have spent some time delving into their research, but still, I don’t feel like I have much of a feel for the most important parts of the whole process. It’s fun, in any case.

General

Sociology of software

I’m pretty fascinated by the concept that there’s a sociology of software, that the patterns of relationships in the little world of software components installed on a computer mirror, to some degree, the patterns of relationships in the world of users and developers. I suspect that some academics out there study such things, so I’ll have to see what they’ve learned some day.

I did find one interesting paper in an earlier search: Sociology in machines (PDF). It’s not hitting quite the nail with the exact hammer I’m thinking of, but it might be a good starting point.

Anyway, I was reminded of this when I was researching my problem in MediaPortal as mentioned in Geek TV: open source rocks. In that situation, we have at least three development groups (Nero, Team MediaPortal, and Microsoft) plus one user participating in transactions, specifically, User wants to use software from all three groups on the same computer. The sets of components are developed pretty independently of one another, but there are significant dependencies on Microsoft for both Nero and MediaPortal. Each set of components can be installed and uninstalled in somewhat independent ways. Nero and MediaPortal make calls to Microsoft components, but Microsoft also makes calls back to both. It’s in that particular web of interactions that problems arise.

I could go on, but won’t.

General

License

Carrying a cup of hot chai gives one social license to walk awkwardly. Other ways to obtain this license are to be on a moving bus, or to be probably-drunk.