Category: Programming

  • Google Groups out, Stack Exchange In

    Recently I had a technical problem I was dreading having to find the answer to. It involved installing and configuring Java; that’s one of those topics where answers and resources seemed to be plentiful on google groups. But recently, google groups has been spammed to death, and my best bet was to find a forum or a mailing list.

    This may sound as though I’m whining, but signing up for forums and mailing lists can be tedious and time-consuming. Then, there’s the problem of finding the right forum and/or mailing list. My question is too idiotic to ask on a java programmer’s mailing list, and forums tend to be for hardware/software/OS.

    That is why it is with great relief that I have discovered several communities which let you post questions and search older answers.  On all of them you can browse by tags. They use the digg frontend to let you find interesting/important questions.

    • Stack Overflow lets you ask programming questions and hard setup questions.
    • Server Fault lets you ask system administration questions.
    • SuperUser lets you ask questions specific to an OS or piece of software. 
    • Doctype lets you ask web design and programming questions.

    I really like the interface, and it seems that geeks have already gravitated to these forums. Also, there is practically no spam and my question got a reply fairly quickly.

    Another thing. I confess that I enjoy browsing through the question lists. You can read a tutorial or article to learn something, but that’s only as good as how it was originally written. But when you read through questions dealing with everyday configuration and programming issues, you leave with a better sense of what is hard and easy to get done and which methods are the most powerful.

  • Searching & searching and finally finding it!

    Wow, I bookmarked something in delicious a few months ago and only today got around to wanting to look at it again. It was an important page for me although I had no plans to use it immediately.   So I bookmarked it on delicious and thought, gee, it’s always there when I will need it.

    Alas! Apparently I didn’t bookmark it on delicious; I could have sworn that I did. But how did I find this site in the first place? I remember it was a lone individual’s site; it was somebody who knew his stuff, but not a name I would recognize.

    I tried googling and looking through reference links, and then by some great miracle I found it again! Thank goodness. It probably is of no use to most readers, but for the sake of posterity, here it is: CSS Tests and Experiments (and specifically this thumbnail image gallery template). Bruno Fassino, you’re a genius!

    As a person who is not a web designer, I am willing to learn some basic css tricks, but most of the CSS resource guides are focused on wild design concepts of limited usefulness. Also, these so-called tutorials often focus on really elaborate site layouts without first explaining basic concepts.

    Even good explainers of CSS are not right for me. Eric Meyer wrote a first class book on web-design, and it is useful for teaching concepts, but I find that my needs are more basic than that. I want some simple designs to play around with (but a little more complicated than the W3 CSS tutorials).

    With the Internet, there is another problem. Browsers don’t implement css evenly, and often when one browser falls short, the designer puts hacks to make it work in the other browsers. These browser   hacks are useful at the time, but a year later, the hack is no longer necessary and you no longer need it (it only clutters the web page).

    Another problem is that as browsers support later versions of CSS, there are often more efficient ways to accomplish things. I’ll confess: I don’t have the time to keep abreast of the latest tricks.  I just relearn CSS every two years or so for a particular project and forget it again  (starting with my first experiment here. Believe me, the popup windows were pretty amazing in April 2002).  I actually enjoy fiddling around with CSS once in a while, but it’s agonizing having to relearn everything from scratch (and this time I have Safari and Chome that I need to test—ugh!). The good news is that my Luddite friend (who was on IE 5.5 until about 2003)  has now upgraded to IE 6 (although he’s still on Windows 98).  He’s somebody I can ask to test things in a pinch. Amazingly, as of December 2009, IE 6 still accounts for 10% of all Internet traffic.

    What I like about  Fassino’s website is that we see the results of various experiments. Feel free to suggest your own favorites.

    Here are the CSS resources I refer to most often.

  • Client-Side pages in XSLT: Promising?

    I just learned something amazing: XSLT transformation browser side (meaning: giving the user an XML document and an XSL document and letting the browser process it) is lightning fast — far faster than server-side processing. So why is no one using it?

    Kamal Gill wrote more about this (especially with respect to plone). I think I heard this once before, but it never really sank in.

    I’m definitely doing more research into this. I have to wonder what he means by XML. (I assume we mean more than XHTML). Also, I’m wondering if there are caching/memory issues on the client side as well. I will report back later.

  • Designing for Children: The Constructivist Approach

    In response to the announcement that SimCity will be ported to the One Laptop per Child platform, Alan Kay writes a long piece wondering whether Sim City is truly an example of constructivist learning. He talks about designing software environments for children and at the end concludes that Sim City might not be the best platform for that (he prefers something called etoys):

    If “children first!” is the rallying cry, then it makes sense to try to invent computer environments that use the very best ideas (and these are very hard to come up with). This is why the various groups that got interested in this romantic quest via early contact with Seymour have always been colleagues and never rivals. The hard to come by ideas for projects, representations, user interfaces, experiments, etc., have been freely traded back and forth. The notions of “thresholds below which is not worth going” have been jointly refined, etc. One of the parasitic difficulties is that computer environments, once made (with lots of effort and dedication) tend to form tribal bonds that are rather religious in nature. The amount of effort required plus the attendant religion makes it extremely difficult to take new insights and ideas and make brand new better environments for the children. The strong tendency is to use and reuse and incrementally expand the old environments.

    So, for young and youngish children (say from 4 to 12) we still have a whole world of design problems. For one thing, this is not an homogenous group. Cognitively and kinesthetically it is at least two groups (and three groupings is an even better fit). So, we really think of three specially designed and constructed environments here, where each should have graceful ramps into the next one.

    The current thresholds exclude many designs, but more than one kind of design could serve. If several designs could be found that serve, then we have a chance to see if the thresholds can be raised. This is why we encourage others to try their own comprehensive environments for children. Most of the historical progress in this area has come from a number of groups using each other’s ideas to make better attempts (this is a lot like the way any science is supposed to work). One of the difficulties today is that many of the attempts over the last 15 or so years have been done with too low a sense of threshold and thus start to clog and confuse the real issues.

    I think one of the trickiest issues in this kind of design is an analogy to the learning of science itself, and that is “how much should the learners/users have to do by themselves vs. how much should the curriculum/system do for them?” Most computer users have been mostly exposed to “productivity tools” in which as many things as possible have been done for them. The kinds of educational environments we are talking about here are at their best when the learner does the important parts by themselves, and any black or translucent boxes serve only on the side and not at the center of the learning. What is the center and what is the side will shift as the learning progresses, and this has to be accommodated.

    OTOH, the extreme build it from scratch approach is not the best way for most minds, especially young ones. The best way seems to be to pick the areas that need to be from scratch and do the best job possible to make all difficulties be important ones whose overcoming is the whole point of the educational process (this is in direct analogy to how sports and music are taught — the desire is to facilitate a real change for the better, and this can be honestly difficult for the learner).

    Specifically about Simcity he says:

    SimCity is similar but more pernicious. It is a black box of “soft somewhat arbitrary knowledge” that the children can’t look at, question or change. For example, SC gets the players to discover that the way to counter rising crime is to put in more police stations. Most anthropologists, sociologists, psychologists, and economists would disagree violently. Alternate assumptions can’t be tried, etc.

    Both of these packages have won many “educational awards” from the pop culture, but in many ways they are anti-real-education because they miss what modern knowledge and thinking and epistemology are all about. This is why being “above threshold” and really understanding what this means is the deep key to making modern curricula and computer environments that will really help children lift themselves.

    Two nuggests from the slashdot discussion about whether Simcity is a truly educational tool. First, a comic dialogue exchange:

    Is this to give the kids a virtual sense of what it’s like to live in a 1st world country? “look at all of the nice luxuries you will never experience!” how about the irony of building a nuclear powerplant on a computer you have to handcrank?

    Reply: This comment is funny, but it relies on a common misperception that the poor kids for whom the OLPC was created have no idea what modern urban life is like. Most of them live in or in the shadow of large modern cities, Johannisberg, Kolkata, Rio de Janeiro, Jakarta, Manila, and Mexico City, just to name a few. They have plenty of opportunities to see modern life, they just don’t have much opportunity to participate.

    Let me help you out with a simple analogy. You read slashdot, right? So, you have plenty of opportunities to see beautiful women, but all you get to do is watch, from a distance. That’s why you bought that stick of Axe Deoderant.

  • Geekend coming Up!

    Since I’m officially looking for work, it may seem a little curious to redouble my efforts to master more technical skills. But after reading this Oreilly article on an xml editor for documentation, I’m tempted to download XMLMind this weekend. Partially to learn the tool, but partially to produce some DITA and Docbook documents quickly as a way to familiarize myself with the xml dialects. What’s cool about XMLMind is that it has some docbook and dita toolbar customizations. It also has a basic wysiwig/word processor view capability which lets you view basic structure while editing. Up until now, I’ve been using Oxygen XML editor. It’s great for doing xslt and coding, less helpful for producing structured documents that are actually meant to be read.

    The article by James Eliot and Marc Loy covers not only Docbook and the editor itself, but also certain aspects of the xml workflow itself. (BTW, a few weeks ago I linked to a nice book by John Shipman about using xslt). XMLMind XML Editor (or XXE for short) also includes a nice tutorial/manual.

    Two other things related to information design and technical writing. First, I’m reading a great book, Information Architecture for the World Wide Web (3rd edition). I’ve read the previous edition (1st?), but this one contains a lot of new information.

    Second, the plone group in a documentation group reorganized their excellent documentation. Here is the result. Here is a piece by about the card sorting method used to do this reorganization.

    Reality Dose (written the following Monday): Boy, I accomplished next to nothing last weekend!

  • Here are my tools: Off to Make some Websites!

    For the next month I’ll be making and designing several websites (at the same time I’ll be looking for a job).

    Here are the tools I currently use:

    1. Notetab Pro text editor. Highly recommended, but not enough key shortcuts to make me happy.
    2. Oxygen XML Editor (also for XSLT). Highly recommended, but I haven’t done as much advanced work in it as I thought I would. Good from the data side, but lacking in the WYSIWIG/XSL side.
    3. Stylemaster CSS Editor. Highly recommended CSS editor. In fact, when I tried it out, I realized I no longer needed a heavy duty HTML editor.
    4. Gimp (graphics). This does basic graphic work, but I haven’t used it for many advanced functions. However, Akkana Peck’s great Beginning Gimp guide makes me feel ready to master anything.
    5. Audacity (audio editor). This great and easy audio editor is what I’m using for podcasts.
    6. Macromedia Captivate. I use this for screencasts/instructional videos. I’ve also heard that Camstudio is great, although I haven’t tried it.
    7. Wing IDE Python Editor. I’m still a novice to python, but I’ll be using it for my plone site.
    8. Open Office/MS Office. Mainly for presentations and binary formats which can be converted to ebooks.

    Here are some tools I hope to master soon.

    1. Microsoft’s Expression Web. I’ve heard good things about it, and I’d like to see if a more design-oriented web editor would help. (I’m downloading a trial version) Also, they have some ability to render xml pages into xsl, something worth checking out.
    2. Adobe Indesign C3. I’ve been told this product lets you produce .epub formats (the universal ebook format) easily. Chances are I won’t be able to afford a fully licensed copy, but I’d like to see if it is in fact cool.
    3. Vegas Non Linear Editor. I have a fully licensed copy which I’ve never used (it’s a long story). I’d like to play with this very soon.
    4. Scribus. This open source desktop publishing program has lots of features and works across platforms.
    5. Microsoft Publisher 2003. Not a big deal, but I’d like to say I’ve gotten a few MS Publisher documents under my belt.
    6. S5. I’ve always wanted to make a presentation using S5. Sounds easy, but I just want to sit down and do it.
    7. Other Silverlight tools from Microsoft. Lord only knows if Silverlight is going to take off as a platform. But it would be nice to have some way to do rich media applications without being dependent on the Adobe toolchain. I don’t want to turn into a .net developer wannabee. However, these tools seem a little cheaper and slicker than the Adobe suite of products.
    8. XMLMind  Xml Editor. A xml editor recommended for producing docbook and DITA files.

    Have I mentioned that I’m looking for work? Really, though, I’d like to brush up on some of these tools while I’m looking for fulltime work. My main focus will be on XSLT for ebooks, web design and plone development (anticipating the 3.0 release). Actually, it will be fun.

  • XML, Schemas and Recipes

    As mentioned before, I’m preparing a recipe book using some kind of xml and xsl. Here are some resources I’ve located so far:

  • Wiki Resources

    Ultimate Wiki comparison guide. Highly technical.

    Andrew Stellman on how managers at corporations can learn from open source project management.

    Andy Oram: Rethinking Community Documentation .

    On the post before this one, I’ve been gathering lots of useful ebook links.

    Uche Ogbuji develops in python and xml. Here’s his copia weblog which is far too esoteric for my terrestrial sensibilities. He’s written several articles about python and xml for the Oreilly website and I just now made the connecting between his consulting company and the 4-suite package for python.  Here’s a fascinating article Uche wrote about microformats. He talks about the limitations of microformats which he concluded were by design:

    One problem that the microformats technique doesn’t address at all is auto-discovery of semantics. You learn the meaning of the conventions in a microformat by reading the format specification. There are no shortcuts. If you come across a pattern in a host format that looks suspiciously like a microformat, you have no way of knowing what the microformat is for, and what its rules are unless you do some sleuthing with the help of your favorite search engine and find the spec. Even once you find the spec you almost always get an informal description of the convention. You don’t often get a schema, and you almost never get a schema structured enough to help automate processing of the format.

    This is one limitation that I think is the right choice for microformats. Discovery and semantics are very hard problems, and microformats would never have got off the ground trying to solve them any more than XML would have trying to solve the problem of semantic transparency as well as syntactic transparency. Microformats are rooted strictly to the syntactic realm, and those who do need more formality and structure can build these on the basics. In this article, I am sticking as much as possible to syntactic considerations with respect to microformats, but some of these considerations are related to semantics and are informed by how semantics might be mixed into microformats.

    He later talks about a initiative called GRDDL  (undertaken mostly by W3C staffers) to bind microformats to RDF models.

  • CSS Tricks to Scale Images

    Nifty tricks: scaling images by percent with CSS and by em. That is truly cool (and helpful if you’re trying to design for portable devices/ebook readers.

  • Ebooks vs. Simple HTML for PDAs

    The most interesting/useful content on my Axim PDA is not ebooks but my recipe collection. And basically I just save the files AS IS from my web browser. That is a bitch; lots of websites generate their pages dynamically so it is cumbersome (if not impossible) to download them offline.

    I like ebooks, but there are a lot of times it’s just easier to save some html pages onto my PDA. That got me thinking: how do PDA’s handle images? And how do you make stylesheets for PDA’s?

    Elika Etemad has an article about the basics.. Here’s a thread with some other links. Here’s a css wiki post about it.

    This raises a deeper question. If content on a PDA is downloaded/collected/converted by the user (and not the publisher or ebook site), won’t the future standard be just simple HTML?

  • Plone Conference

    Plone Conference Slides

    HTML talk about Plone/Wikis

    Now, if only there were mp3s.

    Listingpages, a plone product to create custom listing pages in your Plone site.

    How to Design Programs , MIT college textbook about programming Scheme (teaching basic algorithms in the process).

    As embarrassed as I am to admit it, I never knew OPML was the format for importing/exporting RSS Feeds. NowI know.

    Night of the Living Dead and it social impact (by Nebbish):

    There has always been an element of comedy in horror films – laughing is a natural response to terror as spectacle, to the communal jump-out-of-your seats in the cinema, and to rubbish special effects. What Romero did was merge humour with the social commentary of early horror literature like Frankenstein and The Invisible Man, and bring satirical comedy to the genre. Dawn of the Dead is a biting satire of consumerist society.

    The characters’ free-reign of the mall has them trying on expensive clothes and parading in jewellery, before realising it is all useless and belatedly stocking up on guns and supplies in panic. As the zombies descend on the mall, riding escalators and pressing their noses against store windows, they accidentally turn on a speaker system and lurch around to gentle muzak. When one of the characters explains the undead must have come to the mall out of “some sort of instinct”, the satire is complete. Not to forget that Dawn of the Dead is a horror film – a TV evangelist intoning “When there’s no room left in hell, the dead will walk the earth” is one of the most chilling lines in cinema.

    In case you don’t already know, Night of the Living Dead is not only a great (and socially relevant film), it also is in the public domain.

    If Andrei Codrescu made films

  • RSS Feeds Compared.

    Next project: writing an XSLT script to transform a static HTML page into an atom feed or RSS feed. I want to use the script whenever the static page is updated.

    Introduction to Atom Feed.

    tim bray comparing atom feeds and rss feeds

    (Readers may remember a recent post of mine about a person who creates feeds for $2)

  • Python, Wizard of Oz, Switching Costs, and Python IDE Shootout

    I’ve been updating my python/plone weblogs on my bloglines account. Here’s some great things I’ve been finding:

    Ian Bicking on why web programming is important for python. Lots of comments. Ludo responds to the charge that php is better than python:

    The key PHP advantage is, in my opinion, just one: the tight integration with Apache, and the flexibility it gives you in deciding where your code goes and how it gets executed. The ability to scatter a bunch of PHP files around, to use a hierarchy of directories, to put “static” content alongside your code, those are the features that make PHP web programming a joy. Oh, and PHP’s speed, which seems to be far greater than Python’s at web apps.

    In all other respects, Python beats PHP hands down: code quality and functionalities available in the included libraries, design cleanliness, unified DB API, namespaces, proper types, the list could go on for half a page.

    A review of 6 Python IDEs. Conclusion?

    I still think Komodo Personal is a good deal, but today I would go with Wingware Personal ($35) instead, primarily on the strength of its better code completion support, “Go to definition” feature, and Source Assistant. Superior Emacs emulation (superior to just about any other non-Emacs editor I’ve ever used, actually; I suspect Wingware has at least one Emacs refugee) seals the deal. A few days ago, I ordered Wing IDE Professional (paid for by my boss). If you need an integrated GUI builder, or you have an older machine, Komodo remains a good choice, although not many people these days would pick Tk as their first choice for a GUI toolkit. Of the free choices, PyDev is the clear choice if you have Eclipse experience. If not, well, the situation isn’t pretty. Perhaps you’ll have better luck with one of the IDEs we didn’t review here.

    On a similar note, here’s a post by Wolfram of Pythoneer wishing that HTML editors could “dive into” css files and js files when they are referenced in html files. This is a good idea, and actually the reason why I do more editing within my CSS editor than my html editor nowadays. Actually my workflow for creating static HTML pages is very peculiar. I type them normally in my NoteTabLight editor, open up HTML kit HTML editor, use a plugin to add tags everywhere, cut and paste them into Oxygen XML editor, validate the file and then I spend the rest of my time doing layout in my excellent CSS Editor. Pretty strange, eh? Thank goodness I’m not editing static pages too often.

    Web 2.0 Stereotypes.

    – Name that consists of a number and a word. (37signals did it for their company, and 43places did it for their site. That’s enough.)

    – Blatant rip off of font and style from everything from 37signals.

    – Ruby on Rails. (PHP is good enough for Flickr, remember).

    – Yellow background appearing then fading out whenever something changes.

    – Submit buttons that grey out and say “please wait” when you click them.

    Hacknot warns people about wikophilia:

    Wikiphilia: A mental illness characterized by the irrational conviction that any problem faced by a group can be rendered solvable through installation and use of a Wiki. This delusional ailment has been occurring in increasing numbers ever since it was first identified in 1995. Wikiphilia usually manifests in two distinct phases – the rapturous anticipation of the Wiki’s potential in the short post-installation phase; slowly giving way to denial of the Wiki’s failure to fulfill that potential in the second phase.

    Hacknot has written some remarkable essays about software design. Here’s an essay about confirmation bias in software testing. Here’s his take on dialog boxes. And on the art of the flame war, he says:

    Responses you give while angry are likely to be poorly considered, so it is invaluable to have techniques at your disposal to moderate that anger so that you can argue at your best and even begin to enjoy the dispute. Here are a few techniques that might be useful:

    * When you’re not arguing in real-time (e.g. via email or discussion forums), print out the email or message that you’ve found inflammatory. Read it somewhere away from the computer and plan how you will respond. Delay making your actual response as long as possible.
    * When arguing in person, make a deliberate effort to slow down the pace of the discussion and lower its volume. If you’re uncomfortable with the silence created, adopt a thoughtful expression and pretend to be considering your reply carefully. Use the time created to take a few deep breaths and calm down.
    * Adopt a different mental posture towards the email or message. Pretend that the message is for someone else. This helps to de-personalize the argument and put it at a distance.

    Realizing that your opponent is a susceptible to emotion as you are, you may choose to use this to your advantage. Here we venture out of the realm of the logical and into the rhetorical. If you can identify your opponent’s “hot buttons”, then you may be able to goad them into making an unconsidered response. Once made, the response cannot be retracted and you may be able to play that advantage for the remainder of the argument. When being inflammatory or provocative, be careful not to overdo it. Lest you appear vitriolic or juvenile, make your barbs short and well targeted. Ensure that they are offered as parenthetical asides rather than as a basis for argument.

    Matt Harrison on how to create a passport photo with gimp (Note the links on the panela blog are iffy; I’m providing dates just in case). His Sept 13 give his thoughts on Cinelerra and its forking, and what it reveals about open source software. Here’s a discussion of why the overwhelming majority of open source bring Mac laptops to developer conferences. (I’ve noticed that too; I find it incredible).

    Ehud Lamm on how to read a paper. Perhaps it is absurd to consider the topic, but I think what he means is reading an academic technical paper.

    Mark-Jason Dominus on why he hates advocacy of computer languages.

    n that talk I discussed the Pascal type system at some length. There was only one reason that I brought up Pascal. I needed to convince people that type systems have moved forward a little since the invention of Pascal in 1968. I had found from many years of experience that when I mentioned strong typing, people would frequently say “You must be kidding. Pascal sucks.” I knew that if I did not address Pascal, people would be unpersuaded by my talk—they might go home thinking I was advocating Pascal as soon as I mentioned strong typing. So I spent a lot of time discussing the particular failures of the Pascal type system so that I could show how these problems are surmountable—Pascal is not the be-all and end-all of strong typing, as many people think. I discussed C at the same time, because the C and Pascal type systems are so similar, and I did not want people to think I was singling out Pascal.

    Nevertheless, several people have written to me to complain that my talk was ‘unfair to Pascal’. They saw the talk as an attack on their favorite language. I don’t understand this. Even if the talk had been about Pascal, which it wasn’t, it couldn’t have been an attack, because I only told the truth about Pascal. The Pascal type system does have big problems, many of which were corrected in various incompatible ways by various vendors, and many of which were corrected by Wirth, the inventor of Pascal, in his later languages.

    You can be ‘unfair’ to a person, and you can hurt their feelings, even if you tell only the truth. But Pascal is a programming language, not a person. It has no feelings to hurt. Criticizing Pascal’s type system is like complaining that your hammer has a scratched face. There is no use getting upset about it. You just have to get a new hammer or make do. Saying that the criticism is unfair to the hammer, for whatever reason, is just silly.

    He concludes:

    I think the root of the problem is that we tend to organize ourselves into tribes. Then people in the tribe are our friends, and people outside are our enemies. I think it happens like this: Someone uses Perl, and likes it, and then they use it some more. But then something strange happens. They start to identify themselves with Perl, as if Perl were part of their body, or vice versa. They’re part of the Big Perl Tribe. They want other people to join the Tribe. If they meet someone who doesn’t like Perl, it’s an insult to the Tribe and a personal affront to them.

    I think that explains the reaction of the folks who wrote to me to complain about my unfairness to Pascal. I think maybe they took it personally, and felt that I was being unfair to them.

    Getting yourself confused with a programming language isn’t a sane thing to do, but a lot of people do it, including people from our community.

    (BTW, Lisp rocks! Long live Lisp!)

    Guido von Rossum compares the continuity obligations of Harry Potter to the backward compatibility requirements of a programming language.

    Werner Schultz makes a lucid remark in the comments:

    Part of the problem stems from the “Worse is better” school of programming language development. People start off with a language but don’t spend enough effort to boil things down to as few concepts as possible. Seems to me that Smalltalk and Ruby are still the best, but not perfect, examples of language design.

    I think it also a mistake to regard a programming language as a language for a specific purpose. It may have started from the need to solve a particular problem, but a language will always spread far beyond its original domain. Your design must stand up to that. It is impossible to cover all potentialities but by laying a good foundation it will be much easier.

    A basic rule: Be as restrictive as possible in the beginning, only permit as little as possible. It is much easier to relax the rules later than to restrict them. This avoids a lot of backward compatibility problems.

    Example: Java interfaces imply that all methods are public abstract and many coding standards advise against supplying the superfluous keywords. This is actually inconsistent since no access specifier implies package visibility in Java. This also means it is difficult to extend the interface concept later to include more fine-grained access rights a la Eiffel.

    This reminds me of a quote by Mark Twain (or some other wit) who apologized for the prolixity of his letter because he did not have the time to make it short. Here’s one thing that programmers, mathmaticians and novelists can appreciate: brevity.

    Pybloglines, a tool for accessing bloglines. BTW, this monster post comes from browsing through bookmarks of other people’s bloglines.

    Everything I Need to Know about Web Design I learned from Wizard of Oz (by Brian Alvey):

    At last year’s GEL conference, Stuart Butterfield gave a fantastic presentation on constraints and their effects on creativity. He launched the 5k competition in 2000, challenging web developers to create the most innovative and stunning web sites — using files that totaled less than 5,120 bytes.

    Butterfield explained that constraints can be found everywhere in music, architecture, poetry and design. Adding constraints to a project motivates artists to come up with more creative solutions to the design problem at hand. Extreme constraints like “48-hour filmmaking,” “three-day novel writing,” “Bush in 30 Seconds” and the 5k contest can lead artists to extreme creations.

    Every new web design is the solution to a design problem that can be summed up in a series of constraint questions: Who is my audience? What am I trying to get them to do? How do I want them to feel about this site? What browsers and platforms are we targeting? Can I use Flash?

    Jeffrey Zeldman agrees (in describing the results of the 5k contest). Unfortunately, the 5k winners’ site is offline, but here are some of the entries

    Om Malik on Switching Costs

    During Internet 1.0, AOL was the master of creating high switching costs. Using the email address as the cornerstone, they were able to lock-in their subscribers into a garden with very high walls. In fact, they locked up the gates so well that there are still 20+ million people who subscribe to AOL’s dial-up service (which, consequently, enables AOL to generate more annual revenues than either Yahoo! or Google, to this day). Even at a time when broadband access is oftentimes less expensive, their subscribers are hesitant to switch away from their AOL email addresses.

    But in a world where people themselves are increasingly becoming the sources of content and the owners of distribution, any product development strategy that aims to proactively increase switching costs becomes antithetical to the gravitational pull of the market (as AOL is now painfully experiencing). In fact, in many markets, we are likely to see an inversion of control, where vendors will increasingly rely on their customers to provide them with their strategic and competitive advantages. Put another way, the tail will start wagging the dog.

    So in such an open and unpredictable environment of consumer control, what happens to the notion of switching costs? The answer, on its surface, is actually quite simple. The importances of switching costs do not disappear. They will always remain a critical success factor for building market share and defending against competition. What does change, however, is who creates and controls it.

    It won’t be the corporation that locks its customers into a walled garden any more; instead, it will be the people themselves who create their own high switching costs. For instance, if you are an eBay seller, your switching cost is not so much the relationship you’ve created with eBay itself and the store you set up, it’s the reputation and trust you spent years building with fellow members of the community. Similarly, if you are a member of MySpace, it’s not the web-page and blog you spent time constructing, it’s your social network of cyber-friends you’ve cultivated and accumulated over time.

    At the end, the lesson is one of a paradox. As the power shifts increasingly towards community, the corporation loses its grip on the traditional means of control. Yet, by letting go of control, the corporation creates an environment where the community willingly creates its own switching costs. Such changing market behavior, which is structural and permanent for any industry being usurped by the Internet, must be met with a corresponding shift in corporate mindset. Otherwise, a “generation gap” will exist between the members of management themselves (old vs. new media), as well as the company and its market. In my view, if there is one company that seems to grok such dynamics better than anyone, and is in the process of executing superbly against these new set of challenges, it’s Yahoo!

    Python Paradox and the Jobs Market by Jeremy Jones. This is a bit of a troll post, but the fact remains that corporations impose a set of tools and they seek warm bodies to use them. One can only hope that the habits and skills these warm bodies pick up is sufficient to help them develop outside interests. The only way to have complete freedom is to go out on your own and make your own solutions. At a plone conference a few years ago, I heard a developer comment that customers didn’t really understand or care about what the web backend of their CMS was; they just wanted to see if it worked. On the other hand, there are real mindset differences between corporations and open source. The last two companies I have worked for use IIS/ASP/SQL Server, and the specific syntax and coding doesn’t really help you with outside projects. Who on earth can afford an IIS server license or a SQL Server license? On the other hand, learning postgresql or some language that is not singularly controlled by a corporation does have payoffs.

  • CSS BASED Forms & Nvu

    css-based forms (Jeff Howden)

    From Teleread, we have Nvu a cross-platform Mozilla-based CSS Editor. As an aside, I’ll say that I’ve seen decent XML Editors and decent CSS Editors, but not one that can do both. I use Oxygen XML Editor and WestCiv’s Style Master. For Python, I’ve using Eclipse and the Pydev plugin. And while I’m at it, I use NoteTabLight (a free version of NoteTab) as my main editor. I do about 75% of my work with this editoer instead of OpenOffice. Actually I do a lot of work within my weblog software or fastmailbox.net web interface. Then, right before pressing Submit, I select all (ctrl A), copy (Ctrl C) and then press Submit. That way, if the website fails, I still retain the text in memory. I’m sure I’m not the only one who’s been burned by websites that fail.

  • Headfirst/Creating Passionate Users Weblog

    Today I discovered two very insightful weblogs by veterans in the technical publishing industry.

    First Joseph B. Wikert from Wrox has a weblog about publishing trends called Average Joe. I’ll be catching up on his posts over time. Also, a great User Experience group weblog called Creating Passionate Users by some programmers/usability people who wrote books for Oreilly’s new Headfirst series. I’m definitely intrigued by their posts and their insights into human psychology.

    Some posts by Kathy Sierra that jump out: Tip for Building Online Community: Be Friendly!

    On how Younger Brains View the World:

    Younger brains–and by younger I DO NOT MEAN THE LENGTH OF TIME THE BRAIN HAS BEEN AROUND; I mean the brain that was developed in the more visually-rich environment–have a stronger sensitivity and preference for visuals. () So what are the implications? It’s obviously not as simple as just “add graphics” to whatever your product or service is. But it is an orientation. In our case, we did just that. We took a computer programming text book and added visuals to increase understanding, retention, and attention (three different things, requiring three different types of visuals), because that’s what brains want. We drastically changed the text-to-picture ratio, and we believe that just doing that alone would have made the big difference.

    My comment: it’s not just a preference for graphics, it also has to do with display capabilities of prevailing technologies, force of habit, and perceptions of what is “normal.” Teenagers now show photos and all sorts of multimedia content freely. It’s a given. For older generations, it’s still a “Look I’m sharing a movie!” mentality. The fact that books on tape and mp3s make it easier to listen to stories makes us prefer the more portable way to consume information. I’d much rather read the book on European history than to hear the Teaching Company’s version on it. On the other hand, I can listen to the Teaching Company while driving, something which otherwise would have been dead time. I tend to reserve book reading for only the most demanding of reading subjects (poetry, programming books, etc).

    Also worth mentioning is context. In many contexts, finding information amidst graphically intense content can be a real pain. If you’re trying to learn something for the first time, fine. But for reference, graphics can be distracting. Documentation needs to provide simple intuitive views of information, and graphics reduce what can appear on a page. Some of what she’s suggesting can also be acheived by simple tables and graphics when these devices aid in understanding. I write technical documentation full time, and believe it or not I spend a lot of time trying to decide if the context justifies a chart or screenshot. Screenshots, by the way, can be very difficult to maintain for technical documentation. Often they simply illustrate points the user would have figured out on their own anyway. Here are my guidelines for using them:

    1. Are they easier to understand than conventional presentation?
    2. Do they show types of information that cannot be easily described?
    3. Do they help explain to the user how to achieve tasks?

    One type of graphics I’m a big fan of is animated demo’s. Sometimes seeing a power user work with software can teach a user much more quickly than any sort of written tutorials. Note that this does not necessarily imply the need for flash demo’s. Live demonstrations can be equally effective or useful.

    See also: If you’re over 35, do you have a clue? and Instructional Strategies & Roger Schank and the Art of Giving Instructions (as applied to horse training). : Here’s what someone giving instructions should always mention:

    1. How to know when you’ve done it wrong.
    2. How long it should take.
    3. Key milestones… what you’ll see along the way.