Code Is Cheap, It's Knowledge Discovery That Costs
Continue reading →
Most interesting links of November '13
Recommended Readings
Some interesting topics this time despite me spending lot of time on theContinue reading →
How I Learned to Avoid Magical Dependency Injection And Love Plain Java
Continue reading →
Most interesting links of October '13
Recommended Readings
- Google engineers insist 20% time is not dead—it’s just turned into 120% time - it is interesting to see how has this evolved; "I have done many engineering/coding 20% projects and other non-engineering projects, with probably 20-40% producing “real” results (which over 7 years I think has been more than worth it for the company). But these projects are generally not rewarded." [highlight mine]
- The Worst Daily Scrum Ever - a story whose bad part is a too common reality; if energy is low, nobody asks for / offers help, and people only report status / plans then you are doing the daily scrum wrong and should stop now (but it also documents a nice example of a good, effective scrum)
- Why Responsive Design is a Waste of Time - a refreshingly critical take on responsive design; the author now aknowledges that it is sometimes worth the pain but the points are still valid - responsive design requires (lot of) extra work, the attempt to create a one-size-fits-all site of course adds considerable complexity (having two separate simple frontends might be better than one that is too complex), also many sites are good enough as they are (especially taking into account the capabilities of mobile browsers)
- How to lose $172,222 a second for 45 minutes - i.e. your bugs are likely not so serious after all :-) A financial company screwed big and ended up bankrupt. The cause? Chaotic DevOps, not removing old unused code, reusing a feature flag instead of creating a new one, lack of monitoring. The story in short: They deployed new trading code but failed to notice that it has not been deployed to one of the 8 servers; due to the flag reuse, the old, 10 years unused code has been activated instead. Due to the lack of monitoring they did not notice the cause, tried to roll back while leaving the flag enabled thus effectively activating the bad code on all the servers. => have proper automated and self-checking deployments, delete old code, do not repurpose old switches.
- 40 Inappropriate Actions to Take Against an Unlocked (Windows) PC - good tips for promoting security and having fun at the same time; I shall keep this at hand :-)
- How to go about 'proving' why dynamically typed languages are better - a cultivated and interesting discussion; as argueed, thinking in this direction is itself wrong and in different contexts, different languages will be more appropriate. I also like Phil Lord's "Programming is a highly fashion-centric occupation for any number of reasons." and "For me, the main advantage is that you are not forced to build complex hierarchies just to support the type system ([..]), and that having only a few abstractions makes it worthwhile adding lots of functions operating over them." and L. Petit's "IMHO, the question is irrelevant. It implicitly assumes that statically typed vs dynamically typed is a black / white choice, and that either 'static wins over dynamic' or 'dynamic wins over static' will be a true statement whatever the context." Also a good observation that types are only a subset of function contract enforcement and one of possible implementations.
- What to Know Before Debating Type Systems - explanation of common misunderstandings that hinder discussions of static x dynamic typing including a classification of type systems
- The Failure of Governmental IT (Learnings From HealthCare.gov) - links to a few really good articles about the problems with governmental IT in general and my summary of them
- Inside the Arctic Circle, Where Your Facebook Data Lives - the designs of data centers used to be proprietary secrets until Fb developed its own and open-sourced them, enabling many Asian manufactures to start creating cheaper datacenters and thus started a revolution in this domain. Facebook's data centers are not general purpose but suitable ot the kind of work they need, but it is still widely applicable. Cool to see how they use natural conditions to get energy needs down and make HW that fits best their needs - that is what I call innovation!
- Academia.edu (via @RiczWest) - a rich source of free research papers - just register as an independant researcher; also lean/agile/systems thinking and other interesting topics
- Writing Code? Know Your Boundaries - an inspiring way of thinking; we use many technologies in combination (HTML, CSS, JS, SQL, server-side language, ...) and "the risk for picking the wrong tool for the job is strongest near the boundaries"; a discussion of the aforementioned boundaries with examples follows, e.g.: "Avoid putting HTML in JavaScript strings for 'poor man’s templating'", messing up SQL with html ("
SELECT
'<strong>'
+ Username +
'</strong>'
FROM
Users
"), CSS+HTML: using inline styles, SQL+server-side: string concatenation to create dynamic SQL queries, "writing dynamic JavaScript in a string on the server". I shall keep this in mind! - Johannes Brodwall: A canonical web test - a simple web app end-to-end smoke test - using an embedded Jetty, a test DB (preferably in-memory), WebDriver to test it (simple: browser.get("/people"), assertThat(browser.findElement(<person id>.contains(<person's name>)); simple, nice, useful
Continue reading →
The Failure of Governmental IT (Learnings From HealthCare.gov)
Continue reading →
My Highlights From EuroClojure 2013
Below are some noteworthy things from the talks and chats.
Continue reading →
Fixed: Embedded Jetty Fails To Unpack With FileNotFoundException: Not a directory
java -jar <my war>.war
) then I got a strange FileNotFoundException
during the unpack phase. It was strange because the unpack code actually checks whether a file's parent directory exists and creates it if it doesn't.The problem was that I use OS X which has a case-insensitive filesystem. A directory contained both the file LICENSE and the directory license/. When Jetty tried to unpack license/LICENSE.base64.txt, the check for the parent directory (license/) incorrectly succeeded (because it checked n
ew File("[..]/license/LICENSE.base64.txt").getParentFile().exists()
and that returned true because the file LICENSE already was there, and it wasn't distinguished from the actual directory license; .isDirectory()
would have at least failed.) The workaround was to exclude the offensive file from the archive:Continue reading →
Most interesting links of September '13
Recommended Readings
- Stuff The Internet Says On Scalability For September 13, 2013 - a collection of interesting performance related articles with summaries (via @_dagi)
- Can you copy a culture? The NUMMI story (audio/transcript) - how the GM factory with the worst workforce has been turned around via a good application of Toyota Production System - "a truly inspiring story of human potential and how systems can be designed to bring the best or worst of of people." And how GM failed to learn from it and to copy Toyota's culture.
- The Reactive Manifesto - why to write reactive SW - "Reactive applications represent a balanced approach to addressing a wide range of contemporary challenges in software development. Building on an event-driven, message-based foundation, they provide the tools needed to ensure scalability and resilience. On top of this they support rich, responsive user interactions. We expect that a rapidly increasing number of systems will follow this blueprint in the years ahead."
- Frameworkless JavaScript – Why Angular, Ember, or Backbone don't work for us [Moot discussion platform] (via JavaScriptWeekly) Me: Frameworks are not always evil, but are likely overused and there are good cases when rolling your own solution is the best way. Why in Moot? Because the want a minimal API (no framework methods), small code size, small and familiar code base, no dependency hell and external package updates, no lock-in to technology that will be gone in few years, need WebSockets not REST. "Moot uses native pushState for managing URLs, John Resig's "micro templating" for views, and internal communication between model and views happens with a custom event library. There is no router or automatic data-binding." The looked at Angular, Ember, Backbone. "As a result of our combined perfectionism and minimalism, Moot is an extremely lightweight, manageable, and independent web application [..]"
- NYT: Eiji Toyoda, Promoter of the Toyota Way and Engineer of Its Growth, Dies at 100 - learn about the life of one of the founders of lean thinking
- Gojko Adzic: How we solved our #1 product management problem - valuable experience of false assumptions, learning from users, and a much helpful UI remake: even if you build a product to scratch your itch, you have to test it with real users
Continue reading →
Webapp Blue-Green Deployment Without Breaking Sessions/With Fallback With HAProxy
Benefits: Get new features to users that need them as soon as possible without affecting anybody negatively and without risking that a defect will prevent users from achieving their goal (thanks to being able to fall back to the previous version).
Continue reading →
Test Puppet config of an existing node using Puppet Master via Vagrant
Continue reading →
Most interesting links of August '13
Recommended Readings
Continue reading →
Clojure REPL stores the latest results in *1, *2, *3, exception in *e
Continue reading →
Most interesting links of July '13
Recommended Readings
Continue reading →
Running A Leiningen/Ring Webapp As A Daemon Via Upstart (Ubuntu)
- Create an all-in one uberjar via "lein with-profile production ring uberjar" (using the lein-ring plugin; a simple lein uberjar would suffice for an app with a
main-
method) - Create an upstart <service name>.conf file in /etc/init/
- Run sudo start/stop/status <service name>
Continue reading →
Installing & Troubleshooting Google Analytics 2013 (ga / analytics.js)
Continue reading →