skysight-inc/HackerNews huggingface dataset:
ClamAV is actually pretty effective at detecting malware it knows about. I've seen it work on multiple occasion even with non in-the-wild viruses. However because it lacks real time scanning and cleaning, it's clearly not a first line of defense yet.

A better bet would be F-Prot or Nod32 which seem far lighter and a tad more quiet about their business except when a malware is actually found (which is also customizable I believe).

However, I see a hard task ahead of any startup that wants to come up in this field. Writing sig definitions for the 100000+ viruses already difficult is a massive initial undertaking. The older players already have most of it written down but a startup would have to put in a ton of effort just to catch up.
This isn't particularly more dangerous than the autorun crap most OSes will happily do when you put in a CD. I don't know who could have possibly thought that was a good idea.
Let's start with Java's object system, and add state and implementation to interfaces. This way you can write something like:

role Eq {
requires 'equal_to';

method not_equal_to($a: $b) { return !$a->equal_to($b) }
}

The technique of composing classes from parts has recently been popularized by Smalltalk, Perl 6, Perl 5 (Moose), and Scala. (Scala's implementation is intentionally limited for some reason; look to Moose for the most reliable implementation that people actually use for Real Work.)

If you want to do this in Java, you would have to create a class like:

class NotEq {
private Eq a;

method not_equal_to(b) { !a.equals(b) }
}

class Foo implements Eq {
private NotEq neq;

Foo() { neq = new NotEq(this) }

method equal_to(b) { ... }

method not_equal_to(b) {
neq.not_equal_to(b)
}
}

This is a lot of code to write, which is why people just cut-n-paste instead.

Also, Java is not merely 5 years behind, so it is worthwhile to look back farther to find ideas that Java could embrace. Java would do well to steal a sane object system like CLOS or Moose; it could really eliminate a lot of boilerplate. (One thing I think is annoying about Java is how much work the constructor has to do. In Lisp and Perl, I never write my own constructors, the object system does it for me. This means that things can be composed without the programmer having to know every detail, including which position each attribute initializer should be in.)

Anyway, if you really think Java is the state of the art, you should look around a bit more. Yes, it's silly that people want to do their own type checking in "dynamic languages", but that's not why they use them -- it's all the other features that they want. The lack of static type checking is an unfortunate overreaction to C and C++.
I don't think client-server is the alternative to the cloud. The only company-wide client-server application I saw in most organizations was Outlook. The rest, from time tracking to individual performance evaluation, was all done in the intranet. So the real choice is between hosting in the cloud or self-hosting.
Do you have any further info on this? It seems like a likely story, but I've never heard anything about it.
It's not because they're unaccustomed to the special characters in syntax, quite the contrary, it's because those special characters have associated meaning for them, through Perl and Unix shell.

When I was first learning Lisp I was frustrated by the syntax for characters; #\a means the letter a, or 'a' in C, both are three key strokes, and I didn't understand the unusual convention. Well, it's because Lisp allows named characters, like #\Tab and #\Newline, along with custom unicode characters like #\Arabic_Alif. Aha!

Unix-syntax is almost always single-purpose; that doesn't help reuse, and causes reader-table over population. Lisp, and functional-language style syntax is there for a very good reason, usually your own good.
Merlin bugs me when he gets cynical about stuff. He spends most of his career looking at how things are deeper and more meaningful than they seem, and then on occasion he dismisses something with a line or two that's got more to it. He does the same thing when he writes about the Beatles, because he always implies that a) the only reason they broke up was Yoko Ono, and b) Yoko was a stupid woman who couldn't write good music, and c) she seduced John.

It's annoying that somebody so smart is occasionally so willing to get snippy without contributing to the conversation.
Rackspace announces rescue plan for Zimbra customers
Amazon Kindle for PC Beta Launched
>> "Anyway, if you really think Java is the state of the art, you should look around a bit more."

Thanks for proving my point. My point is, It doesn't have to be "State of the art" (fashionable). It has to work.
Software written for large corporations with a medium to high turnover in their staff where quality of programmer is less a factor than long-term maintainability of the project is.

As weird as it sounds, in that world java's lack of 'neat constructs' and tendency to solve things using 'boilerplate' is actually an asset, for the same reason that COBOL used to be an asset.

I've inherited a bunch of java code about 10 months ago now, so I've been more or less forced to come to terms with it, and even if I can't get over how tremendously kludgy it feels I would have a hard time getting this kind of performance out of other platforms on the exact same hardware.

Call it grudging admiration, I personally would have never thought that you could do this and more with Java before being forced to get in to it.

There isn't a day though that I don't curse the language designers for making me go the long way around on just about anything that I could do in half the code (or less) in pretty much any other language that I have under my belt with the exception of assembler.

At this point in time, my main gripes with java are verbosity and an absolutely terribly kludgy feel to the interface with other parts of the library, it feels like wearing a straightjacket.

And it is exactly for that reason why enterprise types much really love it, my 'creativity' is limited to the point where anybody else facing the same problem would probably write more or less the same code.

Since joining this project I've basically just been busy condensing code and removing 1000's of lines of boilerplate by replacing it with the appropriate abstractions.

And by doing that I'm doing two things, I'm making the work marginally more interesting, secondly the other guy working on the project is slowly starting to see that cut&paste is not the way to go.

But that's my 'toolmakers' hat that I'm wearing, I'm pretty sure the that people that lead this project would rather have me work on 'features' because that is more productive in their eyes, my kind of 'productivity' will start paying off in the longer term.

Time will tell how it is all goes, for now my conclusion is that it is probably not the language that is 100% at fault, it is likely in large part attributable to the people that use it and promote it. And it will be a long time before I will be one of them, if ever.

If you've ever used UCSD-P with the dreaded P-code then you know roughly what I feel like about this job :)
Soviet tanks were not exactly 'state of the art' either, but they worked pretty good. What's 'hot' doesn't automatically qualify to solve things for the longer term, in fact being 'hot' is a fantastic reason to stay clear of a technology, because if it is in fashion this year it could very well be out of fashion next year.
Transport Layer Security Renegotiation Vulnerability
The world is much closer to running out of oil than official estimates admit
Yeah, except many of these ideas have been production-tested for 25+ years.

Remember that Java is the language that introduced garbage collection to the world. Before Java, it was basically an untested academic thing that Lisp machines did. Why be liberal with such a radical new idea and conservative with things that let you implement programs the same way you do now but with less typing? It makes very little sense.
I have never heard of this service, but it looked interesting from examining the site. Three years is a long time to be in 'beta' for sure, though.
Why not use C then? Where do you draw the "it has to work" line?
Norton. No wait, hear me out. As many here know, Norton has always been a pig of an antivirus. In 2007 and 2008, it was really, really bad. It went from just slowing computers down to making them unusable. In the face of consumer backlash - even non-technical users were boycotting it - they made Norton Antivirus 2009. It uses ~10MB of RAM, and is now one of the faster scanners out there. It still gets Advanced/Advanced+ ratings from AV Comparatives, and updates signatures about every 5 minutes. Plus it has a "gaming" mode which puts even less stress on your system.
google cache link, the original article is gone:

http://209.85.229.132/search?q=cache:TkDETpNVMu0J:dsc.discov...
Data Smoke and Mirrors
* Rearranging everything to fit their naive 'filesystem hierarchy'
(this completely fucks up a decent packager like Ruby Gems)

Well who made ruby gems install to /usr/bin by default and potentially interfere/overwrite system-installed software in the first place? Sorry, but I think "Linux Standard Base" is a good thing.
While bridge building may always be successful (as asserted by the author), close to budget really depends on how you define "close".

Fixed link projects (bridges and tunnels) tend to cost 33% more than estimated (sigma=60%). Rail is even worse at 44% more than estimated, coming in under budget only about 12% of the time.

http://flyvbjerg.plan.aau.dk/JAPAASPUBLISHED.pdf
This is a great post and I would love to read more like it.
All 4 rules are exactly the opposite of what they should be...

Rule number 1: My code is crap.

What we need is great code. Everywhere. And we need programmers to produce great code. How can we expect anyone to aspire to produce great code by thinking that their code is "crap".

We are all learning and we are all at a different place in our journey, but one thing is certain: we are all capable of doing better and aspiring to greatness. Self degradation may work for OP but not for most people.

Excellence comes from learning and inspiration. Inspiration comes from passion, excitement, and seeing the possibilities, not dwelling on crappiness.

Rule number 2: I care about my code.

Care about your code while you're writing it. Then let it go.

The moment you stop caring about your code is the moment you give yourself permission to be free of the bonds of what you already know. What worked worked. Now let's do better.

(I'm embarassed by what I wrote a year ago. But I don't care. Move on.)

Rule number 3: My opinion about my own code is wrong.

It better not be. Your code may not be perfect, but it better be ready to do the job now. And you better stand behind it.

Rule number 4: My manager doesn't care about my code, and he pays me.

Your code is all your manager does care about. When it performs, he loves you. When it doesn't, he doesn't.

Make your code do it's job. It's really that simple.
Garbage collection is a massive gain. Far less code, and less bugs. No brainer decision there.

Typing a few less characters on boiler plate doesn't buy you anything, unless you're a slow/lazy programmer.

Typing "public static class" is boring, yes. But it's irrelevant. It can't contain bugs, so getting rid of that doesn't buy you anything at all.

Less typing != less bugs (When the code is compiled, statically typed, etc).

There is absolutely no reason to duplicate code in Java, and if you're copy/paste coding, it's not the languages fault, it's yours.
I'd be interested to see the silicon consumer trend graphed - how far in advance could 2004 have been predicted, which vendors in retrospect did predict it, etc.
Security firm chokes sprawling spam botnet
Tools like time machine and vmware snapshots can make viruses less disastrous than before. You can rollback instead of re-imaging or worrying about removing all the malware.
Awesome - I just uploaded a new ebook to Amazon and was going to have to borrow a friend's Kindle to see what it looked like.
Key oil figures were distorted by US pressure
Part of sun. Sun is going to oracle land. Cutting costs/things that seem useless.
When's the Mac version due?
It's mildly amusing (and telling) that posting a link to someone's writing could be seen as expressing a vendetta against the writer. :)
You don't make sense again.

I do use C. For classes of problems that are appropriate - kernel/low level stuff.

For several things though, the lack of gc'd memory management, buffer overflows etc is a good reason not to use C.

It sounds like you truly identify yourself as a "<language> programmer" rather than a "programmer" :/
The Web, one huge database ...
zembly will be closing down - who cares ?
Hurr, engineers don't have feelings, so they don't understand emotional blah blah blah. I don't know how the author feels remotely qualified to write a book about a company with a famed engineering culture, when it's so obvious he hasn't come close to understanding trivial misconceptions, much less a culture as a whole.
Ask HN Mac users: Do you use an antivirus ?
If yes, which?

Please see instead: http://news.ycombinator.com/item?id=933172
You missed yesterdays episode and the preceding salvos apparently.
Yes [which?]
""" Examine a typical antivirus package and you'll see it knows about 75,000+ viruses that might infect your machine. Compare that to the legitimate 30 or so apps that I've installed on my machine, and you can see it's rather dumb to try to track 75,000 pieces of Badness when even a simpleton could track 30 pieces of Goodness. In fact, if I were to simply track the 30 pieces of Goodness on my machine, and allow nothing else to run, I would have simultaneously solved the following problems:

* Spyware
* Viruses
* Remote Control Trojans
* Exploits that involve executing pre-installed code that you don't use regularly

Thanks to all the marketing hype around disclosing and announcing vulnerabilities, there are (according to some industry analysts) between 200 and 700 new pieces of Badness hitting the Internet every month. Not only is "Enumerating Badness" a dumb idea, it's gotten dumber during the few minutes of your time you've bequeathed me by reading this article. """

- http://www.ranum.com/security/computer_security/editorials/d...
Although I will agree with you in general about Java, I have to say that problems/challenges change, therefore you need new specific languages or automation tools for the job.

In my point of view Java is just the tool to create new domain specific languages that solve these new problems.

But, general languages that just make just a bit shorter or less verbose (as everyone who likes to dismiss Java uses quite often), to create a class won't do it for me to change language/platform.
FYI, it actually kind of works for me in Linux under Wine.

Installation worked perfectly for me. The only problem is that all of the text in the main application does not display (missing font?). But by clicking on random buttons, you can find books you've already bought. The text for the books displays fine, but again you can only see some fonts:

bookmark font works (you can browse bookmarks you've made)
But table of contents, searching does not work so well because their font doesn't display).
WebSimpleDB API
They may not be happy about it, but come on, the Apple of today isn't stupid.

There's MONEY in them thar gamin' hills.
If "[This] list is not inclusive." then we need to know what it is not inclusive of - it doesn't look like a complete sentence to me, ie incorrect, but grammar is admittedly not by strong suit.

One could write "This list is not inclusive of all available options." but there's a handy shorthand for that "This list is not exhaustive.". One could also write "incomplete" but that has a negative connotation.
could some editor please kill this ? thanks!
If the upgrade adds value, they'll pay.

If you can convey that the upgrade adds value, and they have budget (or can maneuver the politics of getting budget), then they'll pay. The fact that the upgrade adds value (or not) is actually secondary in many cases.
Note that in the third tutorial where the app "clicks" the ads the USER AGENT is changed to bot-like so it's not a hidden evil click-fraud app. The use of the app is one of many possible (it also may not click them, just count how much adds shows up on certain pages etc.), and not all ads are contextual like Google Ads but randomly displayed from a pool of adds for a given page - so refreshing gets more data.

This tutorial shows whats possible with WebKit, which isn't possible with CURL :)
I think this is very readable. Out of curiousity, what would your ideal of the equivalent code look like, in your language of choice? (If you really can't read this to know what your code would have to do, it's either parsing some term t or consuming whitespace. In the case where it parses a term, that term is going to be one of IntTerm, FloatTerm, AtomTerm, etc. Each term has its own associated parsing function (specified after the <$>).
Your comments reveal a person who's never worked in a sizable programming team for any length of time, be it at a large firm, a large collaborative project, or what-have-you. Which is fine; the article is not directed at the basement hacker, or the fad-du-jour startup slave, or whomever. It's toward the person who's been working long enough to prove themselves capable as a producer, and who's developed a (very common!) ego about their own abilities. Overcoming that ego can be a surprisingly difficult thing to do, if you're reasonably competent. But it's definitely a necessary step to "becoming a better software developer".
And that's why I said "practical uses".
The bit about users accessing services on any old computer becoming the norm is the bit which scares me. The idea of entering a password in a random computer with who know what key-logging malware installed scares me.

Two-factor can only go so far, as it only limits the window of opportunity to between log in and log out.

While I, and most technical people, guard our computers carefully and wouldn't use a computer owned by someone else for anything but anonymous web browsing, the average user is quite happy to use some terminal in an internet cafe.
"""Typing a few less characters on boiler plate doesn't buy you anything, unless you're a slow/lazy programmer"""

Must be nice to have an infinitely large short term memory.
Wasn't Fred Brooks who said something along the lines of "always build one to throw away"? Even though, this is not supposed to be a satire (or is it?) , the fact that software engineering is a very young subject needs to be taken into consideration. On the other hand, We need failed software projects to know what not to do.
That's assuming our records survive. I'm not entirely sure they will, especially with the push to digitize records. The great thing about analog storage, especially text on paper, is that it is at least partially recoverable after being damaged. A library full of books that have been sitting at the bottom of a newly formed sea for 1000 years has at least a little information in it that can be saved. A stack of foil-backed disks, magnetic tape, or magnetic disks that have done the same? Is the information density too high for there to be enough error correction?

Also consider, will future generations even be able to figure out how to read our digital formats? What if 1000 years from now, data is stored in a completely different way than we have currently ever imagined, and has been stored that way for so long that nobody remembers digital storage? Will a future person look at a DVD and know they need to bounce a laser beam off of it to be able to read it? Will they know that it has tracks of pitting patterns that need to be transliterated into bit patterns that then need to be decoded into semantic data? Will they know that CDs are different from DVDs are different from Bluray? At least with text-on-paper, you can immediately see with the bare eyes that something is there, and the only task left is the decoding to semantic data.

Even if we can make sure we are storing our data properly, we store so much more data now, will they be able to find anything of interest within the deluge? I get so many emails in a single day that I can't find important emails from as little as 3 days ago, I absolutely depend on search in order to get to them. Not only that, but how will future people differentiate between the important historical data--who did what and when--from the mundane logging information?
User issues: back button, history, internal linking, searchability.
Owner issues: SEO + the above reducing the UX.
With a car that small and light, power steering isn't really necessary. It adds weight and diminishes the driver's ability to feel what the car is doing and feel the road through the wheel.
> I’m going to use myself as an example now, mainly because I don’t know anyone else’s story well enough to make the point I want to with it. I’m the crippled kid who became a black-belt martial artist and teacher of martial artists. I’ve made the New York Times bestseller list as a writer. You can hardly use a browser, a cellphone, or a game console without relying on my code. I’ve been a session musician on two records. I’ve blown up the software industry once, reinvented the hacker culture twice, and am without doubt one of the dozen most famous geeks alive. Investment bankers pay me $300 an hour to yak at them because I have a track record as a shrewd business analyst. I don’t even have a BS, yet there’s been an entire academic cottage industry devoted to writing exegeses of my work. I could do nothing but speaking tours for the rest of my life and still be overbooked. Earnest people have struggled their whole lives to change the world less than I routinely do when I’m not even really trying.

[no audible dialogue]
No, of course not. What would be the point?
Tech support in my company has to constantly deal with false positives of our software with NOD32. I don't know how effective it is catching real trojans/viruses, but I know it sucks at catching non-trojans/non-viruses.
Not to mention that I have never said a thing about things like "public static void". I specifically mentioned the object system above and how much manual easy-to-get-wrong code is required simply to make things that have an equals method also have a "not equals" method.

Sometimes I wonder why I bother arguing with axod. Wait, I always wonder that...
IMO, Ken Burnside's comment on ESR's post (#5) was better than the article.
It's been taken... so I'm deleting this link.
Uh oh, the Java downmod trolls are here.

I wonder how many accounts axod has created simply to mod down every post in "Java is not perfect" threads.
What tools does Java have for creating domain specific languages?
Great! - this is a move in the right direction. I'm really hoping for a web version.
As Bruce mentioned in his article:

"And whitelists aren't a panacea, either: they don't defend against malware that attaches itself to data files (think Word macro viruses), for example."
That's not what this article is.

Why bother reading when you can make a cynical comment instead, though?
Only issue I could see with that is if you are collecting CVV numbers it would be confusing to anyone using Amex, as the number is on the front of the card. Otherwise, brilliant idea, especially if you don't use CVV in checkout
No, but more techy people will tend not to download / install / give passwords to "dodgy" applications
Google closure compiler web frontend