Keith Mancuso

Partner at Familiar helping non-profits & small businesses manage their technology

Working on a Platform

There comes a time in any modern programmers life where they have to decide on a platform, they may not commit to just one, but if you're going to get good, you can't use them all.

Now when I say platform I mean more than just a programming language, I mean a full software stack. Here at Familiar that stack has evolved over time but seems to be settling towards Craft for regular websites, and then for more complex web applications.

Overall I couldn't be happier with both of these platforms, they do what platforms are supposed to do which is provide a framework and a set of best practices to make building something easier, faster and more reliable.

The problem we keep running into is pushing at the edges of what the framework was built to do. We ran into this all the time when we would try to build more complicated web apps on top of ExpressionEngine, and moving more of that functionality to salesforce has really opened up the possibilities and made a lot of things easier.

Still, there are some applications that push even farther and are outgrowing what even salesforce is ment to do. This would be fine if it only happened once in a while but its feeling more and more like a regular thing as clients requests get more and more complicated.

So the question then becomes when do we move onto a more advanced framework. A more advanced framework allows for more advanced functionality but switching means giving up all the platform specific expertise we've developed to start over with a new set of constraints.

The trouble is, every platform/system/language/tool has its limitations and its tradeoffs and constantly switching is a sure fire recipe for burnout.

So what are we going to do...

The closest I've come to an answer is Angular.js. The beauty of angular is that its a platform that can be used to build systems on its own, OR integrate with the two existing platforms we are committing to Craft and Because its all javascript it doesn't care what the server side language is (or if there even is one) it just reads and writes json.

It feels like the future, but its early days and there are plenty of competitors (Ember.js/Backbone/Knockout.js etc) and its not clear the market will sustain all of these options. Some will surely "Knockout" the others, but hopefully theres enough shared between them that moving in this direction at all will be a win.

Even if the specific horse we bet on doesn't win the race, at least we're watching the right race.

Moving away from MediaTemple

So as most of you have heard by now Godaddy has purchased MediaTemple. So needless to say I've used this to kickstart my search for a new webhost here at Familiar.

First on my list for a long time has been DigitalOcean. The prices are great and most importantly all of there servers are SSD based. On top of that the company, and their server infrastructure, is based here in NYC. (They also have servers San Francisco and Amsterdam). Since most of our clients are local having the servers here in the city is ideal.

So far everything's hitting all the right notes. The only downside is that servers come totally naked, you have to install everything from the OS to the web server and more. Luckly the internet is filled with great tutorials for setting things up on digital ocean, including a Craft specific tutorial by Luke Holder. Using this video i was able to get a basic LAMP setup and a fresh craft install up and running pretty quickly.

Feeling adventurous I decided to try and see if i could Nginx running instead of apache, and luckly Digital Ocean has a great walkthrough that combined with the config settings that Kenzie Campbell shared made it pretty painless and Walla! here we are, up and running on Digital Ocean and Nginx!

Now that i have this setup working one of the great features of Digital Oceans are their snapshots which let me create a full server backup of this site which i can use as a starting point for any new servers i setup, meaning that all the work setting up LEMP and craft would be already done and ready to roll.

So now the big questions, hows it performing?

On mediatemple I was taking between 300ms and 400ms just to start serving the html and full page loads were taking just under 1second (900ms), which is very respectible. Now that im over on digital ocean with NGINX im seeing html serving after just 140 ms and the full page is ready in around 650ms! This is with cloudflare still connected to mediatemple's setup.

Not bad for the exact same codebase!

We havent yet decided to move all our client sites over to DigitalOcean, but its starting to look like the smart move.

Discover Devtools

I thought I already knew everything there was to know about Chrome devtools but boy was I wrong.  

The first three levels cover the basics which you may already know but once you get to level 4 things start to get a lot more interesting with information on javascript debugging and improving performance.

If your a web developer do yourself a favor and spend an hour or so with this great and most importantly FREE course from codeschool.  

I finished the whole thing in about an hour and a half and it was time well spent.

Designing for yourself

It's been said a million times before but its worth saying again. Designing and building something for yourself is way way way way harder than doing it for someone else.

One more blog

So here I am. Starting yet another  blog.  Maybe the trick is to simplify, to not over do it.

Maybe if I don't worry about what it is, it could become what I really need it to be.