Jan 27, 2015

When it fails...

Failures happen all the time in every aspect of our life. While I am going to discuss failures of software developers, methods to handle those failures can be also applicable to other situations, even for families and friends.

When something fails, we all are unhappy about it. When developers screw up an important launch, when hotfixes break the system even more, when the site does not go online in sync with related sites, it is a failure. Failures has to be handled.

How do people handle failures? There are different ways. One of the most dangerous and bad ways to handle failures is to start looking for the responsible person and blaming him for errors.

Why is it bad?

Jan 24, 2015

Opening images directly in Photoshop on Mac

I work with Adobe Photoshop CC 2014 quite a lot. Often I have to open JPEG images there from Finder. By default, JPEG images are opened in Preview. To open them in Photoshop I have to right-click on the image, scroll down to Open With..., wait until the pop up menu appears (or click it to open faster), find Adobe Photoshop CC 2014 there and click it. Too long.

Can this be simplified? Oh, yes!

Jan 16, 2015

Strange localisation code in the Extbase persistence layer

Quite often I see that people do mistakes when they work with localisation in TYPO3. This topic is quite complex and often misunderstood.

TYPO3 localisation is defined by the Frontend Localisation Guide document, which was written by Kasper. I was one of the early reviewers of the document before it was published. While screenshots there are old, the document is still accurate. Let's have a quick look how localisation of records is handled in TYPO3.

Record localisation in TYPO3

Note that we are talking about records here, not pages. Pages are localised slightly differently.

All localisable records can be logically divided into the records in the main language and in other languages. This is an important distinction. Main language in TYPO3 always had id equals to zero. Other languages are defined on the tree top level and have id values starting from one.

The record in the main language is very important because it contains all fields. Records in other languages may either contain all fields or only some fields that depend on the localisation. For example, a record like Event can have the following fields: