January 11, 2012
by Sebastian
1 Comment

Fuzzing – Measuring the Quality Of Your Unit Tests

I’ve recently thought a lot about good unit tests. First and foremost, you want unit tests to cover most of the source code inside your application. That’s why you usually monitor the Code Coverage of your unit tests, essentially counting the number of times a particular source code line has been executed during the test period.

However, running some code does not necessarily mean that a test actually checks the correct behavior! Exactly this is what Fuzzer is all about. It’s an open source tool for FLOW3 which mutates (modifies) your source code step-by-step, for example by commenting out a single line. Then, it checks if the code is still valid PHP, and if so, tries to run the unit tests.

If the tests now fail or run forever, everything is fine and the tests detected the change. However, if the tests run successfully, it means that a changed source code line did not trigger a test failure — hinting at some missing test cases!

A lot more details and examples can be found in the readme of the project on GitHub, so check it out, and I’d love to get feedback using Twitter or the comments here!

→ Fuzzer on GitHub

January 3, 2012
by Sebastian
2 Comments

FLOW3 Plugin for Oh-My-ZSH

Are you on Mac or Linux? Which Shell do you use? If you did not think about this question yet, chances are that you use good old Bash. I have used Bash for ages, but recently, switched my working environment to ZSH.

The reason? Amazing autocompletion and a ZSH configuration system called oh-my-zsh which has been praised a lot.

Now, I had some time over the christmas holidays to work on a FLOW3 plugin for oh-my-zsh, which supports the following features:

  • The flow3 command is available everywhere inside the FLOW3 distribution, so you can call it from any subdirectory you want.
  • The flow3 command now supports autocompletion, both displaying the short help and the full help for a given command
  • Some additional helpers to easily run unit and functional tests: f3unittest and f3functionaltest
  • A way to mark a FLOW3 distribution as active, and directly cdinto any of its packages:
    cd /anywhere/you/want
    cd TYPO3.FLOW3

    Oh, did I mention that you also get autocompletion for the package keys? :-D

The full plugin is available on Github with installation instructions and a more in-depth readme. Go check it out!

… and of course tell me what you think; either via Twitter (@skurfuerst) or via replying :-)

December 21, 2011
by florian
0 comments

sandstorm|media mit neuem Look

Endlich ist es soweit.

Wir haben unsere Webseite überarbeitet und dabei großen Wert auf Benutzerfreundlichkeit gelegt. Neben einer eindeutigen inhaltlichen und grafischen Trennung der  Bereiche Coaching, Development und Design ist unser Blog nun auch fester Bestandteil von www.sandstorm-media.de

Wir wünschen allen viel Spaß auf unserer Webseite und freuen uns natürlich über euer Feedback.

December 12, 2011
by Sebastian
0 comments

Aloha Improvements Coming!

In the last weeks after finishing my diploma thesis, I had the pleasure to work on Aloha, more specifically Aloha Blocks.
Aloha Blocks are a technique to make non-editable content editable through Aloha. In TYPO3 Phoenix we use it to implement nested content elements, but we might also use it lateron for implementing links.
I’ve been working mainly on implementing:
* Drag and Drop
* Cut/Copy/Paste
* Deletion
* API cleanup
* general stability

… And all this in the major browsers starting from IE7.

The code is almost ready for merging!

It has been a lot of fun to work with Clemens from Gentics, who was my contact person during the time! I look forward to more of these projects.

December 1, 2011
by Sebastian
5 Comments

Diploma Thesis about FLOW3 and the Semantic Web Done!

Dear fellow readers,

I am finally finished with my Diploma Thesis about FLOW3 and the Semantic Web. Two days ago, I had my final diploma presentation at university, so I am now officially a “Diplom-Informatiker” :-)

In my diploma thesis, I analyzed the current state of Linked Data from the perspective of a web application programmer. Furthermore, I developed a FLOW3 based framework which can be used to connect FLOW3 Applications with the Linked Data Ecosystem. The code can be found at our GitHub account, and while it is not yet updated to work with FLOW3 1.0, I plan to do that in the next weeks.

We have some very ambitious ideas, both for our company and for the TYPO3 Project, where the developed semantic FLOW3 framework plays a key role. Stay tuned for updates!

Of course, the Diploma Thesis is also available for your reading pleasure. It’s about 100 pages, all in English for maximum reach.

So, head over to the Downloads section at Github and have fun reading my Diploma Thesis :-) And I of course welcome every comment.

Greets, Sebastian

October 10, 2011
by Sebastian
2 Comments

Looking back to T3CON11

T3CON11 is over now, it was an awesome conference. Great participants, many high-quality talks and an awesome venue made this event a success.

The Current State of TYPO3 Phoenix

I was especially eager to do my talk on The Current State of TYPO3 Phoenix together with Christian Müller from the TYPO3 Phoenix team; as we were unveiling the great progress we were doing on TYPO3 Phoenix, explaining the reasons behind switching from ExtJS to SproutCore and giving a perspective on the next development steps. The extremely positive feedback of the audience made me especially happy: By using a more pragmatic approach to the Phoenix development, we seem to be on the right track.

If you did not attend T3CON, I can really recommend to watch the recording of the talk, which is already online thanks to the video team. Just go to t3con11.chaoscdn.de and search for Typo3PhoenixTheCurrentState.

Furthermore, having this talk out in the wild, means we (=the Phoenix team) are getting out of the hiding again and will blog and twitter a lot more about the progress on TYPO3 Phoenix in the next weeks and months. That makes me happy as well!

FLOW3 Goes Semantic

Furthermore, I was presenting my work on integrating the Semantic Web with FLOW3 during my diploma thesis – also this talk was really nice, and I really enjoyed presenting my visions about Linked Data to a broader audience. The talk is also online at t3con11.chaoscdn.de (title: FLOW3 Goes Semantic).

Inspiring talks and conversations

This time, I felt it was really easy to get in touch with people. I spoke to a lot of people I did not know before, and also learned quite some new things. Especially, I enjoyed getting to know David Zülke who did a great presentation on RESTful web services (also online at the video site). I had some discussions with him concerning the convergence of the RESTful web services with the Semantic Web; and by now, I think they can be a really good match. I’ll explain this in a further blog post, so stay tuned for that :-)

Furthermore, it was great to again meet Haymo, the whole Phoenix and v4 Team, and many good friends.

Looking forward to next year :-) TYPO3 Community Rocks!

 

August 18, 2011
by Sebastian
2 Comments

Distraction-free writing with FocusWriter

Recently, I needed to write lots of Text — my deploma thesis, FLOW3 documentation and internal documentation for our company. I recognized that I had some severe difficulties in staying focussed; I always knew some distractions I could do instead of writing.

I tried out several distraction-free writing tools; and the one I am using now is called FocusWriter. It’s open source, available for all platforms, actively maintained and can be customized to your needs. For me, it really helps keeping myself focused.

August 2, 2011
by Sebastian
4 Comments

Git Tip: merge –no-squash

Often, when I develop a feature, I push to a temporary repository on Github very frequently. As an example, for implementing Fluid caching, we did around 60 commits to the GitHub repository for implementing this feature.

However, when pushing it to the TYPO3 Review System, we only want a single commit instead of many. There are two ways  to archieve this, which I want to highlight here:

git rebase –interactive

If you have a quite linear history, you can do an interactive rebase, as described in this tutorial, and then squash all commits into a single one.

This works especially nice with a mostly-linear history.

The Problem: In-Between Merge Commits

While the above concept works nicely in many cases, in our example we had a non-linear history, as we merged updates from the official Fluid repository into our development branch.

Now, this meant I could not just use squash all my commits into one, but needed a different technique. When reading the man page of git merge, I found a solution:

git merge –no-squash

git checkout master
git merge --no-squash dev
# delete .git/MERGE_HEAD if it exists
git commit

The trick is to use git merge –no-squash, as it just updates the staging area but does not commit the merge yet. It thus gives you all changes; and by deleting the MERGE_HEAD file, git will commit all changes as single commit.

You of course loose connection to the intermediate commits in the dev branch then, so make sure to record at which point in the dev branch you merged back!