Monday, July 30, 2012

Tesco: how not to do security

Very interesting critique of the security anti-patterns at work on Tesco's Website.  A fun and instructive read!

The Construct

A pretty big name for a C++ library that does pretty cool stuff in terms of the math of simulation.

API documentation

Very nice rundown of how to document APIs, from the folks at Braintree.

Sunday, July 29, 2012

Document automation

Eesh.  I've been wanting to get into document automation since I discovered that Word can be automated (um, you don't want to know how long that is) and so now, as I'm finally taking the plunge and automating my invoicing process, I'm looking at it in more detail.

There are a lot of document automation packages out there.

  • Wikipedia page
  • MSDN article on document automation in Word.  Still pretty much Win32::Word::Declarative's domain.  (It also suggests "document assembly" as an additional keyword.)
  • There are scads of commercial products for automation of documents in business. [1] is just one example.
  • The FormTool apparently aids document preparers in automating their own workflow on a much smaller-scale basis.  The Pro version has more sophisticated language models that look pretty interesting.  Worth looking at.  Worth redoing, actually.

Why I need better analysis

By which I mean Web analysis.  Every now and again, I look at the stats Blogger sees fit to give me; I've ranted on that before (and referrer spam is getting worse and worse - it just doesn't make sense).  Today, though, I found an incoming search on "android app generator semantic" - this blog appears in second place, and further on down the list is GeneXus.com.  They have a product that looks like it actually does some of what I envision, and it registers on the radar because they also talk about explicit utilization of the semantic domain of the app's target.

I need a way to find the people doing and talking about what I'm thinking about.  That way would be statistics analysis, but let's face it, Google Analytics suck.

Monolithism and literate programming

Interesting story of an example program Donald Knuth wrote and a critique by Doug McIlroy.  Knuth's program, as Knuth's programs tend to be, was monolithic, taking and handling each aspect of the problem in turn and weaving the whole thing into a Pascal program for compilation.  McIlroy's solution was a six-line shell script.

The point here is that Knuth's program did nothing at all to support or to make use of reusability.  And that's a pretty good point.

Friday, July 27, 2012

JDC: keeping languages straight

The ever-thoughtful John Cook opines on keeping similar languages straight, and provides links to some multi-lingual cheat sheets he uses.  Filing under patterns again, although it's not really what other people mean when they use that word.

Thursday, July 26, 2012

HNN mulls over directory structures

Noting the trend away from directory structure at Apple, some guy says directories are still a Good Thing, and HNN comes up with some pretty good thoughts on both sides of the issue.  Pretty valuable thread.

Reference applications

So here's kind of an interesting notion: a bounty for a JEE reference application [JEE] that could illustrate how the various JEE building blocks fit together.  (And keep an eye on that bounty site, too.)

Minimal apps are kind of a cool way of characterizing new technologies, so maybe it would be a good idea to take a look at a kind of menagerie of them.

Filing this under patterns, because an example program could be considered a pattern definition of a sort.

Target application: Desant landing pages

Desant is a highly refined landing page app.  You drop it in and get statistics on visitors - and it's that snippet of a business process network that I want to think about.

Password reminder best practices

An incredible compendium of the state of the art in password reminder processes.  Fantastic work!

Machine learning link dump

A few interesting links lately:

So that's a couple of tabs closed.

Product Canvas and first-order nonlinear components

The Product Canvas is an agile planning tool for product design.

I think an important insight of agile development (speaking as somebody who's never used it) is that heavyweight tools are not well-suited for use by humans.  Agile's toolset consists of simple, informal tools that structure and guide the thinking process without getting in the way of thought.

Which leads me to this fascinating article by Alistair Cockburn on regarding humans as first-order nonlinear components in software design.  The tl;dr is that people don't use heavy processes well, and that management of successful programming teams largely boils down to an understanding of human factors.

Saturday, July 21, 2012

Slideshow on generic/generative programming in D

Interesting slideshow on generic/generative programming in D, most of which I find pretty low on detail - but it does whet the interest!  I gather that D's efficiency is comparable to C (at one point I believe it just compiled to C and let gcc optimize), so ... it sounds pretty useful.

Shell modules in Perl

I've always just used Term::Shell - it seems to be used a lot, but after a little extra searching, I think maybe I prefer Term::ShellUI, which is newer and more flexible.

Here's another argument for some kind of curation or functional grouping of CPAN.

Incidentally, looking for shell modules, I also ran across Net::CLI::Interact, used for talking to shells over the  network.

Update 2012-10-02: Yep, Term::ShellUI is a pure joy to work with.  (I started Shell::SQP based on it yesterday, with entirely satisfactory results.)

Friday, July 20, 2012

PayPal: screwed?

Interesting article musing about the future of payment systems and how PayPal's static approach is going to kill them in the relatively near future.

MetaOptimize

Sigh.  I want to be these guys.  They do outsource to freelancers, so there's still hope.

Economics: Bankruptcy for Profit

I'm getting more and more attracted to the idea of economics as systems modeling.  Here's a paper about modeling economic breakdowns that looks promising.  Unfortunately, most of my time this month has been spent participating in the economy, leaving little time to model it.  So I'm just going to leave this here.

Twilio app builder

So yeah, after all this time, I'm finally to the point where I'm poking around Twilio and planning on how to build applications with it.  And it occurred to me that it might be cool to build a Twilio app builder, but (1) there already is one, and (2) I'm not sure it's such a fantastic idea anyway.  Who would be using Twilio that isn't already doing apps on the Web?  Or at the very least, running the apps in the cloud somewhere.

But it might still be an instructive thing to try, so I might give it a shot.

I'm starting a new topic "app builder" with this, because in general the idea of cutting out little apps or patterns is a nice one to think about.

Update: And a link to the example code here.

Pareidoloop

Cool.

DBI recipes

Recipes like this list are another source of patterns and boilerplate.

El patrón de los números primos

Excellent use of data-driven documents to illustrate one way of finding primes.

Thoughtbot playbook

A fantastic run-down of the elements of a small technology business, with (thoughtbot's) current best-practice solutions.  Wow!

Wednesday, July 18, 2012

Data models II

Oh em gee - poking around further at that list of data modeling tools gives me this lovely, lovely treasure trove of prepackaged data models!

Data modeling

So I've decided to do more coding, now that our lives are rearranged in Europe (see, we're renting a house that doesn't need renovation, and there's public transit so I don't have to play taxi driver for the whole family every freaking day, and so on).  My first coding target is to revamp my job management system for the translation business.

Here's the problem whenever I start to code anything: I always want to develop the tools to develop the tools to ... infinite regress.  It's a bad, bad habit.  But what's got me going today is that, since I had to move my database from Access into SQLite (long story, but: my Access is 32-bit and I'm now running a 64-bit Perl; you cannot get from one to the other.  At all.  Microsoft wants me to upgrade to a 64-bit Access and I ain't gonna do that) - anyway, I touched SQL and now I'm well into fiddling with database design.

Which brings me to data modeling tools.  In Perl.  And here - just like in every other thing I dabble in - I find that Dave Freaking Rolsky is ahead of me.  Twice.  Once with Alzabo (when asked, he tells me Alzabo is a doornail, a dodo, its metabolic processes have stopped), then rewriting it entirely in Fey (which is just still too Perly for me to use without distraction).  But, like all things Rolsky, he seems to be off doing fantastic things which are not the things I initially wanted to do.  Alzabo did indeed include at least a rudimentary data modeling tool, but Fey is just an ORM.  A really fine ORM, it is true, but that's not (all of) what I'm after.

No, I want a database-agnostic way to model data, play with it, move it around, restructure it.  Then, once I really like it, then I want a Perl ORM, and one I can use without all that { this => 'that' } in it (in short, of course, Decl).

So back to the Goog I go, this time dropping my insistence on Perl, hoping at least to find some inspiration and maybe a tool I can use without any time investment at all.  I find this compendium, which at least manages to convey to me that there is a whole lot of money in data modeling.  But I knew that.  And it does give me a helpful link to SQLDeveloper, which might be kinda-sorta what I'm looking for, at least to get off the ground.

(Update: nope, it still isn't what I'm looking for.)  (But here's the Wikipedia page on data modeling, which is a pretty cool page.)

Along the way, it also shows me the fascinating Reverse Snowflake Join diagramming tool, which when given a complex SQL statement can discombobulate it into a diagram, and a site filled with interview questions, including Perl data modeling questions.  Yes, it's a whole site devoted to kata.

So that's my brain dump for the day.  Thanks to my foray into online AI classes, followed by a spring chock-full of travel, it's been about eight months since I did any serious coding.  I can feel the brain cells dying.  Maybe there's still hope, though.  Wish me luck, hypothetical reader.

Tuesday, July 17, 2012

Why Moose: a database perspective

Darn it, I've always avoided Moose because it felt like too much overhead - this is bad old habits from ye olden tymes when I learned the trade - and at the same time, I didn't feel sufficiently motivated by the actual merits of using it.

But along comes a nice article about using Moose for data constraints in the same way one does this at the database level and suddenly I feel the need to start using it.

The short version is: Moose allows you to declare a lot of data logic so you shoot yourself in the foot less.  I like that.

Sunday, July 15, 2012

Remem: remembrance agent

Cool find on HNN: Remem watches what you're typing in Emacs and flags links to similar documents so you don't forget them.  This kind of dynamic indexing is pretty neat.

Dart: structured Webapp language

What it says on the tin.  It compiles to JavaScript.

Friday, July 13, 2012

Skeleton: node.js app generator

Boilerplate!

Abstract Persistence Logic

Now here is a thoughtful essay about the use of persistence in your application: design things so you can decide on a specific persistence system as late as possible.  The advantages, as I see them:

  • You can scale as needed
  • Early on, you have in-memory persistence so testing goes fast and you don't get hung up on infrastructure.
  • Maintainability due to segregation of functionality.
What's not to like?

Thursday, July 12, 2012

OpenSocial

Don't you hate referrer spam?  Blogger's (read: Google's) stats for websites suck so greatly that you can't really get much out of them, and one of the most recent developments is that spam referrers have pushed all useful referrers right out of the top headings that are all Google sees fit to show me for this blog.  (But this is a rant for another post.)

Today, I have an incoming link from a 404 at [[long hash]]-opensocial.googleusers.com.  Which is fascinating, because OpenSocial is something I probably could have written about, but ... never did.  And now I kind of have.  Or at least I've dropped its name.

Reminder to self: set up Strawberry smoke tester

Here's a complaint right to my doorstep...

Update 2012-12-11: It took me six months to get around to it, but - I've got smoke testing running on two old Windows laptops that were otherwise just gathering dust.  They ain't speed demons, but they're cranking through the testing pretty well.

J, R, and statistical programming

I'm not sure why statisticians are so enamored of single-letter names for their programming systems (makes Googling very difficult), but there you go.  I knew of R, of course, from the existence of CRAN alone, but today I found out about J.

One of J's original authors is Ken Iverson of APL fame.  And yeah, in terms of its compositionality and frank strangeness for imperative programmers like myself, it looks a lot like ... well, like a usable APL, really.  So how does it stack up against R?  Ask StackOverflow: the short answer is ... it's complicated.  R has fantastic third-party library support, but J can run R.  R is more verbose and therefore probably easier to maintain.  On the other hand, for data manipulation, J is succinct and expressive.  So it really depends on what you're doing, which is increasingly the case for programming languages these days.

J has a full-featured runtime environment and IDE, too.  This alone would make it interesting: J is built from the ground up to build things.  Things that will be used by people.  You can package a J app and use J's own installer to distribute your software.  There are GUI and graphics tools built into the language and its basic library system.

In this sense, it would be a great model for some hypothetical standalone Decl system.

Wednesday, July 11, 2012

CSSDeck: HTML5 demos

This is a nice demo site.

Design for dummies^H^H^H^Hdevelopers

I know, I know, I publish every one of these I ever see.

SQLite on Droid

Huh.  Who knew?

Cancellation flow

I'm intrigued by this kind of business process/strategy/workflow/programming stuff.  Here's a thoughtful article about how to build a service cancellation system.  I love it!

Getting started with Droid

Caught my eye.

Configuration management to avoid snowflakes

Careful definition of server environments can aid stability.  Obvious, once stated.

Tuesday, July 10, 2012

Somebody else wants a new approach to email

Interesting take on an email client for 2012.

Learn X the Hard Way

Zed Shaw has pulled out the skeleton of his Learn Python the Hard Way book series so you can roll your own Learn X book with LaTeX.  This would be a great alternate target for mltut/Heckle.

Sunday, July 8, 2012

Data science

Finally, two data-science links.

That latter is probably a legitimate part of the mandate for mltut.

Neural networks in JavaScript

brain, a JavaScript library for neural networks.

Recline.js

Recline.js: a framework for building data applications.

Two posts on security

Security seems like it could be a good domain.  Schneier, and HNN.

API hedging

An interesting point from the Register: APIs may represent a quick way to bootstrap a business - but leaving your business in the hands of third parties is a pretty serious risk.

So some kind of drop-in in-house open source replacement systems for popular APIs might be an attractive thing.  (Of course you lose the scale if you're e.g. basing things on Twitter - but there are other services that this could be a good strategy for.)

Dancer

Dancer is a Perl module for building Webapps.  It seems pretty cool as well as lightweight.

ZYpp and SAT solvers

Here's an interesting thing: the new package manager for PHP is apparently based on ZYpp, which includes a full-power SAT solver.

Link dump time

The weather this week has been hot enough that my neural proteins are denaturing, so it's difficult for me to understand anything.  Instead, I'm simply letting things pile up in the browser taking up core memory.  But now it's time to slim down again.

Tuesday, July 3, 2012

Google Translate at the EPO

I saw my first Google-Translated Europatent today.  Now I'm thinking mining for vocabulary might be interesting.

Operations research

I took a class in OR long ago.  Maybe I should look at it again.

Monday, July 2, 2012

Single-page web applications

Here's a good book about the care and feeding of single-page web apps.  Since I envision each chapter (or section maybe) of mltut as a single-page app, this seems pretty salient.