Friday, November 8, 2013

Putting New Light into the IDE

I've written before about how every technology has an internal "genius" or set of inherent, cohesive, driving principles, which need to be recognized and employed when working with it. This the the right way to deal with "new wine." Which is to say, it's not putting it into old bottles! It's the right way to do things.

You'll see a perfect example of what I mean by rethinking new technology in new contexts. The REPL was great when the command line was the king of programming environments, before the GUI and IDEs. But today, the REPL can be so much more than a command line thing. Instarepl in LightTable is a wonderful example of this. You'll see a reduction in cycle time and instantaneous coding feedback in a way that the REPL could never afford.

Clojure Koans in Light Table, found here,  is a cool way to see a bit about Clojure and Light Table.

Not only can you see the instantaneous feedback of the Instarepl, but also get a feel for Clojure, not to mention how the "Koans" are an active approach to learning a new language. (As opposed, for instance, to the passive reading of a book, or even watching this video. So, to be pedantic and irritating, you'll get to see how excellent Koans are by passively watching someone do them, rather than exert yourself and get the real benefit by actively struggling through them and actually improving your knowledge).

Or, if you prefer, there is a short intro video here on the Light Table home page. You'll see that this offers a new way to organize development and code reading: one oriented around functions rather than around files. And that is the way that an IDE should be, when coding a Functional language like Clojure.

I Remain,


Thursday, November 7, 2013

Don't neglect hardware interests!

Last night there was an Arduino Meetup. Normally, they meet on Thursday, but last Thursday was Halloween, so they bumped the meeting to Wed. My schedule makes it really hard to go to Thursday Meetups, so last night was a rare chance to see what people are doing in the Arduino world.

I'm partly interested for my daughter. She like STEM. So I think Arduino would be a natural interest. She also loves photography, and last night we saw a quad-copter designed expressly for photography. That was pretty cool.

I learn a lot from listening to people who have already done things I'm interested in starting to do, so it was a night well spent.

Also, we mustn't neglect hardware, even though software is so enticing!

I remain,


Wednesday, November 6, 2013

Can Natural Language be Groovy?

Groovy is not just the mantra of Hippies from the 60s. It's also a jvm language, sometimes referred to as java++. Last nights presentation by Jim White, at the LAJUG was on Groovy, specifically as used to perform natural language processing (NLP), or computational linguistics (CL).

TheHackerCIO is only peripherally knowledgeable about groovy.

From what I saw of it, it seemed like java without a semicolon terminating a line.

But that is just the starting point. From there, they have added a number of features from other programming languages to make you a more productive programmer. It looks worth taking a more detailed look at. Because the speed of agile prototyping possible in the untyped world is so overwhelmingly fast by comparison to the java world, and anything I can get that would give me that edge, while building on the type safety and huge ecosystem of the java frameworks world, is something that bears further serious investigation.

Jim's claim is that Groovy affords the most productivity possible to the Java programmer while building on what he already knows. That's a pretty compelling sales job!

He pointed out the use of the traditional shebang from Unix, so that a groovy script can easily invoke the groovy shell thusly:

#!/usr/bin/env groovy

which, as java programmers know, could not be the first line of a java program, but which is fine in groovy, and allows direct unix command line invocation of a script without the need to set environment variables and then compiling and executing.

I always like to follow along with a presentation, so if you are doing likewise, you can install the GVM (Groovy enVironment Manager) with a curl command:

curl -s | bash

followed by:

gvm install groovy

this will allow you to enter and run this simple shell program:

#!/usr/bin/env groovy
System.out.println("Hello, world")
which can just be chmod-ed and run from the command line.

Groovy, apparently, has lots of interesting features to munge data.

And the quotation of the presentation was:
"Most of the work in CL is in fricking around with formats!"
Which is why Jim found groovy so helpful in his Graduate work.

I learned about two operators in Groovy, pulled from other languages:

1. The spaceship operator: <==> [name derived from resembling Darth Vader's ship]
2. The Elvis operator:        ?:       [name derived from resembling Elvis' hair]

both named after various resemblances. But you'll need to follow the links if you want to know more, because I've run over the limit on this posting already.

I Remain,


Tuesday, November 5, 2013

Cassandra Last Night at the TRG

Cassandra was the topic at TRG last night.

That is to say, Apache Cassandra. I'm not clear why the project chose to refer to themselves by the name of a Greek prophetess who was doomed to always prophesying correctly, but also to never being believed.

Perhaps the the eventual consistency model?

Still, it doesn't seem like the greatest PR approach and it doesn't seem like the Big Data initiatives would like to think of their correct insights always being disregarded.

But such is the name of the product.

Our presenter, Adrian Rodriguez, did a nice hands-on tutorial where he built up a data model for a Social web application centered around dog photos. He provided a github account where the full blown application can be browsed.

He also pointed us to a very helpful consistency calculator website, where the implications of your consistency level choice are clearly shown: Cassandra Parameters for Dummies.

Adrian recommended the very sound policy of defining calls in quorum and then relaxing this only where necessary, in keeping with the dictum: "don't prematurely optimize."

I also liked his way of explaining that Cassandra databases grow out left to right, with everything attaching to the primary key as a new column, and with all the join overhead done upfront at update time in all the other relevant rows; in contrast to the Relational Model, where databases grow top to bottom as new rows are added. This is an excellent way for beginners to start wrapping their heads around this NoSql database.

Tonight is the Java Users group, so a report will be in order tomorrow on Groovy.

Full details of the presentation may be read here.

I Remain,


Monday, November 4, 2013

Technology Radar Group tonight

If you're in the LA area, you should stop by tonight for the TRG.

We'll be getting another hands-on tutorial about using Cassandra.

Looking Forward to Seeing You There,