Saturday, July 30, 2011

Research workflow

OK, so I don't nearly have time to write about this post in anything like the detail it deserves, but: he's a CS prof now, he's defined a pretty snazzy-looking approach to organizing research activities, it looks a whole lot like Hofstadter's model of mind, and I want to think a whole lot more about it.

So I'm posting it here, on the off chance I'll run across it again in a few months when I have some free moments. I don't even have time to read it all right now. Argh!

Also, from the same blog, the post that hit HNN: [here]. A good post, but not the one I'm most interested in.

Pump > Picasso

Pump > Picasso > blog example - a Pythonic Web framework that looks really nice and minimalistic. And the blog example is more or less a kata.

Machine learning tool list

Here's a tasty list of tools to investigate next time I have leisure to think about machine learning.

Article: The HTML5 Boom is Coming. Fast.

Well, this is good news: the desktop browser and mobile worlds are converging on HTML5 as their graphics platform of choice. Bye, Flash.

Time to whet those tools.

Target domain: testing

Unit tests. Something. Testing is probably related to workflow. Yes, I know this is overly terse.

Article: the Pain of JSON API Testing

A weird little article about Ruby JSON API testing and why it's difficult with Cucumber, which is a testing system in Ruby. Might I say: this Cucumber makes me see why Ruby.

FreeForm

A new programming language? Sorta kinda what I'm doing lately? FreeForm. [hnn]

Steve Yegge: the Universal Design Pattern

I think I need to reread this just to summarize it, but he starts from Doug Hoftstadter and goes to prototype-based programming, I think, is a reasonable one-sentence overview.

Miscellaneous software-component stuff

Link-dump time. These are pretty much all notes on software components. (Note to self: define somewhere that what I call software components don't seem to be the same thing as everybody else's software components. - Really these are slot fillers for particular roles in a system design or something.)
  • WSGI in Python: The Pluggable Pipe Dream. [article]
  • LevelDB, Google's key-value store, is now open source. [site]
  • Using MySQL as NoSQL. (The circle is complete.) [article]
  • Redesigning the Netflix API. [slideshow article] (the Programmable Web)
That's that.

Target domain: Windows 7 gadgets

A StackOverflow overview. tl;dr: they're HTML/CSS/Javascript and run in built-in IE in the Desktop.

Target app: Drag-and-drop Faxaway.com fax sender. That would rock!

Target domain: Telephony

Twilio [representative link] provides telephony as a service, with the ability to write applications that handle incoming calls and SMSs in ways I'm sure I don't yet fully understand. (Add Faxaway.com for incoming and outgoing faxes and I think you've got all the telephone-network-based forms of communication covered...)

Anyway, I need to do a little Twilio work for a side venture I've got going on, so I'll need to spend some time with it - the question I'm now asking myself is: how difficult would it be to put together a domain for Twilio apps? What exactly does that even mean? I want to spend some time thinking about that, because writing app domains feels like an important direction for Decl. The final output language could be anything, after all - including PHP or what have you - so this is kinda like Web programming, except different.

So. Marker in the sand here.

Polyglot programming

Here's an interesting article about a programming project that mixed C# and F# for the heavy lifting, and called external Ruby and Javascript. I think maybe the takeaway is that polyglot programming can work well when it's called for (each language has its own strengths and weaknesses).

On the other hand, I've heard comments by Rubyists that sometimes the proliferation of DSLs in typical Ruby programming makes comprehension more difficult. So ... another balance to be struck, perhaps.

Evolutionary program repair

Oh my God this makes me salivate.

The concept: use GA to perturb a syntax tree for a C program, use unit tests as the fitness criteria, sit back and watch code arise that meets all requirements. The link goes to fixed code. In real projects, apparently.

The mind boggles!

Parasail

A language for the development of parallel, high-integrity programs. Very interesting! Most interesting takeaway for me is that a "loop" in Parasail is what I called a checklist - if you don't specifically force sequentiality, it's not sequential. [specific post but the whole blog is probably worth a read through]

Users fill out forms faster with unified text fields

Of course, then you have more parsing to do - often of messy data indeed - but it's good to note that there is, in fact, a tradeoff that deserves careful consideration. [article]

Android programming and levels of abstraction

Here (on G+) is a thoughtful little essay by an iOS dev who's bought an Android. His own tl;dr is this: "within a few days of iOS programming, I had a working app. Within a few days of Android programming I was just beginning to understand the abstractions."

And his overall prescription is that Android, while it lets you do a lot more, makes you work harder for it: "We need more abstractions to get us (app developers) up and running in less time, with 95% accuracy."

And I'll bet you see the solution I would have in mind if I had the time to devote to it, can't you?

Wednesday, July 27, 2011

VVVV: a visual programming language

Now ported to Javascript. Very nice. Original implementation at [vvvv.org].

Thursday, July 21, 2011

Example application description

Here's a fantastically detailed application specification from Guru.com (738799):
Description
I am looking for a fairly simple piece of software (you can make it as complex as you want, see below). It will track auctions and all bids and bidders for the item. In other words, software that will temporarily log members' bids on auctions.  This is strictly for the penny auction website quibids.com. Check it out and familiarize yourself with the job.  I don't care how it works just that it preforms this simple task but it must produce organized and readable info/data that is sortable and updates live with the auction.  It must also either have the ability to open the program multiple times for multiple auctions OR (will pay more) the ability to track 2 or 3 auctions with a single process.     PLEASE MENTION IN YOUR BID WHICH OF THESE OPTIONAL FEATURES YOU PLAN TO INCLUDE. (if any)  (Optional) Expect more money if you have the expertise to add these features, it is not required, however.:  - Ability to track multiple auctions (hoping for up to 5) in one process  - Checkbox to keep program on "top"  - Feature that allows me to "hide" users on the tracking list for an auction that have X number of minumum bids placed. for instance 10 bid minimum or that bidder wont show up on the populated list.  - Create alerts that creates a sound and popup to tell me when bidders are reaching maximum value for an item. For example on a 100 bid pack auction when all bidders are either under 10% value (10 bids or less) or over 90% (90 bids or more). Or maybe if theres only just one bidder left who is between 10-90%.
This should be trivial. I should be able to simply translate that into pseudocode and have it 90% written. That's the point of semantic programming. After I have Depatenting working, I think maybe I'll cycle back around to GUI work like this.

Jumpchart

A website charting/planning app? Maybe worth analyzing.

Link dump

Eesh, my browser tabs are getting too full again. Here, in no particular order of importance:
  • Guru.com, another jobs site. No feed that I can see.
  • Yottaflow, an online workflow site. Dammit.
  • A little overview of SQLAlchemy, apparently a Python ORM.
  • Github site for Anorm, a new very transparent PHP ORM.
  • Wolfram have introduced the (apparently open) Computable Document Format.
  • h5ai, a drop-in Apache index that really looks nice and works well.
  • I can haz some...? A browser capability testing framework.
  • An overview of possible military manipulation of social networks.