Wednesday, July 30, 2014

link: Functional Programming in companies

There's a lot of interest and mystery about Functional Programming.  This is one of an ongoing series of posts about it.

In the linked post, author Duncan McGreggor estimates only 10-20% of US tech companies have major investments in Functional Programming. Notable abstainer: Google. Why?

New programmers with little experience to defend find it easier to learn new methodologies. Senior engineers will pick up new tech, like Functional Programming, if they're 1) research/academic oriented, 2) easily bored, or 3) have little competitive drive.  FP seems to be most adopted by smaller companies, because it's easier to hire/train up a critical mass of experts in the subject.

I've typed "Functional Programming and other new technologies", although FP is as old as Lisp -- 1950s!  There are theories why Lisp didn't take over the world, but that's another blog post.

Electric Duncan: The Future of Programming - Adopting The Functional Paradigm?

Friday, July 25, 2014

a thought on deployments

An interesting topic is deployments.  When I was CTO at Enventum we used Fabric (ie: "run ssh commands"), but it was incredibly brittle. At another company we had a mountain of Chef. Alas no one who understood it wanted to help others actually re-use it to accelerate development.  I've done some pure Chef, and a bit of Puppet.  All of these technologies sound useful and powerful, but I've found they're completely outside the domain of the developer. There's no "re-use" of modules or concepts back and forth between the app and the installer. Not even languages.

This "stark division" might be inevitable, but here's a conceptual leap: developer system as part of a continuum. Right now source is edited in several dimensions, one being version control history. Perhaps another "runtime dimension" is audience. Like we do branches and pushes in Git, we can do promotions from dev to CI to staging to limited production to full production.  Developer's server is just a production server with a different set of feature flags.

Hmm. Requires more coffee.


Three Deployment Styles:

1) edit/run things on each server -- Fabric
2) system is a graph of properties, edit/adjust files/services to comply -- Chef/Puppet
3) each server booted from readonly "Golden Image", never update in place -- Immutable Infrastructure

Thursday, July 24, 2014

Norris Numbers: adding code is great, until...

Programmers get stuck at a certain amount of complexity. Newbies can write brute-force programs up to 2,000 lines or so, but beyond that it's too hard to manage. You can't keep everything in your brain. Experienced programmers have other tools -- abstraction -- to get up to 20,000 lines in a single project.

There are other complexity walls: at 200K, then 2M. There might be a hard limit of any project at 3M lines: "the growth rate seems to slow down significantly no matter how many people (hundreds) or years are involved (decades). "

Norris Numbers

The author also clearly highlights the problem of Every Line is a Potential Bug -- go read!

Wednesday, July 23, 2014

class: Django QuerySets and Functional Programming #2

The class last night at TrueCar was a lot of fun!  Lots of friendly people.
Here the the slides, in web and raw Markdown format:

Django QuerySets and Functional Programming #2 slides -- source

Thanks so much to Chris at TrueCar for asking me to talk. Thanks to Chuck for the review, Goz for the feedback, and An-lon for the support. Thanks to all of you for coming out!  I look forward to the next talk.

Here's the view from the office just off the Pacific Ocean(!) in Santa Monica:

There was a good attendance:

Not pictured: cute pug dog who snored at my presentation.  I like to have my participants feel comfortable ;)

Monday, July 21, 2014

talk TOMORROW in Santa Monica

I'm proud to be the inaugural speaker at the Professional Python (ProPy|LA) group!  We'll be meeting Tuesday 7/22/2014 in Santa Monica at TrueCar.  Food and drink will be served.

The talk is "Django QuerySets and Functional Programming."  A version of this talk was given before, but it has been expanded for tomorrow's session. The ProPy group is a higher-level group, so this talk will go right to the good stuff: benefits of Functional Programming, FP with iterators in Python, and using this view to clearly understand Django QuerySets.

Hope to see you there!

event: Let's meetup and talk Python! ~ ProPyLA

- john