Jure Cuhalev http://www.jurecuhalev.com/blog Code, data and visualizations Wed, 19 Nov 2014 15:47:29 +0000 en-US hourly 1 http://wordpress.org/?v=4.0.1 Why Learning a new Technology is Hard http://www.jurecuhalev.com/blog/2014/11/19/why-learning-new-technologies-is-hard/ http://www.jurecuhalev.com/blog/2014/11/19/why-learning-new-technologies-is-hard/#comments Wed, 19 Nov 2014 12:10:27 +0000 http://www.jurecuhalev.com/blog/?p=1660 About a decade ago, I’ve discovered that I have to reinvent myself every 2 – 3 years to keep up with the speed of technology. During that time I’ve managed to learn a lot of new languages and frameworks. But I also failed at a lot of them.

Talking to newcomers to the field and observing my own patterns, I now know how to succeed.

How to Learn a new Technology
How to Learn a new Technology

It’s all about having a Project. Passionate developers are always tinkering with something. A new gadget, framework or a pet project.

But what happens when the chasm between project and new technology is too wide?

In the last year, I’ve trying to learn functional programming. While I understand the basics, I still haven’t figured out how to get to the level where I can build something that’s useful to me. The books and tutorials that I tried, focus on areas that are too far away from my everyday work.

Next time, I will have to make sure that I find a tutorial that’s like the ones that worked.

Django Girls Tutorial

I’m impressed with this tutorial. It allows student to build a full web site and deploy it online, without wasting time on unimportant details. For each components she learns, she has an opportunity to go back later and explore it further.

I think this is the best approach on how to introduce the full-stack of web technologies. She doesn’t even need to know what technology she wants to study. When a mentor is present, it provides a good opportunity for more discussion on a wide range of topic.

Recordings of Workshops

I think workshops (or live tutorials) are the right approach to the problem of having a project. Instead of building your own, presenter guides you through building an example project. Extra explanations make it understandable but not too complex.

Python community is recording most of the workshops at different events and posting them online. This makes it easy for a wider group of people to get into the field.

When you’re following the tutorial on video, you can adjust the pace to your own level. There is also a high chance, that a participant will ask the same question that you have while watching the video.

One of the best tutorials I’ve found, is Wes McKinney’s tutorial on Python Pandas. It’s over 3 hours long and it will take you a week to do it at home. But it teaches you enough to see the full power of framework and its potential. After that you can read the book and learn all the details.

Conclusion

I don’t think Learning things the Hard way is the best approach for newcomers. It’s just like teaching grammar, and leaving out the culture. As mentors we should do a better job of explaining how different parts fits together and not focus on semantics.

What was the best tutorial that helped you learn something difficult?

Is there are practical tutorial to ClojureScript?

]]>
http://www.jurecuhalev.com/blog/2014/11/19/why-learning-new-technologies-is-hard/feed/ 0
Tips on Surviving a Community event like MozFest http://www.jurecuhalev.com/blog/2014/11/12/tips-on-surviving-a-community-event-like-mozfest/ http://www.jurecuhalev.com/blog/2014/11/12/tips-on-surviving-a-community-event-like-mozfest/#comments Wed, 12 Nov 2014 12:00:36 +0000 http://www.jurecuhalev.com/blog/?p=1655 MozFest was huge (1500+ attendees), spanned 9 floors and had at least 16 concurrent tracks running at any given time. That’s without all the additional community areas showing their projects and the future of open society.

Based on a number of other similar events I attended and helped organised in the past (BarCamps, CCC) here are the basics, with most important at the beginning.

Keep track of your Water and Food intake

It’s surprisingly easy to get dehydrated if you’re out of your normal everyday comfort zone. You get distracted by people and talks, so make sure you start a day with a water bottle, provided by the organisers or just 0.5L bottle that you can refill. I’m in a habit that I always go to refill it once it’s empty.

Most importantly, avoid sugar and coffee (and run away from Club Mate). You probably don’t eat a Mars bar during the day and drink 4 latte’s so you probably won’t even recognise when your body crashed. But you’ll be cranky and won’t be able to enjoy the event. If you normally drink coffee or tea, try to drink only as much as you would on a normal day in the office.

To fix the problem of not running on sugary things, try to figure out how to eat the 5 – 6 meals during the conference day. The problem here is that croissant or a similar pastry doesn’t help since it’s too sugary and you will once again crash. For MozFest I’ve looked up closest store that was open that day and bought myself a mix of nuts and a sandwich. Don’t relay on organisers that they will be able to provide food that will make sense under such conditions (avoiding sugar). It’s more or less impossible at that scale, without exploding the costs of catering.

App Idea: preset the times and it will buzz your phone so you don’t forget to drink and eat.

Figure out ahead of time when you’re going to take your break

Events are super exciting, but you’re not doing yourself a service if you’re tired and unfocused. The more events I go to, the more I’m happy with hearing just 2 or 3 good talks a day or even with just a few good chats with new friends.

So if I discover that nothing super interest me, I will rather find a quieter spot and disconnect a bit from all the noise and people. It’s also a great opportunity to find a quick snack somewhere near the venue.

Read the Schedule and talk to Regulars

I’m not sure why, but getting a super big schedule often means I don’t invest the time to properly study it. Which always turns out to be a big mistake as I don’t have a good idea about what I really want to hear about. This is a bit easier with smaller one or two track events.

I often go to events alone as I’m trying to visit new communities that are outside of my regular professional work. Whenever I manage to befriend a Regular conference attendee they could quickly tell me who are the speakers that are consistently giving the best talk, even if it doesn’t seem so from the talk description.

Meet new people by being easy to approach

I love my geek t-shirts. The ones with logos from the Programming languages and environments that I work with. It makes it easy to let others know what you’re interested to know and it’s a perfect conversation starter for both. Remember to compliment the Fizzbuzz 0.5x.3 release T-Shirt of a fellow attendee.

If you’re a part of a smaller group and you have something to contribute, do that and/or ask your questions. You will let a wider group of people know what you’re interested about, you’re share something useful and there’s a high chance that after the session ends, some of them will want to talk to you.

Don’t overdo it

I keep trying to do too many things. Be at the venue for the first talk go to sessions and visit the after party. Depending on the venue and party, I’ve started opting for a proper dinner and a full nights sleep instead of trying to shout at people and at a loud venue.

This are the five basics that I always get at least one wrong. So they’re not as obvious as they seem.

Tell me what I missed, but keeps you running at events?

]]>
http://www.jurecuhalev.com/blog/2014/11/12/tips-on-surviving-a-community-event-like-mozfest/feed/ 1
MozFest – Learning Analytics http://www.jurecuhalev.com/blog/2014/11/05/mozfest-learning-analytics/ http://www.jurecuhalev.com/blog/2014/11/05/mozfest-learning-analytics/#comments Wed, 05 Nov 2014 12:00:49 +0000 http://www.jurecuhalev.com/blog/?p=1651 Learning Analytics are targeted at administrations that is trying to understand how teachers and students are interacting with the tools and processes inside the educational system.

(This blog post is just a collection of my personal notes and extra thoughts and is not something that a specific person said inside a discussion and that I probably misunderstood anyway).

There are multiple aspects to the concept of Learning Analytics, depending on who you are and what are you tracking.

Online Courses

Simple and straightforward tracking of students progress, how much time they spent on a specific piece of content, what worked for them and what didn’t. The basic premise being that you can have a feedback loop built into each iteration of the course and refine it as you go.

Besides all the research in the MOOCs area, I think there are two other interesting areas of general development in this field:

Commercial Tools like Summit Evergreen.

The problem that they are solving is that if people don’t finish their paid commercial course, they want their money back and they don’t learn and you can’t offer them better courses (and it’s overall a bad experience). So you closely track their progress and once you see that they’re not progressing, you start emailing them and trying to help them overcome whatever problem they have.

General research areas.

As we start to develop better online tools, we can also start publishing academic research papers on user behaviour. There is a persistent ethical question of when is ethically unacceptable to even build in tracking mechanisms compared to gathering everything where you anonymise the data after the fact. I do not think this part of community has already developed as well as understood all the issues. The fact that everyone is trying to publish papers so they can justify their research and get PhD’s does not provide good incentives for researchers to self-limit their access to data.

Motivational Characteristics

If you’re working in Web development, you’ve heard of a concept of *Dark Pattern* by now. It is a practice of interface that is designed to trick you into doing something you did not want, buying extra insurance or subscribing to newsletter. Whole experience of buying airplane ticket online also comes to mind.

It shouldn’t be a surprise for me, that there is a strong correlation between personality traits of certain age groups and how they react to different user interface elements. I do not have better data, but as far as I understand there are certain age and gender groups that will be strongly influenced by, e.g. the number of follower counts.

This has several interesting implications – do we try to design with such traits in mind or do we perceive it as a dark pattern and rather build more online version of a textbook instead of highly competitive online learning environment?

Designing Online Reputation Systems

I would love to learn more about different motivational characteristics of online users. But until I can find a good resource on this topic, I can recommend an excellent talk by Randy Farmer:

(and his book – Building Web Reputation Systems).

It’s about Educating Everyone

Some the issues and exposed problems might be mitigated by having better and more clearly presented privacy policies. Instead of just gathering data, get users to opt-in into collection and clearly present value to them and how this research helps everyone. Example of such data collection project done in an extremely transparent fashion was Mozilla Lab’s Test Pilot – https://testpilot.mozillalabs.com/ . Where they would show you a graphic of the data you’re about to send and ask you again if you’re ok with that.

Having similar approaches to the analytics tools inside different online services in this field could make it easier for both students and their guardians to understand what is going on.

To me it also seems possible that we’re much sooner see new legalisation in this regard in EU compared to USA. This will once again present problems when using both open and closed platforms that will try to upsell local educators on benefits that might legal risk to them.

The Future

Big Data and Everything Analytics is an emerging trend that we will soon start seeing much more research and work done on. It will also mean that we’ll start to talk to educators about things like A/B testing and funnel analysis. More complex technologies and concepts for everyone.

]]>
http://www.jurecuhalev.com/blog/2014/11/05/mozfest-learning-analytics/feed/ 0
MozFest: DIY Urbanism http://www.jurecuhalev.com/blog/2014/10/30/mozfest-diy-urbanism/ http://www.jurecuhalev.com/blog/2014/10/30/mozfest-diy-urbanism/#comments Thu, 30 Oct 2014 17:45:22 +0000 http://www.jurecuhalev.com/blog/?p=1647 Mozfest

There is a huge disconnect between citizens and municipalities. While it would seem that they are living in the same city, it’s often the case that they are using it differently and that they can’t find the common ground for the discussion about the progress of the city.

That is why I was happy to attend the session DIY Urbanism, led by Andi Argast and Michelle Gay where they presented their Learning Kit – Your Story Goes Here .

The basic premise is very simple: change the way we discuss and view public spaces. One thing that I feel often happens is that we would discuss it from the offices and meeting halls and we would try to gather usage patterns from random anecdotes. (I have no idea how real urbanists do this, but from a citizen point of view, I wouldn’t often have a better approach).

What their kit does it breaks the process into 5 steps:

  • Placestorming (brainstorming about the place)
  • Location Audit + Keywords
  • Creating the story
  • Sharing it
  • and finally another Reflection on the whole process and outcomes.

At this point, it’s important to think about another buzzword that’s gaining ground – Storytelling. We can use very simple things like Instagram and Cowbird or more complete ones like Edgar’s StoryCrafter.

The idea is to take your activist/interested citizen group to the space you’re trying to understand and then observe and document how people use, whether it support good affordances for walking or riding a bike or whatever your goal is.

This allows you to have a better understanding of what’s going in the space and to also gather much better information and usage patterns. Collecting and assembling this material in short, understandable clips/presentations, also allows you to have a more focused conversation when presenting your alternative proposal at community council meeting.

Idea, that needs good execution

Jan started a project, The bicycle heroes of Ljubljana, where he is documenting bad practices of Ljubljana Cyclists. In this context, this is an excellent idea!

What we need now is to start taking his photos and also document pot holes, weird bike crossing and strange ideas of how city thinks that we should navigate it. Create a site or a series of Tumblers where you teach people to record failure of city planners to help people have safer experience. Then map it and also elaborate it on a list as well as make it easier for journalists to use it to ask good questions to the city planners.

But it can be much more than just a collection of photos on a map. I’m sure there are a number of both experts and students and enthusiast that would be happy to contribute their proposals on how to fix the specific case as well as dig official plans from the municipality and call them on it.

]]>
http://www.jurecuhalev.com/blog/2014/10/30/mozfest-diy-urbanism/feed/ 1
Observations from OKFestival 2014, Berlin http://www.jurecuhalev.com/blog/2014/07/18/observations-from-okfestival-2014-berlin/ http://www.jurecuhalev.com/blog/2014/07/18/observations-from-okfestival-2014-berlin/#comments Fri, 18 Jul 2014 11:20:30 +0000 http://www.jurecuhalev.com/blog/?p=1638 In quite a stark contrast to csv,conf (which was very developer oriented), I attended OKFestival the next two days. With over 1000 attendees from all areas of it really is a huge gathering of open proponents.

Open is the new default

While not necessarily true in all the fields yet, it looks like we’re at the point where a lot of government contracts around the world require the work to be licenses under one of the standardised open licenses (either compatible for code or Creative Commons for creative works).

Rebuild everything

It seems that we’re still very much in the early days of platform and network building. While there are a few standardised solutions in each field, it seems that there is still hard to collaborate on complex pieces of software. I think I saw quite a few different indexes, CKAN alternatives as well as proprietary solutions that are in process of being opened up. I think we could do better as community within each field to figure out how to collaborate.

Standing on shoulders of giants

A few years ago, we were complaining that governments don’t release data and that it’s hard to get attention from policy makers. Today a lot of these things are given, partially also because of education and activism efforts from different hack days, seminars and events. A lot of colleagues from such event went on to consult or to work for governments making it easier for other side to understand the issues and to find internal (technical) support for it.

]]>
http://www.jurecuhalev.com/blog/2014/07/18/observations-from-okfestival-2014-berlin/feed/ 0
Notes from csv,conf 2014 http://www.jurecuhalev.com/blog/2014/07/15/notes-from-csvconf-2014/ http://www.jurecuhalev.com/blog/2014/07/15/notes-from-csvconf-2014/#comments Tue, 15 Jul 2014 17:26:36 +0000 http://www.jurecuhalev.com/blog/?p=1632 Today I attended csv,conf in Berlin, which turned out to be an excellent conference full of people who gather and transform data on a daily basis.

CSV, comma separated values, file format seems like a joke at first – who seriously uses that today in age of SQL, no-SQL and other $random-DB solution? It turns out that almost everybody at some point – either as input or as data interchange format in cases where systems are not part of your organisation.

Fail quickly and cheaply

A few different people presented their solution for “testing” CSV files, which might be better describe as making sure they conform to a certain schema. They range from just simple checks to full-fledged DSL that allows you to specify rules and even do checksums against referenced files.

The reason I liked most for this is that it allows you to very quickly verify sanity of files that you received and allows you to quickly give feedback to the other party that is sending you these files. This ensure that some time later either in time or inside your pipeline you don’t have to deal with bad data.

Embrace the UNIX philosophy – do one thing at the time

Most of the speakers also mentioned that in order to keep your sanity, you should build your system as a collection of small dedicated tools that pipe into other dedicated tools. It doesn’t necessarily have to be Unix pipe, but more a collection of steps that convert data into another step/database and then as next step does the processing again.

Everybody has the same problems

I think the biggest takeaway for me was, that we’re all having the same issues. We all get messy datasets that are hard to parse and are full of strange errors and inconsistencies.

As with other things, there is no silver bullet. We’ll have to build and teach best practices around data – testing, cleaning and what works and what doesn’t. Just we’re doing it in terms of modern software development.

Interesting tools and libraries

]]>
http://www.jurecuhalev.com/blog/2014/07/15/notes-from-csvconf-2014/feed/ 0
Impressions from FITC Amsterdam 2014 http://www.jurecuhalev.com/blog/2014/02/27/impressions-from-fitc-amsterdam-2014/ http://www.jurecuhalev.com/blog/2014/02/27/impressions-from-fitc-amsterdam-2014/#comments Thu, 27 Feb 2014 22:02:56 +0000 http://www.jurecuhalev.com/blog/?p=1624 This week I had a pleasure of attending Future, Innovation, Technology and Creativity (FITC) 2014 Conference in Amsterdam. I wanted to update myself on what the creative industries are doing as I was mostly visiting developer and security oriented events.

In general, quality of talks and presenters greatly exceeded my expectations and I feel myself lucky that I managed to visit the event. While I’ll try to make a few more blog posts from specific presentations, here are a few of general observations.

More about “Generating Utopia” project.

Open Source DIY technologies are not for geeks anymore

It seems that there are certain waves of technologies that are first picked up by open source hackers and the world doesn’t fully understand at the time. Most of the projects included things that are casually talked at CCC events and hackerspaces: 3D printers and 3D scanners using Kinect, Arduino based DIY controllers, low tech prototypes with LED’s and smartphones or just OpenStreetMap with commons Mashup API’s and Processing.

I think what these platforms have in common is that they’re much more easily available to creative people and huge amount of information that’s available online makes it incredibly easy to use. With that experiments often grow into high quality commercial grade works. This gets noticed by commercial clients and suddenly your next project is produced by using the same material and techniques.

Amount of required knowledge and insight is insane ..

Keeping in mind things from the previous paragraph, it seems that today it’s not enough to just know how to do art composition you’re also required to know enough coding to do processing mockups, generative audio with help of OpenFrameworks and final touch in form of Final cut and interactive web applications.

You don’t have to be an expert in all of these things but you actually have to have basic knowledge in order to actually know how to ask for help for all the tools that you’re suddenly using.

.. and it’s expanding

Quite a few presenters were already showing experiments and initial thoughts that were done using Oculus Rift, massive crowdsourcing apps, new Xbox One Kinect and voice driven interfaces.

Things that would be unavailable to most artists 10 years ago are now accessible in form of easy to use kits for 100 USD or less and it’s even cheaper with development environments.

Opportunities are everywhere

For generation of developers and tinkerers, that grew up with trying to get Linux to work on random unsupported hardware, this presents so many great opportunities. At this point everyone is thinking about open hardware and software, proprietary solutions and services can’t compete with Github development model anymore and because of Kickstarter and global economies of scale – you just have to pay for the production costs.

I think 2014 is really a year of open everything and if you’re working in environment that spreads these kinds of ideas and tools, you don’t have to do much to get people to listen to you. You just have to show up and present and teach a workshop. It’s that easy :)

]]>
http://www.jurecuhalev.com/blog/2014/02/27/impressions-from-fitc-amsterdam-2014/feed/ 0
Results of WordPress Ninja Forms entries as JSON http://www.jurecuhalev.com/blog/2014/01/29/results-of-wordpress-ninja-forms-entries-as-json/ http://www.jurecuhalev.com/blog/2014/01/29/results-of-wordpress-ninja-forms-entries-as-json/#comments Wed, 29 Jan 2014 18:14:36 +0000 http://www.jurecuhalev.com/blog/?p=1620 Ninja Forms is rather nifty WordPress Plugin for forms. The main problem I have with it at the moment is that’s a rather mess in terms of data structure and getting data out of it. One can grab CSV file, but doesn’t really help you if you want to make a nice front-end.

So here’s a snippet that will dump your current form results in a way that you can further display them with AngularJS or similar.

]]>
http://www.jurecuhalev.com/blog/2014/01/29/results-of-wordpress-ninja-forms-entries-as-json/feed/ 0
Slovenian WordPress Developers http://www.jurecuhalev.com/blog/2014/01/17/slovenian-wordpress-developers/ http://www.jurecuhalev.com/blog/2014/01/17/slovenian-wordpress-developers/#comments Fri, 17 Jan 2014 10:10:51 +0000 http://www.jurecuhalev.com/blog/?p=1616 WordPress is exploding everywhere, including in Slovenia. I get requests for work almost every week, so there seems to be more demand than there are developers. As it’s usually with these things, developers often can’t market themselves so here’s a humble effort to make it easier to connect these two groups.

Google Spreadsheet with Slovenian WordPress Developers:

Feel free to add yourself.

]]>
http://www.jurecuhalev.com/blog/2014/01/17/slovenian-wordpress-developers/feed/ 0
How to organise and synchronise production WordPress with local development environment http://www.jurecuhalev.com/blog/2014/01/11/wordpress-sync-production-with-dev/ http://www.jurecuhalev.com/blog/2014/01/11/wordpress-sync-production-with-dev/#comments Sat, 11 Jan 2014 13:36:09 +0000 http://www.jurecuhalev.com/blog/?p=1609 In the last year I’ve either deployed or inherited about 10 new WordPress installations and managing them became a mess that quickly ate too much of my time. It seems that quite a few of my friends have the same problem – so here’s a quick overview on how to approach it.

Everything I describe here can definitely work on OS X or Linux and probably on Windows as they’re all either PHP or Python based tools.

Keeping up with updates

Clients don’t update their plugins or WordPress itself and when they do they won’t read changes clearly enough to be able to judge if upgrade would break something. I use InfiniteWP for this. It’s a standalone PHP installation that connects to your WP’s via InfiniteWP Client plugin. It’s free, with some commercial add-ons. You can set it up to email you when there are new updates and support remote backups of your sites, which will be useful for later stages.

From security standpoint, it’s definitely not optional, but at the moment – not updating seems a greater risk.

infinitewp

Local development environment

For each client’s site, I would have a local copy running on my computer. Depending on your preferences you might be using something like MAMP of XAMPP that packages MySQL, PHP and Apache server together. One thing to watch out is that you’re running your local development under the same major version of PHP as it’s often source of bugs (as my local PHP would support newer syntax than the one on server).

For each site, I would have a local alias – http://sitename.local/ to ensure that I don’t accidentally change things on production.

For things I would develop, usually a theme and an extra plugin, I would store them in git to keep revision history and feature branches.

I have yet to find a good way to version plugins, so for now the tactic is to try to keep up with latest versions of plugin and use them as little as possible and only from developers that have release blogs and sane release tactics.

Synchronising production to local environment (manually)

Sometimes I don’t have shell access to server – in that case I would use either InfiniteWP to generate a database dump (from InifniteWP dashboard) or UpdraftPlus from within WordPress dashboard.

Locally, I would then use wp-cli to reset local database:
wp db reset
and import new database:
wp db import sitename_db.sql

wp-cli supports local path substitutions, but it’s usually not needed. What I would do is modify my local wp-config.php to have:

define('WP_HOME','http://sitename.local/');
define('WP_SITEURL','http://sitename.local/');

This allows me to use copy of production database, without WordPress redirecting my logins to production URL.

For contents of wp-content/uploads I usually don’t bother as I can easily fix things without seeing images in last few blog posts.

Synchronising production to local environment (automated)

For the sites where I have shell access and can install wp-cli on server, I have ansible scripts (more on that later) that run:
wp db dump
locally and then copy it to my dev environment where they import it using wp db reset and wp db import combination.

This means that I can sync production to my local environment in less than a minute, making it a no brainer to test and tweak things locally and not on production.

Applying changes to production

For themes and custom plugins for sites where I only have FTP access, I’m using git-ftp that allows me to push to FTP server using git ftp push. It keeps track of which revision is on server and updates only the difference. It does mean that you never change things on server directly, but have to go through committing to git first (which I consider a good thing).

For environments with shell access you can just ssh and then use git on the other side to pull in changes. It works, but it’s a couple of additional steps.

Lately, I’ve automating these tasks  with Ansible playbooks that allow me to have simple scripts like:

---
- hosts: server1
  sudo: no
  tasks:
    - name: update theme
      git: repo=git@server:themename.git dest=/home/username/sitename/wp-content/themes/themename

or to grab database dump

---
- hosts: server
  tasks:
    - name: wp db dump
      command: /home/username/.wp-cli/bin/wp db dump /home/username/tmp/sitename.sql chdir=/home/username/sitename
    - name: copy db to ~/dbdumps/
      local_action: command scp servername:tmp/sitename.sql /home/username/dbdumps/sitename.sql
      sudo: no

Which can then be easily extended or in a separate playbook file drop local database and import new copy. To run these playbooks you would just use ansible-playbook dbdump.yml and similar and it gives you a full report of what’s happening.

For bigger and more complex setups you would extend to support rollback and different revision models, but that’s beyond scope of my current WordPress projects.

Observations

Scripting these tasks always seemed as something not worth doing as they were just a couple shell commands or clicks away. But as number of projects grew it became annoying and much harder to remember specifics of each server setup, passwords, phpmyadmin location and similar.

With having things fully scripted, I can now get a request from client, sync whatever state of their WordPress is at the moment, automatically in just a minute, and see why theme broke on a specific article. It saves me crazy amount of time.

At the moment I’m trying to script anything that I see myself typing into shell more than 3 times and so far it was worth it every time as these scripts suddenly become reusable across different projects.

]]>
http://www.jurecuhalev.com/blog/2014/01/11/wordpress-sync-production-with-dev/feed/ 2