I like what I see at Stack Overflow so far. Growing an online community of any sort can be tricky, but this collaboration engine looks smart. Additional info at Joel Spolksy’s. Hmmm… I might post a Java, Emacs, or Python question shortly to give it a whirl.
Category Archives: Coding, Software Engineering, Computer Science
Getting things done (and organized) with Emacs and org-mode
Some resources and links:
sacha chua: Emacs: Getting Things Done with Org – Basic
Charles Cave: Using Emacs org-mode for GTD
Linux Journal: Get Organized with Emacs Org-mode
EmacsWiki: Org Mode
brool: Using Org Mode with GTD
Who is Clay Shirky?
For coworkers (you know who you are…):
Jeff Atwood says, It’s Clay Shirky’s Internet, We Just Live In It
Hugh Macleod says there is only Clay Shirky’s Law: Equality. Fairness. Opportunity. Pick Two.
Ted: Clay Shirky: Institutions vs. collaboration:
Clay Shirky is author of the recent “Here Comes Everybody: The Power of Organizing Without Organizations” (on my must-read list), and from his bio:
Mr. Shirky divides his time between consulting, teaching, and writing on the social and economic effects of Internet technologies. His consulting practice is focused on the rise of decentralized technologies such as peer-to-peer, web services, and wireless networks that provide alternatives to the wired client/server infrastructure that characterizes the Web. Current clients include Nokia, GBN, the Library of Congress, the Highlands Forum, the Markle Foundation, and the BBC.
In addition to his consulting work, Mr. Shirky is an adjunct professor in NYU’s graduate Interactive Telecommunications Program (ITP), where he teaches courses on the interrelated effects of social and technological network topology — how our networks shape culture and vice-versa. His current course, Social Weather, examines the cues we use to understand group dynamics in online spaces and the possible ways of improving user interaction by redesigning our social software to better reflect the emergent properties of groups.
Mr. Shirky has written extensively about the internet since 1996. Over the years, he has had regular columns in Business 2.0, FEED, OpenP2P.com and ACM Net_Worker, and his writings have appeared in the New York Times, the Wall Street Journal, the Harvard Business Review, Wired, Release 1.0, Computerworld, and IEEE Computer. He has been interviewed by Slashdot, Red Herring, Media Life, and the Economist’s Ebusiness Forum. He has written about biotechnology in his “After Darwin” column in FEED magazine, and serves as a technical reviewer for O’Reilly’s bioinformatics series. He helps program the “Biological Models of Computation” track for O’Reilly’s Emerging Technology conferences.
Among his must read essays for anyone developing a social app of any kind:
A Group Is Its Own Worst Enemy
Power Laws, Weblogs, , and Inequality
Weblogs and the Mass Amateurization of Publishing
Communities, Audiences, and Scale
Shirky, to me, is noteworthy for his balanced views on the Web and its applications to and effects from society.
Far more here.
YouTube: Clay Shirky on Love, Internet Style:
Dropbox sounds interesting
arstechnica.com has an interesting post on Dropbox: “How Dropbox ended my search for seamless sync on Linux.
Software Engineering Links for Saturday 13th, 2008
For Mat, Anandhan, and the team: Dobbs Code Talk: Software is a Team Sport: Write-up for the upcoming Software Development Best Practices conference in Boston, MA October 27th-30th. Looks like a good event.
Google: Demystifying the Duplicate Content Penalty: There isn’t one folks. Please get that clear.
From Aaron: Pinax and django-hotclub – a project to build reusable Django apps.
Burningbird: Death to Extensibility: “I can’t help thinking that we should keep the extensibility and just get rid of the Yellow Screen of Death.”
Linux Journal: Programming Python, Part I
Linux Journal: Programming Python Part II
Need to try this: nxml-mode for Emacs.
Good Bash scripting tutorial
linuxconfig.org: Bash scripting Tutorial. One gotchya for OSX folks: replace seq for jot: Mac OS X Hints: A primer on using ‘jot’ in UNIX.
Why Mozilla sticks with Gecko over WebKit
arstechnica.com: Why Mozilla is committed to Gecko as WebKit popularity grows:
From a technical perspective, Gecko is now very solid and no longer lags behind WebKit. A testament to the rate at which Gecko has been improving is its newfound viability in the mobile space, where it was practically considered a nonstarter not too long ago. Mozilla clearly has the resources, developer expertise, and community support to take Gecko anywhere that WebKit can go.
It’s also worth noting that some of Gecko’s unique and seemingly idiosyncratic features are becoming useful to third-party adopters. There are a growing number of applications being built on top of the Mozilla platform that leverage XUL with impressive results.
BTW – Songbird is pretty darn cool and I can’t wait to see it reach 1.0.
Development links for today, Sunday, September 7th 2008
An Army of Solipsists: A Grails Plugin for Spring MVC Controllers.
JaIM.at :: public Jabber / XMPP Instant Messaging Server: Jack Moffitt: Get Twisted On XMPP – The Future Of Twisted Words
On the Big Ball of Mud
Brian Foote and Joseph Yoder, Department of Computer Science, University of Illinois at Urbana-Champaign: Big Ball of Mud:
In the end, software architecture is about how we distill experience into wisdom, and disseminate it. We think the patterns herein stand alongside other work regarding software architecture and evolution that we cited as we went along. Still, we do not consider these patterns to be anti-patterns. There are good reasons that good programmers build BIG BALLS OF MUD. It may well be that the economics of the software world are such that the market moves so fast that long term architectural ambitions are foolhardy, and that expedient, slash-and-burn, disposable programming is, in fact, a state-of-the-art strategy. The success of these approaches, in any case, is undeniable, and seals their pattern-hood.
People build BIG BALLS OF MUD because they work. In many domains, they are the only things that have been shown to work. Indeed, they work where loftier approaches have yet to demonstrate that they can compete.
It is not our purpose to condemn BIG BALLS OF MUD. Casual architecture is natural during the early stages of a system’s evolution. The reader must surely suspect, however, that our hope is that we can aspire to do better. By recognizing the forces and pressures that lead to architectural malaise, and how and when they might be confronted, we hope to set the stage for the emergence of truly durable artifacts that can put architects in dominant positions for years to come. The key is to ensure that the system, its programmers, and, indeed the entire organization, learn about the domain, and the architectural opportunities looming within it, as the system grows and matures.
Periods of moderate disorder are a part of the ebb and flow of software evolution. As a master chef tolerates a messy kitchen, developers must not be afraid to get a little mud on their shoes as they explore new territory for the first time. Architectural insight is not the product of master plans, but of hard won experience. The software architects of yesteryear had little choice other than to apply the lessons they learned in successive drafts of their systems, since RECONSTRUCTION was often the only practical means they had of supplanting a mediocre system with a better one. Objects, frameworks, components, and refactoring tools provide us with another alternative. Objects present a medium for expressing our architectural ideas at a level between coarse-grained applications and components and low level code. Refactoring tools and techniques finally give us the means to cultivate these artifacts as they evolve, and capture these insights.
Read the whole thing.
Worth a re-read, still relevant: Neal Stephenson’s “In the Beginning was the Command Line”
Pre-OSX, Pre-iPod, pre George W. Bush presidency, way back when.
First, A quote about Apple and Boomerdom:
Apple has always insisted on having a hardware monopoly, except for a brief period in the mid-1990s when they allowed clone-makers to compete with them, before subsequently putting them out of business. Macintosh hardware was, consequently, expensive. You didn’t open it up and fool around with it because doing so would void the warranty. In fact the first Mac was specifically designed to be difficult to open–you needed a kit of exotic tools, which you could buy through little ads that began to appear in the back pages of magazines a few months after the Mac came out on the market. These ads always had a certain disreputable air about them, like pitches for lock-picking tools in the backs of lurid detective magazines.
This monopolistic policy can be explained in at least three different ways.
THE CHARITABLE EXPLANATION is that the hardware monopoly policy reflected a drive on Apple’s part to provide a seamless, unified blending of hardware, operating system, and software. There is something to this. It is hard enough to make an OS that works well on one specific piece of hardware, designed and tested by engineers who work down the hallway from you, in the same company. Making an OS to work on arbitrary pieces of hardware, cranked out by rabidly entrepeneurial clonemakers on the other side of the International Date Line, is very difficult, and accounts for much of the troubles people have using Windows.
THE FINANCIAL EXPLANATION is that Apple, unlike Microsoft, is and always has been a hardware company. It simply depends on revenue from selling hardware, and cannot exist without it.
THE NOT-SO-CHARITABLE EXPLANATION has to do with Apple’s corporate culture, which is rooted in Bay Area Baby Boomdom.
Now, since I’m going to talk for a moment about culture, full disclosure is probably in order, to protect myself against allegations of conflict of interest and ethical turpitude: (1) Geographically I am a Seattleite, of a Saturnine temperament, and inclined to take a sour view of the Dionysian Bay Area, just as they tend to be annoyed and appalled by us. (2) Chronologically I am a post-Baby Boomer. I feel that way, at least, because I never experienced the fun and exciting parts of the whole Boomer scene–just spent a lot of time dutifully chuckling at Boomers’ maddeningly pointless anecdotes about just how stoned they got on various occasions, and politely fielding their assertions about how great their music was. But even from this remove it was possible to glean certain patterns, and one that recurred as regularly as an urban legend was the one about how someone would move into a commune populated by sandal-wearing, peace-sign flashing flower children, and eventually discover that, underneath this facade, the guys who ran it were actually control freaks; and that, as living in a commune, where much lip service was paid to ideals of peace, love and harmony, had deprived them of normal, socially approved outlets for their control-freakdom, it tended to come out in other, invariably more sinister, ways.
Applying this to the case of Apple Computer will be left as an exercise for the reader, and not a very difficult exercise.
On Disney, Apple/Microsoft, and mediated reality:
If I can risk a broad generalization, most of the people who go to Disney World have zero interest in absorbing new ideas from books. Which sounds snide, but listen: they have no qualms about being presented with ideas in other forms. Disney World is stuffed with environmental messages now, and the guides at Animal Kingdom can talk your ear off about biology.
If you followed those tourists home, you might find art, but it would be the sort of unsigned folk art that’s for sale in Disney World’s African- and Asian-themed stores. In general they only seem comfortable with media that have been ratified by great age, massive popular acceptance, or both.
In this world, artists are like the anonymous, illiterate stone carvers who built the great cathedrals of Europe and then faded away into unmarked graves in the churchyard. The cathedral as a whole is awesome and stirring in spite, and possibly because, of the fact that we have no idea who built it. When we walk through it we are communing not with individual stone carvers but with an entire culture.
Disney World works the same way. If you are an intellectual type, a reader or writer of books, the nicest thing you can say about this is that the execution is superb. But it’s easy to find the whole environment a little creepy, because something is missing: the translation of all its content into clear explicit written words, the attribution of the ideas to specific people. You can’t argue with it. It seems as if a hell of a lot might be being glossed over, as if Disney World might be putting one over on us, and possibly getting away with all kinds of buried assumptions and muddled thinking.
But this is precisely the same as what is lost in the transition from the command-line interface to the GUI.
Disney and Apple/Microsoft are in the same business: short-circuiting laborious, explicit verbal communication with expensively designed interfaces. Disney is a sort of user interface unto itself–and more than just graphical. Let’s call it a Sensorial Interface. It can be applied to anything in the world, real or imagined, albeit at staggering expense.
Why are we rejecting explicit word-based interfaces, and embracing graphical or sensorial ones–a trend that accounts for the success of both Microsoft and Disney?
Part of it is simply that the world is very complicated now–much more complicated than the hunter-gatherer world that our brains evolved to cope with–and we simply can’t handle all of the details. We have to delegate. We have no choice but to trust some nameless artist at Disney or programmer at Apple or Microsoft to make a few choices for us, close off some options, and give us a conveniently packaged executive summary.
But more importantly, it comes out of the fact that, during this century, intellectualism failed, and everyone knows it. In places like Russia and Germany, the common people agreed to loosen their grip on traditional folkways, mores, and religion, and let the intellectuals run with the ball, and they screwed everything up and turned the century into an abbatoir. Those wordy intellectuals used to be merely tedious; now they seem kind of dangerous as well.
We Americans are the only ones who didn’t get creamed at some point during all of this. We are free and prosperous because we have inherited political and values systems fabricated by a particular set of eighteenth-century intellectuals who happened to get it right. But we have lost touch with those intellectuals, and with anything like intellectualism, even to the point of not reading books any more, though we are literate. We seem much more comfortable with propagating those values to future generations nonverbally, through a process of being steeped in media.
On Linux, Writing Software, and Emacs:
The triad of editor, compiler, and linker, taken together, form the core of a software development system. Now, it is possible to spend a lot of money on shrink-wrapped development systems with lovely graphical user interfaces and various ergonomic enhancements. In some cases it might even be a good and reasonable way to spend money. But on this side of the road, as it were, the very best software is usually the free stuff. Editor, compiler and linker are to hackers what ponies, stirrups, and archery sets were to the Mongols. Hackers live in the saddle, and hack on their own tools even while they are using them to create new applications. It is quite inconceivable that superior hacking tools could have been created from a blank sheet of paper by product engineers. Even if they are the brightest engineers in the world they are simply outnumbered.
In the GNU/Linux world there are two major text editing programs: the minimalist vi (known in some implementations as elvis) and the maximalist emacs. I use emacs, which might be thought of as a thermonuclear word processor. It was created by Richard Stallman; enough said. It is written in Lisp, which is the only computer language that is beautiful. It is colossal, and yet it only edits straight ASCII text files, which is to say, no fonts, no boldface, no underlining. In other words, the engineer-hours that, in the case of Microsoft Word, were devoted to features like mail merge, and the ability to embed feature-length motion pictures in corporate memoranda, were, in the case of emacs, focused with maniacal intensity on the deceptively simple-seeming problem of editing text. If you are a professional writer–i.e., if someone else is getting paid to worry about how your words are formatted and printed–emacs outshines all other editing software in approximately the same way that the noonday sun does the stars. It is not just bigger and brighter; it simply makes everything else vanish. For page layout and printing you can use TeX: a vast corpus of typesetting lore written in C and also available on the Net for free.