Bonfyre

I’ve left the freelancing world and have been working at Bonfyre for the past year. They’re a great start-up doing some interesting things in employee engagement and HR intelligence data.

They’re hiring!

Checkout their career site if you are looking to work at an awesome company.

https://bonfyreapp.com/careers/

Current Toolset

A lot of people are curious about what tools I used to build sites and applications, here’s my list:

  • Sublime Text (with the Phoenix theme in dark green) for small or personal projects.
  • IntelliJ for large projects.
  • Chrome Dev Tools for debugging.
  • Sass with Bourbon and Neat for CSS and responsive design.
  • jQuery, Lo-dash, Ractive.js for client-side Javascripting, though I’m trying to minimize my use of jQuery and just work with the raw DOM. Hard to live without $.ajax() though.
  • Angular.js for large client-side apps.
  • Node.js and Express for building APIs.
  • Gulp, Babel, and BrowserSync, for creating builds and testing.
  • WordPress for CMS development. I don’t do a whole lot with PHP these days, but WordPress is still hard to beat. It is a big target for hackers to be sure, so you need to always be on top of updates and security (as you should with anything, really) but it has an incredible community and ecosystem. I am keeping an eye on Keystone.js though… it looks promising but is still very early in development.
  • Balsamiq for wireframing.
  • Affinity Designer for web design. I love the folks at Affinity. It’s so nice to not have to deal with slow, bloated, and overpriced Adobe apps since they came on to the scene.

I’m always evaluating new tools and tweaking my workflows, though. If you have any suggestions drop me a line!

 

A Few Months of Freelancing and a Few Things I’ve Learned

I’ve been freelancing for about 8 months now, and while it’s been rocky at times, things are finally starting to stabilize. I was unsure of whether freelancing was right for me, but I’ve taken inventory of my situation I think I can keep this up. Clients are calling, finances are not so anemic. Here’s a few things I have learned in my short time as a freelancer.

Never go it alone. Starting a new business by yourself is not only intimidating, it can be dreadfully lonely too. Try to find a mentor or an advisor. I’ve been lucky to have a colleague who’s not only a sharp technologist, he’s been nice enough to show me the basics of starting out with freelancing. Programmers are odd people – many of us are introverts and like our alone time, but everyone needs a bit of socialization, even if just to bounce ideas off one another or to help out with a problem. Find a co-working space or share an office with some other developers if you can. Work at coffee shops or the library. Get out of the house once in a while before you starting acting like Jack Nicholson in “The Shining”.

There will be challenging times. Your bank account may start drying up. Work will be hard to find. Being prepared both financially and emotionally for lapses in projects is essential. For the first year or so, be extremely frugal. Save every penny until you build up a regular, dependable client base and have some savings. It seems that December is a slow month for everyone I’ve talked to, so prioritize accordingly. That being said, always stay busy, even if you don’t have any paying work on the table. Come up with a side project – something that interests you personally, learn a new technology, and always engage in networking. Online promotion is of course essential, but most of my work has come from word of mouth. Connect with other developers and companies in the area. Attend a few meetups. Nothing beats face-to-face communication.

When you leave the corporate world for the freelance world, you are trading one set of problems for another.  With a full-time gig, you might have to put up with an unqualified co-worker, mismanaged or dull projects, or a long drive-time. With freelancing you are responsible for how you handle clients, how you spend money, how you set up your work environment, what technologies you use, how you pay for health insurance. The difference is you are fully in control of how you address those problems.  That freedom is both terrifying and liberating. Being a bit of a control freak, I love this about freelancing. No excuses – if I sink or swim it is completely on me. There are no middle-men. I can choose what projects interest me. I do what works best for me and my clients. Working closely with a client and getting the satisfaction helping them meet their technology goals makes all these difficulties completely worth it. It’s the kind of joy I’ve rarely had when working for someone else.

The State of Web Design Tools in 2014

Disclaimer: I am not a web designer, though I spent a few years trying to be one, and several more working closely with other web designers. I myself only do web design occasionally. I’m a programmer.

The web is at times a challenging platform to develop applications for. Updating your app server-side and having all your users have instant access to it is awesome of course, but when it comes to the front-end, developers are still trying to use application paradigms on what is essentially a legacy framework for delivering interactive documents. It can be tedious and fragile at times. This is why there is an overwhelming number of tools available now to make up for HTML’s deficiencies and make the process of building client-side apps less painful (Angular, Ember, Backbone, Sass, Web Components). When it comes to web design however, the situation up until now was even worse. The web is a fluid and dynamic platform to design for, but I still see too many designers using Photoshop to build out UIs. It’s hard to really blame them though, as there have been no decent alternatives until very recently. Like client-side development, a slew of new tools have arrived to help designers in the relatively-young discipline of web design be more productive.

I’ve long been an advocate of using Illustrator for designing for the web instead of Photoshop. Sure bitmaps have their place, but the nature of vector graphics and their ease of resizing and reshaping should be the bedrock of a design. Moving a design from mobile-first to desktop becomes much easier with Illustrator. Re-usable styles are a big plus. If anything is to be gotten out of this post, is that Illustrator should be used in favor of Photoshop. Don’t know Illustrator? Learn it, you’ll thank yourself later.

There’s a line of thinking that web design shouldn’t be done in any kind of graphics program to begin with. Static comps wont accurately represent the final product in HTML and CSS. They don’t respond to user input. Worse off, work is duplicated; once you create a design in Photoshop or Illustrator, it must be recreated in the browser. The alternative is to design in the browser. There are a number of front-end frameworks that help build out live prototypes or layouts quickly. I’m a big fan of Foundation and Animate.css. Stylie is neat for crafting CSS animations. Even with these frameworks, the designer needs to be comfortable writing code. There has been a debate as to whether designers should be able to code their own designs, and I’m of the opinion that they should have at least a base understanding of HTML and CSS. Like industrial designers, web designers should be familiar with the ‘materials’ that they are working with. They should know how to shape and mold them; understand what they can and cannot do. Reducing the time between an initial design concept and implementing it in the browser is essential. If anything, it will allow collaboration between the designer and developer to have a little less friction. That being said, it wouldn’t hurt more developers to take the time to understand some foundational design principles and appreciate the often unacknowledged effort that a competent web designer will put forth.

Most exciting to me are the new WYSIWYG applications for web design. These apps are still in their infancy, but they are already miles ahead of the sloppy code produced by drag-n-drop tools in Dreamweaver and Frontpage. Adobe’s Muse shows promise. Webflow looks nice too. Pinegrow lets you bang out Foundation and Bootstrap layouts with ease. Recently I purchased Macaw, probably the most-talked about of these new types of tools, and I’m really enjoying it. The code it produces is fairly clean, though you might have to fix some things once you start to build for production, and you will still need to manually write some CSS for more advanced effects. Even with these caveats however, as a developer I’d much rather be handed some somewhat sloppy HTML and CSS to start with rather than a PSD or AI file. Again, tight deadlines demand a quick turn around from design conception to working prototype. Plus you save yourself from the tedium of creating a complex UI from scratch. Regardless of which of these tools you choose, one of them should have at least some part in your web design workflow whether it be for prototyping or for producing a final design.

Designing for an interactive medium is tough, but I hope that more designers will embrace these new tools and developers will be more willing to collaborate closely with creatives. It’s 2014, we now have some impressive options  that help us break away from flat, static comps. There is no reason not to try them.

Learning Angular.js – A few resources

It’s been a long while since I’ve written anything here, and that’s partly because I’ve been very busy working on a new project for a startup. I’ve been tasked to build a web app that ties in to an API. For this project I decided to use Angular.js for my framework after also considering Backbone and Ember, and I’m glad I did. I love how data binding works in Angular and how it provides real structure to your Javascript app. The biggest downside to Angular is that its documentation is fairly poor, and there are only a few books out on the subject, none of which are very good either. So over the past few months I’ve spent a lot of time going through different Angular tutorials and blog posts to get up to speed. Thankfully there are a lot of them, and they almost make up for the documentation’s deficiencies. Here are the best resources I’ve found:

Angular Fundamentals in 60-ish Minutes by Dan Wahlin

This video has sort-of become the go-to place to start when learning Angular, and for good reason. If you’ve tried to wrap your head around the basics concepts but still can’t grok them, this is the place to start.

Promises in Angular.js, Explained As a Cartoon

So many explanations of promises I’ve seen are ridiculously over-complicated. This one gets to the point and explains things elegantly.

Angular.js: Creating a Service with $http

I find myself coming back to this guy’s blog again and again. He’s got some great stuff. Creating services and understanding $http are important foundations to understand for Angular.

Passing Arguments to $on in Angular.js from $emit and $broadcast

Great rundown of Angular’s pubsub pattern implementation.

Angular.js: $watch, $digest, $apply

Great explanation of how Angular updates the DOM and how to implement it manually through $watch.

Build Custom Directives with Angular.js

Directives are the most powerful feature in Angular, but also the most confusing. This is the best article I’ve seen mapping out how they work.

Angular.js Dynamic Templates

How to tie controllers and directives together to build dynamic UIs.

More Angular.js Magic to Supercharge your Web App

Super awesome post clarifying a number of issues in Angular. I had several ‘a-ha’ moments reading this one.

EDIT:

This site just launched and it looks like a goldmine:

Angular.js Hub

The Future of Work

I’ve been a semi-regular reader of Wired Magazine since 1995. Back in those days, it was an exciting publication. It had a real revolutionary, counter-culture feel and captured the ethos of the hacker mindset. I still have a few old copies in my closet I bring out once in a while to look over and reminisce. It’s fun to see what Wired was doing as far as cutting-edge graphic design for the time, but the most interesting things to me are the predictions of the future from various pundits and how shockingly wrong they often are. I’m always skeptical of anyone who claims to know what the future of technology holds, especially when they start talking about anything beyond five years from now. The problem with predicting the future is that it is based only on what we know now, and the variables are constantly changing. One person I read said that video on the internet will never take off. Another was certain that internet telephony would never happen because packet switching was just not made for that type of communication.

Another common prediction, one that is still repeated today, is that the internet will bring the end of the brick-and-mortar workplace. Soon most of us knowledge workers will be able to work  remotely almost exclusively. One reader wrote in on this topic predicting what might happen to the automobile industry once the number of commuters drops. Of course, many people work remotely already. I did it for more than two years (I hated it). As popular as it seems, we are far from a point where working at home is a common thing.  I’ve always believed that great work is done by teams made up of warm bodies filling seats in the same room, and not a loosely connected network of nomads. Camaraderie and rapport, to me, seem to be undervalued. But for how long?  Marissa Mayer just required everyone at Yahoo to be on site. Companies are bringing software development jobs back from overseas. Is this a new trend? I’m curious to see what the future will hold, but I’m not making any predictions at this point.

UPDATE: There is a pretty interesting discussion about this on Slashdot right now. I seem to be in the minority opinion, but then again, I’ve never had to work in a soul-crushing cube farm.

 

First Post!

After what seems like decades of procrastination, I’ve finally got this site off the ground. Hopefully I’ll make good use of it. I plan to write about whatever floats between my ears and maybe show off some experiments with learning D3 and R. Fingers crossed.

On Wednesday, I’m giving a brief talk on using Chrome Dev Tools to write and edit CSS to the St. Louis WordPress Meetup group. The group is made up of a diverse selection of people with different experience levels, but I’ll try to make it interesting for all involved.

At work I’m building a Phonegap app. It’s given me a nice opportunity to check out some Javascript frameworks. I initially went with Knockout.js because it was pretty easy to pick up and the documentation is great. The more I get into it, the more I’m disappointed by what I consider excessive declarative markup, which seems to defeat the purpose of unobtrusive JS. Maybe I’ll check out Angular.js, though it seems like Ember is the flavor of the month.

Edit: Soon after I display my ignorance regarding unobtrusive binding in Knockout, I come across this in the documentation:

http://knockoutjs.com/documentation/unobtrusive-event-handling.html

Nice.

Enough rambling for now.