Posts

As a follow up to the earlier link regarding the performance of animations in CSS vs JavaScript, Christian Heilmann – Myth busting mythbusted: Jack is doing a great job arguing his point that CSS animations are not always better than JavaScript animations. The issue is that all this does is debunking a blanket statement that was flawed from the very beginning and distilled down to a sound bite. An argument like “CSS animations are better than JavaScript animations for performance” is not a technical argument.
2014-01-14
1 min read
Myth Busting: CSS Animations vs. JavaScript: As someone who’s fascinated (bordering on obsessed, actually) with animation and performance, I eagerly jumped on the CSS bandwagon. I didn’t get far, though, before I started uncovering a bunch of major problems that nobody was talking about. I was shocked. This article is meant to raise awareness about some of the more significant shortcomings of CSS-based animation so that you can avoid the headaches I encountered, and make a more informed decision about when to use JS and when to use CSS for animation.
2014-01-13
1 min read
The Guardian: Are iPads and tablets bad for young children? Kaufman strongly believes it is wrong to presume the same evils of tablets as televisions. “When scientists and paediatrician advocacy groups have talked about the danger of screen time for kids, they are lumping together all types of screen use. But most of the research is on TV. It seems misguided to assume that iPad apps are going to have the same effect. It all depends what you are using it for.
2014-01-09
3 min read
If you’ve gotten used to your trackpad scrolling the same way as on iOS and (by default) OS X but you’re using Linux you’ll want to go to the “Mouse & Touchpad” settings panel and tick “Content sticks to fingers”. Yeah I know,shockingly simple but for whatever reason I had assumed “Content sticks to fingers” related to some weird drag and drop system…
2014-01-06
1 min read
This is mostly a note to myself, but often when I setup a new Linux install, I find that JUnit tests run significantly slower than usual. The CPU is nearly entirely idle and there’s almost no IO-wait making it hard to work out what’s going on. The problem is that JUnit (or something in our tests or test runner) is doing a DNS lookup on the machine’s hostname. That lookup should be really fast, but if you’re connected to a VPN it may search the remote DNS server which takes time and makes the tests take much longer than they should.
2013-12-16
1 min read
Some of these are hard to google for and I’ve used more than once now, so to save time I’m bookmarking them here. Setting watch points in gdb Displaying the whole string in gdb Setting gdb to break at a particular file/line Setting the coredump limit of a running process to catch a core None of this is rocket science, but still useful. 1) Watchpoints Setting a watchpoint; (gdb) watch mm_dictionary.mmdict_head->index Hardware watchpoint 3: mm_dictionary.
2013-12-12
2 min read
Chris Poole – Small things add up: By migrating to the new domain, end users now save roughly 100 KB upstream per page load, which at 500 million pageviews per month adds up to 46 terabytes per month in savings for our users. I find this unreal. Just by moving images to a domain that doesn’t have cookies. Impressive, especially given that users upload data significantly slower than they download it and HTTP 1.
2013-12-03
1 min read
Events have conspired against me and I find myself writing an iOS app. Off the back of some relatively complete android work, I was interested to see how the platform compared. First steps After the gigantic pain of upgrading a dual boot Leopard/Ubuntu macbook to Mountain Lion, installing XCode was relatively trivial (albeit I had to enter my password roughly five or six hundred more times than I’d hoped). I dived straight in hoping I would soon emerge with some useful knowledge; you will have to be the judge.
2013-11-30
6 min read
Ron Qartel: Developing First Class Software with the Developers that Google Rejects Focus on building a great team and a great way to develop, not on hiring individual hotshots. I would caution however that XP isn’t necessarily the “great way to develop” that will work best for your team and your circumstances, but its certainly a good starting point. Just remember that the one key Agile principal is to continuously improve the way you work. So don’t just follow “the rules”.
2013-11-25
1 min read
There’s lots of projects these days moving from one language to the next. Whether that’s a good idea or not varies but let’s accept that it was the right choice and the world is a better place for it. One thing really bugs me: inevitably justifications of how successful that move has been includes a claim that the number of lines of code were so significantly reduced. We rewrote 1.5 million lines of Java in just 6,000 lines of haskell!
2013-11-25
2 min read
LMAX Exchange is looking for a new senior tester who enjoys technical challenges. If you’re interested here are some of the things we’re looking for: you are doing exploratory testing with all sorts of tools, you have been using Webdriver for quite some time now but you don’t shy away from an API level test, you understand web technologies and you know why Chrome/Firefox are better browsers than IE at the moment, you understand how Javascript and HTML tie together, you have dabbled into Linux and liked it for your back-end testing needs, you like coding your own tools to uncover different emergent behaviours in the system.
2013-11-24
1 min read
I’ll be joining Tony Bruce to present at the Agile Testing & BDD Exchange at Skills Matter in London, on 22nd of November 2013. We’ll be covering the subject “What do testers do?”. Topics will include: what makes a tester tick, what sort of skills are useful to a tester and more than anything else how a tester brings value to a project, to the organisation and the client. For more details check out the official page of the talk
2013-11-21
1 min read
Out of the box, Fedora 19 doesn’t have support for the broadcom wifi chip in the MacBook Pro 15″ Retina. There are quite a few complex instructions for adjusting firmware and compiling bits and bobs etc, but the easiest way to get it up and running on Fedora is using rpmfusion. You can do it by downloading a bunch of rpms and stuffing around with USB drives, but its way easier if you setup network access first via either a thunderbolt ethernet adapter (make sure its plugged in before starting up as hotplugging thunderbolt doesn’t work under Linux), or via bluetooth.
2013-11-19
2 min read
Password managers are like exercise, some people are really into and and you know its good for you but it always seems like too much effort. A few times I’ve actually gotten around to trying out password managers and I went pretty far down the rabbit hole with LastPass at one point, but its never stuck with me before. LastPass was ok, but just seemed clunky and instead of making life easier always seemed to make things take just a little bit more effort.
2013-11-19
2 min read
Conference finished, presentation done, time to reflect. Monday’s keynote – “Skeptical self-defense for the serious tester or, how to call a $37 billion bluff” by Laurent Bossavit – being bullied with false claims, metrics. Don’t rely on hearsay. Apply science to your ways, measure and back your claims with relevant data. At one point the speaker made a claim that he’s not speaking to an audience of Agile testers. Now how did he know that? Did he apply any scientific method to substantiate his claim?
2013-11-18
9 min read
If you ever copy or rsync your home directory to another drive on Linux (especially Fedora 19), you may find that Google Chrome starts to crash whenever you type punctuation, including space characters, into HTML form fields like input or textarea. You may also find that ‘useradd’ complains that it can’t create home directory. It turns out that this is because of SELinux having incorrectly file labels for the files in the new home directory. Simply run:
2013-11-17
1 min read
Transitioning to a new Mac has always been a very smooth experience – the first run setup offers to migrate everything for you and generally it gets everything right so your new Mac comes up looking just like your old one. Recently I’ve acquired a new MacBook Pro with Retina display and decided that after all these years of migrating everything over I’d set up from scratch. Mostly just to make me consciously choose to reinstall things instead of a heap of cruft coming across automatically which I don’t actually use anymore.
2013-11-16
2 min read
I will be giving a talk on ‘Testing All The Way To Production’ at Velocity Europe conference in London on November 14. The talk will describe how LMAX Exchange safely release to a production system processing $10 billion a day, confident that everything will be working when the markets open, and highlight some of the lessons we’ve learned along the way. You can find out more here: http://velocityconf.com/velocityeu2013/public/schedule/detail/33062 Looking forward to seeing you there! Sam
2013-11-13
1 min read
Shortly Eurostar Conference will be under way from 4th of November to 7th of November in Gothenburg, Sweden. If you have never attended the conference, it’s a great way to meet a lot of people that make up the European testing community. It’s also one of the best ways to learn about software testing and what it means to go beyond the day to day job. The conference will be packed with people passionate about their trade eager to see what’s new in the wild and get a different perspective on existing practices.
2013-10-29
1 min read
Couple of very interesting articles today on architecture of CSS. Firstly Thierry Koblentz questions the benefits of separation of concerns – advocating a coding style where most style rules map a single classname to a single CSS property. In complete contrast Ben Darlow argues the importance of semantic meaning, pushing back against techniques like OOCSS and BEM which move away from semantic class names in the name of modularity – generally resulting in long strings of class names on elements.
2013-10-22
1 min read
I’ll be giving a talk about High Performance Design at Java Day Riga on the 28th of November. The talk will cover: Performance Testing Lock-Free Algorithms Using Hardware Knowledge to Tune Performance Looking forward to seeing Latvia!
2013-10-02
1 min read
Before we begin – I really feel like “The Class Path” ought to be the name of a TNG episode. Perhaps something to suggest to the TNG_S8 twitter account. Anyway… There comes a point in every java program’s lifetime where it must answer once of life’s fundamental questions: how am I going to talk to my config file (or, indeed, any file like resource that’s not another class)? As good test driven developers, we’ll usually have a short digression about the definition of unit testing before agreeing that there should be at least one test that reads from a real file in the same way that the production code will, and then start to write that test.
2013-09-17
5 min read
Here is the 10 minute lightening talk I gave at JavaZone 2013: summary: How to use TDD to create a thread-safe, lock-free, high-performance cache by using knowledge of how modern processors are designed. video: http://vimeo.com/album/2525252/video/74363400 code: https://github.com/nickzeeb/SerializationCache slides: https://docs.google.com/presentation/d/19Rlo6HR8lsLJQhp5IKHCU0aidwiUKUHBKsJX9gWyAZA/pub?start=false&loop=false&delayms=3000
2013-09-16
1 min read
If you have: A javascript project using require.js Which is optimised using r.js Includes Rickshaw or any other library that uses the prototype class system Then you are very likely here because you’re trying to enable JavaScript optimization (minification) and finding that suddenly stuff breaks. The problem is that the prototype class system allows overriding methods to call the original method by adding a $super as the first parameter to the function. From the prototype docs:
2013-09-13
2 min read
A post about closing resources in Java. First though, an aside. “Is it a good idea for destructors to throw?” – Common C++ interview question A quick bit of code can show us. #include <iostream> #include <stdexcept> namespace { class Foo { public: void someUsage() { std::cout << "Using foo" << std::endl; } ~Foo() { std::cout << "Destroying foo" << std::endl; throw std::runtime_error("Exception 2"); } }; } int main() { std::cout << "Program started" << std::endl; try { Foo f; f.
2013-09-02
6 min read
This should be a simple enough job - after all ‘it works on ubuntu out of the box’ (tm). Take the USB printer and move it onto the home server running Centos 5.9, so that I can share it with the mrs’ macbook and my desktop/laptops etc. Here’s the hurdles encountered and the fixes, so my future self won’t have to waste time on this again. First problem. On Centos, the printer - an Epson SX218 inkjet printer is not recognised.
2013-09-01
4 min read
One of the biggest challenges with selecting a web host is that it’s very difficult to determine the quality of a provider without actually setting everything up and seeing how it goes for a while. Generally that means that you either wind up avoiding the very low cost providers out of fear they won’t be reliable and possibly paying too much, or spending a lot of time and effort setting up with a provider only to then discover they’re unreliable or the performance isn’t as good as you expected.
2013-08-14
2 min read
The right time to build We’ve talked at length about the costs of builders, and yet… they persist. I can think of at least three examples from popular java libraries that work well: Hamcrest’s Description Java’s own StringBuilder Guava’s ImmutableList.Builder Although, having looked at StringBuilder‘s doc – augh! It’s so big! Five or six builders could come out of that, starting with AppendOnlyStringBuilder. What do these master builders (That’s enough linguistic hyphens between the Builder pattern and actual builders – Ed) have in common?
2013-08-12
5 min read
Well, really, this should be obvious. My mental image of factories is the Toyota plant; an efficient production line of high tech robots automatically executing specialized constructive tasks as part of a well honed process (perhaps with a nearby overseer sternly observing, making regular marks on some sort of handheld checklist device). Whereas my builder image is a bloke leering at young ladies from the safety of some dodgy looking scaffolding. Ahem Uh. Yeah. I actually wanted to talk about the Factory and Builder patterns.
2013-08-09
4 min read
These are really interesting/useful for explaining how the code that executes isn’t the code you wrote as well as making you think about performance. A good example is the last one. As Mr Sutter explains, the swap from 80’s architectures such as the VAX to modern systems was accompanied by a real change in speed of processor but without a large change in memory latency. As a result “elegant” algorithms that were right for 70s and 80s hardware are totally wrong for modern cache laden systems.
2013-08-04
1 min read