Web Development : A step up with Automated Deployment

Developing a website… ; Open up “notepad++”, browse to your web server via FTP and edit the files. Then refresh to see the changes…

Sounds familiar? Probably… It’s a very straight forward and easy process. The downside however is that you have no tracking of your changes (Version Control) and that the process is pretty manual. So this becomes a problem when you aren’t the only one on the job or if something goes wrong.

So let’s step it up and introduce “version control”… Now we have an overview of all the revisions we made to our code and we are able to revert back to it. Yet suddenly, we need to do a lot more to get our code onto the web server. This brings us to the point where we want a kind of helper that does the “deployment” for us.

The basic process
automated-web-development-kvaes.be

  • Local Development : The development will happen here. Have fun… When you (think you) are happy with what you have produced, you update the files via your version system.
  • Source Repository : The source repository will contain all the versions of your code. Here you can configure it to send a notification to your deployment system whenever a new version has been introduced.
  • Deployment System : The deployment system will query the source repository and retrieve the latest code. This code will be packaged, transmitted and deployed onto the target system(s).
  • Target Systems : The systems that will actually host your code and deliver the (web) service!

Real Life Example?
Ingredients

Recipe

  • Create a private repository at BitBucket
  • Pull/push the repository between BitBucket & your local SourceTree
  • In GitHub, go to “Settings”, “Deployment Keys” and generate a key for your automation. Copy it to your clipboard…
    2015-01-12 15_33_53-kvaes _ kvaes.be - 2015 _ Admin _ Deployment keys — Bitbucket
  • In DeployHQ, go to “Settings”, “General Settings” and copy to key into the “Public Key Authentication” textbox.
    2015-01-12 15_31_19-Website 2015 - LogiTouch - Deploy
  • In DeployHQ, go to “Settings”, “Servers & Group” and create a new server.
    2015-01-12 15_36_53-Website 2015 - LogiTouch - Deploy
  • In the same screen, Enable “Auto Deploy” and copy the url hook.
    2015-01-12 15_38_19-Website 2015 - LogiTouch - Deploy
  • Now go to “Settings” in GitHub, and then “Hooks”. Add a “POST” hook containing the url hook you just copied.
    2015-01-12 15_39_11-kvaes _ kvaes.be - 2015 _ Admin _ Hooks — Bitbucket
  • Now every time you do a commit on your workstation, the code will be deployed to your server!

In fact, this is the mechanism I utilize for my own (hobby) development projects. An example of here, is my own homepage, which is deployed via the system as described above.

PHP Frameworks

This week I experimented with some frameworks to see which would provide me the fastest development track for some hobby projects of mine. When reading this post, bare in mind that I come from a Drupal background (so I’m quite spoiled!)… 😉

Requirements
I had a few requirements that such a framework should have:frameworks

  • User Authentication : This is something almost every application needs in some form. If it was up to me, then this basic functionality should be included within easy framework. This was actually the first reason why I switched to Drupal, I was sick and tired to maintain the user management coding whilest this is a common thing.
  • Good Documentation : I don’t mind learning new things, but they should be very clearly documented. I actually learned php right off the php.net site; hands-on with the user contributed code samples.
  • Easy Setup on a shared hosting : Some frameworks are so high up in the sky that it takes you about an hour just to grasp the concept of how the creators wanted it to be. In my mind, it should just be “extract & go”… This doesn’t mean that it has to be a single directory structure. It’s merely meant towards the frameworks which have a “console-like” application to manage the framework. Not everyone has shell access to their development machine…
  • Active User Community : A big part of the “Fast development track”-motivation lies in code submissions of the community behind the framework. You can borrow the code or you can learn from it… Either way, you’re coding at a much faster pace.
  • Easy Form Support : Forms are a BIG part of every application. We can add some bling to it with “ajax” (hypeword detected!), but it remains a form in it’s bare essence.

My Basic Experience
Now for the ones that I’ve tested… Also I would like to add a word of respect to all the creators of the frameworks. This post is not to bash any frameworks, but just a form to express my experience with testing them all out.

Continue reading “PHP Frameworks”

The 3 kinds of free models

Logic+Emotion featured an article called Visualizing Chris Anderson’s “Free” Model.

  • Free 1 : Kinda like the concept often used by Telecom operators. Buy a subscription and get the mobile phone for free. (Too bad this concept isn’t allowed by law in Belgium…. “Koppelverkoop”)
  • Free 2 : The concept where the whole web 2.0 is running towards… Offer something for free to your community, but let an external party pay for their “subscription” by means of advertising.
  • Free 3 : Shareware meets web 2.0… Get a limited version for free, but pay for the premium version.

You might also want to read the original article

How to do standup meetings?

What are the characteristiccs?

  • Stand Up : Everybody stands up, nobody sits down.
  • 15 or less: Short session; max. 15min, if possible even shorter
  • Token : Only the one holding the token speaks, and (s)he speaks towards the whole group.
  • Offline : It isn’t a problem-solving meeting. So issues will be handled -offline- when it become too detailled. Meaning that they will be addressed after the meeting with only the affected persons involved.

What should you discuss?

  • Yesterday : What did I do yesterday
  • Today : What will I be doing today.
  • Obstacles : What’s blocking me.
  • Focus : Relevance to the backlog (general todo-list)

Which are the advantages?

  • Identify obstacles : The meeting is a tool to identify problems, not to solve them. During the meeting people can indicate that they can assist you with your problem. Yet the actually discussion will be handled offline.
  • Set direction and focus : A standup meeting will also help to keep everyone aligned towards the team goal. That way we won’t lose any time on less relevant things.
  • Share commitment : We commit ourselves to tasks on a daily basis. By putting them in a group, we’ll be sharing the commitment on these issues (and thus knowing the existence).
  • Communicate status : Communicating status is secondary to the identification of problems. Yet it’s a big factor that the key points of everyone’s daily task is know by everyone. The communication aspect isn’t meant to communicate to management, but to the other team members.
  • Build a team : Don’t create groups, but create one team by knowing what everyone does.

For more information checkt he links on Wikipedia…

The difference between Consultancy and Bodyshopping

During my career I had multiple discussions about the line between bodyshopping & consultancy. Yet “Work The Line” has a really nice post on this.

Some excerpts…

Does the firm have genuine practice areas based on shared intellectual property? A consultancy should have mechanisms for capturing, sharing, and reusing intellectual property in areas of specialized expertise. These mechanisms can be embodied in people (practice leaders), processes (defined practices for knowledge-sharing), and tools (collaborative software, reusable collateral, etc.).

So is there an infrastructure to back up your knowledge workers? As a consultancy firm your key asset is the knowledge of your people, so are the able to share this asset?

Does the firm limit its consultants’ billable time for strategic purposes? A body shop bills as much of its consultants’ time as possible, all the time. In contrast, a consultancy continually invests time in improving its collective knowledge and performance.

Key indicators here are training & the % of people “on the bench”. If people are allocated fulltime towards a customer; how can they be acquire their knowledge? One might say that this is because they are trained on the job, but those are not always the grounds where one can gain much experience in new/expert fields. When spending all your time “on the road” is not allowing the time for reading, communicating and reflection which is essential to maintain quality.

Does the firm measure success in terms of profitability per engagement? This question is closely related to the last two. If a firm’s goal is simply to bill as much as possible, and its preference is to bill for time and materials, it will have no interest in the profitability of individual engagements, and will simply “run the clock” as long as it can. Conversely, if a firm uses its knowledge to deliver high-value fixed-price engagements, it will try to perform engagements as quickly and efficiently as possible, in order to maximize their profitability.

The profit made on project with a fixed price is based upon your knowledge. The more you know, the more efficient you can provide the solution. Where is your motivation when you charge by the hour? Then it’s just a hidden form of interim work (to me).

Does the firm leverage new skills to build higher-level relationships? Over time, a firm builds skills engagement by engagement. It comes in to offer skill A, and picks up skill B in the process. If the firm simply adds these new skills to its list of “things we do,” it is behaving like a body shop. If the firm analyzes, consolidates and leverages these skills into higher-level client relationships, it is behaving like a consultancy.

Do you have many different profile which are being “rented” towards clients, or do you have a specific area where your knowledge dominates? This come close to the question whether or not the firm can distinct one self (as a brand) by encapsulating a specific value proposition.

Conclusion

A body shop bills as much of its consultants’ time as possible, all the time. In contrast, a consultancy continually invests time in improving its collective knowledge and performance.