Well, exactly 24 hours ago I upgraded to 1.1beta because bugzilla claimed it fixed a problem I was having with IFRAME. Now 1.1 is out, and I downloaded it while I was writing this comment. At this rate you should save your bandwidth, and look for 1.2b tommorow night!
Also I predict a low chance of rain tommorow, since I did not wash my car. I will keep you posted.
And genetic algorithms, knowing nothing of your problem domain, tend to find solutions that capitalize on facets of your environment that you hadn't even considered. Two examples from my experience:
I had a population of simulated organisms competing in a shared 2d grid for food, which appeared in a pile at a random location when the old food was depleted. While the organism had basic looking/moving operations to rely on, invariably some would discover that with enough organisms, the food moves enough that you can survive by just looking around until the food is in your line of sight, and then jumping on it. My arbitrary decision to place the food randomly formed the basis for an *entire species* of organisms (which didn't fare too well when some got smarter).
These same organisms used a stack to do their thinking. Looking and eating produced values, which could be used for simple branching. Out of sheer laziness, I designed the stack to allow infinite pops off an empty stack which would return false, and infinite pushes on a full stack which would discard the values. One memorable run produced a dominant species which relied on this stack behavior to implement COUNTING! It intentionally (well, purposefully) left crud on the stack in a main loop, relying on the filled-stack behavior to detect a certain number of iterations. The stacksize and the arena size happened to be comparable, and this is how it determined when to turn.
Thank you for noticing the Kodak product placement. Those of us with shares of Kodak (NASDAQ: EK) appreciate your endorsement. Sure, we're still losing money, but we expect Kodak to get to step 3 -- profit -- real soon.
You don't need hardware to try this at home...
on
A Robot Learns To Fly
·
· Score: 5, Interesting
Here's what I did to play around with breeding algorithms from small building blocks:
Define a very simple stack-based language. The stack only holds boolean values, and when empty pops and endless supply of "false" values and when full discards pushes. Choose some control flow opcodes:
NOP, SKIP (pop, if true, skip ahead a fixed amount), REPEAT (pop, if true, skip back a fxied amount), NOT, RESET (clear stack, back to beginning)
and some opcodes related to your environment (mine was a rectangular arena):
GO (try to move forward one step, push boolean success), TURN (90 degrees clockwise), LOOK (push boolean "do I see food ahead?"), EAT (try to eat, push boolean success)
Pick a stack size (this has interesting consequences, as some of my organisms learned to count by filling the stack with TRUE values and consuming them until they hit the endless supply of FALSE when empty) and a code size. Force all organisms to end in your RESET op. Generate them randomly and run them in your simulator (I did 20-50 at once letting each one run a few hundred instructions in a row). Evaluate fitness (in my case, how well fed they were) and breed them. You can combine the functions in lots of ways. Randomly choose opcodes (or groups of opcodes) from each, possibly with reordering or shifting. Introduce some mutations.
Once you get something interesting, try to figure out how it works. This can be the hardest part -- my description above produced many variations that were only 8-10 instructions long before an unavoidable RESET opcode, and they could search a grid with obstacles for food!
My local Best Buy had the SL-5500 on clearance for $325. I don't see it on their website so you'll have to go look for it.
I think Sharp has the best PDA hardware out there. It's a great package if you're the kind of person who would want a CF slot on your PDA (size comparisons with the iPaq usually ignore the "sleeve" required for CF). The PIM software, on the other hand, sucks. Someone described it as looking like the result of a class project, and I have to agree. Others in this thread have covered the "hackability" aspect thoroughly, and I agree that it appeals to geeks. But I'm afraid there will be no next gen Linux Zaurus because this one is going to tank in the market. No one buys a PDA for the sexy hardware expecting to install all new software later.
I've played with a few of them in different stores. About half were stuck at the 'lock' screen because someone figured out how to set a code and left it that way. Most are trapped in a anti-theft cage which doesn't allow the keyboard cover to open all the way. The keyboard is inactive until the cover is in the "open" detent, so it appears to be broken. Office Depot appears to have all the accessories out but no *units*. This is a disaster when you can play with 5+ palm devices and 5+ WinCE devices in any store.
If you have DNS records pointing at your cable modem IP, make sure you drop the TTL way down (to maybe 5 minutes) before you change any part of your service. Apparently when they make changes to your provisioning (number of IPs, bandwidth, etc) they reset a central server AND your modem, and you will probably NOT get your old IP back.
This really cought me off guard. I had to wait about 3 days for my records to expire from nameserver caches.
Forking is hard, especially for a large project. And even if there is a fork, you can at least benefit from work in both trees.
What you need to worry about are the guys who submit bugfixes and get stonewalled. They might not fork the tree -- after all, they've GOT the bugfixes. Why do they care if no one else does, when the committers won't apply the diff? CVS makes it easy to have your own tree that lacks several of the crashes of the released version, and continue to track everyone else's work with `cvs update'.
In fact, after doing this for a while you learn that eventually the bugs you fix bother someone who can commit changes, and they re-invent the wheel, and CVS is fixed. So after a year or so you can even get rid of your tree.
I wrote an ugly perl script that does this. It's based on the ideas from mp3cdd (you might be able to find this by searching google).
First you find all of the track lengths and build a fake TOC, assuming a 2 second lead-in. mp3cddb used file length and bitrate to guess the length. If you use VBR (or even ABR) this isn't accurate enough, so you need madtime from libmad. Feed this to CDDB (get the mod from CPAN).
You'll get a ton of results. Some will be totally unrelated, and some will be crap (all uppercase, all lowercase, genre missing, etc). Write a scoring function that weights all of the factors you care about, and then factor in the "distance" of the actual tracklists from your actual tracklists. Total time differences in seconds, or root mean squared differences, whatever gets good results. Pick the best.
Sanitize the result if you are using the CDDB info as a filename.
The interesting thing about the Harrison clocks, is not only were they the GPS of their day, they were also the atomic clocks of their day.
Not only is GPS the GPS of today, GPS is also
the atomic clock of today. And a great source of accurate time if you want to run NTP on an isolated network.
That's a fine way to express the bandwidth, but not many serious news servers (ones attempting to carry everything with good retention times) use land lines to get their feeds.
Contradictory predictions make perfect sense if you want a high number of "hits" from your selections. That was you cover more of the possible outcomes. Maybe the whole challenge to making a list like this is making your predictions vague enough and the contradictions subtle enough that future humans (er, I mean, orgasmic AIs with PhDs) can stretch your predictions to match the future events without your remaining predictions making you an obvious fraud.
Is mirroring the best way to serve the community?
on
Non-Profit Colocation?
·
· Score: 2
There are lots of things you can do to benefit open source. Mirroring some of the world's highest volume websites might be one of them. But if you do that, you're going to saturate your network pipe, and make the rest of your site less accessible. If big bandwidth isn't your main strength (MBA translation: core competency) then don't get drawn into providing it. If projects need free DNS, mail hosting, compile farms, etc, you can do all of that better with nice, low latency.
They may be referring to
Imperial Technology's MegaRam solid state disks (SSDs). They claim about 36,000 IO/sec. Compare that with 80-120 IO/sec on a typical SCSI drive. I'm pretty sure that eBay is using them.
I had an opportunity to play with one on a 20 CPU Starfire domain and it was pretty impressive. The unit I was using had 8 wide SCSI ports on it, which were all connected. Interestingly, when the system was pegged, it was off the scale in system time. There's probably a locking problem in the Solaris kernel that's the real bottleneck.
The author's conclusion is that insecure software is a result of a lack of focus on security. The real problem is programmer ignorance about the fundamental issues and the technical details of writing secure software.
To have any hope of writing secure software, a programmer first has to be aware that a problem exists. Aware of issues like safely handling user input and securely transporting data (and when it's appropriate and when it's pointless).
Once a programmer is aware of the existance of these issues he can start learning about all of the technical problems of writing secure code. In a UNIX environment, it's things like not exposing unnecessary parts of the filesystem to external users, and not blindly writing to files in/tmp, and not trusting your PATH or your IFS in privileged scripts.
I got my wife a 1024x768 LCD display (GEM-150ATA, $289 after rebate from Fry's). It's beautiful. The auto-setup does a great job... but my 19" tube has 2.5x more pixels at 1600x1200! The article is talking about 2x 1024x768, which is still 20% fewer pixels than my current display. That's not much of an upgrade -- unless you measure by sheer area.
The article says they will make upgraded base units (left unsaid: if the original sells enough!). But except for the fancy swivel hardware, the LCDs are the part that's already out of date!
Humans could change over thousands or millions of years to be to be smallpox resistant... Or we could apply our own intelligence to wipe out smallpox with vaccines. The former is clearly evolution. Is the latter? Is species improvment still evolution when changes directed by the evolved intelligence dominate the random mutations?
For a while I was worried that humans were defeating evolution. Diseases like diabetes can't be cured, but we can treat them, thereby increasing the number of kids born to people with diabetes. The natural selection against childhood diabetes is defeated. On the other hand, we may one day cure diabetes with gene therapy. Maybe that is how humans will evolve in the future.
True enough. It's a shame that the effect of the patent system, currently, is to choke off innovation and information sharing.
A patent grants a temporary monopoly on an invention in return for a thorough description of how it works. Getting a patent requires information sharing. Without the patent process it would be imperative for companies to conceal their intellectual property. The patent process rewards them for sharing. Go back 17-20 years and you have a pile of millions of inventions that you can use freely, each one carefully described and illustrated.
I think it's equally obvious that patents do not "choke off innovation". Who out there is not trying to think of better ways to do things just because bad patents have been granted? Preventing people from using inventions (even if they are obvious in retrospect) doesn't choke off innovation. Profit, maybe, but not innovation.
by the dude who invented Autodesk who was like, "I'm rich and I have a family and a company, and damn well everything I could ever want, but I'm still a BIG, FAT ASS!!"
I believe what he was like was, "I'm still a BIG FATASS". Not an ASS who was BIG and FAT.
onClose is about the most irritating browser feature ever invented. It makes BLINK look like a cool drink on a hot day.
But anyway, it is easy to get rid of, in any version of netscape: Load your netscape binary into emacs (regardless of your editor religion, emacs is the best generally available tool for this), I-search (c-s) start typing onclose... when it shows up, change it, but leave it the same length. So make it `onAsdfg'. That's it. No more onClose, ever.
A good on-call compensation package would include:
Hourly pay for carrying the pager/phone (eg 1 for 8 or 1 for 4)
Hourly pay for working any calls that come in
...preferably with a 2 or 4 hour minimum each time a call is received
...all times a multiplier if it's a holiday
If you get 1-for-8 to carry a pager during non-working hours, a week of carrying (including 1 weekend but no calls) is 16 hours of pay, which is a 40% increase in gross pay. If you're called that just goes up.
And in return you set response expectations like:
15 minute response to any page
Able to get to a terminal in 1 hour (depends on the nature of the work, may need more or less)
Able to be onsite in 2 hours (again, depending on the nature of the work)
Engineer willing to work the pager regularly,
on a schedule.
When I first installed junkfilter (set of anti-spam procmail scripts) I was surprised that it had a prominent option to junk ALL mail from MSN! Since I've been using it (and I get 20-50 unwanted messages a day) it's only been wrong once.
This is just one more reason to leave JF_OPT_MSN=1!
Well, exactly 24 hours ago I upgraded to 1.1beta because bugzilla claimed it fixed a problem I was having with IFRAME. Now 1.1 is out, and I downloaded it while I was writing this comment. At this rate you should save your bandwidth, and look for 1.2b tommorow night!
Also I predict a low chance of rain tommorow, since I did not wash my car. I will keep you posted.
I had a population of simulated organisms competing in a shared 2d grid for food, which appeared in a pile at a random location when the old food was depleted. While the organism had basic looking/moving operations to rely on, invariably some would discover that with enough organisms, the food moves enough that you can survive by just looking around until the food is in your line of sight, and then jumping on it. My arbitrary decision to place the food randomly formed the basis for an *entire species* of organisms (which didn't fare too well when some got smarter).
These same organisms used a stack to do their thinking. Looking and eating produced values, which could be used for simple branching. Out of sheer laziness, I designed the stack to allow infinite pops off an empty stack which would return false, and infinite pushes on a full stack which would discard the values. One memorable run produced a dominant species which relied on this stack behavior to implement COUNTING! It intentionally (well, purposefully) left crud on the stack in a main loop, relying on the filled-stack behavior to detect a certain number of iterations. The stacksize and the arena size happened to be comparable, and this is how it determined when to turn.
That does it. I'm adding "the" to my list of filter words. I always knew it was the only way to really avoid spam in my inbox.
Thank you for noticing the Kodak product placement. Those of us with shares of Kodak (NASDAQ: EK) appreciate your endorsement. Sure, we're still losing money, but we expect Kodak to get to step 3 -- profit -- real soon.
Here's what I did to play around with breeding algorithms from small building blocks:
Define a very simple stack-based language. The stack only holds boolean values, and when empty pops and endless supply of "false" values and when full discards pushes. Choose some control flow opcodes:
NOP, SKIP (pop, if true, skip ahead a fixed amount), REPEAT (pop, if true, skip back a fxied amount), NOT, RESET (clear stack, back to beginning)
and some opcodes related to your environment (mine was a rectangular arena):
GO (try to move forward one step, push boolean success), TURN (90 degrees clockwise), LOOK (push boolean "do I see food ahead?"), EAT (try to eat, push boolean success)
Pick a stack size (this has interesting consequences, as some of my organisms learned to count by filling the stack with TRUE values and consuming them until they hit the endless supply of FALSE when empty) and a code size. Force all organisms to end in your RESET op. Generate them randomly and run them in your simulator (I did 20-50 at once letting each one run a few hundred instructions in a row). Evaluate fitness (in my case, how well fed they were) and breed them. You can combine the functions in lots of ways. Randomly choose opcodes (or groups of opcodes) from each, possibly with reordering or shifting. Introduce some mutations.
Once you get something interesting, try to figure out how it works. This can be the hardest part -- my description above produced many variations that were only 8-10 instructions long before an unavoidable RESET opcode, and they could search a grid with obstacles for food!
My local Best Buy had the SL-5500 on clearance for $325. I don't see it on their website so you'll have to go look for it.
I think Sharp has the best PDA hardware out there. It's a great package if you're the kind of person who would want a CF slot on your PDA (size comparisons with the iPaq usually ignore the "sleeve" required for CF). The PIM software, on the other hand, sucks. Someone described it as looking like the result of a class project, and I have to agree. Others in this thread have covered the "hackability" aspect thoroughly, and I agree that it appeals to geeks. But I'm afraid there will be no next gen Linux Zaurus because this one is going to tank in the market. No one buys a PDA for the sexy hardware expecting to install all new software later.
I've played with a few of them in different stores. About half were stuck at the 'lock' screen because someone figured out how to set a code and left it that way. Most are trapped in a anti-theft cage which doesn't allow the keyboard cover to open all the way. The keyboard is inactive until the cover is in the "open" detent, so it appears to be broken. Office Depot appears to have all the accessories out but no *units*. This is a disaster when you can play with 5+ palm devices and 5+ WinCE devices in any store.
If you have DNS records pointing at your cable modem IP, make sure you drop the TTL way down (to maybe 5 minutes) before you change any part of your service. Apparently when they make changes to your provisioning (number of IPs, bandwidth, etc) they reset a central server AND your modem, and you will probably NOT get your old IP back.
This really cought me off guard. I had to wait about 3 days for my records to expire from nameserver caches.
Forking is hard, especially for a large project. And even if there is a fork, you can at least benefit from work in both trees.
What you need to worry about are the guys who submit bugfixes and get stonewalled. They might not fork the tree -- after all, they've GOT the bugfixes. Why do they care if no one else does, when the committers won't apply the diff? CVS makes it easy to have your own tree that lacks several of the crashes of the released version, and continue to track everyone else's work with `cvs update'.
In fact, after doing this for a while you learn that eventually the bugs you fix bother someone who can commit changes, and they re-invent the wheel, and CVS is fixed. So after a year or so you can even get rid of your tree.
I wrote an ugly perl script that does this. It's based on the ideas from mp3cdd (you might be able to find this by searching google).
First you find all of the track lengths and build a fake TOC, assuming a 2 second lead-in. mp3cddb used file length and bitrate to guess the length. If you use VBR (or even ABR) this isn't accurate enough, so you need madtime from libmad. Feed this to CDDB (get the mod from CPAN).
You'll get a ton of results. Some will be totally unrelated, and some will be crap (all uppercase, all lowercase, genre missing, etc). Write a scoring function that weights all of the factors you care about, and then factor in the "distance" of the actual tracklists from your actual tracklists. Total time differences in seconds, or root mean squared differences, whatever gets good results. Pick the best.
Sanitize the result if you are using the CDDB info as a filename.
Now rename and mp3info your tracks from the data.
Learn how to build your own satellite feed like this one (with some stats). Or peruse these links.
The article.
Contradictory predictions make perfect sense if you want a high number of "hits" from your selections. That was you cover more of the possible outcomes. Maybe the whole challenge to making a list like this is making your predictions vague enough and the contradictions subtle enough that future humans (er, I mean, orgasmic AIs with PhDs) can stretch your predictions to match the future events without your remaining predictions making you an obvious fraud.
There are lots of things you can do to benefit open source. Mirroring some of the world's highest volume websites might be one of them. But if you do that, you're going to saturate your network pipe, and make the rest of your site less accessible. If big bandwidth isn't your main strength (MBA translation: core competency) then don't get drawn into providing it. If projects need free DNS, mail hosting, compile farms, etc, you can do all of that better with nice, low latency.
I had an opportunity to play with one on a 20 CPU Starfire domain and it was pretty impressive. The unit I was using had 8 wide SCSI ports on it, which were all connected. Interestingly, when the system was pegged, it was off the scale in system time. There's probably a locking problem in the Solaris kernel that's the real bottleneck.
To have any hope of writing secure software, a programmer first has to be aware that a problem exists. Aware of issues like safely handling user input and securely transporting data (and when it's appropriate and when it's pointless).
Once a programmer is aware of the existance of these issues he can start learning about all of the technical problems of writing secure code. In a UNIX environment, it's things like not exposing unnecessary parts of the filesystem to external users, and not blindly writing to files in /tmp, and not trusting your PATH or your IFS in privileged scripts.
Forget focus, we need education.
I got my wife a 1024x768 LCD display (GEM-150ATA, $289 after rebate from Fry's). It's beautiful. The auto-setup does a great job... but my 19" tube has 2.5x more pixels at 1600x1200! The article is talking about 2x 1024x768, which is still 20% fewer pixels than my current display. That's not much of an upgrade -- unless you measure by sheer area.
The article says they will make upgraded base units (left unsaid: if the original sells enough!). But except for the fancy swivel hardware, the LCDs are the part that's already out of date!
Humans could change over thousands or millions of years to be to be smallpox resistant... Or we could apply our own intelligence to wipe out smallpox with vaccines. The former is clearly evolution. Is the latter? Is species improvment still evolution when changes directed by the evolved intelligence dominate the random mutations?
For a while I was worried that humans were defeating evolution. Diseases like diabetes can't be cured, but we can treat them, thereby increasing the number of kids born to people with diabetes. The natural selection against childhood diabetes is defeated. On the other hand, we may one day cure diabetes with gene therapy. Maybe that is how humans will evolve in the future.
I think it's equally obvious that patents do not "choke off innovation". Who out there is not trying to think of better ways to do things just because bad patents have been granted? Preventing people from using inventions (even if they are obvious in retrospect) doesn't choke off innovation. Profit, maybe, but not innovation.
I believe what he was like was, "I'm still a BIG FATASS". Not an ASS who was BIG and FAT.
In the UK "Scrapheap" is on Channel 4, not one of the BBC channels.
But anyway, it is easy to get rid of, in any version of netscape: Load your netscape binary into emacs (regardless of your editor religion, emacs is the best generally available tool for this), I-search (c-s) start typing onclose... when it shows up, change it, but leave it the same length. So make it `onAsdfg'. That's it. No more onClose, ever.
- Hourly pay for carrying the pager/phone (eg 1 for 8 or 1 for 4)
- Hourly pay for working any calls that come in
- ...preferably with a 2 or 4 hour minimum each time a call is received
- ...all times a multiplier if it's a holiday
If you get 1-for-8 to carry a pager during non-working hours, a week of carrying (including 1 weekend but no calls) is 16 hours of pay, which is a 40% increase in gross pay. If you're called that just goes up.And in return you set response expectations like:
This is just one more reason to leave JF_OPT_MSN=1!