Mac Development – WHAT?!?

Joining the darkside

Recently if you’ve hung out with me you might have noticed that I am primarily developing on Apple now. For the longest time since I worked in IT, I was always heavily biased towards Windows because, let’s face it, the networking tools are way better. You can’t beat Active Directory and Group Policy. Nowadays though, must of my sysadmin work is done on the server side, outside of the network, and I spend a lot of my time writing code. After many long nights of reading articles all over the internetz I decided that Mac was the way to go for me.

It just works

I know that a lot of my Windows friends are going to cringe at my saying that, but they really do just work. The fact that I am able to run Ruby, SSH, and all sorts of other tools I use on a daily basis directly in the terminal with minimal fuss is enough of a selling point for me, and on top of that I can drag folders into bash as well so that I can easily cd to the directory I need. I can even install programs from the terminal with ease too. One of the programs I use a lot is AMPPS and right after installing it, I was able to get running whereas on Windows I was stuck troubleshooting issues with Apache, something I ran into with MAMP as well.


It may seem silly but aesthetics are very important and Apple has that nailed down. Their computers are beautiful and the user interface is very minimalist, which helps focus on that task at hand. The hardware design is also spectacular. I’ve had the battery last in my laptop for an entire day of heavy usage, something I’d only get maybe 4 hours on with other laptops I have owned in the past.

Not Bloated

One of the other great things about Apple is that they don’t load crapware on your computer like OEM’s do. Obviously that isn’t something that Microsoft can do so much about, and if I was building a computer (which I would), I most definitely would be using an OEM disc so that I wouldn’t have to worry about it. It is nice to buy something and not feel like you are still being marketed to.

Final Impression

All in all, I love working on my Mac now and I don’t think that for web/app development that I would want to go back to Windows. I just don’t run into all the extra issues I am used to having to deal with and it is nice. I still love my gaming rig, and that is what it is going to remain as. I plan on getting a 4k display and moving my two new 24″ monitors to a dock so that my mac can reside there with both of those hooked up. I’m glad I made the switch.

Developing A Digital Strategy From Scratch

We live in a digital economy, there is no doubting that. I think we can all agree about it. However, while it may seem like everyone is taking advantage of this new age environment, there are still a lot of companies stuck in the past. It may seem silly but it hasn’t been that long since the dotcom bubble and with smart phones rapidly making up the majority of internet traffic, the front is still evolving

Where to start?

The first step in developing an effective digital strategy is to pay close attention to the type of work that you are doing. Whether you are an e-commerce shop or an agency that sells digital services, it is important to know how your area of expertise is affected by the digital landscape.

If you don’t already have a plan in motion, then congratulations, you have a fairly easy task ahead of you. Since you are starting from scratch, any data is valuable to you, and if you don’t meet your goals, you still have a lot of information that can be used to further your agenda. Knowing what doesn’t work is just as important as knowing what does!

Goals, Goals, Goals!

I’ve always found it useful to track two directly opposite goals. One example would be driving traffic to a landing page that is designed to either educate users about services, or to generate email list signups. You can track the education by describing services with links to even more detailed examples, once a user clicks a link you know that they are at least reading and inquiring more about offerings. When someone signs up using the email signup form, then you know you are making progress towards that initiative as well.

Having two goals that are vastly different means that you can perform two tests at once, which is a far better use of your time than trying to only gather data for one.  I’ve seen this effectively used on custom landing pages, as well as in e-newsletters with effective call-to-actions that build customer bases. People have a give/take relationship these days and when you can give them information they are usually more willing to give you a bigger chunk of their time.

Measuring Success

Once your campaigns are set up you need to have some way to measure the success of their effectiveness. When you are just starting off you don’t need to do anything crazy, you can set simple numbers like 50 new signups or 200 referrals to our services section. If you use something like Unbounce, this will give you harder percentages based off of traffic. Google Analytics can also be helpful in tracking these conversions.

Remember when I said earlier that you shouldn’t worry about failing?, well that is true as well at this stage. If you fall short of your goals you need to analyze what went wrong. Were your call-to-actions week? Is the design confusing? There can be a lot of factors into why a page/newsletter fails. One of the biggest reasons I see underperformance is that users are given way to many options. Most UX pros agree that after 3 options any person is going to suffer from choice overload and it is far easier for them to move on than waste time worrying about something they might not care about.

In the end what matters is that you are making educated guesses based on solid data that represents your user base. If you are doing that then you will be successful, it just takes a little bit of time. The more you reiterate on your strategies the better they will become. All companies start off at this stage and eventually make it to the big leagues when it comes to digital marketing and strategy.

Good luck! 😀



Site Build: VeganRVA

Recently I helped build and launch a new site:  It was quite the project, lots of things happened but in the end it all came together.

The Idea.

My fiance and I were talking about how there weren’t any sites that really focus on the vegan scene here in Richmond Virginia and we wanted to change that. Originally the idea was to start a food critic style blog and eat lots of food. The idea progressed though, and eventually I started asking around if anyone was interested. I found out that someone I knew had a similar idea and so we started collaborating.

The Blueprints.

After many conversations about what we wanted to do, we decided on building a site that offered a little bit of everything, food reviews, things to do, product reviews, restaurant listings, the whole deal. Structuring the information architecture was fairly straight forward. One we had it all figured out the next part was getting a decent design. I’ve never really been one who was amazing at design, but this project made me really dive into it. Some of the flat design I was seeing really made me want to try it out.

Working with my friend (who is a designer) we were able to come out with a very simple comp of how we wanted the site to look. We wanted to use a grid system to make it really easy to build, and we used a lot of really interesting and vibrant colors.

Getting Our Keyboards Dirty.

Now that a solid design was laid out, it was time to start building. I really wanted to start using Git more in my process, and I also wanted to use Compass because it seems like the future of development on the web. In the end we decided on using the Foundation 5 framework, more specifically Foundation Press. It has all the tools we wanted, plus it has a lot of great built-in functionality so we can use the reusable patterns provided. That helped to cut down on development time, and I learned a lot.

Version controlling WordPress can be a big p.i.t.a but we managed. There were definitely a lot of hiccups along the way, and a few merges that got really tough to sort out. The wp-config.php file is one of the files you really have to watch out for. You pretty much have to git ignore a local and dev config file, and make sure you do so in the beginning to save a headache or two. We did a few no-nos such as images in the repo (stop clenching your teeth!).

Go Live!

After many revisions, tweaks, undos, redos, deletes, undeletes, and more revisions the site was ready to go live. Our tool of choice for this was Beanstalk. I cannot tell you enough how much I love using it. Beanstalk itself is both a private repo, and a deployment tool. That means you can push all your version control commits to it, and then watch it deploy on your site(s).  During the process we automatically pushed changes from our local repos to the dev site, and now it manually deploys if we need to do any more work.

Lessons Learned

This whole project taught me a lot about working in a team and setting realistic expectations. When you are working on a personal project, lots more things get in the way and it is easier to miss deadlines. When you set a goal you need to stick to it and not back down otherwise it will sit on side-burner for a long while.  Don’t be afraid to use new tools on a project, that is really the only way to really find out if you will like to use that tool at work or again on another project.


Should I Still Learn Objective-C – Thoughts on Swift

Swift, like the bird?

Apple recently announced their new programming language for iOS, Swift. It is meant to work side by side with Objective-C, as it attempts to simplify the language and make it more accessible.  A lot of people are up in the air about whether they should continue learning Objective-C or wait to learn Swift. It looks like Swift is supposed to outperform Objective-C by as much as 93x.

Should I Continue Learning Objective-C

A lot of newer developers are starting to wonder if they should hold off on learning Objective-C. It is really important to note that while Swift is going to be the primary language of iOS it still works beside the other languages you are learning. One thing to remember is that programming is a constantly changing field where changes occur frequently. Coming from a background in web development I can definitely vouch for how fast things can change and one day you are using MooTools and the next you ditch it for jQuery because more people are using it and it has better documentation.

I don’t think that anyone who has even just begun learning how to write iOS apps should wait, because you are still learning valuable skills and who knows what weaknesses and flaws Swift will have and how you can use that knowledge to account for that.  You also never know when you might run across an old app’s source that you need to rewrite, and knowing what is happening in Objective-C will make it easier for you to move it over.

Much Excitement, So Code, Wow!

I’m definitely excited about this release as it really levels the playing field a bit for people just getting started. Any time a new language comes out there is a gold rush of sorts that happens where people are writing new books, new blogs get created, these truly are fun times to be a developer. Don’t get discouraged by the constantly changing battlefield that developing can be.


Backing Up Lots of WordPress Clients: How to Make Life Easier

The Task

Recently at work we were about to be handed the task of making sure that all of the client sites were backed up. For a while, some other people we handling that task, but it was being handed to the developers since we are the ones that actually maintain the websites. There are about 30 sites we are managing so that is a lot to backup.

Some Considerations

Before we could really tackle the task of handling the backups we had to make a lot of considerations. The first was understanding exactly what we needed to backup. Next we had to find the best method for doing the backups themselves because it does take a lot of time. We also needed to know what sort of controls and monitoring we needed to have over these jobs.

Why is this thing so slow?

The internet at the office isn’t the greatest. It is an old T1 connection that isn’t the fastest but it gets the job done.  Originally the jobs were being performed by using FTP and downloading all the files. That is obviously a problem for several reasons. Doing that many FTP downloads takes a lot of time on our bandwidth, secondly unless you automate the backup, it will take time to go to each site and download the files. There is also the issue of what happens if the power goes out, or the internet goes down that night. It wouldn’t be unheard of to have that many connections happening for a length of time taking down the network temporarily, even for a few seconds.

The Options We Looked At

There were several options we were considering when we talked about this process. First we considered writing a script for each site to do the backups and using a cron to run them. While that is probably the best idea especially from a power user standpoint, I’m the only one there with the level of backend server administration experience. My concern was that others wouldn’t be able to fix an issue if I wasn’t around (bus plan thinking).  Next we discussed doing the backups internally via FTP or a backup program, but as I mentioned before there were far too many issues facing that type of backup. Not only that, keeping backup copies locally really doesn’t help you in the event of a fire unless they are backed up to a medium and stored in a fire safe.

The final option we looked at was using a plugin since the sites we build are on the WordPress platform. Using a plugin would make it easy for anyone to configure as well as troubleshoot. We looked into several but finally decided on using WPBackup Pro. While it isn’t the cheapest plugin, it certainly has a lot of worthwhile features.

What We Liked About WPBackup Pro

One of the things we really liked about the plugin was that it allows you to backup to cloud storage providers like Dropbox and Google Drive. We use Google for emails and thus we have storage with them as well.  What makes it so perfect is that it centralizes the backups in a place where we have control over access, and we know that it is relatively secure, plus far more redundant than any local server we have. Scheduling the backups is really easy to do as well, you can literally run a Job Wizard and backkup in minutes. The Google Drive setup does take a little of figuring out just because the API requires a few extra steps to connect, but once you do it one time, each new time goes faster and faster.

Our Setup

The setup we followed uses these principals:

  • Files should be kept for 90 days. This gives us three months of files. In the event of an unknown malware infection it gives us enough of a time window to hopefully restore from a version before the infection.
  • Databases should be backed up nightly. This helps in situations where data  becomes corrupted.  Since the database gets updated a lot, it makes sense to back it up a lot.
  • Site files should be backed up weekly. They don’t change very often so there isn’t a point in doing it frequently.
  • All plugins, and upper level directories should be backed up. Sometimes there are directories above the WordPress install that we use, so we should back those up.
  • Alerts should be sent whether the job succeeds or not. This is something I learned in IT. If you are only getting alerts if the job fails, you have no way to know if the job is stuck unless you look. While that might be easy in a centralized backup application, you don’t have that with 30 client websites. This allows us to count the emails really quickly and see if we have our 30 successes from the previous day.
  • TarGZ should be used as much as possible to limit filesize.
  • Backups should be staggered to limit server load. Each job is given a 5 minute window (unless it needs longer) so that there are never two jobs overlapping.

All in all after setting this up it seems to be working really well. There were a few hiccups along the way where a job or two didn’t run, but after resetting the job it seemed to go away. This was definitely a great investment because of the amount of time it saves as well as how easy it is for anyone to go in a do a backup.  I’m glad that we didn’t go the FTP commando, or scripted way. If you manage a lot of sites I highly recommend checking the WPBackup Pro plugin out.

I Have Absolutely No Idea What I am Doing – A Guide to Learning New Things

People think I’m some sort of expert

Everyone in my family thinks I’m some sort of computer expert. I’ll be honest and state that I know very little compared to a lot of people out there in the world.  The reality is that the skill I do possess is being able to look up information and process it in a way that allows me to complete whatever it is I am working on. Recently I started working on learning IOS development and while I understand very little of objective-c, I am still able to get things working by understanding the problem I have.

One of the best pieces of advice I was ever given was that “It isn’t the solution that matters, but the question that you need to ask”. When you know what question to ask then you know how to find the right answer to solve your problem.

Don’t worry if you don’t understand something 100%

There are plenty of times that I have worked on a project, even if I didn’t understand every single bit of what a function did or how some class was being used. In the end as long as it works that is all that matters. Now I know that some people are going to groan and say that something may not be efficient or possibly insecure, and you’re right those things do matter, however in the grand scheme of things if you are just starting out learning something efficiency doesn’t matter nearly as much as being able to put together a working project vs giving up.

Know where to look for what you need

When I started my new job as a developer I struggled a bit at first because most of my experience was working on the backend. People think that front-end dev is easier because you don’t have to do as much heavy lifting yet they don’t consider how hard things like UX and design can be. Sometimes the designers aren’t working with you to understand the client needs and expectations of the project and it is up to the person in dev to help make them aware of that.

That is when I realized my issue was that I wasn’t really following any blogs that talked about design, ux, wordpress development, or anything else for that matter. I spent a few days looking up blogs that I should be following and in not time I was catching up to current trends and techniques. It really can make a difference if you take the time to look up and follow articles on topics that matter to you. My feed currently has about 20 sites that I visit on a regular basis and it has helped me so much.

Be the developer you want to be

I think that everyone should strive to be the best person that they can be in their field. I’ve worked in IT, tech sales, and full stack development and I always push myself to be the best that I can be. When I’m at home I’m still learning new things and keeping current on the world of development. There are always at least three or four books on my tablet at a time that I am reading through and I”ll always try to pull it out at least once a day to flip through a few pages.

Don’t get discouraged by not knowing something, often times it is your drive to learn that will help pull you through. There have been many times in previous jobs where at the beginning  I was looking at something that I couldn’t understand and was thinking “How am I going to pull this off”. When you take the time to break your problem into smaller pieces, and understand how every piece works with one another, you will know the right questions to ask, and you will find the answers you need.

Keep on dev’ing on!