Tuesday, January 31, 2012

Codecademy now accepting lessons from the masses

They support lessons in Javascript, Python, and Ruby; this might not be a bad place to earn some street cred.

Productivity technique

So it turns out that a lot of Silicon Valley companies use a weekly review of tasks accomplished and goals set as a productivity tool. That's kinda neat and could easily be used in personal projects as well.

I'd go so far as to say that expression of this type of goal/achievement could be a valuable part of the documentation process for any software.

Friday, January 27, 2012

Big Data links

A few things about big data:
  • A book on best practices by Marz and Ritchie. You can pre-read it as well. I'm thinking about it. [hnn thread]
  • The data science toolkit, a specialized Linux VM for download with lots of juicy databases and tools preinstalled and a common API.
  • Real-time feed processing with Storm. Storm abstracts out the queue-workers pattern into an infrastructure component. Interesting stuff.

Thursday, January 26, 2012

Bash scripts

Interesting article on some techniques for writing bash shell scripts. I'm wondering if this would be an interesting target for Decl, actually. Maybe in the deployment domain?

Finding resources on the Semantic Web

SparQL and the Semantic Web, and finding resources using semantic markup.

Econophysics

Did you know econophysics existed? I didn't, but now I want to be an econophysicist when I grow up. It involves the study of large populations of (simulated) actors in an economic framework, like this: cartels are an epiphenomenon.

So cool!

Scaling PHP

Now that Oracle owns MySQL, MySQL-related articles are at Oracle. It's weird. Anyway, here's one about scaling PHP/MySQL applications.

A couple of posts about hating programming

A post last week, "I want to fix programming," suggests that declarative programming (keeping around the "why" of what you're doing instead of the "how") would be a step up from what we're doing, and adds a couple of neat magic keywords that indicate how it might be done. Color me unconvinced, though, because just saying what you're doing and hoping the compiler is going to get it right might require a little too much from the compiler.

His specific case is a sort algorithm - he just specifies what he wants from the sort, and the compiler would do the sort. Well, I still think the answer there is to tell the compiler: "sort this stuff". Now I don't have to look at his constraints and say, "Well, wait a minute, that's a sort." If I were talking to a colleague, I wouldn't say, "All the elements of this list should match those in the other, with the constraint that each element in the list is less than the one after it." I'd say, "We'll sort this list." Then I'd look up a sort algorithm, and later, down the road, if it turned out that sort was a performance bottleneck, I'd maybe look for a better sort algorithm.

Just specifying the constraints is not enough. You're still losing information if you don't have a machine-readable set of semantics of what you're doing. (I say that as though this was already achievable with today's tools, when of course it mostly isn't, but you see my point.)

This week, we have a response, "Yup, programming is borked," and makes the cogent point that formalization of requirements is the key - and then still goes off the rails with brand-new syntax that's not human language or anything like it. He's got some interesting ideas, and is looking at authoring systems for non-programmers, which I find pretty fascinating, but I think he's still getting lost somewhere along the way.

I remain convinced that a hierarchical set of semantic views, preserved in the final program, is the way to go. Each part of the program not only has formal syntax defining it, but a conceptual framework indicating what it does, why it's done that way, changes that were made along the way, related tests (which can be seen as constraints) or even constraints (which can be seen as tests) - the whole ball of wax is right there and amenable to software manipulation. Changed requirements can then drill down right to the code that must be changed, and with sufficient sophistication, you could imagine that tools could make suggestions or even rewrite the formal syntax to conform to the requirements.

That's the goal.

Wednesday, January 25, 2012

Task: file upload/download and manipulation center

Here's a thought: I keep running into various reasons to have a place where you could upload a file and have various tools run on it. Given the closure of MegaUpload, just the ability to share files within workgroups would be a useful spinoff of that.

So that's now an official task: write this platform.

Friday, January 20, 2012

Google Code search algorithm

This is a pretty neat article by the guy that wrote the search engine for Google Code.

Thursday, January 19, 2012

Visualizing sorting algorithms with Python and Cairo

Here's a nice article about visualizing sorting algorithms [github] - but I like the fact that the graphics generated are really nice-looking. They use the Cairo graphics engine, which I clearly need to examine more closely.

More recently, the same guy did some visualizations of malware.

Conficker

Well, now I know when I was laying down these old bookmarks: ReadWriteWeb wrote about the Conficker virus in 2009. I toss this in here because malware is fun.

openFrameworks

I ran across openFrameworks in September; it's the framework used to build that real-time video face mapper. The framework itself is pretty interesting, and it would be fascinating to write a domain for it in Decl - I'm having the same thoughts about Pygame, actually, the basis for the Fly steno tutorial I'm porting to Windows.

Anyway, I was just perusing old bookmarks and found a fascinating link to aesthetics reading for programmers that just begs for followup, and that guy's blog has some newer posts that reference openFrameworks - he's written a crawler for Github that automatically indexes add-ons and catalogs them at ofxaddons.com.

There's something like a language for ... creative ... stuff developing there. I get these glimpses of it. This is another lead to follow up when I have more time.

Wednesday, January 18, 2012

Tuesday, January 17, 2012

Clay: programming language

Clay is a programming language based on C that has lambdas and some other nice modern features. Very attractive-looking, actually.

Sunday, January 15, 2012

Saturday, January 14, 2012

AI game design

So AI game design is a thing: given a set of possible games defined by the pieces available, board, etc., come up with a "good" set of rules. What a "good" game is seems ... really human, but some exploration of using AI programming techniques to augment human game design has been done.

Here's a neat article. It's about exploring a very small game set using "Shibumi" equipment (released in October of 2011), which consists of a 4x4 set of holes and three colors of marbles to be played on those holes and stacked on one another to make pyramids. That totals up to 30 possible positions, which can be empty, white, black, or red (two bits each), so the set of possible board positions is encoded in 60 bits.

Turns out evolution isn't so hot for game design - the universe is too uneven to allow much gradual improvement. They've been having success with "Monte Carlo tree search", building trees using a semi-random process. Kind of neat. They want to compare it with GA in finding new games in this universe.

Their fitness function has to be playability as judged by a human.

Here's a notion: judge playability by determining how challenging it is to evolve a good player. Or something. That is to say, automate both ends of the process.

Self-adaptive honeypots

Neat thesis about a system for self-adapting honeypots that analyze attacker behavior and try to learn more about the attacker.

Analyzing github projects by language

Interesting little project attempting to compare project behavior between languages.

Flashbake

A rolling git update of works in progress, imagined and used by Cory Doctorow. It autoupdates your current working files to git and marks them with the current weather and some other indicators of what you might have been thinking. Really neat idea.

Chatter about machine learning

... well, data management. However you want to classify it, I found it interesting.

Rolling your own map widgets

Google Maps is going to a usage cap model that means serious money for biggish sites with map embeds. One enterprising real estate site looked around and realized they could roll their own for less. Lots of interesting stuff going on in mapping these days.

Friday, January 13, 2012

Twitter Bootstrap generator

Closer and closer....

Data analysis of Twitter to determine you want to learn Objective-C

I find this kind of project fascinating every time: analysis of tweeted jobs to find popular keywords, with nice graphics. Learn Objective-C in 2012, apparently.

Configuration management tools suck

A state-of-the-art look at configuration management. And it sucks. That makes me interested.

OpenTag translation XML formats

I need to think harder about declarative formats in XML. Here's an example.

Feedback models of big data usage

Interesting article at O'Reilly on modeling the use of data in companies. Feedback being good.

STUPID, GRASP, and SOLID in PHP

Some good advice on PHP coding and object model maintenance.

Malware deobfuscation

I'm always a sucker for this. A good article here.

Tuesday, January 10, 2012

NPZ visualizer

A Processing model of a neat biological system. Very cool.

Infer.NET

ML in .NET. Weird.

PDFminer

PDFminer is a Python library for extracting information from PDFs.

iText PDF API

I'd forgotten about this, but it's a pretty slick-looking Java/C# (?) library for working with PDF. Oughta go into the domain.

Patterns and boilerplate

A couple of old ones, and a couple of new ones. I really think patterns and boilerplate are a key component of the semantic approach, and for some reason they're cropping up in my daily reading today.

Ooooold bookmarks - D

The D programming language is a replacement for C that isn't C++. I have yet to really look hard, but it actually looks pretty nice.

This is the first of a long list of programming bookmarks from way back that I'm going to serialize onto this blog so I don't lose them.

Sunday, January 8, 2012

Speaking of mail

Nobody seems to be able to manage to provide a mail aggregator and stay in business.

Overview of mbox formats

Good overview of mbox formats.

Veneer: modal dialogs in JS

Simple little library for modal display dialogs.

Fbootstrapp: Facebook design bootstrap

And as long as we're talking about design, here's a Facebook answer to the Twitter bootstrap.

Excellent post on learning design

Here. Lots and lots of good resources linked there.

Friday, January 6, 2012

Social network sleuthing

Neat post on how social network charting was used to bust some slumlord fraudsters in Chicago. [hnn] Prompted a post of this fascinating picture, which was generated at least in part with this code. Finally also prompted a link to sharesleuth.com, a Mark Cuban project tracking securities fraud. I do so love reading about detective work.

Database design mistakes

Interesting post with five common database design mistakes. This is the kind of best-practice knowledge that should eventually be boiled down into domains.

Target application: translation service provider suite

I've wanted to build this for a while - and in the meantime, somebody else did. Here's the link. I need to mine it for features. Meanwhile I have a possible business partner wanting to build something like this; it's possible it will be Drupal-based and start from Open Atrium.

Dreadnot for continuous deployment

Rackspace just open-sourced their continuous deployment tool. Interesting move - and it makes me want (again) to start thinking harder about that software component database.

The Oatmeal: How to make your shopping cart suck less

The Oatmeal with some excellent usability advice that simultaneously makes you laugh until your solar plexus hurts.

Data on tutoring

I happen to think that the education industry is ripe for some upheaval; on that note, here's Tutorspree with some interesting data from their 2011 work.

Government documents as grist for the mill

Another fascinating archive of large amounts of messy government text: the government attic. In particular interesting for their recent posting of (a lot of) FBI documents pertaining to the security of telephone services.

Futurist strategy

Here's a neat BoingBoing post of all things, presenting more or less "how to be a futurist". It would be interesting to boil these down into usable tools.

Decision tables

Here's a neat old technique I actually remember reading about long ago - and had forgotten about just as thoroughly as the rest of the industry had forgotten about it. Decision tables. A great user-responsive way to define complex logic.

Scrollorama

A jQuery plugin for neat scrolling tricks. I gotta start figuring this stuff out.