Sunday, September 30, 2012
Command Line In Web Apps
O'Reilly Early Release
I didn't know about the O'Reilly Early Release program. Basically, it seems you can buy a book as it's still being written, and give feedback while receiving updates and rewrites.
Nice idea. I'm tempted to buy some of these.
Nice idea. I'm tempted to buy some of these.
Saturday, September 29, 2012
Programming With A Mind Map
Using a MindMap to store documentation.
Actually it sounds like Freemind is much like an outliner, in that you can drive it with the keyboard and collapse / expand etc.
I wonder how using this compares to LEO.
(Hat-tip Other Michael)
Actually it sounds like Freemind is much like an outliner, in that you can drive it with the keyboard and collapse / expand etc.
I wonder how using this compares to LEO.
(Hat-tip Other Michael)
Marcadores:
augmented programming,
mind mapping,
outliner,
outlines
Friday, September 14, 2012
JSON / RSS
Dave Winer is considering an official(?) JSON flavour of RSS.
I just want to say here that I like RSS, for what it is, and what it does, and I like JSON to actually work with, because parsing XML is still a faff. So it gets my vote.
I just want to say here that I like RSS, for what it is, and what it does, and I like JSON to actually work with, because parsing XML is still a faff. So it gets my vote.
Tuesday, August 14, 2012
Smart Notebooks
An intriguing Kickstarter project.
Seems that Smallest Federated Wiki would be a good starting point for this.
Seems that Smallest Federated Wiki would be a good starting point for this.
Tuesday, August 07, 2012
Planet Building
As I mentioned in my previous post, I'm rather taken with Planet Planet, the old-skool Python based RSS aggregator that outputs flat HTML.
I used it to build my wonderful Future Manufacturing river. And I want to use it for more things. So I've created a small script to make installing Planet ultra-easy on a linux server.
Four steps and you're rolling :
# clone it
git clone https://github.com/interstar/PlanetBuilder.git planets
# make the planet
cd planets
./planets.sh MYPLANET
# add feeds
emacs MYPLANET/fancy/config.ini
# defaults have been set-up, just change and add the feed URLs and names at the bottom of the config.ini file and set your name and contact details (earlier in the file)
# edit the crontab
crontab -e
# and add the following line or suitable variant.
53 * * * * /PATH/planets/MYPLANET/refresh.sh
# note that the line with the correct value of PATH will have been given to you when you ran the create script
Your automatically generated aggregate will start being available at MYPLANET/index.html
I used it to build my wonderful Future Manufacturing river. And I want to use it for more things. So I've created a small script to make installing Planet ultra-easy on a linux server.
Four steps and you're rolling :
# clone it
git clone https://github.com/interstar/PlanetBuilder.git planets
# make the planet
cd planets
./planets.sh MYPLANET
# add feeds
emacs MYPLANET/fancy/config.ini
# defaults have been set-up, just change and add the feed URLs and names at the bottom of the config.ini file and set your name and contact details (earlier in the file)
# edit the crontab
crontab -e
# and add the following line or suitable variant.
53 * * * * /PATH/planets/MYPLANET/refresh.sh
# note that the line with the correct value of PATH will have been given to you when you ran the create script
Your automatically generated aggregate will start being available at MYPLANET/index.html
Marcadores:
feeds,
future manufacturing,
planetbuilder
Monday, August 06, 2012
Walled River
Apple join the war against RSS.
We need to defend the principle of a platform independent / open feed of news items from all the companies like Facebook, Twitter, Google and Apple who have seen the future as feeds insided their own proprietory walled "gardens".
Not sure if a garden is the right metaphor for a feed routing system, maybe "walled river"?
Something like this? :-(
Hat-tip Scribe.
Open rivers of news are wonderful things. Recently I've started using the venerable Planet feed agregator to make some public planets (rivers) such as this mind-boggling "Future Manufacturing" one. Glance at that and see exactly how awesome open RSS is. And how it can be way more compelling than the constrained Twitter or your riddiculously cramped Facebook wall. Look at a torrent of exciting information that can actually "breath", where text can be as long as it needs and where pictures are wide-screen rather than crammed into a cage designed to make you look at adverts.
We need to defend the principle of a platform independent / open feed of news items from all the companies like Facebook, Twitter, Google and Apple who have seen the future as feeds insided their own proprietory walled "gardens".
Not sure if a garden is the right metaphor for a feed routing system, maybe "walled river"?
Something like this? :-(
Hat-tip Scribe.
Open rivers of news are wonderful things. Recently I've started using the venerable Planet feed agregator to make some public planets (rivers) such as this mind-boggling "Future Manufacturing" one. Glance at that and see exactly how awesome open RSS is. And how it can be way more compelling than the constrained Twitter or your riddiculously cramped Facebook wall. Look at a torrent of exciting information that can actually "breath", where text can be as long as it needs and where pictures are wide-screen rather than crammed into a cage designed to make you look at adverts.
Marcadores:
feeds,
future manufacturing,
rss,
walled river
Saturday, July 21, 2012
World Outline Screencast
Nice screencast from Dave Winer showing where the World Outliner (the successor to the OPML Editor) is at.
Reminds me of GeekWeaver of course, though obviously slicker (and more specialised).
Reminds me of GeekWeaver of course, though obviously slicker (and more specialised).
Friday, July 13, 2012
Artistic Filofax
Some links on ThoughtStorms
Marcadores:
art,
arts and crafts,
filofax,
thoughtstorms
Friday, June 29, 2012
Mentoring In The Large
Dave Winer has a great aspiration for programmers to engage with long-projects that involve a teaching role.
Wednesday, June 27, 2012
Command 'n' Cursor
I've been travelling with my trusty (but ageing) eeepc netbook this last week. There's much to love about it but it's starting to feel slow in comparison with my other machine.
Increasingly when I use the netbook I try to get away with doing things in a ctrl-alt-f1 shell without logging in to the GUI at all. I'm starting to wish more software could be used in this environment so I began to look at Curses, the standard library for text-window UIs. There's a convenient Python wrapper of course. And there's another nice library in Python : Cmd, for creating a command-line driven apps. That is, not programs that literally run as small tools on the shell with command-line arguments, but programs which have their own internal "repl" style loop which you drive by typing in commands. Cmd handily hides the details from you, letting you declare a subclass of the Cmd class which simply defines handlers for specific commands. It's not a million miles away from something I ended up writing to handle the commands in SdiDesk.
For some of my projects it would be useful to combine the two modes : to have Cmd style input driving a 2D textual output using Curses. Unfortunately Cmd and Curses don't obviously play well together. Both of them want to take over the input, with Curses thinking in terms of keystrokes while Cmd still expects full lines.
Nevertheless, after a bit of exploration, and learning about Curses's textpads and Cmd's supplementary methods, I'm starting to get the two to co-operate. As this gist shows :
It doesn't do anything yet. Just handles a "greet NAME" command that prints "hello NAME". And a "quit" command that exits the program. But it has combined Cmd inputs with Curses output.
Increasingly when I use the netbook I try to get away with doing things in a ctrl-alt-f1 shell without logging in to the GUI at all. I'm starting to wish more software could be used in this environment so I began to look at Curses, the standard library for text-window UIs. There's a convenient Python wrapper of course. And there's another nice library in Python : Cmd, for creating a command-line driven apps. That is, not programs that literally run as small tools on the shell with command-line arguments, but programs which have their own internal "repl" style loop which you drive by typing in commands. Cmd handily hides the details from you, letting you declare a subclass of the Cmd class which simply defines handlers for specific commands. It's not a million miles away from something I ended up writing to handle the commands in SdiDesk.
For some of my projects it would be useful to combine the two modes : to have Cmd style input driving a 2D textual output using Curses. Unfortunately Cmd and Curses don't obviously play well together. Both of them want to take over the input, with Curses thinking in terms of keystrokes while Cmd still expects full lines.
Nevertheless, after a bit of exploration, and learning about Curses's textpads and Cmd's supplementary methods, I'm starting to get the two to co-operate. As this gist shows :
It doesn't do anything yet. Just handles a "greet NAME" command that prints "hello NAME". And a "quit" command that exits the program. But it has combined Cmd inputs with Curses output.
Sunday, June 10, 2012
Show Your RSS
Dave Winer reminds us to help people find our RSS feeds, as it seems that browser-makers are increasingly trying to obscure them from us.[1].
My approach is non-standard, but hopefully conveys the message :-)
[1] Rather like Steve Jobs trying to hide the file-system, some people love to take away anything that it might actually empower you to learn about.
Iterative, Test-Driven Development
My Quora answer :
Iterative, "test driven", development.
Break your idea down into a number of simple "stories", each of which describes a single chunk of activity which goes all the way through from the beginning to the end of a user's experience with the software. Importantly a story is not a traditional "component" ... but represents a complete, working but minimal slice through the functionality.
For example, a story could be "the user goes to our site at a URL and sees a page describing our idea" or, for a drawing program, "the user can create and save a jpg file" (even though that jpg file is just a blank canvas).
Once you have some stories, order them by importance. If you could only get one story working, what would be the most valuable? If you could only get two stories, which would those be?
Start on the most important story. As any particular story shouldn't be too complicated, you can probably figure out fairly intuitively the components you need in order to make it happen. (If you can't, you're trying to fit too much into a single story.) Those components might be functions, they might be objects which have several methods (if so, ONLY worry about the methods of the object which satisfy the current story, ignore any others), they might be HTML forms or templates.
Now write AUTOMATED TESTS for the components you need for this story. Unit tests for the functions and objects. Ideally something like Selenium for the web forms.
Write code to pass the tests in a test-driven style ... ie. write test, write code to pass test, refactor your code to eliminate redundancy, write next test etc. When one story is finished, start figuring out how to do the next most important and work on that.
Somewhere down your list of stories you have your minimum viable product: that is, the minimal thing which is worth releasing to your customers in order for them to give you feedback on whether this is useful to them. That is not necessarily just one story, it might be after the first three. Or the first ten. Whatever it is, once you hit it, release your product to the customers and start getting their reaction.
From now on you are in maintenance / iterative growth mode. You'll be taking the feedback from the customer to rewrite and reorder the stories. While continuing to implement them according to your best, most up-to-date, sense of priorities. You'll want to release new development to the customer as fast as reasonably possible so you can collect the feedback on your improvements too.
Don't assume that one story has to equal one release, because you'll be tempted to inflate your individual story to contain more than it should. But try to keep releases down to as few stories as possible so they can happen frequently : which maximizes both your information, and the customer's sense of progress.
Saturday, May 26, 2012
Ward Cunningham Interview
Another good Ward Cunningham interview
The job was really to take C++, which was a fairly static language, and show people how to write dynamic programs in a static language. That's what most of the patterns in that book were about. And in the process, patterns extended the life of C++ by a decade, which is not what I thought would happen. What I thought would happen is people, when they learned these patterns, would look at them and say, "Wow, these patterns are hard in C++ and they're easy in Smalltalk. So if I want to think in terms of these patterns, I might as well use a language where they're easily expressed." And extend the life of Smalltalk by a decade. But the opposite happened.I always suspected that the patterns everyone got so excited about were basically a way of overcoming static typing. Ward confirms it :-)
Marcadores:
c++,
smalltalk,
test-driven development,
ward cunningham,
wik
Friday, May 25, 2012
System Modeller
Wolfram Research present "System Modeller".
I've always been interested in this kind of software, so I need to check this out.
I've always been interested in this kind of software, so I need to check this out.
Wednesday, May 23, 2012
Tuesday, May 22, 2012
Wiki Renaissance
I believe we're in a wiki renaissance. The Smallest Federated Wiki signals a new era of wiki, slick enough for the age of HTML5, mobile devices and the "internet of things".
So here's a quick manifesto (in progress) that I'm writing about what's at stake in the new era, how it's the same as and different from the previous one.
So here's a quick manifesto (in progress) that I'm writing about what's at stake in the new era, how it's the same as and different from the previous one.
Marcadores:
smallest federated wiki,
thoughtstorms,
wiki
Friday, May 11, 2012
Meteor
Just looking at the quickstart demo of Meteor, the hot new web framework people seem to be getting excited about.
First thought. Seems to me that far more important than using the same language for the client and server is being able to write the client and server code in the same file.
That is something I've been waiting for for a long time.
First thought. Seems to me that far more important than using the same language for the client and server is being able to write the client and server code in the same file.
That is something I've been waiting for for a long time.
Marcadores:
javascript,
meteor,
node.js,
web frameworks
Thursday, May 10, 2012
LightTable
Interesting this new surge of dynamic IDEs. First there was Brett Victor's awesome demo. Now there's LightTable (promoted on KickStarter, discussed on Quora)
Sporadic thoughts.
Is this implemented in the browser? (Bespin? CodeMirror)? Perhaps we're seeing this explosion of innovation as IDE authors move to the cloud.
A Kickstarter project? That's cool. But motivated by early investors getting licenses? Does it also mean that this next wave of software innovation will be abandoning Open Source as a model?
Elements of Jonathan Edwards's Subtext in the tree of updates. Of course, he's paying attention.
Sporadic thoughts.
Is this implemented in the browser? (Bespin? CodeMirror)? Perhaps we're seeing this explosion of innovation as IDE authors move to the cloud.
A Kickstarter project? That's cool. But motivated by early investors getting licenses? Does it also mean that this next wave of software innovation will be abandoning Open Source as a model?
Elements of Jonathan Edwards's Subtext in the tree of updates. Of course, he's paying attention.
Marcadores:
bespin,
browser,
codemirror,
ide,
jonathan edwards,
lighttable,
subtext,
worrydream
Subscribe to:
Posts (Atom)


