Sunday, October 14, 2012

Exotic data structures and concatenative languages

This is cool!  This is a page about some exotic data structures (useful in specific algorithmic situations), which is already pretty neat.  But it's on a Wiki - a very fast Wiki - about "concatenative" languages, by which they mean Forth and Forth-like languages, and that Wiki itself is written in Factor, a concatenative language.

Update: Reddit responds with actually exotic data structures at MIT.  Ha.

Friday, October 12, 2012

The problem with taking classes

It certainly feels as though the classes I started (and still didn't manage to finish) drained the creative impulse from my other work - as though they took the spare clock cycles in my head and used them all up, leaving nothing left over but classes and paying work.

Citrus Perl

I think this isn't actually new, but Citrus Perl is a thing: a distribution of Perl specifically designed to support Wx - and to repackage itself as your standalone application.  This is a gamechanger.

If I were to finish (or quasi-finish) Wx::Declarative, then repackage a Citrus-like distribution as Decl, I could really have something pretty powerful, right out of the box.

That deserves thought. (Note: Mark Dootson's blog is here.)

XML fever

A tongue-in-cheek guided tour of a few misconceptions people have about XML and how they're solved by mechanisms in the XML ecosystem.  Very interesting stuff!

SmallVCM

A small renderer for 3D scenes using a variety of different algorithms.

Sphinx documentation tool

So Sphinx is a tool used to write nice documentation for software.  It's based on DocUtils, which I'd already heard of, but apparently does a lot more; I need to read more about it but I do have to admit it looks very nice indeed.

I came to it through a blog post by Brandon Rhodes with a useful technique: if you're generating documentation from text files that won't be read by the end user, then break lines at major phrases and periods.  This permits you to revise your text while allowing the VCS to see where the changes really are (that is, you don't need to rearrange your text to reflect margins).

Declarative dataflow coding in the wild!

Wow!  The folks at Prismatic, who use Clojure to build newsfeed aggregators to spec, have developed a declarative dataflow graphing structure to describe their workflows - it's fab!

This is definitely going into Decl! I can't tell you how this resonates with what I am trying to approach.

Game of Life: modern variants

While I wasn't paying attention, interesting things have been going on in the Game of Life.  First: a video of a floating-point version of Life that looks a lot more organic, fascinatingly. [code] [paper]  Tim Hutton made the video in Ready, a cellular automata exploration platform.  Neat!

Then, as HNN posts often do, this induced somebody else to post this freaky-deaky Life emulated in Life video.  This one uses Golly in its low-level Life grid - a Life platform that has scripting to build really refined structures.  People get really focused on this!

For a library of some of the well-known patterns, here's a pretty cool library site.

It's beautiful.

Thursday, October 11, 2012

One-man programming shops

Here's an interesting blog post bemoaning the fact that one guy can't really expect to have a service that is as refined as something a whole team has hammered out.  His example is notifications - people expect a notification workflow that is as perfectly refined as Facebook, and it's too jarring if something doesn't work quite perfectly, whether that's because it took too long to notify, or there was a notification flood when twenty people opened your link, or .. whatever.

I'm not sure I buy this.  I mean, sure, it's true that a good team can work out something to perfection.  But a good team can also come out with iOS 6 maps - having more people on something is no guarantee of success.

And Facebook has a billion users - you can survive fine on five hundred.  They're offering what they offer - but you're offering something new, or something niche, and your users know you're not Facebook.  They really won't mind the occasional rough edge.  Those that do are callow wastes of your time - who leaves a good service because the logo was three pixels too wide?  Nobody.  Seriously.

But, all that said, this is why Best Practices and architectural patterns exist.  For something as universal as notifications, there should be some reference standard workflow, and ways to talk about it.  Every now and again you see a really nice survey article about best practices in, say, password reminders or order workflow - this is the kind of thing I'd like to see more of.

Skype IM worm

I got a Skype IM from a friend the other day that turned out to be a worm malware vector.  The cool thing was that the IM was in Hungarian (the friend is also Hungarian).  Impressive social engineering indeed!  Here's a CNET article on it.

Wednesday, October 10, 2012

Word link dump

So I got the Word template engine working in a rather simple form.  It can handle exactly one set of tabular information, and text in the columns is handled the way I want to handle it (each repeated field can appear in a column with other text in the first row, and subsequent repetitions of those fields will appear alone in cells inserted below the original appearance of the field).  It's a far cry from a really mature template engine, but it does what I need it to do right now, which is pretty slick.

During all that, I collected some Word automation links - mostly forum posts by people asking for help.  But I don't want to lose them. There's a great deal of Word expertise out there and I want to understand it better.

Anyway, full documentation of the Word API is ... well, there's a whole lot of functionality in Word.  I almost think the documentation/configuration of an API structure should come in modules or something, like "core text manipulation", then add reviewing and left-to-right text if you need them.  I don't know.  It's complicated - but worth doing.

Sentiment analysis

Cute and brief blog post on presidential sentiment analysis.

Openera

Automatically save, organize, and back up files and email attachments.

Divshot

Ought to clone this. Divshot is a UI webapp based on Boostrap, with some kind of WYSIWIG interface.

Monday, October 8, 2012

Down the Word rabbit hole

I knew there was a reason I hadn't done this Word wrapper thing.  Word is freaking huge.  Did you know that Word's "formula" mechanism includes an entire dataflow computation engine?

The sheer vastness of Word's scope is humbling.  Actually setting it forth in a coherent form?  That's a daunting task indeed.

Sunday, October 7, 2012

PLEAC cross-language sample code site

Interesting effort - another Rosetta-Stone kind of programming language site taking all the example code from the Perl Cookbook (vintage 2001) and asking people to submit the equivalent in their language of choice.

This is another source of something along the lines of "transaction patterns", that is, higher-level "things to do" that are implemented in lower-level code.  A semantically oriented declarative language needs to be able to talk at that level.  Maybe instead of "transaction patterns" they should be called "action patterns" or something.  They're at a far lower level than architectural patterns.

Saturday, October 6, 2012

jQuery intermediate tips

jQuery is a pretty advanced environment.

Light Table

And then there's Light Table (of Kickstarter fame).  He also references CodeBubbles, which piqued my interest last year (but which never actually went anywhere).

Factorization diagrams in Haskell

Here's an excellent post about factorization diagrams (arranging dots to represent the prime factorization of a number), implemented in Haskell.  It seems like this would be a great example for a mapping application.

Brackets code editor

Slick!  Written in HTML/CSS/JavaScript with a thin native wrapper, and has some pretty interesting features, like active file sets independent of the directory structure and inline editors for related code sections between files.  Very neat.