02 · 08

Lift Basics and Broad Shoulders

The Lift community is amazing.  It's a collection of more than 3,000 people building amazing apps with Lift.

The Lift committer group is amazing.  It's a collection of more than 50 people who put time and effort into writing the code in Lift and more importantly into creating an excellent, supportive environment in the Lift community.

Between the community and the committers, the shoulders that support Lift are indeed very broad and very strong.

I am honored and excited that Franz Bettag and I will be helping to broaden the knowledge, involvement and support of Lift by offering a 1 day Lift Basics course at Skills Matter in London on March 15th.  This will offer Franz the training necessary to teach "David Pollak's Lift Basics" to audiences in Germany (in German) as well as other places.

More importantly, it's yet another data point that demonstrates the amazingly broad shoulders that support Lift.  And stay tuned... there will be more announcements that underscore just how broad and strong the support for Lift is.
02 · 07

Institutional knowledge is gold

Nick Cronin wrote a very interesting piece on how technology enhances labor mobility: http://techcrunch.com/2012/02/04/labor-efficiency-the-next-great-internet-dis...

I have a different perspective on labor mobility... or more precisely, wether I as an employer would desire fungible talent. I don't.

Putting aside the functional skills that a given person has, there are important social skills that take time to assimilate. Getting communications and interactions and understanding right takes a fair number of interactions. It's not just something that happens instantly (okay, sometimes you find someone who "speaks your language", but that's not the norm, it's a glorious, but rare, event.) It takes time to cultivate a shared language, a shared set of norms, a shared set of expectations, and only then, can someone work best for a given organization.

The requirements for shared language (my shorthand for the broader set of social and cultural understandings) is necessary for a worker to work out well within an organization. For example, there are some people who won't show their code until, in their minds, it's perfect. Those people may thrive in one organization but utterly fail in another. This is also true of people that code incrementally (lemme toss this out, get some feedback, and try again.) In both cases (and granted these are extremes), different organizations will do better or worse with each type of developer.

But, you say, we can settle those kinds of things in an interview.

No, no you can't. Most organizations use similar words for describing their expectations and norms. Lots and lots of organizations look for "Rock Stars" and "Ninjas" and are "Agile" and the like. Yet, those words mean different things. I've seen companies that have 45 minute "stand up" meetings where the director of engineering gives out daily assignments. I've seen organizations that advertise for "Rock Star Coders" and are frightened and institutionally reject folks that I consider merely good coders because they are so much better than the existing pool of developers that hiring them would cause more friction than the value of the additional good code. It's only in the exploration of the relationship that the parties can come to learn about each other and determine if they have a shared language.

Yes, you say, that's all good and fine for "knowledge workers" but what about the replaceable humans who sling hammers or assemble cars or take care of our lawns, etc.

The vast majority of work that humans do requires judgment and understanding priorities and balancing those priorities. The folks flipping burgers at In 'n' Out make lots of judgments. The folks at McDonalds try to remove as many judgments as they can and they will do best hiring people who do not thrive on making decisions. I'm betting there's not a lot of cross-trading between folks who are successful and McDonalds and In 'n' Out.

In fact, I think one of the things that cost Detroit its leadership in the 1970s (leadership that it has yet to regain) is the view that the assembly line workers were fungible, not smart, not valuable. The mentality led to management/labor friction, anger, waste heat, and ultimately lost leadership. If GM and Ford and Chrysler has viewed every member of the company and the supply chain as a valuable contributor to the creation and delivery of products that make buyers happy, we would live in a different world. But I digress.

Yes, sometimes you want to have external professionals rather than have them on your staff. Lawyers are one perfect example. Two of many favorite corporate lawyers are Jon Gavenman http://www.cooley.com/jgavenman and John Hession http://www.cooley.com/jhession. I've interacted with a lot of transactional guys in my life, yet these two stand out as working well for me. That doesn't mean they would work out well for everyone. They each speak the same language that I do, but that doesn't mean they speak the same language as everyone. Neither of these guys are interchangeable with any other lawyer.

But the bottom line for me is that institutional knowledge is gold. It's the core value of any company. That institutional knowledge is not simply knowing the problem space, but also the institutional knowledge of the values of the company, what the priorities of the company are, and how the company deals with adversity. The only way to foster that institutional gold is through long term relationships and the idea that any worker, any member of the team is fungible reduces the value of the business.

02 · 03

The transition of scala-tools.org

It's been a little slow in coming (those ship dates always slip), but the Sonatype folks will be taking over the hosting of Scala related artifacts from scala-tools.org.

Currently, Sonatype is rsyncing the entire scala-tools.org repository so that anything published to scala-tools.org will be mirrored up to Sonatype.

We have transferred the LDAP information for all the scala-tools.org such that you will be able to publish directly to Sontaype's servers.

In the next week or so, we will be pointing the DNS for nexus.scala-tools.org and other domains over to Sonatype's servers such that existing projects will be communicating directly with Sonatype's servers (we were hoping to do that before the announcement, but, well... things happen.)  We will also be 301-ing all incoming requests for artifacts to Sonatype's servers so that existing projects with existing configuration files will be getting the latest and greatest from Sonatype's servers.

Between now and mid-June, scala-tools.org will point to Sonatype's servers.  Once the redirects are in place and periodically thereafter, I will be making reminder posts to point configuration files to Sonatype's servers.  I will also send out periodic emails to the folks who have been publishing to scala-tools.org to update their configuration files to point to Sonatype's servers and to remind their communities to update configuration files to Sonatype's servers.

In mid-June, scala-tools.org will no longer redirect to Sonatype's servers.

I'd like to thank the Sonatype folks for being so helpful about transitioning the repository from scala-tools.org to the Sonatype servers.  I'd also like the thank Derek who came up for air and helped out with the LDAP stuff.

More information and technical specifics as they become available.
02 · 03

DPP's Lift Office Hours Monday February 6th

David Pollak will be available for Lift Office Hours to answer Lift-related questions either in person or on Skype from 11am to 3pm Pacific Standard Time.

Physical Location:
541 8th Street
San Francisco, CA 94121

Skype: lift-office-hours

Drop on by, give a call, I'll be glad to help!

Thanks,

David
01 · 24

Why Visi is written in Haskell

Visi and Visi.Pro started life based on ideas I had when I was working on Apache ESME.  One of the key features of ESME, a feature I wrote in a couple of hours 'cause I was bored, was "Actions".  Actions allowed a user to declare what to do with messages that arrived in their timeline.  You could filter messages (only show 20% of the messages from my overly chatty co-worker).  You could email messages (if it's an @ message to me and it's from my boss, email it and text me.)  You could cause arbitrary actions by generating HTTP POST requests to external services based on certain criteria (post to Twitter all messages in my timeline with the #Lift tag.)  Actions made ESME different because it allowed a user (not a programmer) to define what to do as stuff flowed into their timeline.  ESME was an SAP ecosystem project and we imagined that items in your timeline would include events generated from ERP systems: shipping exceptions, sales events (closed an order, received payment, etc.) and using Actions to manage the events seemed like a really cool idea.

ESME was and is based on Scala and Lift.  I do not think ESME could have been written in such a short time with such a small team back in 2008 with any other technology.

I wanted to start an exploratory project within the then incubating ESME project and see what we could do to create an event based system and event-based grammar for defining complex systems.  The Apache overlords where not happy with the exploration or the fact that I wanted to explore using Git on GitHub, so I shelved the project, but not the idea.

For the next couple of years, the idea of an "event processor in the cloud that could be managed by anyone" rattled around in my head.  I've got pages in notebooks here and there about how the system could work, what the revenue models were, etc.  In June 2010, I wrote a complete business plan for a cloud-based event management system.  Having revenue from users to pay for the service plus a cut of revenue from data feed providers (a model influenced by Apple's App Store) seemed to make sense.  At that time, I envisioned the system was built on Lift and Scala.

I got side-tracked in the summer of 2010 assembling a team and writing a business plan, etc. and I put the cloud event thing on the shelf.  I ultimately did not join the team that I assembled and by the time 2011 rolled around, I was up to my eye-balls in family stuff.  My wife went away to run a trial for 4 months (she won $310M for her client) and my mom passed away.  Sometime in the Spring on 2011, I bought an iPad for the kids so they could watch Sponge Bob and other stuff on the flights down to visit my wife in Southern California.

The iPad changed my world-view on computing devices.  The iPad is, in my mind, the first material change in the way people use computing devices since the Apple ][.  Everything between the Apple ][ (the IBM PC, the Mac, laptops, netbooks, etc.) were incremental advanced on the technology that preceded them.  But the iPad was different.

It was in May, after I had spent a week with an iPad and no other computing device, that I realized that PCs and the Web were legacy.  This isn't "disappear tomorrow" legacy.  This is "in 15 years, most people will not starting new web app project" legacy.  Just like client-server is legacy, but there's still plenty of Windows-specific client-server code being written.

It was in May that I added "and a client component that runs on the iPad and iPhone" to my "event processor in the cloud" idea.  Having a client component, a beautiful, rich, interactive, tactile, wondrous client component because the driving force in my thinking.  Chatting with folks like my friend Bill Fernandez (Bill also did some amazing work on ESME) about the idea drove my thinking to making a programming system like HyperCard that was useable by lots of people.  Given my spreadsheet background, especially my real-time spreadsheet background, gave rise to ideas around how to imagine a language for describing event processing and user interactions and such.  Those ideas crystalized into Visi and Visi.Pro.

One of the gating factors with iOS, the operating system on iPad and iPhone, is that there's no JVM or anything JVM-like.  There's only native code (well, there's LLVM as well, but the Scala-LLVM project is not that far along.)  So my choices of language for the project were reduced to things that compiled to native code.  I no longer have interest in manually managing memory and I like functional programming... it's how my mind has been re-wired.  Plus, I'm a statically typed kind of guy... that meant that my language choices boiled down to OCaml and Haskell.  Both had ARM cross-compilers and both were mature languages with mature ecosystems.  Sadly, because Scala is still the language I'm most comfortable with and the language I'm most productive in, I could not use Scala for Visi.

OCaml is arguably the easier choice for Visi.  It's conceptually a lot closer to Scala than is Haskell.  The iOS cross-compilation tools for OCaml are much more mature than those for Haskell (although Stephen Blackheath's GHC-iPhone is coming along very nicely.)  Interacting between OCaml and ObjC is much easier than any Haskell/ObjC bridge.  Unfortunately, as many times as I try and as much excellent encouragement I get from Paul Snively, I just can't get into OCaml.  I don't know why and it's purely subjective and it's probably something broken in my brain... but OCaml always feels like an ill-fitting scratchy wool sweater to me.  This is not meant as a criticism of OCaml, but I don't like eating brussel sprouts either... it's just a taste thing.

So, that left Haskell for me.  Haskell has some really helpful stuff.  The Haskell parser-combinator library is excellent and mature... helpful for writing a language.  Haskell's runtime is amazing in the way that computations (threads) can be suspended nearly costlessly.  This makes as lot of the stuff in Visi easy to write... basically some of the computation logic (including laziness) is already built into Haskell, so rather than writing a lot of the pieces myself, I get them for free.  The cost with Haskell is that pure, lazy, monadic is hard and slow and long-slogging (although it's proved remarkably solid.)

I revisited the Haskell vs. OCaml decision last week because Paul kindly spent a lot of time discussing the strengths of each language/runtime.  But at the end of the day, Haskell keeps proving itself the right choice for Visi.

I hope that going through the history of Visi and Visi.Pro and the choices I made in the system and in the tools will help folks understand why Haskell (okay, there's no compelling Haskell vs. OCaml argument that I've made) and more importantly why the choice of platform dictated a language choice other than the language I am most comfortable in: Scala.  Put another way, this is the first time since I wrote Mesa in Objective-C and C++ that I was not serially monogamous with a language. ;-)
01 · 21

No, I don't owe you scala-tools.org

Apparently I'm a jerk for shutting down scala-tools.org.  Apparently, I'm an egomaniac for deciding not to sell the domain for "more than $0" even though nobody has made a legitimate offer for the domain. [Note: James Iry asked the question on Twitter.  It was a perfectly reasonable question that I answered as best I could in 140 characters. I answered him and there were subsequent posts from others that personally attacked me for not doing things the way they think I should.  Posts from others who attacked me for talking about using scala-tools.org to mourn the losses that I see in Scala-land.  This post is *NOT* aimed at James.  I like James.  I respect James.  James represents some of the very best of the Scala community and he was one of the folks who energized me about Scala and gave me hope that Scala could be a "local maximum of research and practical in computer langages."  I am deeply sorry that James read this post as something about him.]

I plan to transition the scala-tools.org accounts and such to another provider.  These plans will be rolled out on Tuesday.  There will be ongoing support for a Nexus/Maven repository for the Scala community.  The community will continue to have a place to share components.

What I do not have an interest in is selling or transferring the scala-tools.org domain.  There is not a way to set a reasonable price for the domain.  The domain has value because of the brand built over the last 3+ years of its existence.  How do you price that?  How do you price the value that the domain has brought to the Scala community as a whole?  Whatever I think that monetary value is, it's likely a few orders of magnitude more than others think the value is.  It's not even worth, in my opinion, trying to price it.

So, what value does scala-tools.org have to me if not a monetary value?  That's up to me.  Sorry, to say, but it's my domain.  It's something that I've paid for, worked on, recruited others to work on.  Yes, there's a conversation to be had with DavidB and Derek for their work over the years.  There's less of a conversation to be had with Josh because, while he helped out, he also dropped to ball on the Nexus skills transfer to Indrajit and Lukas which precipitated my decision to close scala-tools after Lukas expressed extreme frustration with being ignored.  I also owe some obligation to Indrajit and Lukas for stepping up when I put out the call for help a few months ago.

To the rest of the community, I owe a reasonable transition to a new hosting solution and that reasonable transition will happen.

But for those of you who have some notion that my contribution to the community over the years creates an obligation to continue to contribute, to keep giving, to keep doing unpaid, community service for you, you're not living in reality.  The fact that I have given my time and my effort and my cheer leading and my coding and my writing and my servers and time I could be spending with my family (like the first day of my kids' first spring break that I missed because I had to ward off a DoS attack against scala-tools.org and keep the system running) and all of that stuff does not mean I am forever obligated to keep giving my time, my money, my efforts, and the other stuff that I've given in the past.

My life goal is to leave things better than I found them.  I feel a fierce obligation to that who have relied on me, and thus when I make transitions, I try to make them gracefully so that there's plenty of time for others to make those transitions.

When I made the decision in late May to do my next startup, http://visi.pro, in a language other than Scala and on a platform other than the JVM, I made sure to have a graceful transition of leadership in the Lift community and I continue to support Lift and the Lift community because I owe an obligation to those who adopted Lift.  

When it became clear that Josh and Derek were not going be able to continue to support scala-tools.org, I put out a call for more volunteers.  Given that I was phasing out of the Scala community, I could have just shut scala-tools.org down then.  But I asked for help and worked on a transition.

But now, now when it's clear that it's time to shut scala-tools.org down, there's plenty of "you should do this," "you should do that."  Well guys, where were you when I put out the call for help a few months ago?  What has changed that would make you capable of making scala-tools.org work now?

More importantly, what gives you the right to insult me personally for making a choice about something I own and something I contributed to mightily?  If you wonder why I'm sad about the state of the Scala community, just read my blog, watch my Scala Lift Off London keynote.

My way of working through my sadness about opportunities lost, my way of mourning these losses will be expressed on scala-tools.org.  I will use something I had a mighty hand in building to express sadness about what could have been.

Will this cause some inconvenience?  Maybe.  Will this raise awareness about the issues holding Scala adoption back in a way that I've been unable to do in other ways?  Maybe.  Is this my choice?  Yes.  Do I owe you more than a smooth transition to another domain and another provider?  No.  Do I owe you scala-tools.org?  No.
01 · 10

Sweet, Simple Patterns

I continue to love subletting office space from the Stackmob folks.

Coming into work each morning, I get a fresh bowl of water for Archer and make a pot of green tea for me.

I answer email, checkout on Twitter links, and listen to music.  Sometimes a few of the Stackmob folks are in the office.  Sometimes, I’m all alone.

The Stackmob engineering group and other tenants wander into the office over the course of the morning and there’s a hum of energy in the geek corner of the office.  Sometimes people come over and say “Hi” to me or Archer or both.

Around 11am, Archer reminds me that he needs a walk.  We go around the neighborhood which is rich in smells… the kind of smells that are interesting to dogs, but not to humans.

Around noon, I wander out in search of food.  The food situation in the neighborhood is not optimal, but there’s generally a good food truck about a block away.  Today, it was Nom Nom.  I generally bring lunch back to the office and sometimes chat with folks while I’m eating.

The afternoon is a time of focus on work. I’ve generally settled in my mind what I need to get done: some coding, some writing, some thinking… and I work through it.

Around 4:45, it’s time to clean my tea pot, tea cup, water bottle, and Archer’s water bowl.  Then it’s time to head back home and settle into the pattern of being part of a family.

I continue to be super-stoked that I’m in the office space that I’m in.  The vibe here is sweet and simple and oriented to getting things done.  Nobody’s hair is on fire.  There are no emergencies.  It’s just a place where good work happens and everyone smiles.  I love this pattern.

12 · 31

Or maybe they're just being quiet

Are there other intelligent species out there?  Some people think that we are the most advanced civilization in the galaxy.

I think we're simply being nieve.  Think about it.  If you're an advanced civilization, do you want to advertise?  Do you want to send out radio signals that others can decode?

Or, perhaps, you want to be quiet.  Why?

Well, if there are more advanced civilizations out there and they are aggressive, do you want to invite them to come visit you?  If the Native American's knew what the Europeans were going to do to them, would the Indians have helped the Mayflower settlers survive?

Now, think about cryptography.  The best crypto algorithms make meaningful signals appear like white noise.  And we're just 35 years into the likes of RSA cryptography.  Imagine the kind of cryptography we'll have in 50 or 100 or 500 years.  All our communications will appear as white noise to any listener.

Perhaps every civilization goes through the "hey, we're here... come visit us" phase when they have sub-light speed communications technology.  Maybe some of them get welcome visits.  Perhaps others get unwelcome visits.  But I'm betting by the time civilizations get supra-light speed communications and transportation technology, they stop advertising.  They use exclusively encrypted communications technology.  Those folks are not going to be visible to us.  Yeah, maybe we'll get some civilization's version of I love Lucy in a radio spectrum.  But I'll bet by 2050, every form of communications on earth will appear as white noise to an outside observer.

So, in order to get a more realistic probability that we'd observe another intelligent civilization with SETI, we should be estimating that radio signals will only be coming from a civilization for about 150 years and then all the radio signals will appear as white noise.  So, even if there are 10M civilizations in our galaxy and those civilizations have existed over 1B years, but they only broadcast non-white-noise signals for 150 years, what's the probability of us hearing one of their signals.  That number is pretty low.

I believe there are a fair number of advanced civilizations in our galaxy, but I don't think they are hanging out a "welcome" sign.
12 · 21

The whole economic downturn is Groundhog Day

My mom passed away this year and in March, I went back to Providence to clean out her house.

I shipped back some boxes of stuff including a paper I wrote on the Great Depression.  I wrote this paper when I was in 8th grade.  I wrote this paper when I was 14 years old.  I wrote this paper in 1978... 34 years ago.  I wrote this paper just 2 years before I started actively supporting Ronald Reagan in his Presidential bid.  This paper was not a work of greatness, but simply a regurgitation of settled doctrine written by a Libertarian-leaning conservative teenager.

A couple of process notes.  I wrote the report on a manual typewriter.  It was written on onion skin paper.  It was my graduation thesis from middle school.  I did the front cover artwork myself... and quite frankly that artwork could be stamped with #OWS and it would nearly perfectly describe the national and world situation today.

Reading the report gave me the chills.  We are experiencing the very same economic and social issues today that we, the United States and the world, did back in 1930s.  We are hearing the very same arguments about what to do as we did in the 1930s.  I'll go over the few differences that I can identify in the 2007 vs. 1929:
  • The government stepped in in 2007 and kept the Lehman collapse from totally destroying the economy.  Struggling with 15% effective unemployment does not create as much political will as does dealing with 25% effective unemployment, especially when there are social programs to mitigate some of the issues.  Because far fewer people are dying of starvation, it's harder of overcome the reluctance to do the simple and correct thing: massive government spending on infrastructure.
  • Obama came into office earlier in the pain cycle than did FDR and Obama has significantly less spine than FDR.  So, Obama has much less strength and much less political will do make things happen the right way.
  • There was not a farm price collapse during the latest cycle.
Things that are the same:
  • Increasing income disparity that led to lack of money to consume and ultimately a consumption-led collapse.
  • Real estate speculation including speculation in Florida.
  • Demonstrations with 30,000+ people in New York that were broken up by police in riot gear.
  • The impending European Economic Union collapse.
  • Quotes like: "We can't squander ourselves into prosperity."
So, in the 1930s, we had never faced an economic problem like the Great Depression.  We solved the Great Depression with massive government spending and a post World War II commitment to the middle class which created a huge pile of job creators called well educated consumers.

I had the pleasure of meeting Elizabeth Warren a few weeks ago.  Somebody in the audience asked her why the banks, folks with underwater mortgages, and the government couldn't work together to find a solution that was not the current "lose-lose" situation of foreclosures which cost the banks lots of money and drive down real estate values and take away people's homes.  Her answer was, "It's like when there's a fumble in football.  Everybody piles on the ball and the referee has to pull people off the pile and determine who has the ball.  While nobody likes being in the pile, finding out that your team lost the ball is worse, so people stay on the pile for as long as they can."

I think the current economic situation generally fits the same paradigm.  Everybody is afraid of making it worse by making the major social and economic changes that will create jobs in the near term, protect and grow the middle class of consumer/job creators, restore a strong infrastructure to the United States which will make every business in the US more competitive, and restore faith in dealing with financial institutions and the government.  It's a big mess.  It's a nasty scrum.  We know how to fix it, but there's so much entrenched fear that the changes will cause short term pain to certain groups (the 1%), that there's not enough political will to make the changes.

So, please read my 34 year old report.  Please ask yourself, "did a 14 year old David Pollak presage our current economic situation or are we doing the Groundhog Day thing?"  And then take the appropriate action that will set us on the same path that FDR set us on in 1933.
12 · 20

The joy of watching skilled professionals

When the whole software craftsmanship thing started a few years ago, I kinda poo-pooed the idea of developers as crafts-people.  I rather thought of software engineers as, well, engineers.  But over the years, I've come to embrace the idea of craftsmanship as a broader concept... one of caring, diligence, maybe a hint of passion, but most of all of pride in the hard work that leads to a job well done.

I am not overly tolerant of folks who don't work hard or do a good job.  Those who have worked for me are chuckling right now, "Not overly tolerant"... bwa hah hah... like "The Arctic is not overly warm."  But I do really enjoy seeing people do an excellent job... a job worthy of a craftsman... I love watching skilled professionals do their thing.

Over the past few months, I've been removed from my comfortable high technology world and thrust into the world of construction.  Sometime during our month-long trip to Europe this summer, the sewer in our house backed up into the ground-floor in-law unit.  We had a house-sitter (thus the sewage), but he did not go into the in-law unit, so the sewage sat there for many weeks.  The mitigation firm removed the sewage from the unit along with most of the carpet and some of the dry-wall... leaving us with concrete and studs in the unit.  We embarked on a project to restore the unit as well as making it accessible so that my father-in-law could move in.

For the past few months, I've been dealing with contractors and other kinds of folks in the non-high-tech industry.  It's been a learning experience... and most of what I have learned so far is that construction and building web applications is no different.  But I digress.

One of the "surprises" that our construction folks foisted on us two days before the construction was supposed to begin was that we had to remove all items from the unit rather than their earlier indication that we could use one of the rooms as temporary storage until the work in the garage was complete and then move the items from the temporary storage room into the garage.  We need to trench the garage in order to replace the plumbing so that we never have another sewage backup.  So, the initial idea of music chairs with the stuff we needed to store vanished in a black, greasy puff of "miscommunication."

So, with about 40 hours, we needed to move about 1,000 cu/ft of stuff from the unit into storage.  We needed help.  And, being the Internet research godess that she is, @divaesq found us help.

We contacted Andrei Movers, some guys we found in the Internet, to help box, haul, and pack into storage the pile of stuff we needed to move.  Andrei and his crew were amazingly skilled professionals.  They did an amazing job and it was a joy for me to work with them.

Imagine the grumpiness and grouchiness that hung like a cloud over the 4 tons of stuff we needed to move in 40 hours.  Imagine my crankiness at the construction folks who foisted this fire-drill onto me.  Yeah, it was non-trivial.

Andrei showed up and his crew had a tremendously positive attitude.  "We'll make it happen," he said... and he and his team did.  Any boxing the needed to be done, Andrei and his crew did it efficiently and carefully.  They loaded a U-Haul truck with tons of stuff in such a well planned way that not a single box moved in the truck on the 7 mile drive to the storage locker.  They unloaded the truck into the storage locker with grace and precision.  Yes, there was some back-and-forth about the optimal way to stack the boxes so there would be a strong structure.  It's the same kind of back-and-forth that I hear from excellent developers all the time.

At the end of the night, Andrei made our insurmountable problem just plain go away.  And watching Andrei and interacting with him, I was energized... he made me believe that we could solve the problem and together we did.

I'm writing this post because I always love to see skilled professionals do their thing and watching Andrei and his crew do their thing brought the same kind of joy to me that watching a team of excellent software guys does.  And I wanted to share.

I am also writing this post as a way of letting folks in the Bay Area know about an excellent team and as a way to drive business to a team that can get it done and get it done right.  So, next time you need some moving or hauling or other stuff like that, please call Andrei Movers at 510-750-9255.  And I hope you get the same pleasure at seeing these skilled professionals do their job as I did.
David Pollak

I'm a geek... always have been. I'm CEO of Visi.Pro and commit on the Lift Web Framework project. I wrote Beginning Scala. Done lots of other geeky things in my life. I'm also a dad. I live in San Francisco.

About

David Pollak's thoughts about coding, process and projects