(MY) {GEEK} Mental Health Week

An Important Idea

You may or may not have heard, but this week is Geek Mental Health Week.  The idea is to spend a week writing articles about how serious of an issue our mental health is, as well as to tell the world about our own personal struggles, or to provide support for those in need. I’ll admit I didn’t hear about it until a few articles on A List Apart started popping up but after reading them I got really excited. I’m a firm believer that our work lives impact our physical and mental health in significant amounts.  Once we “grow up” we start spending at least one third of our day at work and if you count getting ready in the morning, and getting home that number can quickly become greater than half.

The Chair of Listening

There has always been one commonality in every place that I have worked. Whatever office I am working in, there has always been a chair, not just any chair, but THE chair.  It is the place where many of my fellow coworkers go when they have something going on, be it at home or work. Sometimes there is a project going on that is kicking them down, other times it is a grievance about management and they just need to vent out. Whatever the issue, I have found that offering an ear to listen is one of the greatest traits that you can posses in any company.  I’ve noticed a difference in any work environment where there is a place for people to go to voice their frustrations or seek advice about life issues.

My Own Struggles

Maintaining a healthy work-life balance is something we all strive to do but I have to confess that it is something I am very terrible at.  People always look at me like I am crazy when they ask me what I did over the weekend and I tell them I spent most of it learning to program on iOS or building a new website for a personal project. They often wonder how I can go home to do essentially the same work I do all day. To be honest I don’ t really know the answer 100% but sometimes it can really wear me down.

The single handed hardest part about trying to learn new skills is bouncing back from a very rough day. I’ve had my fair share of days where I just wanted to walk out the door and never come back, and when I got home I would sit in front of my keyboard wondering how I could even find a shred of energy to start a project, much less finish one I had been working on.  That is often the vortex that many find themselves caught in, trying to progress their skills and not burnout. It is actually one of the reasons why some people get out of tech after only ten or so years. Some people find the energy to keep up with the constantly changing requirements and standards, while other simply toss in the towel.

The most important thing at the end of the day is finding out what matters the most to you, and making that become your motivation to continue progressing you skills. A lot of themes at tech conferences lately focus on side projects. Whether that is a cooking blog, or building a new tool that others can use, so long as it combines your skills with something you love to do then you are on the road to making your outside life far more balanced while still learning new skills.

Projects on the Side

I am a huge advocate of working on side projects. Most of the time I work on websites for activist groups, other times I do really simple electronics projects with my Arduino or Raspberry Pi. For the longest time I would come home and zone out in front of video games (which I still do sometimes) but after looking at the hours spent playing a game, I started thinking about how I could better use that time, and what sort of impact it would have. I was really frustrated that I wasn’t learning new skills at work, and that I felt like I didn’t have anything to show for the past year or so. That is when I started VeganRVA, which began as an idea for a food blog. I went all out with that, using Git and setting up a repo with Beanstalk, as well as using Foundation as a framework.

Working on a project that you are passionate about help gives you the drive and determination you need to work through all of the tough learning challenges you might run into, as well as motivate you to keep working.  At the end of the day you have something to show for all your time and effort as well as a bunch of newfound skills.

 

full-mental-health
No more of this!

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.

Design

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: VeganRVA.com.  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.