They’re on time this week! Yay!
After examining some of the related searches that have come up for my site via Google’s webmaster tools, I’ve decided that all Links of the Week will require you to click “I want to read more.” I know, it’s one extra step. I’m sorry. I don’t want Google to think my site is a link farm!
Anthropology
Meet future woman: Shorter, fatter, and more fertile. Ummm, okay.
Arachnology
Even spiders can be vegan.
Business
Here’s a discussion about “Rich v. King,” which should follow as advice related to why you ought to sell your business if you’re offered a decent sum.
Speaking of selling off, here’s another insightful entry that explains the decision at a more personal level.
Darl McBride has been booted from SCO after driving the company into the ground. Not that it matters, really. I’m sure he was laughing all the way to the bank.
Launch failures can happen in a business. In fact, this particular story Andy Swan shares is absolutely brilliant.
Duh?
So a woman who signed up for an advertising campaign that was designed to be a simulated stalking/harassment ordeal is now suing Toyota. 1) Why would a company create something like this in the first place–stalking is NOT a joking matter and 2) why would she have signed up for the campaign in the first place? This is full of stupid on both fronts.
Freedom of the Press
In one of our most neglected rights we take for granted here, the UK parliament bans their press and gives us reason to love our Bill of Rights ever more. And you guys wondered once why we thrust off the shackles of the monarchy?
History
Here’s a drawing of something called the Mordhau. I’m at a loss for words to describe it. Take a look. I’ve never seen a sword used like that before.
Coal power plant accidents never happen anymore. Right?
Humor
I think Hunter sent this one to me. Did you want to see what happens when the English version of Star Wars is translated to Chinese and back to English? Maybe not.
Linux
While I will offer some praise to Ubuntu for attempting to bring Linux to the desktop, I’ll confess that it annoys me to no end. (This is true of all Debian-based distros.) If you’re using CIFS shares, you’ve probably noticed a long delay when rebooting or shutting down the system. Here are two possible fixes. I haven’t tried the second one (I’m not sure if it’ll even work!), but if the first one doesn’t work for you, take a look at the second.
Physiology
Day dreaming may not be so bad after all.
A procedure used to treat severe epilepsy (and other seizures) has discovered a little bit more about how the brain processes language.
Programming
Want something to sink your braaaaaaaains into? Here’s a little list of “puzzlers” for Java. Try compiling them for yourself and you’ll find that a couple of the examples don’t work. This list is interesting because it highlights some of the internal behaviors of javac. What’s even more interesting is the following. Here’s what Question #2 looks like if it’s disassembled:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| Compiled from "Question2.java"
class Question2 extends java.lang.Object{
Question2();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: bipush 10
2: istore_1
3: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;
6: new #3; //class java/lang/StringBuilder
9: dup
10: invokespecial #4; //Method java/lang/StringBuilder."<init>":()V
13: ldc #5; //String x is
15: invokevirtual #6; //Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
18: iload_1
19: invokevirtual #7; //Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
22: invokevirtual #8; //Method java/lang/StringBuilder.toString:()Ljava/lang/String;
25: invokevirtual #9; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
28: return
} |
Compiled from "Question2.java"
class Question2 extends java.lang.Object{
Question2();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: bipush 10
2: istore_1
3: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;
6: new #3; //class java/lang/StringBuilder
9: dup
10: invokespecial #4; //Method java/lang/StringBuilder."<init>":()V
13: ldc #5; //String x is
15: invokevirtual #6; //Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
18: iload_1
19: invokevirtual #7; //Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
22: invokevirtual #8; //Method java/lang/StringBuilder.toString:()Ljava/lang/String;
25: invokevirtual #9; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
28: return
}
Now, remove the if (true)
statement and disassemble the new class:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| Compiled from "Question2a.java"
class Question2a extends java.lang.Object{
Question2a();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: bipush 10
2: istore_1
3: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;
6: new #3; //class java/lang/StringBuilder
9: dup
10: invokespecial #4; //Method java/lang/StringBuilder."<init>":()V
13: ldc #5; //String x is
15: invokevirtual #6; //Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
18: iload_1
19: invokevirtual #7; //Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
22: invokevirtual #8; //Method java/lang/StringBuilder.toString:()Ljava/lang/String;
25: invokevirtual #9; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
28: return
} |
Compiled from "Question2a.java"
class Question2a extends java.lang.Object{
Question2a();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: bipush 10
2: istore_1
3: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;
6: new #3; //class java/lang/StringBuilder
9: dup
10: invokespecial #4; //Method java/lang/StringBuilder."<init>":()V
13: ldc #5; //String x is
15: invokevirtual #6; //Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
18: iload_1
19: invokevirtual #7; //Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
22: invokevirtual #8; //Method java/lang/StringBuilder.toString:()Ljava/lang/String;
25: invokevirtual #9; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
28: return
}
They’re identical! Why? Because javac strips out conditionals that always evaluate to true
. Thus, the code in Question #2 behaves precisely as it would if the conditional did not exist.
Here’s a link from dzone. It’s titled “JavaScript for People who are in slightly less of a Hurry – Part One.” Creative!
Are ORMs a thing of the past? A compelling article on DZone suggests otherwise. TL;DR version: hah hah, no!
Proof that Java is still the fastest language around. This article could be subtitled “Or why you shouldn’t trust Benchmarks.”
Okay, this one is more about classes, inheritance, polymorphism, and a few other dry, boring topics. I’m only linking it for the picture. Enjoy.
HN had a link to an Introduction to Clojure (Lisp for the JVM). Lisp has always made my head hurt.
What kind of math should programmers really know? Well, they need to know it just not all of it. Oh, wait, this is where I got the link to first-order logic from!
Java Rebel lets you dynamically load Java classes when they change.
Properly shuffling random data in a game can make it easier. Why? Because truly random patterns could render a game unplayable. You wouldn’t want to put a puzzle together when the pieces have random image segments that repeat indefinitely, for instance!
Science
I found this periodic table of the elements to be humorous. Now, before you start making any assumptions why I think this is funny because it’s important to understand that this chart represents a somewhat flawed view many people have of science-minded religious folk. This chart presents a biased belief that most religious types are uneducated and prefer to cover their ears when faced with scientific fact. Me? Well, I’m something of a heretic. I’m a Southern Baptist, believe evolution is the best theory we have for the development of life, and also believe the universe is some 15 billion years old. Consequently, no one likes me!
This isn’t really science. Or maybe it is. The question that’s been lingering around certain circles of academia for years has been “How would you spot an alien out there?” SETI thinks they can find aliens by radio signature. However, the most fascinating suggestion I have seen yet is to simply follow the pollution trail.
Cheap, nuclear fusion? You decide.
There’s a giant ribbon at the edge of the solar system. I guess we’re gift-wrapped.
Here’s an oldie but goodie. How do you destroy the Earth? Lots of ways but most aren’t exactly feasible. (Note: This site has been around a lot longer than the Discovery program which I believe may have been inspired by the stuff on qntm.org. I came across this a few years ago.)
Scientists have discovered a little bit more about how DNA is folded in the nucleus.
Software
IntelliJ IDEA has been released in a community edition. It’s largely useless to me since I’d have to buy it anyway to get Python support and Eclipse does reasonably well in that department. If you’re doing a lot of Java development, it might be worthwhile to take a look in case Eclipse is annoying the daylights out of you. (For all its quirks, I do happen to like eclipse.)
Release late, release rarely. Whether you agree or not–or even think this piece is satirical–it raises some really good points. “No one would be that stupid to release late,” I hear you chide. Ah, but what about the gaming industry? Blizzard is notorious for delays and their releases are infrequent (patches don’t count), but their products are always wildly popular. Think about it. (Oh, and ignore most of the comments; it appears too many posters can’t seem to look outside their own little bubble.)
Technology
So why didn’t Vista sell well? Marco Arment ponders why. TL;DR: we have only ourselves to blame. Well, and Microsoft.
If you want to enable guest access to Samba shares but don’t want to disable share authentication, this article is for you.
Random number generation is possible via pen and paper although the result isn’t quite random enough. I think I found this when I was looking up first-order logic.
Along the lines of my own project, here’s an HTPC inside a CD player.
What is it that Google Wave hopes to accomplish? It appears to be a competitor to Microsoft’s Outlook.
Sonar might make your laptopt a little smarter.
Hey, would you look at that. It appears that solid state disk drivers are improving in everything but price.
Dropbox has finally the domain everyone thought it had.
Never underestimate the power of DNS. It broke Sweden.
Wow. I’m not sure how to describe this. It’s a fascinating bit of nanoscience.
libdispatch, better known as Apple’s Grand Central has been ported to FreeBSD (PDF warning).
Web Design
Here’s a collection of sites that might be useful for web developers. I’m disappointed they linked to lorem2.com instead of lipsum.com. I like the latter better, though it’s UI isn’t as shiny. (Web designers are notoriously attracted to shiny things, so maybe that’s why lorem2 was picked!)
Smashing Magazine has a list of the top 10 CSS table designs. They’re pretty amazing!
There’s a 1 kilobyte CSS grid floating around by Tyler Tate. He’s got a few articles, too. I’d suggest reading all of them: part 1, part 2, and part 3.
Ever wondered what the real differences in CSS between IE 6, 7, and 8 are? Wonder no more.
Web Technologies
Terracotta has been used in the enterprise for a while. It’s an interesting solution to the scalability problem.
Ever wondered what web fonts you could use that are safe? Here’s a list. Note that it doesn’t include the new C fonts Microsoft released in 2007.
HTML 5 meets 1998. Err, the site actually lives here. I linked to the Hacker News comments because I’m not sure it’s wholly obvious that the site geocitieslycostripod.com is a joke intended to poke fun at the individuals who have been touting HTML 5 as the solution to CSS/XHTML’s complicated nature. Take a look at the source–there’s no tables and the site really does look like something out of 1998. Plus, it validates as valid HTML 5! It’s absolutely BRILLIANT.
You’ve put together a navigation bar (horizontally, of course) and now you’re having trouble centering it. Don’t worry, it’s a tricky problem but the solution is stupidly simple if a little non-obvious.
Is Google charging you an idiot tax? If you’re a webmaster using AdWords/AdSense/AdWhatever, you might want to read this.
Web Things
I found a list of the 100 best professors who blog. Blogging: It’s not just for kids!
Did I link this last week? I can’t remember, and I don’t want to look. It’s a collection of nearly every single “under construction” banner that ever appeared on Geocities.
So what does web based marketing look like? Here’s a good approximation.