Very interesting, but wow brute force is so much faster!
BenchmarkBruteForce-8 500000 2556 ns/op
BenchmarkDLX-8 20000 96277 ns/op
BenchmarkOptDLX-8 20000 75338 ns/op
(this is on one single Sudoku grid, so results may differ with different grids; that grid is particularly well-suite for brute-force but I tried a few others and results are the same order of magnitude)
Without keeping track of the exact scores, it almost looks like a draw to me. Looking more closely at the submissions, it's not really surprising, as everyone used a recursive backtracking algorithm for solving, but generation algorithms apparently don't impact the results that much.
I must say I was pleasantly surprised to see that my Trémaux's algorithm implementation had similar results against almost all servers, even those adapting their generation algorithm depending on client performance (though of course badder against those that are “cheating”).
Less prestigious than national TV but still.
(in French, obviously, and the online version is behind a paywall)
Starting January 12, 2016 (that is, in exactly 1½ month), Microsoft will end support for all versions of Internet Explorer older than 11.
Of course that doesn't mean we, as web devs, can stop worrying about those older IE versions, but at least we can (probably) charge our clients extra money if they insist they want support to be "on par" with other browsers, and/or possibly even only want us to test in these older versions.
All fixes are related to gwt:codeserver and gwt:devmode:
• document differences between gwt:compile and gwt:codeserver (and gwt:devmode) wrt handling of sources and dependencies
• make the dependency scope for classpath configurable
• correctly picks up generated sources for reactor projects' dependencies
• gwt:devmode would fail if failOnError was configured globally for the plugin, as that argument doesn't exist in DevMode (only CodeServer).
This is expected to be the last RC before GA (no ETA though).
If you don't know what that could be, don't worry: I didn't either, and this is the reason I'm writing this post, to raise awareness.
Ecodesign is not new, neither is its application to software, but software ecodesign is something most developers are unaware of.
So here are some takeaways from that training:
• Pre-manufacturing and disposal are by far the lifecycle phases of electronic devices with the highest environmental impact. Manufacturers already follow ecodesign best practices, and we see chips that can do more (or equivalent) while consuming less energy, and batteries that last longer.
• As users of electronic devices, we should thus try to make them last as long as possible before changing them and buying new ones (and when we do, buy “green”)
• As software developers, our responsibility is to enable it. We need to fight Wirth's law, saying that “software is getting slower more rapidly than hardware becomes faster.”
For example, Office 2013 on Windows 8 require 114 times more RAM than Office 97 on Windows 98. When you take into account that the 5 most used functions in Word 2003 were paste, save, copy, undo, and bold; accounting for 32% of the total command use; that's a huge difference in hardware requirement to basically just type some text.
On the web, pages are 115 times as heavy on average in 2015 than in 1995, and 3 times compared to 2010.
We also should try to use as few servers as possible.
Actually, software is the major lever to extend the lifetime of electronic devices.
And the main lever to improve software environmental footprint is in the design phase:
• Sobriety / frugality
Oversimplifying, focus on the minimum viable product and resist the urge to add features.
As an example, remember why Google won versus Altavista and Lycos (just look at Yahoo! or MSN.com for nowadays equivalents, and imagine that people have those as their browser homepage and/or continue to use them as a go-to web search, wasting server, network, and client load every time they open a new browser tab/window or want to do a new web search).
This is common sense, and many of us (try to) do it already, but generally only thinking about the user experience (and/or your budget), and not the environmental impact of such choices too.
Similarly, most performance best practices are ecodesign best practices too: optimize your code, optimize your database queries and indexes, minify and compress your assets, prune dead code (particularly the one sent over the wire: HTML, JS and CSS), make as few HTTP requests as possible, leverage HTTP caching, etc.
I'll just put the emphasis on two more rules that are often overlooked:
• choose the appropriate technological stack (that also includes avoiding heavy frameworks, choosing performance-oriented forks of some software: e.g. Percona Server vs. MySQL).
As a corollary, don't use a stack just because that's the one you're the most familiar with.
• if you have to use PHP, Ruby or Python (for whatever reason: existing software, no equivalent of some project/product in another language, or just that you don't have other skills), use implementations with JIT compilers: HHVM for PHP, Rubinius or JRuby, PyPy instead of CPython.
Software ecodesign is not that hard, and in most case a win-win for you and your users, so do it!
• removes special handling of java-source dependencies (easily done using dependencies:unpack-dependencies)
• removes the **/*.java filter in added “sources as resources”
I could have released 1.0 already and put those changes into a 1.0.1 but I'm kind of a perfectionist so I'm instead using RCs.
I had totally forgotten about it and only had a look last Friday, with a deadline a few hours ago. I coded my solution overnight this weekend, with a few refinements on Sunday. I absolutely don't expect to win, given the few time I spent on it, not even trying different algorithms, but I enjoyed those few hours of reading about maze algorithms and then coding.
Looking at some GitHub repos, I'm disappointed to see that some of them place Icarus and the treasure at random but then generate the maze based on those positions; that really looks like cheating to me.
Now looking forward to feedback on my code and how it ranked in the competition, and to the next challenge!
- Atol Conseils & DéveloppementsSoftware Architect, present
- 0h n0
- 0h h1
- Angry Birds Stella
- Angry Birds Friends
- Angry Birds Stella POP!
- Angry Birds Under Pigstruction
- Linebound - Life On The Line
- Angry Birds Go!
Les enfants en colère après la publication de caricatures jugées injurie...
OSLO – La nouvelle n'a pas tardé à faire réagir. À peine publiées par un journal iranien, les caricatures se moquant ouvertement du Père Noë
Testing on the Toilet: Writing Descriptive Test Names
by Andrew Trenk, This article was adapted from a Google Testing on the Toilet (TotT) episode. You can download a printer-friendly version of
One man willingly gave Google his data. See what happened next. - O'Reil...
Despite some misgivings about the company’s product course and service permanence (I was an early and fanatical user of Google Wave), my rel
Bolinfest Changeblog: Hacking on Atom Part I: CoffeeScript
The truth is out: money is just an IOU, and the banks are rolling in it
The Bank of England's dose of honesty throws the theoretical basis for austerity out the window
22 Responses To Buzzfeed's 22 Creationist Messages
Buzzfeed published 22 questions and statements from Creationists; here's some responses from a science reporter.
Troy Hunt: For your convenience, please disable security warnings
Let's just start here: This is an annoying feature of Internet Explorer, and is not indicative of any security. Allow me to provide a techni