SdiDesk VB.NET on GitHub

At one point I had SdiDesk converted to VB.NET because VB Classic was clearly deprecated and maybe VB.NET was the future.
In the event I never really liked this idea or immersed myself in VB.NET. But the code was sitting around on Google Code hosting.
Now Google Code is shutting down, I did the automatic export to GitHub. So it’s there if anyone’s interested.
Unless someone turns up with a lot of energy and enthusiasm (or cash ๐Ÿ™‚ ) for taking this further I don’t plan to do anything with it. But the beauty of open-source is that it’s there, on GitHub, so someone might.

Questions for 2014 : #2 Project ThoughtStorms

Second in a series of questions occupying my mind at the beginning of 2014. Which may (or may not) inform what I’ll be working on.
2) What About Project ThoughtStorms?
Unlike the first question in the series, this one is relatively light.
It’s obvious that OWL is the new SdiDesk. And where my private personal organizer / wiki-notebook etc. work should now be focussed. It’s equally obvious that it’s not, in itself, a publication medium. Smallest Federated Wiki is still looking good for that. SFW also has some great features : federation being one. The embedded media types being another. It’s actively improving. And looks like it’s become the “official” wiki in the node.js library. ThoughtStorms isn’t moving off SFW in the foreseeable future.
So Project ThoughtStorms is still, largely, about tools that support SFW. At the same time, this dichotomy between one tool for writing and one tool for presenting is a little bit … disconcerting. It’s natural in the outlining world, of course, a separation between outliner as authoring tool and blog / slide-show / book as rendering. But in the wiki world, where writing / editing / reading are all blurred together in a kind of closed loop, it feels wrong.
Nevertheless, there’s little real question there. In 2014 OWL is my writing tool. SFW is my public thinking space. The open question is about what bridges to build between the worlds.
Should OWL export complete SFW pages? (Easyish, I think). Should it import them? (To be consistent with my promise not to abandon SdiDesk users?) Should I try to get it to speak the federation protocol of SFW? Where should I be capturing quick notes and draft thoughts that aren’t (yet) ready for publication?
No great soul-searching here. But a bit of quizzical head-scratching required.
(Next question coming soon.)

Personal Question

Question : Hey Phil, do you actually do any programming these days?

Answer : Yes. Quite a lot at the moment. Though it’s a bit all over the shop.

I’m dipping a toe into Android programming. (And, hmmm … Java …. I thought I’d got over my Java hangups by doing a lot of Processing, but it turns out that Processing just hides the crap and Android doesn’t. Why hasn’t Google picked up on Processing to turn it into a first-class Android art / game app. development environment?)

I’m mainly writing CoffeeScript. Some stuff related to my ongoing 3D modelling / desktop manufacturing projects. (Did I forget to mention those? I’m sure there’s a half-written blogpost somewhere.) Some work towards an SdiDesk-derived network diagramming plugin for Smallest Federated Wiki (held up by silly problems). Some other bits and pieces. I’ve recently been playing with Jison, which rocks. And I’m about to investigate angular.js which looks pretty good.

There’s a project for small stand-alone web-servers that I’ll talk about more if / when it takes off.

I’ve been trying to compile example VST instruments ย (C++) for some of my work with the Brasilia Laptop Orchestra, but it’s driving me crazy. (I may go back to Pure Data which can be embedded in a VST.)

A bit of PHP, just simple small web-services.

I’m going to be teaching an Arduino course soon. So I’ll be writing a bit of C and I want to try Occam-โฒ .

I’m still writing Python too. Mainly for short file transformation scripts or to prototype algorithms that later get translated into CoffeeScript.

Some of this stuff is headed for GitHub soon.

Quick SFW Generator

Smart Disorganized Individual philosophy is about doing things piecemeal; engaging in small opportunistic actions as and when the inspiration strikes. Today was just such a quick burst with the Smallest Federated Wiki.

I love SFW a lot, but it’s a bit of a pain to bring a page or large chunk of writing from elsewhere into it. Adding one paragraph at a time is a nuisance.

So here’s a quick tool to create an SFW page from an arbitrary large, multi-paragraph chunk of text. Just paste your text into the box, add a title and choose whether you want ordinary paragraphs (of the kind that most SFW installations use) or whether you want “wikish” (the UseMod derived format which is somewhat compatible with UseMod / SdiDesk markup). Hit the submit button, and it will deliver a json file suitable for dropping into the pages directory of your SFW installation.

Update : the source-code for this is part of Project ThoughtStorms on GitHub.ย  (Note: I may have broken other import scripts in the refactoring to make this import script work. Please log an issue if you find this.)

Project ThoughtStorms Goes Live

ThoughtStorms has been ported across to the Smallest Federated Wiki.

Of course, there are plenty of failures, missing pages, bits of markup that aren’t handled correctly etc. But this is wiki, right? It’s never perfect. It’s always living and dying and composting. The problems will get flushed out, or worked-around, or become charming ruins over time.
That doesn’t mean Project ThoughtStorms is over. It’s barely even got started. There are more wikis to port. There’s an SdiDesk converter to write. There’s plenty of gardening that I am committing to doing.
And then there’s the really exciting stuff … ๐Ÿ˜‰

Project ThoughtStorms

As mentioned previously, I’ve been looking into Ward Cunningham’s “Smallest Federated Wiki” concept. And I’m increasingly impressed.

So much so, that I’ve re-oriented a lot of my projects around it.

What do I mean? A decent follow-up to SdiDesk has been promised for an embarrassingly long time. Over the years I’ve struggled with exactly what it should be and how it should be implemented. Largely whether it should be a desktop application or something you access via the browser. The browser has always been the logical answer but, until recently, the network diagramming aspect of SdiDesk was not really an option in mainstream browsers. OTOH, desktop GUIs open a can of worms. Which OS? Which GUI framework? How do I write installers and distribute? (And, frankly, what is my, as a non-Mac owner / developer, attitude towards the iPad?)

In 2012 though, HTML5 and CoffeeScript have become extremely plausible options for the client. And the server can become a simple wrapper around a basic PageStore. That’s an architecture I’ve been meaning to get down to write. But it’s the architecture that already exists for the SFW.

So, great! By hooking onto that project, I get my basic server / PageStore / client architecture free.

Furthermore it’s extensible via plugins. So I can embed special types of paragraph data and special renderers. That’s exactly what I wanted to do with the new SdiDesk – instead of having *pages* that were network diagrams or grids, have these as individual components of pages. This is perfect. I can concentrate on what interests me – the special plugin types – and Ward’s team can do the infrastructure. ๐Ÿ™‚

Not to mention, Ward and co. are doing amazing plugin wizardry already : hooking data-feeds from Arduinos, graphing it, bytebeats, calculators. It already has a lot of what looked nice about QEDWiki.

The multi-panel view surprised me initially, but it’s really useful for refactoring. And that’s going to help me considerably with wiki-composting.

Finally, the “federated” part of the Simplest Federated Wiki is the answer to a bunch of problems I didn’t even know I had. Or, at least, didn’t conceptualise well. How do I have a private wiki (like a local SdiDesk, where I like to draft things before they go public) AND a public wiki (like ThoughtStorms) and make it easy to move newly public stuff from one to the other? How do I balance the desire to have special project focused wikis (like the OPTIMAES one) with wanting to refer to that stuff from the main wiki? How do I balance contributing to my own wiki and contributing to other communities’ wikis?

So, I’m sold. As Dave Winer likes to say, it’s the second mover who makes the standard. And that’s what I want to help with. There’s enough overlap between the SFW and the things I’ve been wanting to do over the last few years that it makes sense for me to implement my ideas as plugins for the SFW, to port my wikis over to to it and to go around shouting about how wonderful it is. Because, actually, it is pretty damned wonderful.

So, Project ThoughtStormsย is where I’m putting the code: so far, converters from the ThoughtStorms UseMod and the SdiDesk formatted pages, and plugins to render the markup. I’ll be porting ThoughtStorms over to a SFW server soon. Then I’ll be doing some serious refactoring and cleaning up the actual writing. Trashing a lot of the ephemeral junk and dead-links. TS has become a bit of a museum, which it shouldn’t be. It should be a living, learning, and forgetting thing.

After that, I’ll be sitting down to do some of the other things I’ve wanted to do in a wiki context but not had the platform to do justice to. ย Now I think I have one.

Not making as much progress on SdiDesk.NET as I thought I would. How can Visual Studio 2008 be soooo S-L-O-W? I swear it takes between 30 seconds and minute both to start and stop(!!!) my program executing.

At least with punched cards you knew where you were.

Quick answer to the guy who used yesterday’s Form Experiment to ask what’s happening with SdiDesk …

Here’s the status report :

1) In the last couple of weeks I quit my job and moved back to the UK … which has been taking up quite a lot of my time and energy.

2) Once we’ve settled in, I hope I can get some time to focus on my projects … including SdiDesk (and GeekWeaver, MTC etc.) The good thing, no more distractions from my previous demanding day-job. The bad thing, after a brief holiday I need to find work in the UK. (Offers, tips and suggestions are, of course, welcome)

3) SdiDesk was converted to VB.NET this year. And the source-code in progress is available on Google Code.

4) I am NOT a VB.NET programmer, and frankly, from the little I’ve played with it so far, I’m not very excited about getting more involved. I admired VB exactly because the combined language + IDE made Windows programming mindlessly easy. Throw away that virtue (as VB.NET seems to have done, and I’m blaming the new, incredibly sluggish and cluttered VS2008 as much as changes to the language) and it has little to recommend it against other languages.

5) On the hand, I’m a pragmatist and often able to find something interesting pretty much anywhere. I also know that in a recession I may not be able to be too fussy when it comes to getting a job. So I will be spending a bit more time over the next month or so tidying up the VB.NET codebase, fixing some egregious issues, and making an installer. It’s going to be useful to me to be able to say that I can operate in the VB.NET world, and produce working products.

6) Longer term, my preference and commitment is still to a Python SdiDesk-like thing. And most-likely a Python server with UI in the browser (javascript etc.) I’ve cooled towards the idea of Flex (mainly because my trial copy expired and I remembered all the problems of depending on proprietory software)

The attraction of anything other than the browser has always been the vector drawing in the network diagramming part of the software. But I’m sure that if I just wait a little bit longer, the browser will eventually be able to handle this too.

7) As always, I’m not unaffected by user feedback and other things going on in my life ๐Ÿ™‚ … if there’s suddenly a surge in interest or demand for a VB.NET SdiDesk then I may reconsider.

8) Joe Question asks : “how risky is it to commit myself to SdiDesk.NET then? What about all my pages?” Answer : SdiDesk.NET reads your existing PageStore files. There may be some issues with the size of the diagrams, but everything works. If it doesn’t, tell me.

However, you can’t even try SdiDesk.NET currently unless you’re a VB programmer because it’s only available in source form. There will certainly be a build for end-users this year and it will read your existing PageStore. The main reason you want this is if you’re an existing SdiDesk user who has moved (or will move soon) to Vista where the old VB6 version won’t run.

I’m always committed to upgrade compatibility. You’ll be able to move your existing SdiDesk pages to SdiDesk.NET, and you’ll be able to import them into a future Python version.