Freitag, 23. September 2016

Humans Painting

A lot of time has passed since I painted my last team. But as I was stuck the couch for the last weeks due to a juicy knee injury I finally got it done and painted my human team.

The minis are an Elfball team from Impact, so the positions were not exactly like those on the Blood Bowl Humans and I had to juggle them a bit.

So two of the five safety players, which kind of resemble the blitzers, ended up being linemen, as I liked the postures of a lino better for blitzers.

As usual the painting is not that great, but considering my lack of practice and the fact that most colors have been very old and pretty claggy, I am still rather happy about the outcome.














Sonntag, 7. August 2016

Devoxx UK 2016


Ambience and Background


Three years ago London saw the first installment of Devoxx UK which I had the pleasure to visit. This year I decided it was time to come back and see how the conference has evolved and if it's value for
money is still as good as it was.

To make it short, yes it is! For a very reasonable ticket price you get two days full of talks spread over five tracks a decent catering and free water supply. The Business Design Center is a nice
location and of course London is always worth a visit.

In order to keep the ticket prices low the organizers have to bring a lot of sponsors, so the lobby was packed with stands. IMO this is not necessarily bad, at least you cab get a lot of goodies ;-)

Another cool thing is, that all talks are taped on video and the videos are all uploaded to youtube. So if you want to watch the talks just go to the Devoxx UK Channel

Day 1


Dot Con - James Veitch


The opening talk was a great start to the conference. A very funny narrative of what happens when you actually reply to scammer emails (like Nigeria Connection etc.) but in a special way.

James gave a summary of this experiences when messing with the people behind those emails and by that almost driving them mad. Usually I am not a fan of harrassing people, but if it happens to
frauds that try to steal the savings of innocent people who do not really understand that there is a whole con industriy out there, I strongly approve!

I highly recommend you watch the video to this talk, as no summary would do justice to it. It was hilarious.

Unfortunately it seems this video was not uploaded to the channel.. real pitty there...

Embracing Failure - Mazz Mosely


I chose this talk, because I remembered Mazz from a talk at the first Devoxx which was petty good, so I gave her another shot. You noticed immediately that she was very nervous speaking in front of
a rather large audience but apart from that the talk was good. The topic itself was more about what bad management looks like, especially when the project is in a bad phase. She drew the picture of
the typical jerk boss stereotype (pressumably from her first job) who responds to delays and errors by putting on more pressure but taking all the credit for success.

The story seemd to take a turn for the better when she told us about a meeting where she, as a young developer, dared to speak up in a review meeting, suggesting some improvements. Against all
expectations the more expirienced team mates backed her up and it seemed that from there on all would turn out good. But no, afterwarsd she got snubbed by the manager and it was clear that
there would be no happy future for her in this job. To make everything even sadder, the manager got promoted for the work the team did and no credit was left for those who actually saved the project.

In the end her morale was that you should speak, you should try to make your work a better place, even if it is hard. But if it turns out, that there is no way to make progress and that you will not be
happy where you are, then move on and find people who share the same values as you do.

Where's my free Lunch? - Hadi Hariri


For me, this one, can be summed pretty short. There are a huge number of online services that are, at a first glance, free. You can use them and no one is charging you. Hadi shows in detail in what way
you actually are paying for things like Google search or Facebook, just to name a few big ones. The bottom line is, you should not just blindly use everything out there. But make sure you protect your
data and understand what the service you are using, is taking from you in return.

Dials to 11 - Moderne Exteme Programming - Benjí Weber


Cool talk, revisting the principiles of Extreme Programming and Agile Development plus a few ideas and principile bulding on that. The concept I found most intriguing was Mob Programming, using the
brain power of the complete team to code complex core modules sounds like a really good idea. Other concepts revovled around Continious Deployment and Test Driven Development which did not strike me
as too revolutionary. The final point that I had to agree with is, that projects have to be refactored on a regular basis, especially when maintenance, testing, monitoring etc are too complicated.

Cybercrime and the Developer. How to start defending against the darker side of the web - Steve Poole


Now that topic did sound interresting, I was looking forward to hear about best practices against cyber attacks, backgrounds of the business etc. But in the end this was just the same old story of
"Check your app for security issues" and "The bad guys are out there" combined with some numbers on cyber crime and links to checklists for security issues. Breaking news.. And the biggest wtf moment
was a short advertisment break for a sponsor. Well, I am not going to get that time back...

Arduino and Java with the Intel Galileo - Simon Ritter


For this one, I was probably not the intended audience. I think I would have got more from it if I had at least some practial expirience with Arduino. Over a while it felt like an advertisement for
the Intel Galileo but soon turned into a report of the issues the Azul guys encountered when trying to get Java working on it.

Overall the style of the talk was good and it was interresting to hear what problems can occure on embedded platforms.

Extreme Profiling: Digging into Hotspots - Nitsan Wakart


Okay, this one went right into the nerd stuff. Nitsan gave a great overview over different profiling tools like VisualVM or Java Mission Control compared to what FlameGraphs in Java 8 can do and how
to use perf to help find performance issues within the Java application. If you like this kind of stuff, just go and watch the video, it is really insightful.

On Polymer and Smileys... or Polysmileys - Carmen Popoviciu


Finally some hands on coding! Carmen introduced the different features of Polymer and how it enables you to create reusable webcomponents. This was one of the talks where you saw from the first
second that the speaker really loves the topic. Carmen's passion and enthusiasm were very catching and the code examples she showed were precise, clear and easy to follow. One of my favorite talks
of this conference.

Polymer is abstracting the browser differences for webcomponents, but of course the webcomponent standard is changing. So Polymer has to adjust to those changes once those are final.

Busy Java Developers Guide to Hacking in Java - Ted Neward


Another talk with 10/10 nerd points. Ted had prepared a variety of special topics concerning tweakings of the jvm and the jdk. Basically it was an in depth tour of some of the more exotic settings
you can use to alter compiler and runtime behaviours. I must admit, I can't restate them here, so again I recommend watching the video. Ted's expertise combined with his presentation skills and his
relaxed and easy attitude made this a very enjoyable talk.

Knowledge is Power: Getting out of trouble by understanding Git - Steve Smith


I must admit, Steve knows Git. He gave an indepth overview of the basic principles Git was built upon. This started with the structure of the .git directory and how objects are created/stored and did
end with the power that the reflog gives you. In essence, if you screw up your git project, check the reflog to find the has before it all went wrong and then revert to that. For the details how to do
that just watch the video.

One thing I do not agree with though, is his hate towards git-flow. It is true, that the schema looks highly complicated and weird, but once you understand the basic system, it is rather simple and
intuitivly most teams implement something very similar. I do agree with his opinion, that you should only add as much complexity to your development workflow as necessary.

Git in Practice - John Stevenson


The last slot of the day was another Git topic, this time a Bird of Feathers (more a guided group discussion). Steve threw in some rather generic questions about workflows and team structures and
the group shared their experiences and opinions. There were no real surprises there, teams usually have some git flow like development process with feature and release branches that get merged back to
master/develop. One thing shocked my though, someone explained how their team uses code reviews to ensure code quality before merging the branch and, as I expected, there was a lot of nodding and
agreement among the other participants. But one guy spoke up and said, that he considers that sad because "you obviously don't trust each other". That was a huge wtf moment for me, but I was relieved
that noone else shared this view. A team where this kind of attitude is common can just mean that there must be a highly inconsistent code base.. *shudder*..

Day 2


Microsoft and Open Source? Microsoft and Java? Really? - Giles Davies


Well, the title says it all, really. Like most IT guys I have some reservations when it comes to Microsoft, this is of course caused by their actions in the 80s, 90s and early 2000s. But seeing how
they are now trying to get to grips with IT reality (e.g. the development of Edge) I figured I give them a chance to convince me that they are not that bad anymore.

The picture Giles tried to draw was one of a "regular" IT company that uses different technologies to provide their customers with the best possible service. While that all sounded fair enough it was
more or less what was to be expected by this kind of talk. How much of this is really as good as it sounds only time can tell. But at least it is clear, that Microsoft tries to abandon it's old ways
and so they will probably again become a global player again who might rival with Apple or Google.

Composing Music in the Cloud - James Weaver


Mr JavaFX talking again. As always his experiences speaking style made the presentation itself worthwhile. The topic itself was nice but it actually did not blow my mind. Basically Jim did show how
he was using CloudFoundry to host a Spring-Boot application that can assist in different ways of music composition and how fast this can be done with modern technology.

If you are looking for some distraction after a work day with some kind of nerd flavour, this video is the way to go.

Java 9 Modularity in Action - Sander Mak, Paul Bakker


Oh yeah, some real bleeding edge stuff coming up. Sander and Paul gave a nice insight into the Java 9 modul concept that is intended to change how Java applications are written and run. One of the
main points for me is that this aweful classpath "thing" is meant to die with Java 9. Instead applications will be composed of moduels which expose certain classes and functions and can be combined
using provide and require declarations.

Does that sound familiar? Oh yes.. OSGI!!!! The concepts of OSGI are rather old, the last time I really had to do with that was back in 2003/2004. But so we meet again. Don't get me wrong, this is
nothing bad. I really like the concept of OSGI as it also allows you to have different versions of modules available at the same time etc. So I am excited to see how this works out when it comes to
the "regular" Java world.

Of course it is not so easy to upgrade to this new version, at least not when you want to follow the new paradigm. First of, the JDK and JRE are using the module structure too, so if your
application is doing something nasty with those resources, it is very lickely going to break with Java 9. And how do you migrate to the module structure? Every application has a lot of dependencies
and those have to be migrated as well. But that was taken care of, you can use jar files as so called automatic modules, that way you can upgrade your dependencies step by step.

The downside is, that in practice those upgrade will not happen soon at most companies, because they are expensive and risky. So we will have to wait and see when Java 9 will truely be taking over.

Refactoring to Java 8 - Trisha Gee


Not so much bleeding edge, but still a very interessting topic as Java 8 is, unfortunately, still new for most companies. In additon, a talk with Trisha is always worth listening to and so was this one.
What I liked most about her approach was, that she did not do any of that fanboy "omg, you have to use all the features asap because this is new and therefore better than, omg" stuff. Instead she
took some of the most popular Java 8 features and examined them closer in terms of: How easy is it to migrate? How much can go wrong? And how does the performance change?

The results were somewhat disillusioning, not only did some patterns prove pretty tricky to to migrate to but also the performance analysis showed that there was hardly any performance gain from
using the new features and in some cases peformance even dropped.

Bottom line is, you have to decide for each language feature and each use case independently if it worth to migrate and you always have to run performance tests on the code base to compare the
behaviour under high load. For everyone who is about to upgrade to Java 8, this video is a must watch!

Faster Java By Adding Structs (Sort Of) - Simon Ritter


And some more Java action! This time about the ObjectLayout project from the guys at Azul. The idea behind this is, to bring the performance advantages that C/C++ have compared to Java due to the use
of structs.

With a struct defintion the compiler knows exactly how large the struct object is and all objects do have the same size, as all elements are only pointers to the real data. That way the code can make
assumptions of where a certain object is within an array etc. and thus take short cuts during the execution.

This is what the ObjectLayout project tries to bring into Java. For details you better watch the video, as I am sure I will mix something up if I try to summarize it here. Pretty weird stuff.

Building multiplayer game using Reactive Streams - Michal Plachta


The last talk of the conference was again more hands on. Michal showed us, how Reactive Streams work and hwo those can be used to create a nice simple multiplayer game in a live coding session. Nice
topic and the coding was ratehr easy to follow, so for me this was a pretty good end to the conference.


Summary


As I said before, the value for money ratio on this conference is still great. Lots of talks and variety of topic to choose from with some very good and experienced speakers.

Of course there are some rather minor issues, or rather things that I would not need which I want to sum up just for completeness sake.

In comparission to the first year, there where less tables, seats and especially power plugs available. This makes it a but cumbersome for us techies with all our electronic devices. I understand
that the space is limited and the organizers preferred to put up more buffets for lunch but still it would be great to get some more set up in the future.

There are also more talk slots that I did not mention, for one the Ignite talks. A series of 5 Minutes talks about some small or humorous topics. I did not get much from them and I really don't
see the point of those. But obviously there is an audience for that. The other are 15 Minute talks during the lunch breaks. Usually you are in line waiting to get to the buffet and so don't have
time to listen to them. It seems to be pretty ungratifying to give such a talk. But again, this is in place since the first year, so some people seem to like it.

The one thing that really kinda bummed me out was the organization of the DevRoxx party. The party took place at the second evening, but it was not really advertised that much apart from the
closing talk of the conference. It as then that I took a closer look at the home page and finally found the section about it and then saw that you had to go to some of the sponsors to get a ticket
for the party. At that point it was of course to late, but we decided to give it a try and went to the location just to see that quite a lot of people did not know about the tickets. So it was
not just my problem ;-) So maybe that is something to improve for the years to come.

The last thing I want to criticize is that even during the closing talk not only the sponsor stands got removed but also the wifi was taken down, which can be a problem for foreigners who have no
data contract and who want to look up things, like e.g. the party location.

Even though this seems to be a lot to complain about I want to stress the point, that this is really good conference considering the cheap prizes and that I am very sure you will not regret coming
to this in the future.



Sonntag, 15. Mai 2016

Front End Excursion °2 - BeyondTellerrand Düsseldorf 2016

So I am off to a conference once more, this time it is beyondtellerrand (#btconf) in Düsseldorf, Germany together with my colleagues Francesco Schwarz and Thomas Berendt. And yes, this is the second Front End conference in a row for me, go pixel pushers!! ;-)

Supporting Program


Running Man


Usually I would start with stuff like what happend between the talks or maybe at the warm up meeting. But in this case I just have to start with what we are now calling the "Jogging Man Incident".

On our way to the hotel, we encountered a jogger, a man in his middle years with a medium sized beer gut. Why am I telling this? Well, in order for you to understand that, I have to describe what he was wearing. The most ordinary part where is joggin shoes and sun glasses, bit more extra ordinary where the black cowboy hat and the black and white bandana. But what caused us all to kinda stop dead on our way was the rest of his outfit, a black and white striped speedo. And that's it.. 

Maybe that's nothing unusual in Düsseldorf, but boy did we have a laugh ;-)

Warm Up BBQ


On Sunday evening there was a Warm Up BBQ, hosted by the lovely people from sipgate at their beautiful office hidden in a nice and quiet backyard. There was lots of delicious food and drinks, even a rich variety of food for vegans (not that it matters much for me, but I think it is good they were that considerate). Also, as a side effect, we were able to preregister for the conference so we could sleep longer on Monday :-) 

But apart from that there was also a lovely talk by Eva-Lotta Lamm, title provocatively "Sketchers are better Thinkers". Even though I am not totally convinced, I did get a feeling how sketching can help you to think of creative solutions. Sketchers start with simple shapes like lines, triangles, squares or circles and then proceed on to more complex objects by composing them of those simple shapes. This way you practice e.g. how to split complicated requirements into simpler parts and thus come up with an elegant solution. 

Another point that Eva-Lotta illustrated nicely in this low tech but highly entertaining talk was a suggestion of how to put your skills into relation with those of others. She did so by giving a brief overview of how her sketches evolved over the years, from very very simple up to being rather sophisticated. So this is something she is very happy about, seeing her own considerate improvement, instead of comparing herself to people like professional painters/sketchers. Those are of course able to produce way more realistic images. So comparing yourself to those is not only very depressing but also totally pointless. Always look at what you did achieve not only at what you you did not yet.

Thank you for the Music


Throughout the whole conference there was not just some music playing, but instead they mixed a special beyondtellerrand song, that played at the start and end of the conference. That was a nice twist in itself, but it was not just soe playback there. Instead there was a dj, Tobi Lessnow, mixing live for us and you could see immediately how much fun he was having :-) And what was the coolest part was Tobi mixing quotes from the previous talk into his music during the breaks. I know it does not sound like much, but it really lifted peoples spirit and made the time to the next speaker pass by rather quickly, thanks for that!

Entertainment on the side


Oh we are not done yet with the entertainment. The organizers put up some really old vintage consoles, Atari, Nintendo etc.where you could play classics like Pac Man, Mario Brothers or even Pong! Yeah, those were the days! Really really awesome. 

But what cracked us up the most, were the chaps from Accenture Digital, with their booth display. 


For those who do not see what I am talking about, look at the line below "solutions" and in case you need more hints: After a while the first two words in that line were taped over rather quickly. 

Sorry guys, I know that was just a small mistake, but especially at a "front end" conference that just has to create lots of lols ;-) 

Day 1


Ok, enough dawdling, let's talk business.

Time and Creativity by Christopher Murphy


Chris was elaborating on the concepts of procrastination/late binding as well as t-shaped thinking and yak shaving. I am still not sure I totally got everything he meant, because it does not quite make sense to me yet ;-) But I will try to sum it up.

Chris' basic example was one we all know, you have a deadline for a project, but instead of working on it immediately you are doing other stuff and then at one point you realize that you must start now and work around the clock to finish on time.

The time that get's "wasted" until you start working is what Chris calls "fuck off time". At this point I was expecting suggestions how to motivate yourself to start earlier to get the project done properly. But thatwas not quite what Chis was going at. His point was more, that you should use the "fuck off time" creatively so that it is not wasted, as your time on earth is limited. He also explicitly stated that you should not work at that project but instead do something else. To me this seemed a bit odd as it implies that ususally the "fuck off time" is wasted and people are just sitting there waiting for the deadline to approach. 

Maybe my confusion stems from me being not a big fan of procrastination, because at my work I often encounter the results that people produce that are "fucking off" a lot and then leave a mess ;-) I think this technique is not for everyone and is often abused by people who just want to be lazy.

Another term Chris was using is late binding, basically a kind of deliberate procrastination in a way that you only do stuff when it has to be done. That way aou are able to take into account the most recent requirements and thus can create a solution that honours those best. While I understand this reasoning I do not totally agree in the context of builing software, for the same reason as above. Too often this idea is abused to just slack off and then produce rubish within a short amount of time. So again, this concept should not be adapted without questioning if it is really appropriate for the task :-)

The second topic in Chris' entertaining talk was about yak shaving and t-shaped thinking. Yak shaving describes what happens when you set of to do a small task and during this notice that something else needs to be done and so start with that before finishing the original task. Like when you start tidying up and then notice that a drawer is broken and then start fixing that but then you see that some of your tools are broken so you head off to the hardware store and then you see that you have a flat tire and so on. For Chris this is a rewarding technique as you occupy yourself with tasks fom different areas of expertice. This leads to the concept he calls t-shaped thinking, meaning that the future needs people that have a certain area of expertice that they excel in but also have basic knowledge in a lot of other areas. This allows them to connect ideas and approaches from all of those areas to create a more complete and satisfying solution for a problem.

And finally he was pointing out how importing it is to solve a problem by addressing it's root cause and not simply the symptons. This is were t-shaped thinking comes in handy again, as sometimes you have to think out of the box to really understand what the problem is and how to solve it in the best possible way.

Especially this is what I can relate and agree to the most from this talk. And while I disagree with Chris on some of his points, I must say this was a very entertaining talk and a great start to the conference. And in case I misunderstood anything in this talk, I would be grateful for any corretion :-)


Advice from a young Designer to younger Designers by Lil Chen


Second in line was Lil Chen. She spoke about her experiences when she started out in her first job and what she did learn from them. Basically all of her points can be applied to any profession not just designers and it boils down to a few important points.

First off it is important to learn how you can communicate about your job and duties with people from other areas, e.g. how a designer can explain to a developer or marketeer what males a design good or bad. And instead of just rambling about something being bad, explain what exactly is the problem with it, so that others can understand you and have a chance to relate to it. That way they have the chance to communicate with you and your colleagues in a better and more efficient way.

Second you have to actively promote your skills, you cannot just expect people to know what you can do. Instead you can start little side projects to show how you could improve certain aspects at your company. Make yourself heard without being arrogant, be encouraging and strife to make your and your colleagues work better.

Also it is important to show confidence when you start a new job, don't act like you don't care or are scared to take action. Try to be a productive member of your workforce. And last but not least, everyone is hired to fill a role, but noone says that role is set in stone. You can shape your own role to become something more than initially intended and thus become an even more valuable asset for your employer.

All things I can second and that everyone should keep in mind, not only when starting a job but also throughout our career.


An abusive Relationship with AngularJs... by Mario Heiderich


Mario is a security specialst and together with his team runs penetration tests on various systems and software. Mario is also a lightning speed talker, so it was a real challenge to keep up with this very technical and advanced talk and not miss anything :-)

He showed various ways how it was possible to exploit angularjs in order to get access to the top level javascript components like window, which should be protected by the angular sandbox. Especially interessting was how he illustrated the ping pong between his team and the angular developer team and how the bugs they reported got fixed and how they then set off to find new bugs. At one point they were able to tell who fixed a bug and sometimes predict what new bugs this fix most likely introduced - very impressive.

Their work has increased the framework security dramatically, but unfortunately it turned out that angular 1.x is still and will always be somewhat unsafe as long as you have user input in our application. An upgrade to 2.x should fix those problems, but would cause a rather large amount of work since the new version contains a lot of breaking changes. 

What I found most interessting was when he explained how they managed to introduce a deliberate security hole into the framework source code via a pull request seemingly inteded to fix a minor bug. This was done with knowledge of the Google security team and they took care that the bug was removed before the new version was released. But they did prove that the system is vulnerable and that nobody can be sure his software is not prone to security issues. Despite this kinda depressing result I really enjoyed this very technical talk.


Unreal.js by Michael Chang


Michael showed us different prjects he was part of during his career. One especially asonishing one was the visualisation of a sculpting process of various artists. By using tracking information of the sculpting tools and head mounted cameras, they were able to create some kind VR experience. You could see how the sculpture got created from the view of the artist and could also rotate around the scene while the sculpture was growing. This is very hard to describe properly, so I hope you will be able to see for youself in the video of the talk.

Another aspect was how Michael wanted to create some kind of Sim City like game, where you can see a city growing and a simulated timelapse with cars driving though the city and how the lights change during the night. All in all an ambitious project.

He showed us his first steps where he created a tool to draw streets and how he created images for buildings and lighting by using thee.js. It was also impressive to see his strive for perfection and how far he got with the game. Then at one point he had to update his libraries only to find that a component of three.js that was crucial to him got deprecated and thus he could not rely on it anymore. 

This taught him how dependend you are on the maintainers of open source projects. So after cnosidering his possibilities he came across Unreal.js which is a java script plugin to the Unreal4 engine. Finally he decided to move to this engine and he was able to show us some of the awesome capabilites of this tool, which allows you leverage the Unreal engiens features through a javascript API.

For me this talk was inspiring to have a look at Unreal.js and maybe create a small game of my own. Hopefully I can scrape together some time for this :-)


Designing socially impactful digital Experiences by Catt Small


This talk again addressed the more abstract aspects of technology projects. Catt elaborated on how well meant social projects can backfire due to lack of planing or research (a.k.a. Murphy's law butting people in the butt).

She pointed out that to create something truly meanignful you first have to really understand the complete scenario:
  • what is the exact problem you are facing, not only the symptoms but the root causes?
  • what do you need to provide to improve the situation?
  • sometimes you do not have to create a completely new experience but it is better to augment something existing
  • look at all possible failures and how those would impact people relying on your project
  • do you need an information app? or maybe a communication tool?or something completely different? 
  • what are the limitations of your project, not only technology wise
  • do you really have all th facts you need
  • did you ask for help on aspects you lack experience in?
  • when you got feedback, did you really consider it and learn from it?
  • test everything as soon and as often as you can
All of this is crucial to design something that is really meaningful to the society. Catt decided to create a game to improve the sex education in the United States. She did this, because she noticed that there was no standard among the different states and that more often than not young people were badly or even ill informed by their teachers or other adults. She wanted to change this and thus created an application that allows people to get informed about sexual topics without having to be afraid to be denounced by others. And even though she knows this will not change the world over night, she is sure it will contribute a small part in order to improve the situation. 

I think it is great, that today someone can build something like that and help to make the world a better place.


Typography on the Web is just like other Typography only much more interessting by Indra Kupferschmid


No web conference without at least one typography talk :-) 

We started off with the history of typography and layouting from the first newspapers and books up until the modern age. Indra showed examples of different kinds of typography - posters, books, scientific articles or ads. She showed the main differences between those typographies and what those differences were used to achieve.

Soon it became clear what she was going at, e.g. the posters had large catchy letters so the readers attention is drawn to the few keypoints. The ads were similar, not that much text but with strong emphasises. On the contrary books and articles were designed for smooth and easy reading, while the article was more structured to guide the readers focus to it's main aspects.

Indra pointed out how important it is to take into account how your text will be read when choosing fonts and layouts. If you have a long text the font should be clear and easy to read with a high contrast (yeah, I know the current blog style does not adhere to that.. I will try to make a better one, promise!).

Another good point was, how usage of different styles (bolds, italics etc.) can be used to guide the readers focus to the central aspects of a text. She rounded everything up with  a very good series of examples on good and bad choices for typography for all kinds of reading purposes. Very insightful.


Living Language by Ori Elisar


This was an unscheduled intermediate talk by Ori about his art project he put on display in the lobby. The background is the evolution of the Hebrew alphabet from the ancient to the modern version. To illustrate this he prepared a set of petri dishes and in each he put a culture of a bacteria in the form of a letter from the ancient alphabet. Then he added nutrition for the bacteria in the form of the modern version of the letter. That way the bacteria grew from the ancient into the modern form.

When he was happy with the result he killed the bacteria and thus conserved the spread of the bacteria for exhibition.


The Reinvention of normal by Dominic Wilcox


Okay, I must admit it: I was NOWHERE ready for what hit me there. Dominic Wilcox is definitly an unbelieveable creative mind. He has done tons of drawings and sketches about inventions or simply weird ideas. Some of them remind me of style of Monty Python in terms of weirdness and lunacy, which is a big compliment in my book.

No description can do justice to what this man does, so best check out this short movie about him. Here are just a few of the things I remember:

  • his office is a tree
  • reverse bungee
  • head mounted cereal crane
  • reverse hearing
  • tummy rumbling amplifier
But he is not only inventing funny stuff himself, more importantly he is running projects to encourage children to creative and innovative thinking. Make them explore their minds and show them that it is okay to have strange ideas and not being afraid to speak them. This is something I consider very valuable and hope he reaches as many children as possible with it.

This extremely funny talk was a perfect closer for day one and made me look forward to... 



Day 2


Resiliance by Jeremy Keith


As Jeremy put this so eloquently, this was the hang over slot. But boy where we in for a treat. First he started with the good old "History of the Internet" starting with ealry ARPA-Net and the origin of the World Wide Web at CERN by Tim Berners-Lee. 

Even though this is old news, Jeremy told it in an highly entertaining way. What was new though was his way to look at the basic principles that compse the internet as we know it today, HTTP, URI and HTML. Simple principles that let us compose a net of documents and information that can be extended easily and seemlessly. Anyone can put out a new website without needing permissions or being added to some central repository. And why is that? Because all core technologies are designed from ground up to allow this. They seem simple and sometimes even crude, but they are just very elegant.

More on the topic of resiliance Jeremy took a look on the three basic components that we use to build websites, HTML, CSS and JS. And although it is something we all know, it was still enlightening to hear him pointing it out that HTML and CSS also are from ground up resilient technologies.

You can still open websites from the very first day in any browser, likewise old browsers still can display websites with new HTML. This is due to the fact that with HTML the browser just ignores tags it does not know, it simply ignores them but still displays the content within that tag. That way it is virtually impossible to break a webpage by HTML. Same goes for CSS, what ever the browser does not recognize just is ignored but it still goes on parsing the remaining HTML and CSS to show as much as possible to the reader while not showing an errors to the reader.

JS on the other hand is very non-resilient, If you put something in your JS that the browser cannot handle, execution will break. The rest of the JS will not be parsed or executed and there will be errors, at least in the browser's developer console. This is due to the fact that JS is an imperative language as opposed to HTML and CSS which are declarative languages.

So it would be good to use HTML and CSS as much as possible and as less JS as possible, right? So, why don't we do it? Sometimes it is because we do not know better, but more often than not, it is because we want to build functionality that can only be implemented with JS. But history shows, if a feature becomes popular and important enough, people start to put this functionality into the browser's HTML parser. And then we can use HTML for this feature, making the site more resilient again. 

The last thing I took from this talk is the advice to build your website in a way that as many people as possible can enjoy it. Meaning you build the page with the most basic of feature sets so that old browsers can still make use of it. Then you add additional convenience features leveraging newer technologies. That way up to date browsers can provide the best of all possible experiences for their users, while older browsers can still provide access to the data.

I am sure this is not always perfectly feasible but it is definitly something to keep in mind when building a page.


Designing meaningful Animation by Val Head


Usually when I hear people talk about animations I get the creeps, because I have seen to many pages loaded with bollox animations all over. This is something Val is also aware of and her mission is to sharpen peoples awareness about how to use animations in way that make a webpage work more seemlessly and more consistently.

In order to show us what that means she put on a little live coding session. During that she showed how to use the cubic bezier curve to get nice and smooth movements as the default animation properties in CSS are somewhat limited.

Unfortunately that is another talk that does not make sense to depict here, so you just better watch the video. I think it is really worth it. My colleague Thomas Berendt got hooked up immediately and spend the rest of the day hacking together animations at code pen during the rest of the conference while listening to other talks. So Val really hit it off there :-)


Your Hero Images need you! Save the Day with HTTP2 Image loading by Tobias Baldauf


Now how can I put this? IT... WAS... AWESOME!! I do not mean to offend anyone, but this is exactly the kind of talk I would like to have way more of. Filled with reliable research data, back up information on all statements and everything explained in detail. And on top, some hands on examples. It just swooped me away!

Oh yeah, back to the actual topic. Tobias did explain what can be done to speed up image loading on your web site. Now you will say: Ahh.. I know about that stuff already. But behold, there is something new to this that is not widely known yet.

But first we gonna recap the known stuff. Step 1 - Switch to HTTP2. With HTTP2 resources from the webserver are streamed allowing browsers to use more efficient ways of displaying data quicker. Also the clients can load resources in parallel instead of sequential as in HTTP1.x. That way pages load much much quicker .

Step 2 - Use optimal compression. Here Tobias suggests to use mozjpeg, which is, according to him, currently the best and most efficient jpeg encoder on the planet. That way you can drastically reduce the amount of data being sent over the wire.

Step 3 - Use progressive jpeg images. With progressive images the browser can display images to the user even though they are not fully loaded yet. Non-progressive images are encoded sequentially, so the browsers loads and displays them line by line, which we all know from slow connections. With progressive encoding it is basically like the browser is sending a small amounts of every 64bit package jpeg is encoded in. With every frame that gets transmitted the image gets clearer and sharper but is pretty much already completely comprehensible with 15% of the data transmitted.

Now this is, what you probably have already known. What is very likely knew is (Step 4) that you can toy around with the frame settings. By using e.g. less frames and transmitting a bit more data in the first frames, the user has an almost completely usable webpage much much quicker. The rest of the image data is still loaded and sharpens the images more until full detail.

All of this is very valuable information in our times when it is very important to provide readers with workable webpages as quick as possible.

For me, this talk was the highlight of the conference. Just great!


Cracking the Code by David Jonathan Ross


Despite the title, this was another typography talk ;-) But it was indeed different than usual, because this time it was about fonts for us developers. So fonts that you can use in your IDE and editors to make your code as readable as possible. 

David gave a detailed overview over a lot of coding fonts from the early days like Win95 until now and what he learned from them.

All this led him to the development of his own coding font, called Input. A free font with 7 different weights and 4 different widths. From there on, it was more a bit of advertising his font but I did not mind as he was making good points on how he got around to making the design choices for Input.


Bye, bye Screen by Andrea Krajewski


This talk was concerned with what we call the Internet of Things. Humans are transfixed on things, because our mind kind of needs things to comprehend the world. That's way we also picture abstract concepts like e.g. time as an object, a thing.

Andrea introduced several projects from her students that try to combine sensual impressions with technology. One of this projects is called Juno and it consists of two roundish objects that are meant to transmit vital signs and moods over the internet to make long distance relations more bearable. When ever someone touches his Juno it reacts to body temprature, pulse etc. and then the counter part emits light and maybe sounds to transport all of this information to the partner on the other side. At least that's what I understood.

Another project called Miro is meant to determine how you feel and what you need and then make suggestions on how to keep or imporve your health. This would be something like telling you to get running or eat/drink something e.g.

Unfortunately there is not much more that I took from this talk, not sure if I missed a key point. If so, please let me know.


How to get the Public to fund your daft Ideas by Mr. Bingo


Ufff, the final talk. As it turns out, this would be a similar finisher as the day before. Extremly funny and entertaining. Mr. Bingo is also a very creative mind, as he likes to draw funny and also often very offending sketches and images, which he became quite famous for.

At one point he offered on twitter to send an abusive hate mail post card to anyone who responds to his post. And there were like 50 replies within a few minutes. In fact the resonance was so big he could not handle it all and so had to shut down after a short time. He is still opening his services from time to time for a few minutes because then he has so many requests again that it takes him weeks or months to process them all.

Now this does sound pretty weird, why would you pay someone to insult you by post? Well, to understand that you have to see his artwork. Some of it was also exhibited in a museum. And once again the medium of text fails me to describe what we saw on his slides. So again, please just watch the video of the talk and you will see what I mean.

Ok, then we came to the topic, crowd funding. Mr. Bingo wanted to print a book of his drawings, but not just some book. He wanted it to be a top class book. With high quality paper, neat designs on the cover, just everything top notch. But the cost for such a book as simply to high for any publisher to take on the project.

And that's where Mr. Bingo wanted to give kickstarter a try. When he had a look at the promotial videos for other kickstarters he considered them a tad boring, all being basically the same. He wanted something different. So he set out to make bad ass rap video.

So the main part of the talk is about him describing how he went about to create this video, his mistakes in this and all he learned during the process. All that is too much to write down and I could not give enough credit to the humor in it. So I have once again tell you to just watch the video. Believe me, it is worth it!!!


Rounding it up


After that last talk, we set off to the airport to catch our flight home. But we spend all the time talking about this really great conference and all the laughs we had. And all thanks to Marc Thiele.

As you might have noticed I linked the videos to the talks and to the speakers twitter profiles in the respective subheadlines. Unfortunately at the time of wrting this, the videos of Dominic Wilcox and Mr. Bingo are not available. I really hope they will be put online as those are the two talks that would benefit most from it.

And finally a little disclaimer. All what I wrote above is simply my personal opinion and impression. Should I have forrgotten or misunderstood anything important, please let me know and I will gladly correct it. Otherise I hope you enjoyed reading about my experience and to everyone who made it through this rather lengthy post - Thank you!


Montag, 26. Oktober 2015

A Backend Dev's Travel to Frontend Land a.k.a. Me @ Smashing Conference 2015 in Barcelona

Now this must seem pretty weird, what is a backend developer fossil doing at the conference of one of the most reknown frontend technology magazines?

The answer is simple, seeing what those pixel pushers are actually doing ;-) Or on a more serious note, trying to broaden my technological horizon, whereas I did not expect to understand very much. But you got to give it a try :-)

So first off, the choice of Barcelona to hold the conference was awesome. A very lovely city, great food, nice weather even in October and open and friendly people. On top, the conference venue was the Palau de la Música Catalana, an old and very impressive concert hall in the
heart of Barcelona.


The Palau's east corner.

The small café, later used for refreshments.

Stair case to the conference hall.

Inside view of the conference hall.
Ok, let's talk business: 

Day 1


Chris Coyier - The Wonderful World of SVG


Well, SVG is nothing new as Chris points this out himself, but still it is underused in most web applications, which is a shame. Chris shows the beauty and simplicity of SVG, how to use it and also what you can do when you have more complex needs (e.g. using defs and use directives to allow reusability). It was a very enthusiastic talk, entertaining and informative. One of my colleagues fired up an SVG editor and didn't stop playing around with it for the rest of the conference ;-) So this was definitely a great start and got me excited regarding the upcoming talks.

Jina Bolton - Living Design Systems


Who doesn't know this kind of problem? There are style guides as PDF or maybe even DOC stored on some network drive, most often in different versions without proper time stamping or even worse just some print outs on a wall in some designers office. Noone really knows what version is the current one, none tells you when it changes etc. The result is an inconsistent user expirience despite an usually high maintenance effort. Jina showed us how they tried to tackle those difficulties at sales force.

In summary they used a technial approach to maintain the style guide, a json format which is then processed by a self built tool that translates it into different technologies like sass, less or even android layout information. A key to that was active and intense communication with all involved parties and to have the designers to actually work in the browser and not just using photoshop to define the style guide.

Talk and topic where both very interessting but adopting this approach for a regular company will probably prove rather difficult. Especially getting the designers to forsake their precious photoshop might be almost impossible in many cases, as it would require the designers to actually learn html and css. Nevertheless I hope this methodology finds it's way into more companies.

Patrick Hamann - Embracing the network


Uhh yeah.. Network!! Finally something I can really relate to ;-) This was a very enlighting and amusing talk about how network failure can impact browser applications and not only with the all to common absence of data or some "request failed" message. loading of ads, tracking scripts or even fonts can result in a broken or even unavailable page should the requests for those resources fail.

Patrick gave a good overview of how to avoid having your site broken by some external dependency, e.g. always use proper timeouts, make sure you really need what you are loading, use asychronous loading etc. But also what you should do proactivly, disable Javascript and then see hwo your site loads/performs without, what works what doesn't, use SPOF test which are available on pages like webpagetest.org.

Very good talk, very cool topic. Enuff said!!

Seb Lester - Peace, Hellfire & Outer Space


Woah, what a title.. But who is this Seb Lester? I had absolutely no clue what to expect here and I was very surprised when I was presented with wide range of drawigns,paintings and mostg of all calligraphy of all sorts. I got to hand it to Seb, he is one heck of a talent there and once in a while he even threw in the occasional joke. But in essence this was just a listing of his different successes in artwork for an impressive list of clients /(the coolest IMO the NASA for their SWOT project). I still fail to see what this has to do with web development or even web design, as there was nothing you could take away from this talk. Apart from that to become leading in your area of expertice you do not only need talent but also dedication and maybe to some degree obsession for what you do.

The talk itself was also more like walking through a check list. First he showed the agenda "First I will tell you..., then I will show you..., then I will tell you..." and then stoically going through that list. Most of the time he seemed rather anoyed with "having" to give this talk and he was the first who seemed upset/impatiant during the following Q&A session with Vitaly.

I am sorry but this was the low light of the conference and this talk seemed totally out of place to me.

Joe Leech - How to design with science without loosing the magic


What works and what doesn't? What do you have to consider when you want to convince your audience? Simple and obvious questions with tricky and complicated answers. Joe shared his experiences from a lot of different projects with us, The essence was, if you want to make the sell, make your images big and shiny and do not put too much magic into the user interface or the client will be confused, As an example for the last point he referred to a case where a project used the users credit card number to automatically display the card brand (VISA, AmEx, etc.). This can be deducted from the first numbers of any card which means there is absolutly no magic involved, but many clients thought that this information was somehow obtained from their personal data which lead to a drop in sales.

I wonder why you could not put a short explanation next to the credit card brand, but there where probably reasons for it. Joe's conclusions, as much as I might not like them are surely valid and show the sad but undeniable truth about humans.. we are stupid ;-)

Brendan Dawes - Paper, Plastic & Pixels


Brendan gave us a thourough overview of his past work, many different ways of visualizing data and innovative approaches for physical user interacttion. Even though this was another simple listing of "what" was done, instead of showing techniques of "how" to do things, it was inspiring. Also in this case the "how" was always different, always a result of creative thinking out of the box. So that would be VERY hard to give instructions for ;-) I can only recommend to check out the presentation as it would be useless to describe the different visualization approaches, it is well worth the time.

Day 2


The Mystery Speaker... Bruce Lawson


This year's Mystery Speaker is one of the people behind the Opera browser and his enthusastic talk covered a lot of ground. Starting with web components vs installable webapps, passing over the difficulties when trying to define a web standard to the process of how to get a new feature into the html standard. As an example for the latter he gave how responsive images found their way into the browser. This was an interesting insight how browser development works and how browser developer think.

Anna Debenham - Game Console Browser


Anna basically gave an overview over what browsers are available on what console, what those browsers can do and more importantly what they can't. Also she showed us what challenges web page design for those varying displays hold for us and, at least for my part, managed to raise some awareness for it.

I must admit that the practical relevance of this is still kinda minimal, but I am also sure that in the next 5 - 10 years this will become rather important and so we should take up on this opportunity to make up our mind about it.

Zoe M. Gillenwater - Enhancing responsivness with Flexbox


Well, this was just Flexbox in depth! How you use, what it does, what is the difference to other layouts, what are the benefits, how you make sure a fallback is used, etc. 

Everything came with working code examples, plain and simply hands on stuff. And I LOVED it!! Mainly because it was nice to see actual code for a change, as opposed to concepts and theories as before. On the other hand this means I cannot say any more about it, apart from: Look for the slides and checkout Flexbox if you haven't already!

Espen Brunborg - Graphic Design in the 21st Century: Is the internet killing creativity?


I must admit, after the first 5 minutes into this talk I thought "Oh my god, this will be an hour of useless whining - shoot me now!" But I was wring.. UTTERLY wrong, as it turned out to be one of the best talks of this conference.

Espen's point was twofold. For one he pointed out, that creativity in the web indeed seems to have gone into hiatus. Most web sites look the same, with similar layout, almost identical look and feel and basically looking like copy cats of each other. He made a very strong point to dare trying new, creative and maybe unconventional approaches. Designers should take pride in what they create and try to make something unique. 

The second part of his talk was related but still something different. His point was that designers restrict themselves too much with so called "rules" of what must be done and what mustn't, examples for this are the dreaded parallax or the often shunned carousels. Espen's response was "I use those" and he showed the audience where and why he did use those elements. And he has a point, there are cases in which all of those things make sense and thus can or maybe even should be used. Cases in which they emphasize the message of the site or even improve the user expirience. His bottom line was, that you should not blindly follow every rule that is out there because if you do you can't do anything useful, instead think for yourself and decide what to use and what not. And if someone disagrees, well that can always happen. But if you are convinced that your's is best approach, stick to it!

Zach Leatherman - A brief history of that time you used web fonts


Here Zach told us a lot about what is good about web fonts and what is bad, or rather what many people do wrong when using web fonts. This had a lot of overlap with Patrick's talk from Day 1, but covered the fonts aspect way more indpeth. His main focus was the importance of font loading strategies and what can go wrong if you ignore this point, which can even lead to our web page being unable to render. He showed us how FOIT (flash of invisible text) and FOUT (flash of unstyled text) can occur and how you can deal with that. Was very interesting and you should definitely checkout the slides.

Andrew Tider & Jeff Greenspan - We'll teach you everything we don't know


Well, what can I say about those two? They are crazy and did crazy stuff during their carrers ;-) Starting with plush toys of sexual techniques over a sound prrof booth where you can shout at George Bush to a statue for Edward Snowden in Central Park. 

They spoke about how they started their projects without having a clue how they will turn out or most of the time not even knowing where to start. The essence was that you have to believe in yourself and your idea and that you have to dare to go down an unconventional path, maybe even walk the line of legality. Think out of the box and don't wait for miracles to happen, make them happen!!


Andrew Clarke - Counting Stars: Creativity over Predictability


So, the very last talk of the conference. I was curious what gem the organizers had saved for us. Weeeelll.... I would say the summary of this talk would be like the first 10 minutes of what Espen spoke of earlier. Creativity in web design runs low and designers should create new and original pages again. Something they can be proud of instead of just copying what others have already done.

Yet Andrew managed to drag this point on and on for 50 minutes boring the hell out of the audience. And just have to point out the irony of holding a talk where you complain that people just copy instead of create and then have about 50? slides each one having just a quote of someone else. There was actually exactly one slide that did not have such a copied quote and that one had a quote of himself. Sorry but quoting yourself in a talk is pretty lame. 

So this one was a huge let down and it seems Andrew noticed the audience's disapproval because he was extremly rude during Q&A.


Summary


I did really enjoy my first Smashing Conf, the overall level of talks was good with the occasional crap in between that you just cannot avoid. Nice location, some goodies and tasty catering.

It was a bit of a pity that there was no lunch served at the venue, so every group wandered off on their own but understandable that you cannot do that in such a location. It was also a bit unusual for me that there was only one track, on the one hand you don't miss anything but on the other hand you have no choice what to hear. Not sure if that was good or bad tbh ;-)

I think I could have done without the Q&A which often resulted in a chitchat between Vitaly and the speaker but I heard from others that they liked it. So I guess everyone has to see that for himself. 

I would also like to point out that the party on the first evening was held in a nice venue, the Estrella brewery with great catering. I think it might have been a bit better if there had been bistro tables to allow people to mix up easier and maybe not only have beer and water for drinks, but hey nothing is perfect ;-)

Sonntag, 22. Dezember 2013

Dark Elf Painting Finished

So I finally managed to get my Dark Elf team painted and I must say I am kinda happy with the results. Of course any pro painter would just laugh at it but hey, it's still the best I managed so far ;-)

The color theme is Naggaroth Night, Xereus Purple, Hoeth Blue and Shining Gold. So rather traditional for this kind of team. As always painting the eyes has been the most pain for me and only for the Witch Elves it turned out okayish, so I still have a lot to practice in this area. Also I could not be arsed to bother much with high lights and shading but I will tackle this with the next teams.

This has also been my first project where I used electrostatic grass and I think it looks pretty neat. First the bases have been flocked with brown acre and then another layer of glue and grass finished it off. That way in some places you can see the sandy ground and hopefully this does not mean I have to replace all the portions of grass the minis will loose over time.

Finally I added two layers of spray varnish, first glossy then mat to preserve the color as good as possible.

And yes, I really need to get a better camera for future pics ;-)




























Montag, 30. September 2013

Iterating in Scala Play templates and Reverse Routing

Today I finally solved a puzzle that bugged me for the last few days and even though it is in some kind a case of RTFM I decided to put it here because someone else might encounter the same problem

Play has pretty powerful templating engine that allows you to do lots of different stuff when generating html. Two of those features are iterating over lists and genrating URLs by reverse routing.

My problem was that in my template I was not able to get a URL out of the reverse routing and at first I thought there was a mistake in the routes configuration or in the template syntax and searching the web and documentation for it drove me almost mad.

The solution was something completely different though. In a template you can basically inject any Scala code fragment which also includes flow and control structures. The documentation about ScalaTemplating states that you can use a for loop to iterate over list items but the framework also allows you to use the map function of a list to process it's items. The code compiles, the page gets rendered without warnings or errors and everything looks fine at first. But if you want to insert a link generated by reverse routing for each item you are screwed with this approach. For some reason the reverse route does not get generated in this case.

@items.map(item -> {
     <a href="@routes.Application.index"></a>   <-- Creates <a href="@routes.Application.index"></a>
})

@for(item <-items) {
      <a href="@routes.Application.index"></a>   <-- Creates <a href="/"></a>
}

So to sum it up: Always use "@for" to iterate in Play templates to avoid stuff like this. Though I don't really get why it has to be that way...

Mittwoch, 12. Juni 2013

Constant Tarfiles For Resumable Downloads

Our Situation

 

We have an Java based backend server providing daily changing content to mobile applications as a gzipped tar archive. The content can change over the course of the day and some applications need to download the complete content in the new version, while others need to get the diff between some versions. In addition old content from previous days has also to be available in all those variations. That means it is not really feasible to have all possible different tar files pregenerated and stored in our backend (yes Hadoop and friends stand ready to help but at the moment this is not an option for us for several reasons).

So what we do is, store the different versions of our content, calculate the needed tar files,  deliver them to the requesting app and put the file into a caching server to reduce load but of course we cannot cache everything permanently so the entries timeout from time to time.

 

Our Problem

 

Some applications reported downloading issues that we at first blamed on general mobile network issues but after a while it became evident that there was more to it. After some debugging on application side it seemed that in some cases the app was not able to resume an interrupted download due to the checksum of the file having changed.

 

The Underlying Cause

 

This issue was quite a surprise for us as we were sure that for every kind of request the corresponding file was created from exactly the same content every time. But by bypassing our cache the effect could be reproduced immediately by downloading the same file twice from our server. The mighty diff tool told me that the two archives differ even though their extracted contents did not (phew...).

My first suspect was gzip and a quick Google search brought up some hints about the gzip timestamp header that is contained in the first 10 bytes of an archive.So I fired up my hex editor to check the starting sequences of the two files only to be disappointed because they were exactly the same. Having a look at the libraries source code of GZipOutputStream (we use the Apache compressor lib) revealed that this implementation sets a fixed timestamp for all gzip archives (all fields are set to 0 whch I think is the right thing to do).

Looking at the differences of the archives in my hex editor and matching those against the tar rfc docs it became clear that the culprit was the mtime header for tar entries. In our code we construct the tar entries using the filepath and then add bytes from a stream to it. The invoked constructor sets the entry's mtime to the current time so it is different every time the archive is created. Eureka!!

 

The Solution

 

Now that was rather easy to fix, we now calculate a timestamp value based on the date the content was created at, with a few tweaks, that is constant for each single file and set that as mtime for each tar entry we create, et voilà :-)

 

Sometimes They Come Back

 

A few weeks later we got reports about some strange download issues again, this time with only with certain content packages and it was absolutely not obvious where those came from. We had a lot of red herrings to hunt and during one of those hunts I noticed that files that should be identical in some cases simply weren't. Again diff and hex editor came to the rescue and I found that for some entries the mtime headers again did not match!!! So we got down on the code again... Did I forget to handle any tar entries? Nope, everything was covered... Any issues with entries being added twice or changed in other methods? Nope.. nothing.. In addition after extracting the tar all files had the desired timestamp, no sign of the other timestamps at all.. Oh how I swore...

So back to checking the archive contents.. then the tar docs.. and again the archive contents.. finally I found a clue, a classic tar entry has only 100 bytes reserved for it's name field which contains not only the file name but also the complete path to the file within a directory hierarchy and the offending files lay within a rather deep directory hierarchy and had pretty long names itself. To change my suspicion to certainty I added a copy of a file with the correct timestamp to the content and altered it's name to exceed the 100 byte limit. In the resulting tar the copy again had the invalid timestamp and just then I noticed something else, for the copy's name there were two header entry's while the original file only had one.

So I did more research about long file names and header fields and dug into the code of the TarOutputStream class. To handle long file names tar can use additional posix or gnu headers and in both cases the TarOutputStream creates additional tar entries using the same constructor as we did in our code. So if you have long file names in our archive it will contain additional tar entries that always have their creation date as mtime header value!! Oh man, that was mean..

 

The Solution - For Real This Time

 

The only way to fix this was to copy the code of TarOutputStream to our project (and TarBuffer as that class is a dependency of the former with default scope) and adjust it so we can set a custom timestamp for the additonal entries.Not my favorite way of fixing things but unfortunately we had no other choice here... So beware of tars with long file names if you need to rely on the checksum..