• Win8 & Hardware: Going the wrong way

    June 13, 2013

    Win8 and ThinkPad Helix: so bad it burns

    I bought a ThinkPad Helix yesterday because I needed a lightweight travel machine to code on. I was hoping for some Haswell goodness from Apple, but that's not likely to happen soon and I need a travel machine this summer.

    I chose a ThinkPad because I've always liked ThinkPads. My current travel machine is an X300, but that's capped at 4GB of RAM… not enough for getting work done… especially Scala work. The Helix had a nice screen and the form factor seemed right. Sadly, I could not touch the machine before I bought it.


  • When is a Dynamic Language Good?

    June 11, 2013

    Yep… I'm exploring the other side

    I'm a dyed in the wool static language guy. I used C++ for logic code in Mesa, even though the UI was in Objective-C.

    Ruby's dynamic meta whatever stuff made it difficult for me to code.

    Scala with it's mostly excellent type system is one of the most useful tools I've found for reducing the class of errors in my code.

    But my recent projects have made coding against a static language less useful.

    Meta Projects


  • My Thoughts on the Prism Flap

    June 8, 2013

    Not Happy

    Okay, the it's official, the US Government is collecting all data communication metadata. This is not what a government that cares about its citizens does.

    Also, apparently, the NSA/FBI is running queries on cloud data in a program called Prism. Once again, not something that a Constitutional Democracy does.

    Yes, we all suspected something like this was happening... but knowing that the US Government is behaving unconstitutionally makes me sick.

    Why the Leaks Now?


  • My Clojure Setup

    June 6, 2013

    So... I've got my Clojure setup down

    I've got my Clojure setup pretty much nailed.

    I am using an old ThinkPad X300 running Linux Mint. Why? Well, I'm waiting for the new Haswell processors from Intel, I donated my MacBook Air to charity (I still have a MacBook Pro), I need something light for carrying around, 13" machines are much easier to code on airplanes, and I had the X300 laying around.


  • My First Clojure Workflow

    June 4, 2013

    Clojure is the REPL

    So, I was working with Clojure and… well… it seemed to be the worst combination of slow start-up and slow compilation… and it's supposed to be a dynamic language. So, I pinged the very nice people in the Clojure community and they pointed me in the right direction.

    Basically, everything you do in Clojure, you do in the REPL. The REPL is a live coding environment.

    Test First

    I had been writing code and tests and then checking on my tests with: lein test But that was taking way too long (20 seconds per cycle on my MacBook Pro).

    So, how does one test first in Clojure?

    First, one starts the REPL:

    lein repl
    

    Then one changes the namespace to a test package:


  • Some tips for dealing with dpp

    May 29, 2013

    Some reminders

    Lots of weird people coming out of the woodwork this week.

    I'm writing this post generically, but also as something to send to people who think that because I do stuff, I'm going to do stuff for them if they pester me about it.

    So…

    Please don't send me private email about Lift or Lift-related bugs or Lift support or Lift scheduling or anything like that. I'm not Lift.


  • My first Clojure macro

    May 26, 2013

    Got my feet wet with Clojure

    I started hardcode coding on Project Plugh. I'm working on moving a bunch of Lift concepts over to Clojure as I build Lift's comet facilities in Clojure so I can stream data to the browser.

    Background… PartialFunction

    In Scala, there's a PartialFunction

    The key take-away for PartialFunctions is "... is a unary function where the domain does not necessarily include all values of type A."

    The ability to test a PartialFunction to see if the domain includes a particular value is very helpful. pf.isDefinedAt(x) allows testing to see if the function is defined at a given value of x.

    But a PartialFunction is a subclass of Function, so PartialFunctions can be applied:


  • Project Plugh: Open Source Log Analysis

    May 21, 2013

    A hollow voice said "plugh"

    Short Answer

    I'm building an open source log manage/analysis tool that will offer folks what Splunk offers folks, except it's open. https://github.com/projectplugh

    Longer answer

    I'm using a combination of "right for the task" open source things to build a product that is long overdue. Specifically


  • Why I funded the @shoreditchworks Village Hall

    May 21, 2013

    Funding the common good… for my own benefit

    I funded the Shoreditch Works Village Hall project on Kickstarter for £750. That's a lot of money given that I live in San Francisco. Why?


  • @dwolla working to make it right

    April 19, 2013

    The folks at Dwolla are working hard to make things right

    Since I posted my particularly unpleasant experiences with Dwolla the folks at Dwolla have stepped up to make things right.

    They have reversed substantially all the transactions into my business account that they locked for suspicious activities. All but $500 is now available in other accounts that are not locked.

    They are working with my business partner to get the funds from their Dwolla account back into their bank account.

    Other companies

    I've been approached by a number of other vendors including Verify Valid about using their services.


  • @dwolla: a bunch of clowns not to be trusted

    April 18, 2013

    Updated status: Dwolla is stepping up to make things right

    So, I tried Dwolla

    I actually tried it a year+ ago to send money to a friend. It's fast, inexpensive, and seemingly easy.

    I'm working on a project and it seemed like a hassle to have the folks paying me send a check that I would then have to deposit in my bank account. The whole mailing, receiving, going to the bank and depositing process takes about 10 days and consumes non-trivial amounts of time.

    Doing things electronically seemed like the right answer… using ACH as a mechanism for moving money around at $0.25 per transaction on its face seems too good to be true.

    Turns out it is.

    Business Account


  • Angular JS, Lift 3, and Streaming Promises

    April 18, 2013

    Simple AngularJS

    Lift has always had the best server-push technology around. Why? It's secure, it deals well with spotty connections, it respects the limited number of HTTP connections between the client and the server, and so much more.

    Angular JS is a very exciting UI package that makes building dynamic single-page applications a snap because there's a 2-way binding between the model and the UI so that changes in the model are correctly reflected in the UI. And the whole binding is declarative so that once you use a model item in the UI, that part of the UI is always updated when the model changes.

    Round Trips


  • Bad Experience with Karma hotspot

    March 31, 2013

    Is my experience unique?

    I bought a Karma WiFi HotSpot. I work remotely a fair amount and having WiFi access anywhere is useful. The price is right at $14/GB of data without any expiration date.

    I got my Karma device on Friday. I immediately opened the box, fired it up and tried to connect. It took about 10 minutes for the Karma to connect up and get ready to connect to my MacBook Pro.

    The connection speed was horrid (1M down and 70K up). This compares to my cell phone running on TMobile which was getting 10M down and 4M up. Okay, maybe I was in a bad coverage area at 22nd and Geary in San Francisco.


  • Code of Conduct

    March 25, 2013

    Code of Conduct for Communities

    Lately, there's been a ton of discussion of seriously awful behavior by some dudes at PyCon. People have been fired. People have gotten upset. And there are now some "thou shalt not" style code of conduct things floating around for conferences.

    I'm a big fan of defining expected behavior. This applies to most aspects of my life. I work hard to tell my dog and my kids what I expect of them... how they can succeed. User stories are excellent definitions of how developers can succeed: do this thing and you'll make the user happy.

    I think that codes of conduct should be positive definitions of expected behavior rather than a series of prohibitions.


  • Team Mind Melds… Very Important

    March 18, 2013

    Back when we compiled to machine code and links took 45 minutes...

    Back in the day, I ran a small spreadsheet company, Athena Design that took on the big spreadsheet companies (Lotus, Informix) and won.

    I had a spectacularly stellar team. At the time I just thought the folks working at Athena were bright… but in retrospect it's amazing what a collection of talent with had.