When Stieg Larsson died suddenly, and after writing just 3 of the planned 10 books about Blomquist and Salander, he left behind Eva Gabrielsson, his common-law wife of 30+ years.
Unfortunately, with no explicit will and no legal acceptance of common-law marriage in Sweden, she inherited absolutely nothing.
If you need us precision for all 40 servers in a rack, the solution can be either very simple (and cheap) or very complicated (or even cpu-intensive):
The obvious solution is to make a small amplifier, so that the PPS signal can be split into 40 cables and spread to all the servers.
Since NMEA is a one-way protocol you can also wire up one server which can send commands to the GPS and let all 40 of them listen to the responses.
You only need RMC or GGA output in order to number the second pules on the PPS signal, so a backup solution is to use the IP network to distribute coarse (0.1 ms is easy when all servers are on the same switch) time, then they'll use the PPS for the final two orders of magnitude precision.
The complicated solution requires network cards with hw timing and/or significantly more timing exchange packets in order to get good statistical results.
Terje (Who's got an NTP network with 6 primary servers, using 3 Motorola Oncore UT+ timing receivers (~30 ns RMS) plus a bunch of alternate/backup sources.)
The people behind this project tried to get the ntp hackers interested a year or two ago, but since the only thing they have is a possibly improved distributed algorithm, vs real NTP which has been designed to work even in the face of (intentional or accidental) falsetickers, nobody was very interested.
Any NTP wrangler who's the least interested in accurate local clocks will spend an hour and less than $100 to buy a cheap gps (Garmin GPS18(x) LVC) with Pulse Per Second (pps) output, a USB cable and a 9-pin RS232 connector:
Solder these together according to one of several howtos
In my (drafted) military service here in Norway, I was told that the legal limit for weapons used for "directly aimed fire against personnel" was 12.7 mm, aka.50 cal.
Not by coincidence,.50 is of course the most popular cailber for long-range sniper rifles.
That meant that the 20 mm anti-aircraft gun I commanded could be used against helicopters, trucks and cars in addition to regular aircraft, but not against unmounted infantry.
It takes quite a lot of energy to completely dry/sterilize a diaper, I have a hard time believing you can get that back when burning the end product.
The article seems to imply that each diaper results in one fuel pellet, but this is obviously false: Each pellet is stated to contain 5000 kcal after processing, and since 1 kcal is what you need to heat one liter of water one degree (Celcius/Kelvin), this is sufficient energy to bring 50 liters from freezing to boil or enough to completely evaporate somewhat less.
Comparing with the numbers in the wikipedia article about energy density (http://en.wikipedia.org/wiki/Energy_density) this seems to be equivalent to about half a liter of diesel or gasoline (46 MJ/kg) and significantly more than a kg of wood (18 MJ) or completely dry cow or camel dung (15.5 MJ)
OTOH it is better than landfills, but probably worse than simply burning them as-is together with regular waste.
The authors of the RADclock article don't seem to realize that most of the issues they "solve" with their algorithm has been considered, and also more or less solved, by the NTP hackers severeal years ago.
I.e. when the article shows that in a variable-latency environment you need to filter the measurements by the minimum rtt: This is of course default behaviour for ntp as well, but only over a limited number of polling intervals (8). If this isn't sufficient then there are a number of configuration options available, like the huff-puff filter which can be configured to maintain rtt history long enough to "coast" past any expected periods of large and asymmetrical network delays.
They also give out some _really_ bad advice, like claiming that "One server is enough": This is only true if you know that this particular server can never be wrong!
If you want to survive the situation where a single servers starts to lie, you shold configure at least 4 independent sources.
Personally I have seen 3 different gps-based stratum-1 black box ntp servers go crazy, suddenly returning timestamps far into the future.
OTOH, my freebsd-based servers with Motorola Oncore UT+ timing optimized gps firmware has never returned bad time, but I still have 6 such servers spread around our corporate network.
The real code needed a tiny loop to load bytes and write words, something like this:
; DS:DI -> Message to write ; CX = length of the message ; ES:DI -> 0B800h:0 (or any other screen offset) ; AH = 8 (or some other reasonable attribute)
I have helped with similar tasks previously, where an Egyptologist had used a digital camera on a portable frame to take mosaic images of rock carvings.
Modern panorama software, both open source and very cheap commercial offerings, makes it possible to determine semi-automatically how multiple images are connected, while correcting for things like lens projection errors, camera location offsets and even some exposure correction.
In your case I would use a panorama head on a tripod, put the maps on top of a square grid, and then take sufficient number of images to get the final resolution you think you need.
The part of the grid that remains visible makes it easy to flatten the resulting mosaic.
I used PTAssembler on that Egyptian mosaic, highly recommended!
I'm perfectly happy, and assume, that any code snippets I post will be picked up and reused. If whoever does this includes a comment that I wrote it originally, that's all I expect.
Here's a snippet of code I wrote 3 years ago:/*
* The first part is semi-magic, it depends on doing a small amount
* of fast bit-twiddling operations directly on the fp bit pattern:
*
* Treat the fp value as an Int
* Take the top 16 bits of the mantissa and
* the last exp bit, adjust that bit:
* Square it for a second-order correction:
* The fp exponent is nearly a log:
* The 2nd order term must be scaled by 5/8196
*/
inline int rr_log2(float f) {
int e = AS_INT32(f);
int m = ((e >> 7) & 0xffff) - 0x8000;
m *= m;
e += (5>= 13;
e -= m*5;
return e; }// The float->float code uses the function above, converting// back to float and scaling by 2^(-23): inline float RR_LOG2(float f) {
int e = rr_log2(f);
float t = (float) e * (float) (1.0f/(65536.0f*128.0f));
return t; }
Afair all modern graphics cards (DX10-11) must have the ability to handle gamma for all sampling operations, i.e. internally they must convert each contributing sample into a linear value before averaging them. BTW, the conversions are not quite log/antilog, a small part of the input range is linear!
DX10 requires these conversions to be very accurate, with at least 10-bit precision in both directions, so as long as you can live with any of the supported sampling algorithms you can just let the graphics driver do all the hard work.
If you cannot depend on the hardware, maybe because you'd like to use Sinc sampling, then it isn't too hard or expensive to do it in sw either:
I have written SSE-based sw to do these operations, which means that the conversions had to use polynomial approximations to make it possible to do multiple of them in parallel. (For a single sample at the time, a lookup table is the obvious choice: A 256-entry table of 16-bit values uses just 512 bytes, while a reverse table going from 11-bit averages to 8-bit gamma samples needs 1KB.)
Using a very simple polynomial makes it possible to convert 4 individual samples simultaneously.
When we bought a cabin in the mountains of Telemark (in Norway) 4 years ago, the local (very small: total population is the community is just 2500) power company by default gave us fiber along with the electric power cable:
3 years later I had two competitors both offering fiber to my home in Oslo, currently I'm paying about $80/month (strong NOK/weak dollar) for 30/30 Mbit at home:
Over those 4 years we've had one network outage at the cabin, lasting a day or two, and two outages at home.
The second crash (all fiber cables pulled down by an overheight lorry) lasted 8 days, so I'm getting the service free for a couple of months in compensation.
We get a pre-filled tax sheet, you confirm that it is correct by either sending in an SMS with a one-time code, logging into a secure web site or returning it in the included (postage pre-paid) envelope.
You can also make any needed changes either electronically or on the paper form.
The online form will also automatically calculate how much you owe or will get back.
It _is_ possible to run electronics with over-the-air power, witness all the millions and millions of passive RFID tags out there.
However, the power density required to run/charge a cell phone or laptop is simply way out of range, unless you want to cook the user holding the phone at the same time.
Verification as actually quite easy, due to the (totally unexpected at the time!) discovery of the Borwein-Bailey-Plouffe algorithm which allows you to directly calculate the N'th hexadecimal digit of pi, without having to determine any other digits.
He used this on a bunch of the last digits and they all came out correct, which makes the probability of an error extremely small.
Last year I used his algorithm to calculate 1e9 (i.e. a US billion) digits of pi and made them searchable:
Here in Oslo (Norway) we've had these LED lights for several years, and the snow shields have never (afaik) had any problems keeping the lights visible, even during our regular snow storms.
Here's a detail from a photo of a local junction which I took for my wife. She is responsible for making public transport in the region as efficient as possible, which includes giving priority to buses and trams in all intersections:
PS. Here's a link to the least useful program I have even written, pi-search, which can locate digit strings anywhere within the first 1e9 digits of pi:
I used to think that "murder in the large", i.e. genocide as well as large amounts of drug smuggling/dealing was the worst possible crime, but last year I heard about something worse:
Manufacturing fake drugs with just enough of the real active ingredient that it will show up on a gas chromatograph or mass spectrometer, along with large doses of regular cold medications like pseudo-ephedrine which will provide short-term relief.
Google has lots of relevant links for "fake drugs multi-resistant bacteria", close to the top is this one:
This is probably the single most effective method to generate more multi-resistent bacteria strains, which means that the people behind the scam will keep on killing more and more people as time goes by.
I know, and that's exactly what's makes it so interesting:
They have effectively defined a small subset of the entire instruction set while allowing all other instructions that doesn't produce a side effect which would crash their "real" code.
I for one is very impressed by what they've done, even if it is somewhat similar to what I did nearly 15 years ago:
At that time I wrote what's probably the "best" executable text encoder for MsDos, it uses the absolute minimum possible amount of self-modification (a single 2-byte Jcc opcode) while staying entirely within the MIME text character set, and survives all the most usual forms of reformatting/reflowing of the text. (Replacing CRLF with a single CR (Mac) or LF (unix) or turning each paragraph into a single line.)
(The uppercase 'E's are my NOP fillers, they execute as INC BP, a register I don't use.)
Terje
PS. Unlike the current guys, I wrote the code above by hand, on paper, during the evenings of a ski vacation. I had brought with me a listing of the ascii encoding of all instructions that would use MIME characters only.:-)
"Subtract and Branch if Not Equal" (SBNE?) is indeed one of the simplest real single-instruction architectures that works.
The Single-instruction computer in the original article is no such thing, instead it is a Transport-Triggered Architecture (TTA), where the instruction set is encoded on the address bus.
This has even been used on x86 machines:
Many years ago (286/386 timeframe) the x87 coprocessors were still very slow (microcoded!), so Weitek manufactured a fp unit which was memory mapped. It grabbed a full 64kB of address space, which meant that the main cpu could use this space as a 16-bit opcode.
I.e. by moving data to/from various addresses in this 64K block, the Weitek unit would use the address data to determine the fp opcode to perform.
Back in the original Doom days, John Cash and his friends who worked for Novell used to play deathmatch games on the corporate network in the evenings. When they discovered that the Doom network code was horrible, Cash sent Carmack an email pointing this out.
Carmack responded by sending over the source code (which had been written for id by a contractor), asking Cash to fix it. Basically a 'put up or shut up' situation.:-)
The result, after a few mostly sleepless nights was a totally rewritten network layer which got used by the later Doom versions.
This experience made Cash figure out how a networked game should work, so over the next 2-3 years he did a presentation every year at Novell's Developer Conference (later called BrainShare), the title was something like "How to write networked games".
Another year later, after Carmack had hired Mike Abrash to help with the low-level optimization of the sw 3D engine for Quake, they hired Cash to write the nextwork and AI code.
After Quake 3 shipped, Cash left id for a more relaxed environment, moving to Blizzard who were working on this new massive multiplayer game at the time.
Afaik John Cash is now the chief programmer for WOW.
Terje
PS. I've known Mike since about 1985 and I worked with John Cash for a year in 1991-92.
Sweden did pass a monitoring law, the same thing is out of the question here, maybe because Norwegians are a lot more stubborn than Swedes.:-)
Re. "right to trespass": In all of Scandinavia except Denmark, we have laws guaranteeing the "right to trespass", i.e. anyone can walk anywhere they like, on public or private property, as long as they stay away from developed areas.
This means that all of the forests and mountains that cover 95%+ of Norway are available to all, you can even put up a tent and stay there for up to three days. (Notice I said walk, you cannot use any form of motorized vehicle outside the street system, even if it is your own property.)
You cannot damage anything of course, and you can't leave any trash or other traces indicating that you've been there.
Norway, Finland, Sweden & Denmark are all among the top nations in the world, for both cell phone & broadband coverage, and among the lowest prices in the world for cell phone use.
A key part of bringing this about here in Norway has been that the physical access layer ("last mile copper"/gsm cells) has to be available to competitors, with government-controlled rates.
I.e. when I got ADSL about 8 years ago, I got it from NextGenTel, a competitor to Telenor who owns my regular phone circuit.
On the GSM side we have two physical operators (Telenor and Netcom), both my kids get their cell phone service from one of many virtual operators (Tele2) which uses the Netcom infrastructure. Their monthly bills are usually so low that the operator will wait 3 months between each bill to reduce billing overhead. (I'm paying less than $10/month for each of them.)
Tele2 btw used to be based on the Telenor network, they got an even better deal (i.e. probably lower than government-mandated rates) from Netcom so overnight they simply moved everything across. My kids had to reset their phones to reconnect to the new set of towers, everything else just worked.
An unemployed lady here in Norway was in the news recently because she lost most of her benefits:
It turned out that she had been elected to a (non-paying of course!) position on the local town council, a task which she did to the best of her ability.
The problem was that each (evening) meeting of the council generated a few NOKs in compensation, supposedly to handle stuff like transportation costs.
So what happened was that she still had to declare that as income, whereupon she passed a (low) limit which caused her to lose a major part of her benefits.
To avoid this particular problem she did try to say no to those meeting expense monies, but that was of course impossible:
"You have been elected to the council so you are legally obligated to turn up for every meeting, and when you do you _must_ receive compensation. When the sum passes the limit, we then have to take away your benefits."
When Stieg Larsson died suddenly, and after writing just 3 of the planned 10 books about Blomquist and Salander, he left behind Eva Gabrielsson, his common-law wife of 30+ years.
Unfortunately, with no explicit will and no legal acceptance of common-law marriage in Sweden, she inherited absolutely nothing.
See http://www.dailymail.co.uk/femail/article-1240159/Stieg-Larssons-widow-seen-penny-20m-fortune-earned-together.html
Terje
PS. I loved the books, read them all in Swedish instead of waiting for the Norwegian translation.
If you need us precision for all 40 servers in a rack, the solution can be either very simple (and cheap) or very complicated (or even cpu-intensive):
The obvious solution is to make a small amplifier, so that the PPS signal can be split into 40 cables and spread to all the servers.
Since NMEA is a one-way protocol you can also wire up one server which can send commands to the GPS and let all 40 of them listen to the responses.
You only need RMC or GGA output in order to number the second pules on the PPS signal, so a backup solution is to use the IP network to distribute coarse (0.1 ms is easy when all servers are on the same switch) time, then they'll use the PPS for the final two orders of magnitude precision.
The complicated solution requires network cards with hw timing and/or significantly more timing exchange packets in order to get good statistical results.
Terje
(Who's got an NTP network with 6 primary servers, using 3 Motorola Oncore UT+ timing receivers (~30 ns RMS) plus a bunch of alternate/backup sources.)
The people behind this project tried to get the ntp hackers interested a year or two ago, but since the only thing they have is a possibly improved distributed algorithm, vs real NTP which has been designed to work even in the face of (intentional or accidental) falsetickers, nobody was very interested.
Any NTP wrangler who's the least interested in accurate local clocks will spend an hour and less than $100 to buy a cheap gps (Garmin GPS18(x) LVC) with Pulse Per Second (pps) output, a USB cable and a 9-pin RS232 connector:
Solder these together according to one of several howtos
(I can recommend http://www.satsignal.eu/ntp/FreeBSD-GPS-PPS.htm, it is quite similar to my own rooftop clock which I've connected to a FreeBSD host in my attic.)
and you'll have a clock source which on average will be exact, with a jitter of a microsecond or two.
Terje
(who used to compile and host the windows ntp binaries for a number of years)
In my (drafted) military service here in Norway, I was told that the legal limit for weapons used for "directly aimed fire against personnel" was 12.7 mm, aka .50 cal.
Not by coincidence, .50 is of course the most popular cailber for long-range sniper rifles.
That meant that the 20 mm anti-aircraft gun I commanded could be used against helicopters, trucks and cars in addition to regular aircraft, but not against unmounted infantry.
Terje
It takes quite a lot of energy to completely dry/sterilize a diaper, I have a hard time believing you can get that back when burning the end product.
The article seems to imply that each diaper results in one fuel pellet, but this is obviously false: Each pellet is stated to contain 5000 kcal after processing, and since 1 kcal is what you need to heat one liter of water one degree (Celcius/Kelvin), this is sufficient energy to bring 50 liters from freezing to boil or enough to completely evaporate somewhat less.
Comparing with the numbers in the wikipedia article about energy density (http://en.wikipedia.org/wiki/Energy_density) this seems to be equivalent to about half a liter of diesel or gasoline (46 MJ/kg) and significantly more than a kg of wood (18 MJ) or completely dry cow or camel dung (15.5 MJ)
OTOH it is better than landfills, but probably worse than simply burning them as-is together with regular waste.
Terje
The authors of the RADclock article don't seem to realize that most of the issues they "solve" with their algorithm has been considered, and also more or less solved, by the NTP hackers severeal years ago.
I.e. when the article shows that in a variable-latency environment you need to filter the measurements by the minimum rtt: This is of course default behaviour for ntp as well, but only over a limited number of polling intervals (8). If this isn't sufficient then there are a number of configuration options available, like the huff-puff filter which can be configured to maintain rtt history long enough to "coast" past any expected periods of large and asymmetrical network delays.
They also give out some _really_ bad advice, like claiming that "One server is enough": This is only true if you know that this particular server can never be wrong!
If you want to survive the situation where a single servers starts to lie, you shold configure at least 4 independent sources.
Personally I have seen 3 different gps-based stratum-1 black box ntp servers go crazy, suddenly returning timestamps far into the future.
OTOH, my freebsd-based servers with Motorola Oncore UT+ timing optimized gps firmware has never returned bad time, but I still have 6 such servers spread around our corporate network.
Terje
The real code needed a tiny loop to load bytes and write words, something like this:
; DS:DI -> Message to write
; CX = length of the message
; ES:DI -> 0B800h:0 (or any other screen offset)
; AH = 8 (or some other reasonable attribute)
next:
lodsb
stosw
loop next
Terje
I have helped with similar tasks previously, where an Egyptologist had used a digital camera on a portable frame to take mosaic images of rock carvings.
http://tawbaware.com/forum2/viewtopic.php?t=1849&highlight=egypt+terje
Modern panorama software, both open source and very cheap commercial offerings, makes it possible to determine semi-automatically how multiple images are connected, while correcting for things like lens projection errors, camera location offsets and even some exposure correction.
In your case I would use a panorama head on a tripod, put the maps on top of a square grid, and then take sufficient number of images to get the final resolution you think you need.
The part of the grid that remains visible makes it easy to flatten the resulting mosaic.
I used PTAssembler on that Egyptian mosaic, highly recommended!
http://www.tawbaware.com/ptasmblr.htm
Terje
I'm perfectly happy, and assume, that any code snippets I post will be picked up and reused. If whoever does this includes a comment that I wrote it originally, that's all I expect.
Terje
Here's a snippet of code I wrote 3 years ago: /*
* The first part is semi-magic, it depends on doing a small amount
* of fast bit-twiddling operations directly on the fp bit pattern:
*
* Treat the fp value as an Int
* Take the top 16 bits of the mantissa and
* the last exp bit, adjust that bit:
* Square it for a second-order correction:
* The fp exponent is nearly a log:
* The 2nd order term must be scaled by 5/8196
*/
inline int rr_log2(float f) // The float->float code uses the function above, converting // back to float and scaling by 2^(-23):
{
int e = AS_INT32(f);
int m = ((e >> 7) & 0xffff) - 0x8000;
m *= m;
e += (5>= 13;
e -= m*5;
return e;
}
inline float RR_LOG2(float f)
{
int e = rr_log2(f);
float t = (float) e * (float) (1.0f/(65536.0f*128.0f));
return t;
}
Terje
Afair all modern graphics cards (DX10-11) must have the ability to handle gamma for all sampling operations, i.e. internally they must convert each contributing sample into a linear value before averaging them. BTW, the conversions are not quite log/antilog, a small part of the input range is linear!
DX10 requires these conversions to be very accurate, with at least 10-bit precision in both directions, so as long as you can live with any of the supported sampling algorithms you can just let the graphics driver do all the hard work.
If you cannot depend on the hardware, maybe because you'd like to use Sinc sampling, then it isn't too hard or expensive to do it in sw either:
I have written SSE-based sw to do these operations, which means that the conversions had to use polynomial approximations to make it possible to do multiple of them in parallel. (For a single sample at the time, a lookup table is the obvious choice: A 256-entry table of 16-bit values uses just 512 bytes, while a reverse table going from 11-bit averages to 8-bit gamma samples needs 1KB.)
Using a very simple polynomial makes it possible to convert 4 individual samples simultaneously.
Terje
When we bought a cabin in the mountains of Telemark (in Norway) 4 years ago, the local (very small: total population is the community is just 2500) power company by default gave us fiber along with the electric power cable:
http://telefiber.no/
3 years later I had two competitors both offering fiber to my home in Oslo, currently I'm paying about $80/month (strong NOK/weak dollar) for 30/30 Mbit at home:
http://www.vikenfiber.no/
Over those 4 years we've had one network outage at the cabin, lasting a day or two, and two outages at home.
The second crash (all fiber cables pulled down by an overheight lorry) lasted 8 days, so I'm getting the service free for a couple of months in compensation.
Terje
We get a pre-filled tax sheet, you confirm that it is correct by either sending in an SMS with a one-time code, logging into a secure web site or returning it in the included (postage pre-paid) envelope.
You can also make any needed changes either electronically or on the paper form.
The online form will also automatically calculate how much you owe or will get back.
Terje
Increase from 5 hours to 6 hours?
No way!
It _is_ possible to run electronics with over-the-air power, witness all the millions and millions of passive RFID tags out there.
However, the power density required to run/charge a cell phone or laptop is simply way out of range, unless you want to cook the user holding the phone at the same time.
Terje
101,112,412 is an interesting location.
Interesting...
Were you born on July 12th 1965 or is there something else I didn't notice?
Terje
Verification as actually quite easy, due to the (totally unexpected at the time!) discovery of the Borwein-Bailey-Plouffe algorithm which allows you to directly calculate the N'th hexadecimal digit of pi, without having to determine any other digits.
He used this on a bunch of the last digits and they all came out correct, which makes the probability of an error extremely small.
Last year I used his algorithm to calculate 1e9 (i.e. a US billion) digits of pi and made them searchable:
http://tmsw.no/pi-search/
Try to enter any string of digits, like a full 8-digit birth day: The odds are good that pi-search will locate it somewhere.
Terje
PS. Yes, I did use his table just now to verify that my own digits are correct. :-)
Here in Oslo (Norway) we've had these LED lights for several years, and the snow shields have never (afaik) had any problems keeping the lights visible, even during our regular snow storms.
Here's a detail from a photo of a local junction which I took for my wife. She is responsible for making public transport in the region as efficient as possible, which includes giving priority to buses and trams in all intersections:
http://tmsw.no/trafikklys.jpg
Terje
PS. Here's a link to the least useful program I have even written, pi-search, which can locate digit strings anywhere within the first 1e9 digits of pi:
http://tmsw.no/pi-search/
I used to think that "murder in the large", i.e. genocide as well as large amounts of drug smuggling/dealing was the worst possible crime, but last year I heard about something worse:
Manufacturing fake drugs with just enough of the real active ingredient that it will show up on a gas chromatograph or mass spectrometer, along with large doses of regular cold medications like pseudo-ephedrine which will provide short-term relief.
Google has lots of relevant links for "fake drugs multi-resistant bacteria", close to the top is this one:
Counterfeit drugs: A Growing Global Health Crisis
This is probably the single most effective method to generate more multi-resistent bacteria strains, which means that the people behind the scam will keep on killing more and more people as time goes by.
Terje
I know, and that's exactly what's makes it so interesting:
They have effectively defined a small subset of the entire instruction set while allowing all other instructions that doesn't produce a side effect which would crash their "real" code.
Terje
I for one is very impressed by what they've done, even if it is somewhat similar to what I did nearly 15 years ago:
At that time I wrote what's probably the "best" executable text encoder for MsDos, it uses the absolute minimum possible amount of self-modification (a single 2-byte Jcc opcode) while staying entirely within the MIME text character set, and survives all the most usual forms of reformatting/reflowing of the text. (Replacing CRLF with a single CR (Mac) or LF (unix) or turning each paragraph into a single line.)
The initial bootstrap looks like this:
ZRYPQIQDYLRQRQRRAQX,2,NPPa,R0Gc,.0Gd,PPu.F2,QX=0+r+E=0=tG0-Ju E=
EE(-(-GNEEEEEEEEEEEEEEEF 5BBEEYQEEEE=DU.COM=======(c)TMathisen95
(The uppercase 'E's are my NOP fillers, they execute as INC BP, a register I don't use.)
Terje
PS. Unlike the current guys, I wrote the code above by hand, on paper, during the evenings of a ski vacation. I had brought with me a listing of the ascii encoding of all instructions that would use MIME characters only. :-)
This sure didn't deserve 'funny':
"Subtract and Branch if Not Equal" (SBNE?) is indeed one of the simplest real single-instruction architectures that works.
The Single-instruction computer in the original article is no such thing, instead it is a Transport-Triggered Architecture (TTA), where the instruction set is encoded on the address bus.
This has even been used on x86 machines:
Many years ago (286/386 timeframe) the x87 coprocessors were still very slow (microcoded!), so Weitek manufactured a fp unit which was memory mapped. It grabbed a full 64kB of address space, which meant that the main cpu could use this space as a 16-bit opcode.
I.e. by moving data to/from various addresses in this 64K block, the Weitek unit would use the address data to determine the fp opcode to perform.
Terje
Back in the original Doom days, John Cash and his friends who worked for Novell used to play deathmatch games on the corporate network in the evenings. When they discovered that the Doom network code was horrible, Cash sent Carmack an email pointing this out.
Carmack responded by sending over the source code (which had been written for id by a contractor), asking Cash to fix it. Basically a 'put up or shut up' situation. :-)
The result, after a few mostly sleepless nights was a totally rewritten network layer which got used by the later Doom versions.
This experience made Cash figure out how a networked game should work, so over the next 2-3 years he did a presentation every year at Novell's Developer Conference (later called BrainShare), the title was something like "How to write networked games".
Another year later, after Carmack had hired Mike Abrash to help with the low-level optimization of the sw 3D engine for Quake, they hired Cash to write the nextwork and AI code.
After Quake 3 shipped, Cash left id for a more relaxed environment, moving to Blizzard who were working on this new massive multiplayer game at the time.
Afaik John Cash is now the chief programmer for WOW.
Terje
PS. I've known Mike since about 1985 and I worked with John Cash for a year in 1991-92.
Sweden did pass a monitoring law, the same thing is out of the question here, maybe because Norwegians are a lot more stubborn than Swedes. :-)
Re. "right to trespass": In all of Scandinavia except Denmark, we have laws guaranteeing the "right to trespass", i.e. anyone can walk anywhere they like, on public or private property, as long as they stay away from developed areas.
This means that all of the forests and mountains that cover 95%+ of Norway are available to all, you can even put up a tent and stay there for up to three days. (Notice I said walk, you cannot use any form of motorized vehicle outside the street system, even if it is your own property.)
You cannot damage anything of course, and you can't leave any trash or other traces indicating that you've been there.
Terje
Norway, Finland, Sweden & Denmark are all among the top nations in the world, for both cell phone & broadband coverage, and among the lowest prices in the world for cell phone use.
A key part of bringing this about here in Norway has been that the physical access layer ("last mile copper"/gsm cells) has to be available to competitors, with government-controlled rates.
I.e. when I got ADSL about 8 years ago, I got it from NextGenTel, a competitor to Telenor who owns my regular phone circuit.
On the GSM side we have two physical operators (Telenor and Netcom), both my kids get their cell phone service from one of many virtual operators (Tele2) which uses the Netcom infrastructure. Their monthly bills are usually so low that the operator will wait 3 months between each bill to reduce billing overhead. (I'm paying less than $10/month for each of them.)
Tele2 btw used to be based on the Telenor network, they got an even better deal (i.e. probably lower than government-mandated rates) from Netcom so overnight they simply moved everything across. My kids had to reset their phones to reconnect to the new set of towers, everything else just worked.
Terje
An unemployed lady here in Norway was in the news recently because she lost most of her benefits:
It turned out that she had been elected to a (non-paying of course!) position on the local town council, a task which she did to the best of her ability.
(Here's a link, in Norwegian:
Lost benefits)
The problem was that each (evening) meeting of the council generated a few NOKs in compensation, supposedly to handle stuff like transportation costs.
So what happened was that she still had to declare that as income, whereupon she passed a (low) limit which caused her to lose a major part of her benefits.
To avoid this particular problem she did try to say no to those meeting expense monies, but that was of course impossible:
"You have been elected to the council so you are legally obligated to turn up for every meeting, and when you do you _must_ receive compensation. When the sum passes the limit, we then have to take away your benefits."
Terje