Someday you might have to program in an actual resource-constrained environment, and you'd understand why sometimes you have to do stupid things to meet your constraints. Use half the memory -> buy a smaller memory chip per unit -> spend less per unit -> profit more per unit. But maybe you should stick with the Ruby. I hear there's money in that.
One of the trickiest 'resource constrained' code I ever did was an index across 100,000 hotels in 64K of RAM on a whole bunch of criteria, 100's of them. From swimming pool presence to dog walking service (and pets permitted or not) and so on. Obviously, you can't really do it so I first pre-sorted the hotels with some common criteria in large chunks, then sampled random bits from the rest of the criteria to fill the…
Things you shouldn't do: Two pointers in one field.
11–20 of 21 posts
Re: Things you shouldn't do: Two pointers in one field.
#12Someday you might have to program in an actual resource-constrained environment, and you'd understand why sometimes you have to do stupid things to meet your constraints. Use half the memory -> buy a smaller memory chip per unit -> spend less per unit -> profit more per unit. But maybe you should stick with the Ruby. I hear there's money in that.
Come on, Mike. That sort of snipe just isn't like you.
Re: Things you shouldn't do: Two pointers in one field.
#13Earlier quoted context omitted.
One of the trickiest 'resource constrained' code I ever did was an index across 100,000 hotels in 64K of RAM on a whole bunch of criteria, 100's of them. From swimming pool presence to dog walking service (and pets permitted or not) and so on. Obviously, you can't really do it so I first pre-sorted the hotels with some common criteria in large chunks, then sampled random bits from the rest of the criteria to fill the…
Sounds like you invented something like a Bloom filter, kudos! http://en.wikipedia.org/wiki/Bloom_filter
I can't tell you how many times I've had the feeling that finally I was doing anything at all that was original and then to find out (usually within five minutes, but this time at least a lot of years later) that it was already old hat when I was a toddler.
Oh well. Keep trying I guess.
One problem with stuff like this is simply to find what is out there given a problem description.
Re: Things you shouldn't do: Two pointers in one field.
#14Earlier quoted context omitted.
Sounds like you invented something like a Bloom filter, kudos! http://en.wikipedia.org/wiki/Bloom_filter
Hey cool, thanks for digging that up, it certainly looks similar at first glance. I can't tell you how many times I've had the feeling that finally I was doing anything at all that was original and then to find out (usually within five minutes, but this time at least a lot of years later) that it was already old hat when I was a toddler. Oh well. Keep trying I guess. One problem with stuff like this is simply to find…
Re: Things you shouldn't do: Two pointers in one field.
#15Earlier quoted context omitted.
Hey cool, thanks for digging that up, it certainly looks similar at first glance. I can't tell you how many times I've had the feeling that finally I was doing anything at all that was original and then to find out (usually within five minutes, but this time at least a lot of years later) that it was already old hat when I was a toddler. Oh well. Keep trying I guess. One problem with stuff like this is simply to find…
The name of it was on the tip of my tongue as I read your description, so I googled for "probabilistic constant-space test for membership", and voila, first result.
At least.
If I would have found it at all. This is one of those areas where I think I can really feel that having English as a first language - or at least a degree in computer science - would have helped tremendously, just knowing the right terminology can be such a huge advantage.
I can parse your description of it but I could never come up with it in those terms. I'd be looking for "compressed index" or "candidate records algorithm" or something like that.
Re: Things you shouldn't do: Two pointers in one field.
#16Someday you might have to program in an actual resource-constrained environment, and you'd understand why sometimes you have to do stupid things to meet your constraints. Use half the memory -> buy a smaller memory chip per unit -> spend less per unit -> profit more per unit. But maybe you should stick with the Ruby. I hear there's money in that.
Not really at the same level of bit-tweaking as the XOR lists, but a nice bit of counterintuitiveness still.
Re: Things you shouldn't do: Two pointers in one field.
#17Someday you might have to program in an actual resource-constrained environment, and you'd understand why sometimes you have to do stupid things to meet your constraints. Use half the memory -> buy a smaller memory chip per unit -> spend less per unit -> profit more per unit. But maybe you should stick with the Ruby. I hear there's money in that.
Use half the memory -> buy a smaller memory chip per unit -> spend less per unit -> profit more per unit. Or: use twice the memory -> buy a bigger memory chip per unit, adding one dollar to the cost -> charge $1 extra for your $300 unit -> spend less money defusing "your product sucks because it crashes all the time" support calls -> profit more per unit. But maybe you should stick to hand-rolled assembly. I hear the…
Devices containing little enough memory where techniques like this are useful rarely cost $300 per unit.
Re: Things you shouldn't do: Two pointers in one field.
#18Someday you might have to program in an actual resource-constrained environment, and you'd understand why sometimes you have to do stupid things to meet your constraints. Use half the memory -> buy a smaller memory chip per unit -> spend less per unit -> profit more per unit. But maybe you should stick with the Ruby. I hear there's money in that.
Use half the memory -> buy a smaller memory chip per unit -> spend less per unit -> profit more per unit. Or: use twice the memory -> buy a bigger memory chip per unit, adding one dollar to the cost -> charge $1 extra for your $300 unit -> spend less money defusing "your product sucks because it crashes all the time" support calls -> profit more per unit. But maybe you should stick to hand-rolled assembly. I hear the…
Re: Things you shouldn't do: Two pointers in one field.
#19Someday you might have to program in an actual resource-constrained environment, and you'd understand why sometimes you have to do stupid things to meet your constraints. Use half the memory -> buy a smaller memory chip per unit -> spend less per unit -> profit more per unit. But maybe you should stick with the Ruby. I hear there's money in that.
Use half the memory -> buy a smaller memory chip per unit -> spend less per unit -> profit more per unit. Or: use twice the memory -> buy a bigger memory chip per unit, adding one dollar to the cost -> charge $1 extra for your $300 unit -> spend less money defusing "your product sucks because it crashes all the time" support calls -> profit more per unit. But maybe you should stick to hand-rolled assembly. I hear the…
This is not the case. Most computers are tiny; the kind of "you've only got 1kB built-in and non-expandable memory" tiny (yet only if you're lucky). And most of those computers are indeed programmed correctly, despite using a number of classical trick like xor linked-lists (the program is small, so really checking it, even if it contains tricks, is doable).
Re: Things you shouldn't do: Two pointers in one field.
#20Earlier quoted context omitted.
One of the trickiest 'resource constrained' code I ever did was an index across 100,000 hotels in 64K of RAM on a whole bunch of criteria, 100's of them. From swimming pool presence to dog walking service (and pets permitted or not) and so on. Obviously, you can't really do it so I first pre-sorted the hotels with some common criteria in large chunks, then sampled random bits from the rest of the criteria to fill the…
Sounds like you invented something like a Bloom filter, kudos! http://en.wikipedia.org/wiki/Bloom_filter