faulkners.io

uml done right...

Found a new software diagramming tool called Astah. I had been using MagicDraw from NoMagic (expensive and difficult to manage the license). I need a drawing tool that has the affordances to quickly and intuitively draw models. By leveraging the different UML facets (or diagrams), the model can be quickly expressed visually... instead of laboring through text, to quickly share ideas and manage expectations for code or a system. Astah hits the sweet spot of being intuitive, platform independent (java) and free (for the community edition, which has all the diagramming functionality I need). Check it out.

| Tagged: #dev 

waiting for html5...

In the realm of open streaming music from the browser, things are finally starting to turn the corner from flash :) The close of 2013, saw several new sites come online, casting off their adobe bricks.

The leader board has to be SoundCloud (becoming the global street corner of all things audio).


A long time favorite of us fogies, Radio Paradise has seen the light (irony: ignore the flash req if you get one). Rdio retooled and allows you to enjoy full albums (freemium). Grooveshark has been retooling and have made streaming even more convenient than before. Up and comer Stereodose jumps in the deep end with, well, just check it out. One final mention of course, the /tunes ...a work in progress.

Still on the "ain't that a shame" list are: Spotify and Pandora (who has a great matching algorithm).

I think the real catalyst is the drive to mobile for these services, but I enjoy streaming old-school style from the browser. Wait, when did that happen?

| Tagged: #dev 

no sql for you...

There is a new context for how we manage and use databases. In Martin Fowler and Pramod Sadalage's "NoSQL Distilled", we explore Aggregate Data Models and Aggregate Oriented databases - all heavliy influenced by Eric Evans' "Domain Driven Design".

Some key points about NoSQL...

Use an application service (web service) to offer access and security around yours database. Don't integrate at the database layer itself... too much coupling here folks.

Think about "Polyglot Persistance". Adding an abstraction layer for datastore allows for the right database store for the right application. Now you can plug in rdbms as another polyglot data store. Tip of the hat to Evans' data repository strategy.

Why not store transactions (business events) as a kind of a recovery log with "Event Sourcing". Now you have a time machine. Replay transactions to get your datastore back to needed state (much like roll-forward recovery from rdbms).

NoSQL offers more flexible domain model, in that the data model can more easily evolve. As requirements change, so does the datastore (just a new version of the data model). And it can increase flexibility for developers with a NoSQL datastore platform.

Like any new paradigm shift, the clutch is a little sticky, so we're going to grind some gears on new thinking like "eventual consistency", but I think we'll eventually get our heads around the tradeoff for improved speed, scale, recovery and ability to evolve our data models in production environments.

| Tagged: #dev 

a better drafting tool...

I was recently asked to develop a set of floor plans using Visio. The Visio requirement was a legacy reason, because that was our first drawing tool. As part of breaking the M$ hegemony, I wanted to see what viable alternatives were out there. It had to free, available to all platforms and not too complicated to use. I talked to a city planner friend of mine, Dave. He recommended Google's SketchUp. Apparently for urban planning and development it is a fairly ubiquitous tool. I had heard of SketchUp before and thought I would give it a try.

Although it has a small learning curve, after 20 minutes, I was up and running. Google has provided plenty of getting started videos online, so the amount learning material and content is great.

As a drafting tool, it hits the sweet spot for me. The ability to rescale objects in your drawing allow for the iterative approach. The vector drawing object model allows for greatest flexibility to extend and tweak your drawings.

There is a vibrant user community online and there are plenty of resources available

Ruby is the Sketch-up scripting language that allows you to blend in extensions and automation later if needed.

The payware (Pro version) brings professional looking plots and printed plans to life with Layout.

As an alternative to Visio for drafting, SketchUp is superior alternative.

| Tagged: #dev 

fighting word? get your lyx in...

Lyx: yep. It's a keeper.

Here's why...

  • The underlying typesetting language is based on LaTeX (easy to script up later)
  • It has an excellent document model (independent of it presentation layer)
  • Large file or small documents (loaded up a 300 pager, no problem)
  • Open source (thank you)
  • Multi-platform (Linux, Windows, OSX, Unix, Solaris)
  • Templates (pre-built document models for books, papers, articles, resumes etc)
  • Dynamic presentation generation (UI is easy to use to the output you need)
  • ...and speaking of output, it easily gens pdf & html (with hyperlinks)
  • Automatic table of contents (easily one of my favorite features)
  • Integrates with your revision control system
Visit Lyx.org.

| Tagged: #dev 

csci and philosophy...

So here is an interesting cross-discipline course study from Oxford of Computer Science and Philosophy.
Here's a quote from site

"Artificial intelligence and robotics: just two of the fascinating areas where Computer Science and Philosophy meet. The two disciplines share a broad focus on the representation of information and rational inference, embracing common interests in algorithms, cognition, intelligence, language, proof, and verification. Some of the greatest thinkers of the past — from Aristotle to Turing — dreamed of automated reasoning and what this might achieve."

Seems like Philosophy is employed when we are reaching mystical borderlands of our modeled domains.

| Tagged: #dev 

task oriented programming...

Can tasks become the new orientation for programming? Andrew Binstock at Dr.Dobbs has an interesting article about this idea. This is one of the functional language designs that Erlang had early on that I thought was interesting.

| Tagged: #dev 

from beers to telcos...

Laura Merling talked across the pond @MonkiGras (new one for me) about crafting beer and how that is translating into crafting API's on the telco space. Her position is that new money is in the API that companies can offer for their services (she even predicts that death of telco charges for data plans).

divorce your app...

Robert Martin, Mr. Object Mentor, talks about divorcing your app from the web, The context is Ruby but his ideas are about architecture equally (as easily) apply to other web frameworks.

| Tagged: #dev 

unlinking...

...from evil design

How many times do I have to deal with linkedin asking for my list of contacts? Linkedin has a chronic practice vacuuming up our social network through nefarious design to expand their domain... it cost them $13m.

They are still at it. I appreciate the professional service linkedin provides, but I wish they didn't take such a deceptive design approach to it.

I think I'll just unlink myself.

a music sunday...

...with a cherry on top!

Took a little time last Sunday to experiment with the open source CherryMusic server (written in python).

Easy to set up and get running. Feel free to take for a test drive (user:guest, password:guest).

So now it's time to load the song library. This will be time consuming for me 'cuz... it's always like going through old photos, "oh, wait... just a quick listen").

| Tagged: #dev 

59 days of code...

... constraints and creativity!

Myself and three other compatriots teamed up for a local software developer contest, 59 Days of Code and it really put our creativity to the test.

This was our chance to see about our app's potential as a Menu-as-a-Service platform for independent restaurant owners (and a cool mobile app for online food ordering). We did not win, but a chance to network and demo our app was our pay-off and reward.

The best advice I got for developing an idea is to get some early feedback. We got that with this contest. We were forced to practice the elevator pitch (in preparation for judging). We had to distill our "good" idea down to simple points. This exercise alone will challenge any preconceptions you have about your product/service and self.

The opportunity to talk with sponsors, fellow contestants and attendees resulted in a "tradeshow effect": people willing to share, openly and honestly about their ideas/projects/experiences. We given ideas on new ways to apply your app; every one had a "have you thought about..." comment for us. We got out of our comfort zones a learned about our team, our project and our market.

I learned that in showing the app to potential clients you either are in the sweet spot or you realize it's time to keep refining the product/service/elevator pitch.

The final day of the contest (a cumulation of 59 days frought with development and designing) was a chance to stop look around and see how far we've come. A chance to ask others about their experiences. A chance to share and learn, with objectivity and freshness.

If you are working on a project - get some early feedback. I'd recommend a local contest to take advantage of the "tradeshow effect" and constraints of working with what you got. Hammer on that elevator pitch and get it down cold.

Sisters and brothers in it together; sweating the details and making miracles happen all constrained by 59 days. As Irma L. Olguin Jr. (our contest founder and leader) said to the contestants "yeah... you're all bunch of badasses"... man, geeks thrive on that stuff. Hats off to Irma and all the 59 Days folks, thanks for the chance to learn.