Dorai’s LearnLog

July 1, 2008

LinkLog: Programmer Competency Matrix

Filed under: Programming, Software — dorai @ 12:21 am
Tags: , , ,

On a winter day in Boston, I sat through a two hour lecture on B-Trees. There was snow outside and we all sat spell bound as Greg Basset, our instructor taught us how Digital’s RMS-11K (the record management system) worked. The concept of incremental loading, fill factors, splitting data and index buckets and compression of duplicate keys, is still fresh in my memory. I gave that talk several times later in my life when I was teaching the subject. In each repetition, I learned a little bit more, answering questions. A few years later, I had the chance to use many of the ideas when we built C-Trieve and Objectrieve, two record management systems on top of which we built an SQL relational database. That more than a couple of decades ago.

Looking at the Programmers Competency Matrix brought back lots of those memories. I think I am going to make a custom version of this matrix, make a poster and put it up on the wall of my class. A lot of these topics are not needed for the application programming today. But for a few of those intensely curious students, this is a kind of road map.

Meta:

Reddit is a great source of interesting posts, especially for programmers. I should thank the kind soul who posted this link.


May 3, 2008

Invitation to Python Developers from Guido

Thanks to @reddit here is the invitiation (dated May 1, 200 8)

I'm inviting the Python developer community to try out the tool on the
web for code reviews. I've added a few code reviews already, but I'm
hoping that more developers will upload at least one patch for review
and invite a reviewer to try it out.

To try it out, go here:

    http://codereview.appspot.com

April 15, 2008

Presentation: How to Write Pythonic Code

Filed under: Programming — dorai @ 7:55 pm
Tags: , , , , ,

The topic was interesting enough for me to investigate. But what I found in addition to a nice presentation was the way it was made.

In case anybody wonders how the slides were produced: I creatd them using rst2s5.py, a tool included in the docutils distribution that takes a reST source document and turns it into HTML suitable for the browser-based S5 slide show system. I also integrated Pygments to colorize the Python source code of the examples.

Link to the whole tool chain along with templates here.

February 29, 2008

LinkLog: Software

This blog is such a wonderful source of information. Here are just a few of the posts:

How a beautiful idea becomes a Frankenstein system is a must read for every software developer. Here is a small fragment of a much more comprehensive diagram in this post.

how-a-beautiful-software-becomes-frankenstein.jpg

I always thought that we built tools to take boring repetitive parts of the work and automate it. How Tools Frame Programmer’s Mindset makes you reflect a lot more about the tools. What qualities should effective programmer tools have? The author identifies three:

  • Usability - enhance flow of programmer’s ideas or at least don’t impede and interrupt this flow.
  • Representation - enable easy for understanding and modification representation of the structure, ideas and domain concepts in the code.
  • Agile development friendly

From Beginners to master programmers - First Language and More is a problem that faces every training organization. When I started working on Learning Point, this was one of my constant worries. I have seen several threads of discussions on the choice of first language for programming.

This blog post is a good starting point. Hopefully I will have more to contribute after my current experiment with 5 interns for the next six months.

  1. Train clear logical thinking.
  2. Understand modern software concepts and environments.
  3. Learn to effectively implement customer needs.

February 23, 2008

Resources: Parallel Programming Research

Filed under: Models, Programming — dorai @ 6:41 am
Tags: ,

Parallel Path from Berkeley, CA

I got this from ACM Tech News. Look at the links below the article. They lead to some cool resources.

Parallel Computing Lab, Berkeley, CA

Download the presentation from this page. It has a wealth of useful information.

Parallel Programming Model Watch

There is not just one model for parallel programming. I watch this page (with InfoMinder)

Dwarf Mine

A dwarf is an algorithmic method that captures a pattern of computation and communication.

I blogged about 13 dwarfs last year. I guess, they now changed the title to Dwarf Mine to keep the idea of mining more patterns.

Research at Intel

Intel, Microsoft have lots of efforts going on in this area. They fund research (like this Berkeley paralabs initiative. Sun is active too.

Parallel Programming will have the deepest impact on a wide variety of solutions to computational problems. It is an exciting area to follow.

See Also:

Design Patterns for Parallel Programming

Thirteen Dwarfs - Computational Kernels

The Fundamental Paradigms for Programming are going to be Challenged 

January 28, 2008

LinkLog: Programming

From the food pyramid: for the journeyman programmer

programmers-pyramid.png

It is a great way to structure:

  • Teaching Software Development
  • Training new employees (the environmental training is equally important)
  • A way to understand how developers do in various activities
  • For each project move from bottom to top and repeat

Other activities, like reading and writing about programming can help developers break the monotony of just doing work by combining it with a bit of learning.

January 15, 2008

Consensual Hallucinations

Filed under: Programming, Software — dorai @ 3:21 am
Tags: , ,

Why does this strike a chord? This frankly brutal post on myths of Project Management is much more than that:

Life is full of consensual hallucinations. A polite way of saying we’re surrounded by bullshit. If you live in a democracy, you tend to believe you have a say in what happens in your life. There’s a tendency to ignore the reality of politicians being soulless whores who are bought and paid for by vested interests. The consensual hallucination of participatory democracy is more comforting. Voting is little more than a sideshow but life’s a little easier to bear if we pretend voting can actually change anything.

I can attest to the fact that software development is not all that predictable. Well, let me restate that. Not all aspects of software development are predictable - people, problems, processes or specs. There is a complex relationship between various factors that get you something useful (or usable) at some point in time. But it is not based on what was expected or even predicted at the beginning of a project.

I am a strong adherent of theory P based on over 25 years of software development.

Theory P adherents believe that the normal case for software projects is that tasks are rarely completed exactly as estimated, but that as a project progresses, the aggregate variance from estimates falls.

Believing in Theory P, we believe we ought to have a process for continually updating a plan that asymptotically approaches a description of reality as the project nears its conclusion.

January 12, 2008

LinkLog: Grok

Filed under: Programming, Software — dorai @ 8:39 pm
Tags: ,

It is funny how you can go along, kind of knowing a word and even using it with no idea of its origins.  I  knew what grok was but never knew its origin. Never even realized that it came from one of my favorite SciFi authors.

The word grok comes from the novel Stranger in a Strange Land by Robert A. Heinlein, and is defined in his book as:

Grok means to understand so thoroughly that the observer becomes part of the observed - to merge, blend, intermarry, lose identity in group experience.

The thought of observer becoming part of the observed is kind of enticing. It is the kind of experience one feels in full immersion in anything. For me it is technology. Some times, I wonder what the fascination is all about. It is not a particular programming language or software environment. I guess it is the people in the tech industry, the industry itself. It is a fascination some times almost becoming infatuation.

Meta:

From an introductory chapter in Plone book -> Grok Page-> this post.

January 11, 2008

LinkLog: Programmers and Programming

I have been collecting some links that describes/categorizes programmers and their attitudes. Some of them are brutal and others hilarious. Here are a list of links.

Three Levels of Programmers

I don’t like the classification - Good, Lazy and Bad. I would rather call them - Tool makers, Tool Users, Grunt workers. A Building Tools mentality is something different from Using Tools mentality. I don’t agree that one is superior to the other.

The Cults of Programming

I can identify with a few of these myself especially Ease Cult and Uncertainty Cult.

The Cult of Language Expertise

Language expertise is fine, but it isn’t the most valuable thing out there. If someone programs conscientiously, I can work with them.

How to Recognize a Good Programmer

Passion, Self teaching and love of learning, intelligence are all mentioned in this article. Formal education is last in the list. I would add a couple of more - empathy for the users (of your software) and certain amount of Pride in your work, goes a long way too.

Teach Yourself Programming in 10 years

Researchers (Hayes, Bloom) have shown it takes about ten years to develop expertise in any of a wide variety of areas, including chess playing, music composition, painting, piano playing, swimming, tennis, and research in neuropsychology and topology.

This is my all time favorite. It is a must read for anyone aspiring to be a programmer.
P.S:

I will keep this updated whenever I see a new interesting entry. If you find something interesting that should be in this list, please add a comment with a link.

January 8, 2008

LinkLog: Python as language of 2007

Filed under: Programming, Software, Trends — dorai @ 9:19 am
Tags: , , ,

TIOBE declares Python as the programming language of 2007. I track this site using InfoMinder. The yellow highlights are changes detected by Infominder.

tiobe1.jpg

tiobe0108.jpg

Look at both Delphi, Cobol, FoxPro and Lua. Lua is an increasingly popular language for writing games.

Next Page »

Blog at WordPress.com.