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.

Prisoner’s Dilemma

Prisoner’s Dilemma

If the Strategy of Giving fails, the explanation may lie in the game theory’s prisoner’s dilemma. Prisoner’s dilemma in a nutshell: Two people are suspects in a crime where they could face jail time if convicted. The suspects have agreed that neither one will talk in the interrogations. The interrogators offer a deal to both of the suspects. If only one of them comes clean, he will be released, but his partner will then get a ten-year prison sentence. If both of them talk, both will be sentenced to five years in prison. If neither confesses, they will be both sentenced to just one year in prison. The prisoners are not able to communicate to each other, so there is no way for them to know what the other one has chosen. In the name of common interest, both of them should keep quiet. But, from an individual’s perspective, the best alternative is to talk.

Continue reading “Prisoner’s Dilemma”

The Ideabox

OldSkool Ideabox
Ever worked for a company that had an “ideabox”? To be honest I love the idea as it gave room to creative thinking to area’s where you might not expect it. Yet I always wondered how these idea’s where filtered. Doesn’t the guy/girl filtering the box become a weak link in this chain?

Ideabox 2.0
Off course there are other ways of gathering employee ideas, but the Ideabox provides some vintage charm to me. Bare in mind that the following video is a promotion material form SalesForce, yet I found it to contain some truths about the situation.