Been working quite a lot on Project ThoughtStorms, the new Python / Bottle based wiki engine behind ThoughtStorms in the last few days.

I can’t believe that I’ve spent 15 years building a wiki without creating my own software.

That error is going to be rectified from now on.

Sure, most of what I’m doing is adding the kind of functionality that most wikis already have : RecentChanges, Search, Sister Sites etc. But it’s pretty quick to write. And as I bring these functions back, ThoughtStorms becomes more subtle and alive.

The truth is that ThoughtStorms’ content is woefully outdated. There are a tonne of broken links, and news stories that were current in 2005, but equivalent stories between about 2008 and 2016 are no-where.

It needs a jolly good clean up / clean out / refactoring. But I’m starting to have some ideas about how to write some more innovative custom code to help with that.

It’s very much work in progress. And there’s still plenty that’s half-baked and unfinished.

But I’m starting to feel that ThoughtStorms is coming back to life.

Posted in Me.

A quick update (for me, as much as anyone else) of where I’m at and what I’m currently thinking about … March 2017:

ClojureScript and Reagent

I want to get up to speed on this as my standard way of writing browser based software. React seems to have conquered the world as browser based, reactive framework. And with React Native it’s also come to mobiles. It seems that the ClojureScript / React Native story is becoming compelling too.

So, yes, this is mainly how I want to do GUIs moving forward. I’m doing some experiments. Expect, eventually, Patterning and some of my other projects to move to this.

WebAudio

A friend of mine has sold me on the idea of going back to audio in the web-browser. Which is obviously a great way to make little musical apps that are easy to share with people. He’s not so keen on ClojureScript but does like Javascript in a functional style with Redux and Immutable.js so we’ll probably be using them on a collaboration. I’m considering porting versions of Gbloink! and Zewp! to it. Along with more of my current Processing based “ArtToys” Library.

Lisps on Android

It may be that ClojureScript + ReactNative is the right way to go. But I’m also looking at Clojure on Android. And Racket on Android.

Reading online it seems that Clojure on Android has been improving, but is maybe not as efficient as ClojureScript with ReactNative. And, also obliges you to deal more directly with the Android Java frameworks. Maybe something that’s useful for larger, more framework intense, applications.

I was originally tempted by LambdaNative, a Scheme for Android app. development. But it now looks like Racket’s Android story has improved considerably and is quite similar. Especially sharing the focus on using OpenGL for visuals. Racket on Android basically compiles to C and uses the NDK, which might be a faff to get working, but might also be more efficient. One to have in the arsenal.

Also, of course, Racket on Android would let me keep a common Racket code-base for both the command-line and an Android version of Mind Traffic Control.

Rosette

I’m kind of intrigued by Rosette and the idea of “solver aided” programming. And being a Racket DSL is a bonus. I want to get my head around this, this year.

Music Languages

Last year. I did a lot on Sonic-Pi. This year I thought I’d go back and take another look at Overtone. Which is, in many ways, the predecessor of Sonic-Pi done as a Clojure library.

It’s not quite as simple as Sonic Pi with its integrated development environment but Clojure is
more powerful than Ruby.

While I still think that Faust looks cool. I’ve also been tempted by the lower-level simplicity of CSOUND … wondering if it might make sense to write a CSOUND generator in Clojure. I’m slightly pulled backwards and forwards on this question. Plus, Overtone provides its own synth-design functions.

Project ThoughtStorms

So, I haven’t trumpeted it here. But last year I moved away from the Smallest Federated Wiki for ThoughtStorms. See ThoughtStorms:LeavingTheSFW for the full story.

Here I’ll just note … I’m very happy with the decision, and I have lots of ideas for how to develop my currently very minimal wiki engine to do more of the things I want to do. In many ways, this is like the MTC reboot of last year.

Small Boards

I’ve become a bit of a collector of small hobbyist / maker boards, from Arduino to last year’s CHIP. I’ve just got a couple of BBC Micro:Bits which are great fun. These are a really smart and original idea in what’s becoming a crowded and competitive market. The computing power is pretty minimal. But what gives them an edge is that they’re packed with sensors. And come with their own primitive display.

I’m looking forward to playing with and giving these a good run for their money.

Interestingly they run MicroPython. Something I hadn’t really looked at before.

Python

All of which means, despite last year’s thinking, that I’m actually renewing my relationship with Python. I really thought I was deprecating it in favour of Javascript. This year, that seems fairly unlikely. Python just is nicer than Javascript in so many ways. It’s the back-end of my new wiki, which I’m planning to extend. It’s the language of the Microbit and potentially useful on other boards. It’s getting ported to the GoLang infrastructure and perhaps has a great future in front of it there. Meanwhile, even a tiny serverside JS program with node.js seems to install a million dependencies.

So Python is definitely here to stay in my near future.

QaSaC

A rather crazy art-project I dabbled with last year spawned an interesting toy / esolang : QaSaC. This is little experimental “concatenative” language like Forth and Joy cross-pollinated with a visual data-flow language like Pure Data.

I think there’s some potential here. And I’ve really enjoyed the concatenative / stack-based thinking and elegance of this kind of programming. So I am working (albeit slowly and interspersed with everything else) on getting an actual viable version of this out soon.

OK. I think that’s a pretty comprehensive list of my obsessions for 2017. Let’s see how much progress I make with them all. This year, I promise, I’ll be trying to release, and blog, more often about them.

Posted in Me.

A burst of development energy in a number of directions recently.

And things are starting to self-organize towards the new ecosystem.

Today’s exciting news : OWL makes a very nice desktop app, thanks to Electron.

Here’s the github repo.

I’ll be doing more testing, compiling, packaging this shortly. So that even non-geeks can play with it. But it seems to work fine.

To be honest, the few times I’ve installed OWL on non-geek friends’ machines, the “run a server and look at OWL in the browser” part has confused / put people off. Now things are VERY much simpler.

This is also going to give me some momentum to add a couple of extra features / ideas I’ve been thinking about over the last couple of years.

In the short term … this desktop repo is likely to be where I develop the next round of functionality. Though I’ll be porting these new features back to the Android and web-based versions.

Main issues in my mind at the moment : I’ve dropped the Python based server for this. We’re now purely Coffee / Javascript. That feels cleaner and more convenient. Will I now try do the same for the web version. It makes sense. But straight node? Express? Meteor?

What’s simplest and leads to least repetition of code?

Posted in Uncategorised.

While on the subject of Project ThoughtStorms, I realized that the tools Quick Paste and Compare were broken.

These are now working again. Quick Paste lets you quickly paste a a bunch of paragraphs of text and get back an SFW formatted file that can be dropped directly into your pages directory in an SFW wiki,

Point Compare at two different SFW installations, and give it a page-name and it will show you a json diff of their underlying files.

Both are rough and ready, but can be useful.

Posted in Uncategorised.

I’m updating my copy of the Smallest Federated Wiki, and the plugin format has evolved again. (Not surprising, the SFW is still in its experimental stage.)

So, I’ve broken out my plugin for ThoughtStorms / SdiDesk format (wikish) from the original Project ThoughtStorms and made a dedicated git repository in the recommended format, naming convention etc.

The plugin is also now available as a node npm package on npmjs for easy installation.

Last year I wrote about how impressed I was by Clojars, the Clojure package repository. Seems like this might actually be the standard way things are done these days. Because npm seems equally straightforward.

The latest instructions for installing extra plugins to your copy of the SFW seem to be here.

Posted in Uncategorised.

Oh wow!

This is MONUMENTAL!

Ward Cunningham is migrating the original wiki, the Portland Pattern Repository, to the Smallest Federated Wiki.

And it seems they’re doing it by making a front-end that queries the original wiki page database and shows it through the SFW. (That’s exactly what I did with ThoughtStorms before I actually migrated the pages over.)

Here’s the
Welcome Visitors.

It obviously raises big questions. Wiki was all about participation and everyone accessing the same pages. SFW turns that around and makes everyone an owner of their own fork. A shift from a commons to “private property” model. Yes, there are many good reasons for it (bot damage made me close ThoughtStorms to the public which smoothed the way to shifting to the SFW model). But it’s still kind of shocking to think of this happening to the original wiki.

Posted in Uncategorised.

I’m starting to add a new feature to OWL.

“System Services” are pages created by the OWL Server itself, that contain useful, dynamically generated information. You access them the same way as any other page : either make a link and click on it, or type the page name directly into the OWL navbar and click Go!

All system service names begin with a pair of exclamation marks (!!), eg. !!Status invokes the Status system service.

sysserve

The basic infrastructure is in the latest version of OWL on github (though the services themselves aren’t particularly interesting yet). It will be arriving in OWLdroid soon.

Posted in Uncategorised.

How is OWL looking these days? Here are a couple of screenshots :

OWLdroid

OWLdroid Feb 2014
OWLdroid Feb 2014
Note that I’ve moved the navbar of OWL into the space which Bootstrap usually uses for the main menu. This is a big win in terms of space, and the fact that it’s now always visible, even when scrolling down long pages. I’m not sure, yet, how this will work on smaller / phone-sized screens.

OWL on Laptop (Firefox on Linux)

OWL screenshot (Firefox on Linux)
OWL screenshot (Firefox on Linux)
Posted in Uncategorised.

Having split the Ruby and node.js versions of the Smallest Federated Wiki, seems like authors are now moving to further refactoring.

Seems like the client code, and maybe some plugins, are getting separated to further projects.

Posted in Uncategorised.