20. June, 2014
Soon, we’ll have computers with 1024 cores but that won’t help unless software developers write code that make use of them.
To do that, you need a fundamental understanding on how threads work and what parallel algorithms are and what the real-world problems might be.
Dmitry Vyukov has created a web site “1024cores” which gives you both an introduction to the basics (what are we talking about? which tools to we have? what is a memory model and why should I care?) as well as some practical algorithms like concurrent skip lists with detailed descriptions of the problems that you will encounter and how to fix them.
If you want to know what the discussion is all about or if you want to polish your knowledge or if you need a specific solution, this is a good place to start :-)
7. May, 2014
“Non-interactive” and “debugger” seem to be contradictory but bear with me. YouDebug is a tool which allows you to debug a running Java application with a script.
How could this be useful? From the website:
[...]your program fails at a customer’s site with an exception, but you can’t (or don’t want to) reproduce the problem on your computer[...]
Sounds like a familiar problem: Customer has a problem but they can’t give you access for security, legal or technical reasons. You can’t go there (too far away) of even if you could, security won’t let you touch anything.
In a nutshell, YouDebug is a debugger that is controlled by a Groovy script:
This sets a breakpoint in line 7 of “SubStringTest” and then prints the value of the local variable “s”.
Granted, it’s more time-consuming then doing it yourself (and you may need several attempts to get at the bottom of things) but you don’t have to install an IDE at your customer site, you don’t have to bring the source code along and technically, the customer is already running code that you wrote so from a legal and security point of view, this isn’t much different.
17. April, 2014
This article contains a good summary of the Heartbleed bug and it’s consequences.
Want to know whether you’re affected? Check sites you use here: filippo.io/Heartbleed/
Note: You will want to check the issue date of the certificate as well. If it was issued before the April 8th, 2014, you may still be vulnerable since an attacker might have stolen the private keys.
27. March, 2014
With KDE 4.11, a new annoying feature was added: The window manager now moves a window beyond the screen edge. The original idea was to make the scroll bar easily accessible.
But a lot of people didn’t like this for various reasons.
My reason is that I use clicking on the window border to move a window to the front. By careful arrangement of the windows on my second monitor, I can easily switch between 5 windows by moving them against the screen edge: That way, I can use the mile high menu bar trick to position the mouse and one click to bring the window to the front (and no, I can’t use the usual click to front behavior; I know much better than the computer when I want to change the stacking order and when not).
With the window border hidden beyond the screen edge, this wasn’t possible anymore.
Here is a script that solved the issue for me: Snap to Deco 1.1
Once downloaded, the script needs to be installed via
> plasmapkg -t kwinscript -i filename.kwinscript
which unpacks and copies files to ~/.kde4/share/apps/kwin/scripts/ but doesn’t activate them. In order to activate, use the scripts KCM (KConfig Module) graphical interface:
> kcmshell4 kwinscripts
and tick the required script.
16. February, 2014
Snapper is a nice tool to revert changes made to your system.
Unfortunately, it has a nasty side effect: If you happen to delete some large files (say, an ISO image you accidentally copied to the wrong place), and that large file ended up in one of your snapshots, well … the file will be gone but the disk space will still be allocated.
The first step is to locate the large file(s) under /.snapshots
The next step is to delete it/them. That’s not so easy since snapper created read-only file system snapshots. The workaround is to create a writable snapshot, delete the files, delete the read-only snapshot, create a new one and then delete the writable snapshot. Too much on one sentence? Here is the sequence of commands:
btrfs subvolume snapshot snapshot snapshot.bak
rm -rf snapshot.bak/...
btrfs subvolume delete snapshot
btrfs subvolume snapshot -r snapshot.bak snapshot
btrfs subvolume delete snapshot.bak
Breakdown: First, we cd into the folder which contains the snapshot itself (it also contains a file “info.xml”).
Then we clone the snapshot in “snapshot.bak” which we can modify.
The last three steps replace “snapshot” with the new, cleaned “snapshot.bak”.
In at least one occasion, that didn’t free the disk space, yet. I also had to delete the oldest snapshot which contained the file.
29. January, 2014
When working with Git, you’ll eventually realize that an important part is the workflow: How many branches do I need? How do I organize them? How does code flow between them?
Vincent Driessen is sharing his workflow in “A successful Git branching model“
Another great resource is “Atlassian Git Tutorials” and especially the “Git Workflows” section.
17. January, 2014
I just looked at an article in the Oracle Java FAQ and I was a bit surprised to get this result:
從 Java 7 Update 51 版本開始導入了例外網站清單功能。藉由將應用程式 URL 新增至「例外」清單，可讓使用者執行通常會被安全檢查封鎖的「豐富網際網路應用程式 (Rich Internet Applications, RIA)」。[...]
The solution was pretty simple: Append ?locale=en to the end of the URL: http://www.java.com/de/download/faq/exception_sitelist.xml?locale=en
That fixed it for me … sometimes.