skoop.dev

  • About
  • @skoop@phpc.social
  • Flamewars (or: why not just pick the best tool for the job?)

    September 24, 2007
    flamewars, java, languages, php, python, ruby on rails, symfony, symfonycamp

    In the past few days I’ve read quite a few weblog posts on language x vs language y and most of the posts were somewhat ranting or flaming against the language not of the author’s choice. Quite a few were triggered by the fact that Derek Sivers moved back to PHP from Ruby on Rails. And just a few hours ago, I also read The Pownce Conundrum, a piece by Davey Shafik who I usually have in high regards when it comes to knowledge on programming, who singlehandedly seems to bash Python, Ruby on Rails and Java in a single post.

    I still don’t really understand where these wars come from. Sure, Ruby on Rails was mainly marketing at first, but at it’s basis lies a wonderful programming language. Python is not Google‘s language of choice because it’s so bad, so why is it wrong to use that? Hell, even Java is still good for a lot of things. So I am a PHP developer. Does that mean I should bash all these languages?

    No! I think people should leave all these wars to rest, and instead work on developing whatever they are working on at the time. When starting a project (or even somewhere halfway the project), choose the language that fits best to your project. Projects can even span multiple languages if you ask me? If Java is the best for the backend of your enterprise application, use Java for that. We know for a fact that PHP is usually better for the frontend, so let’s use PHP for the frontend. It can all work!

    It’s even better. Instead of dissing eachother, one could learn from eachother. A very inspiring thought when you get used to it ;). Fabien Potencier from symfony mentioned during one of his sessions at SymfonyCamp that he can often get really good ideas from looking at the code of other frameworks. OK, Fabien is also not that positive about Ruby on Rails, but he did get some of the symfony 1.0 structure there (Helpers anyone?). He also does look at what frameworks like Django are doing. And I’m sure most other languages can also easily learn stuff from how PHP works, as PHP is still the language for getting things done quickly.

    So why bash eachother? Instead, work together to make your own language of choice better.

  • Agile PHP: How do we do it?

    September 20, 2007
    agile, php, scrum, symfony

    Since a few weeks we’ve really truely implemented some agile methods in our biggest project (Jongeren in Beeld). Since others may benefit from knowing how we have approached this, I want to share our implementation of the agile approach of software development in a PHP project with the world.

    First of all, I actually wrote a document to outline these guidelines, as in our company (and I guess a lot of other companies) as long as it’s not documented, it won’t be followed. So I guess you could call that tip #1 😉

    Iterations

    An iteration is a certain set period of time during which the developers work on implementation a set of features and/or fixing bugs. An iteration always results in a release. The definition of “release” here is a stable enough codebase in the development branch to deploy safely on the testserver. More on this later. The length of iterations for us is three weeks, where one week overlaps. So the last week of iteration 1 is the first week of iteration 2. During the first two weeks of an iteration, the developers work on implementing the features. The third week is for testers to test the release, and (when the choice is made to do this) deploy the release to the production environment. So basically, the developers are always busy with implementing new features, but once the testers are working on testing the application, they may need to fix minor bugs so as to get a truely stable version that can be deployed to the production environment.

    Meetings

    There are two very important meetings during an iteration, and aside from that every morning has a short morning stand-up meeting. Let’s first have a look at the important meetings:

    • On the first monday of an iteration at 9:30, all stakeholders gather for the planning meeting. During this meeting, all stakeholders gather around a PC on which our Trac installation is open, and discuss which features should be planned for the upcoming iteration. The list of planned features should be a little too long to be realistic. Since the rule is to always be able to deliver a stable version, it is not bad if some features won’t actually be done this iteration. It’s better to have too much planned than too little planned, or the developers might be sitting around doing nothing 😉
    • On the second thursday afternoon, at 15:00, the closing progress meeting is being held. During this meeting, all stakeholders should gather to have a look at what progress is actually made during the past two weeks. Also, based on the list of implemented features, the testers may now be able to write their test plans. Based on the list of implemented features, during this meeting already the decision may be made that this release should end up on production.  

    The short morning stand-up meetings are just that: A max of 15 minutes is set for this meeting, and during this meeting, everybody will tell what has been done since the last stand-up meeting, what is planned until the next stand-up meeting, and if there are any issues that might block the developer from making that planning. This meeting is held while standing, so as not to get comfortable and have endless meetings talking on things that are not relevant. Save that for the coffee machine 😉

    Whiteboards, sticky notes and Trac

    The list of tickets to work on is being tracked in several ways. In our room, we have a whiteboard that is divided into sections very similar to the drawing on the cover of this book. Each ticket is then written on a sticky note: That is, it’s ticket number and short description. Aside from that, all tickets are in Trac. For each new version, a “Version” in Trac is created that is named [version number]-TODO. All tickets that are being planned for a certain version are assigned this version number. As someone is working on a feature, the sticky note is moved to the “In Progress” section of the whiteboard, and the ticket is “accepted” in Trac. As a feature is done, the sticky note is moved to the “Finished” section of the whiteboard, and the ticket is closed.

    Version and Release Control

    First, let’s talk about the procedures concerning version and release control, and after that have a look at the technical infrastructure supporting these procedures. A developer should test his own code while developing. At this point, we are not (yet) too strict on the existence of unit tests or functional tests, but the developer should definitely try out the new functionality he implements. In theory, ONLY STABLE CODE SHOULD END UP IN OUR VERSION MANAGEMENT SYSTEM. The reason for this is simple: Since the holy aim of an iteration is to have a stable release after two weeks of development, you never ever want to have unstable code in your repository. If you have, you may not have the time to fix this before the end of the two week period. And at the end of such a two week period, the release should be stable enough for testing. So, ONLY COMMIT STABLE CODE.

    At the end of the two-week period, a release is made by tagging the code that is in the development branch at that time, with a ‘-test1’ postfix. As new releases are made during the third week after bugfixing, the number at the end of the postfix may get higher. As the testers sign off the latest test-release, this latest test-release is then tagged as [version number]-final. This -final release is exported, then deployed to the production environment according to strict planning guidelines (I’ll discuss this later). Development is always being done in a development branch. This branch is created from the trunk on the second friday of an iteration (basically, the last workday before a new iteration starts). This branch is named as [next version number]-dev, and all developers should commit to this development branch. These are exceptions to this: If during the planning meeting it is decided to implement a feature that will take more than the two-week span of development during an iteration, a seperate development branch for *only* this specific features is created from trunk. The new development branch is not created before the old development branch has been merged back to the trunk, the get the trunk updated with all the new functionality.

    Version and Release infrastructure

    For ticket tracking, we use the Trac software. Reason for this is the tight integration with our version management system, enabling us to have a simple overview of which changesets are related to which tickets, as well as easily seeing which files have been changed for which reasons. For version control we use Subversion. We heavily rely on it’s branching, tagging and merging techniques.

    Deployment planning

    We have very simple but effective rules concerning deployment to the production machine:

    • No deployment will happen after 14:00. If something goes wrong with deploying, you may be working into the night if you start deployment after this time.
    • No deployment will happen on friday. If something goes wrong with deploying, you may be working into the weekend if you deploy on friday
    • No deployment will happen of big features if there is no extensive deployment plan and rollback scenario. For deployment of bugfix releases or minor updates, a short rollback scenario as well as a database changeset is required.
    • Deployment should always be planned at least a day ahead. The latter rule is not strictly enforced, but it is a good guideline to prevent surprises and allow for good planning and preparation.

    Deployment to the test server is not affected by these rules, since the test server (even though important) is not critical to have down during a night/weekend.

    That’s about it

    I hope this is of any use to people out there. If you have any questions, feel free to contact me. I’d gladly give some advice where needed. I know for a fact that ever since we started working in this pretty strict way, the quality of our code as well as our external communication have improved bigtime. Clients will love you for this.

  • SymfonyCamp – All I can say is WOW

    September 10, 2007
    conferences, php, symfony, symfonycamp

    When we did the PHP Bootcamp in June of this year, it was an unexpected success. The PHP-wide one-day event on PHP Frameworks attracted about 35 visitors, and everybody was really happy about the event.

    The idea of SymfonyCamp had come up even before that, but after the success of the PHP Bootcamp we decided to go through with it. Of course, we were really too busy with other things to actually spend time on it, but we went through with it anyway.

    A lot of things got arranged at the last possible moment, even the speakers. Just before my holiday a few weeks ago, about 20 people had registered based on an incomplete program. I throught that was a great number. I finished most of the program just before my holiday, and went on my one-week holiday feeling good about the event that was upcoming.

    There was a huge shock after coming back from my holiday. The number of registered people had more than doubled! Wow! I got a bit nervous and we needed to arrange some extra stuff, but it still looked wonderful.

    And wonderful it was. I really felt great during the whole event. What a great bunch of people are those that came over for the event, and what great speakers we had. Due to the unexpected extra work, I couldn’t spend enough time on my own presentation, and I feel bad for actually going through with it based on what I had. But I did it anyway, and though was short, incomplete and probably not *that* good, I think it went as good as it could go with the little amount of preparation that went into it.

    I think I can live on the buzz that I got during the past week for about 6 months. That leaves a few months until the next SymfonyCamp, which will probably be before the summer holiday next year. One thing is certain: We’re going to do this again!

    Thanks everyone for coming over and making this a great event! I’ve thoroughly enjoyed myself. See you guys next year!

  • Updating multiple select boxes in Symfony using AJAX

    August 13, 2007
    ajax, php, symfony

    For a client, I had to present a bunch of select boxes where users could select a genre, then a sub-genre based on your genre of choice, then a second level of sub-genres based on the selected sub-genre. My first choice was to use the symfony AJAX options, and updating the sub-genre select box with the observe_field function. This worked, the sub-genre got updated as I selected the main genre. However, for some reason, when selecting a sub-genre, the list with the second level of sub-genres was not updated. Weirdness!

    And then, in some bright moment, I decided to try and only update the options inside the sub-genre selectbox. And behold, it now worked.

    So, I am using observe_field to observe the genre selectbox, and another observe_field to observe the sub-genre selectbox. As a genre is selected, the options of the sub-genre are being reloaded. As a sub-genre is selected, the 2nd level sub-genres are being reloaded. It’s a little trick, and I’m still not sure why my initial approach fails (as I took care that the replacing selectbox had the same name/id as the original one with no options). However, it works and it’s a clean solution I guess.

  • SymfonyCamp – a new event for Symfony-minded people

    July 18, 2007
    conferences, php, symfony, symfonycamp

    Earlier this year we organized PHP Bootcamp, a one-day event in which we had discussions about several frameworks. It was a huge success. It was an afterthought after another idea though.

    The original idea is now being realized. SymfonyCamp is my little baby, and I’m gonna make sure this baby will be having a good time 🙂

    It looks to become a great event. Two of the three biggest Symfony guru’s out there, Fabien Potencier and Dustin Whittle, have already agreed to be present and do some sessions. Francois Zaninotto, the other guru, will hopefully also be there. And we’re going to get some more people in on it as well.

    Anyway, the first incarnation of the site is now online. There’s still some glitches to be fixed and the information there is still lacking a lot, but things will get better over time. Early bird discounts are available, so if the idea of SymfonyCamp sounds good to you, register soon! 🙂

  • Family extension

    June 29, 2007
    family, personal

    Well, well, it looks like Tomas will be getting a little baby brother or sister in January. We had an ultrasound made on tuesday, and it seems everything is just fine in Marjolein’s belly. A little baby is growing there!

    Exciting stuff happening, that’s for sure. Tomas seems to get it, sort of, that there is a little baby growing inside Marjolein. So far he’s quite fine with it 🙂

  • PHP5 community effort

    June 29, 2007
    php, php5

    It seems, finally, after 3 year and a bit of having PHP5 available, the mass of community developers is starting to see the light. There is a community effort under way to move big projects over to PHP5-only. This may finally be the finishing blow to that endless PHP4 fighting. PHP4 is bad, it’s outdated, it should have been dropped ages ago. When most of the big software out there moves to PHP5-only, hopefully it will quickly be dropped. PHP6 is already on the horizon, so it’s time to at least move to PHP5 and make use of all the great features in that.

  • New activities

    June 20, 2007
    coaching, consulting, personal, php, symfony

    Aside from the development I already do at Dutch Open Projects, and the fact that I am Lead Developer so have a role in helping, stimulating and to some extent steering the rest of the developers, a new activity is being added both to my work and to the Dutch Open Projects portfolio: “consultancy”.

    One of our new clients is a developer who is planning to write a new piece of software. He has chosen the Symfony framework to build upon, but has little knowledge right now about working with the framework and it’s capabilities. And so, we will be helping him in his endeavors. It’s a completely new thing for me to do, but being the Symfony advocate that I am, I really like this new branch of work. I definitely hope that we will be doing this for more clients, as that will mean more people will start to use the Symfony framework.

  • Symfony 1.0.4: Time to upgrade

    June 20, 2007
    frameworks, php, symfony

    The new version of Symfony has been released. It’s a bugfix release, unfortunately still with no fixes for the bugs I’ve reported.

    Those that saw my presentation at the Dutch PHP Conference may have noted that I was still running 1.0.1. I’ve now upgraded 😉

  • Scrum agile development: Uncommon sense

    June 19, 2007
    agile, scrum

    In the most recent article on the agile development weblog, author Kelly Waters makes an excellent point: If you follow the Scrum principles, it will probably feel natural, because it is actually using common sense in development. It is very weird that most development teams don’t actually work according to Scrum. And so, obviously, the common sense of most development teams is common and Scrum may need to be called Uncommon Sense to stand out.

Previous Page
1 … 35 36 37 38 39 … 61
Next Page

skoop.dev

  • Bandcamp
  • Mastodon
  • Bandcamp