Yep, this is what I plan to do. With a rotating two-week log file. If they do something and I haven't caught on to it within two weeks, I doubt it's that bad. Of course, I'll run a log sniffer looking for certain words every night and have it e-mail me any hits, but like the PP said, don't sweat the small stuff. If I find out my kids have been cheating in class, I'm not gonna hit the roof. But if they're planning to run away, or shoot someone, then I'd rather know before it's too late.
As others have said, I plan to stay involved in my kids lives, so I figure I'll probably find out all I need to know while we're driving to and fro. I have the advantage of being a former devious teen, so I know plenty about that, while they know nothing about being a parent. Let 'em think I'm just goofy, simple Dad, who can't seem to keep the satellite dish aimed, so they miss their favorite shows...the night before a big test....;)
Re:Is LISP really the most productive programming
on
Ten Geek Business Myths
·
· Score: 0, Offtopic
I don't have a lot of LISP experience, but it looks like once you grok the LISP nature, it's an incredible environment. You can write new language primitives (no more complaining "Well, when I used to program in $LANG, we had the $FOO feature" -- you write an implementation of $FOO and use it just like it was part of the language). It's also easy to write complete mini-languages (or maybe I should say "extension languages"), so you can create a domain-specific language, then write all your code in that language. Kind of like writing numerical analysis programs using Mathematica instead of FORTRAN. It also seems to lend itself to "bottom up" development, making it easy to write (and test) small routines, then use those routines to build more powerful ones.
I've been meaning to get a handle on LISP for a long time now, just wish I had the free time to do so (I've got Paul Graham's book, as well as SICP).
He said that Bill G. was a pretty smart guy, but he really had nothing nice to say about MS, aside from the fact that they're a terrifically successful company. Unless you're an evil genius, and you take the phrase "achieved success largely by seeking out and destroying other people's brilliant ideas" as a compliment.
I raised that issue in this discussion recently, and someone replied that the keyboard is projected from a kind of transparency, it's not dynamically generated. So I guess they could, but I imagine you'd have to either pre-order a bunch (say at least half of a production run) or otherwise be able to assure them that they'd be able to recoup the investment. I imagine that Dvorak wouldn't be too hard, you should be able to use an existing driver and just change the keyboard picture you project. Split might be harder, since you'd have to rewrite the firmware to recognize "presses" in different places.
I think with billions, you get multiple girlfriends. Kind of like a side order. At least, a lot of the rich guys I know have girlfriends on the side...
Any idea what I'm supposed to do if I want to lay it on an airline tray table and watch something? It would suxx0r if it changed orientation every time the plane banked...
The argument is that Microsoft will leverage any installed base they have (Windows, Xbox, Soapbox) and due to a similarity with the Windows Media Center user interface and Vista will have a strategic advantage. Also their 90% share in operating systems vs 5% for Apple
Yeah, this was definitely a "WTF?" moment for me. "Microsoft will take over a new market because they already dominate an old market." In that case, shouldn't Apple have been relegated to boutique status, since they only have a tiny share of another market? I think the author of the article is also showing his age; old people will feel comfortable with the Zune because the interface looks like Windows Media Center, kids will want something new and exciting to explore. I doubt that showing them something that looks like their TV will entice them too much.
Oblivion will grab whatever it can, so 1gb for that cpu isn't unfeasible
Do you know that your Oblivion process will stay on whatever core it starts on? If it's any kind of a useful application, it's going to have to do I/O sometime, and at that point will give up the CPU. Once the I/O completes, it'll be placed on the run queue and should be picked up by the next available processor. It shouldn't matter how many processors you have, any program that takes a given amount of memory to do a given amount of work will take up that much memory. If you're planning on running more programs to take advantage of your additional CPU power then yes, you'll want more memory. But if all you want to do is execute your current software and workloads faster (assuming they run faster on a multicore system), then you won't need any more memory.
I can imagine other, more memory intensive apps trying to run in tandem
You've got a better imagination than I do, then. I can't see applications forking off copies of themselves and jockeying for position! If you meant "I can see running other, more memory-intensive apps in tandem" then duh, you'll use more memory. Exactly the same as you would on a single-core system. If you've got an app that scales well, it'll still take the same amount of memory no matter how hard it's exercising however many CPUs. Input set sizes are pretty much fixed, whether they're hard-coded or dynamically configured based on system size: your app will allocate the same amount of memory either because it always grabs 32M or because it always grabs 1/16th of total system memory. Number of CPUs has nothing to do with it. Unless there's some software that allocates one thread per CPU, and allocates some fixed buffer size per thread, which now that I mention it actually sounds reasonable for some classes of software, but I've never heard of it actually being done.
[Checks watch] Yep, it's been twenty years, time to trot that tech out again. Maybe they've figured out how to double-clock it now, so we can get access times down to single-digit milliseconds!
Actually, it's worth noting that NEC got access time for bubble memories down to 16.5ms, roughly a third the speed of disk drives at the time. The only machine I ever used that had bubble memory was a TI 765 portable data terminal. It had 20K, which allowed the user to enter text (or in our case, enter data in response to a canned program) off-line, then upload it the next time they could get to a phone. Bubble memory was far preferable to the cassette tapes used in the earlier models of the "Silent 700" series, as our users were dragging these terminals from cornfield to cornfield, entering insect infestation data. More dust, dirt and industrial chemicals than most systems get, that's for sure.
It would be nice to know whether the levels were A-weighted or linear
I would guess linear. Storage Review had a review of the drive I bought (guess I shouldn't have jumped at the first sub-$100 250G drive I saw), and they measured it at 40.7 dB/A at idle, as compared to Tech Report's 51.7. (My drive is a WD2500KS, a.k.a the Caviar SE16 (250G).)
Uh, the post I was replying to was chastising the GP for relying on beta software for his primary OS, implying that it was unreliable and implying that his data was in imminent danger. I never said people shouldn't have backups, in fact I implied as much by saying that if his box suffered some kind of catastrophic event, the most he'd lose was whatever show or shows he'd recently recorded.
Chill, dude, he's running it on a media server. If it freaks out and melts down, what's the worst? He'll miss an expisode of Lost or something. It's not like he's hosting client apps or anything.
Presently, I am consulting at a place that doesn't really HAVE a process
Is this a "Web 2.0" shop? Because it sounds a lot like the places I heard about trying to crank out web apps back in the late 90s.
I've worked with processes and without, and the best is...just having good competent developers and a manager who can both crack the whip to get things done and shield his team from the political BS. It's only happened a couple of times, but it was nice while it lasted.
Interestingly, my last gig was with a "CMM level 5" organization, who turned out some of the worst code I've ever seen. They gathered requirements (which the client couldn't completely verify, due to language issues), then created their use cases, then their sequence diagrams, and then they proceeded to cut and paste existing code into EJBs. The result is totally unmaintainable (as they found out when they had to add a new requirement to an existing module), and largely non-performant. They were able to address the performance by splitting the app between two machines (one of the few nice things about EJBs), and since they're contractors, they won't have to address maintainability. So much for CMM level 5.
The place where I work now is a total cowboy shop. No source code management, no process, no procedures, total anarchy. And it works pretty well. Pretty soon we'll have a source code management system in place, because *I* don't feel comfortable without one, and because when I told that to my boss he said "Go ahead and set one up". He also told me I could write a task-tracking database system in Ruby, which I'm looking forward to as I've never used Ruby before. But this all works because we all have pretty basic tasks (data comm and data conversion) with pretty well-defined deadlines and everybody's pretty competent. We don't miss deadlines and we don't screw around with new technology on customer-related tasks (unless it's unavoidable, like when we all sat down and learned SOA because we had to interface with a new system and that's the interface the vendor supported). I think it helps that the tasks are pretty discrete and tend to have short deadlines (two weeks to a month is typical).
As always, having a good team is all the really matters. And that tends to be tough enough to assemble even over here, forget about it if half your developers are in another country and don't speak your language very well. I think it works with open source because OSS tends to attract people who are good at what they do and can deal with language and time zone issues, but I doubt you'll ever be able to assemble a decent team from a couple of senior developers and a lowest-bidder team from the outsourcer of the month.
"We need an inventory module for this project. Use the one from the MegaMess project." "Yeah, sure, that should work. A little overkill, but it'll do what we need." "Oh and it has to track the inventory by supplier's parent company and supplier's parent company's SKU." "Uh....what?" "Yeah, we get most of our inventory from local suppliers, but they all get it from the OEM. We need to use the OEM part numbers, with an indication of which OEM it is." "Uh, but the MegaMess project tracked inventory by product group. It doesn't even use SKUs. And we don't need to report on SKUs for what we're doing, why do we need them?" "Director of marketing wants to see a report broken down by SKU, and rolled up by parent supplier." "I don't think we're going to be able to use the MegaMess inventory." "DAMMIT! Just use the components we've already got! We aren't going to write any new code for this!"
Much more time needs to be devoted in school to the fundamentals of data modeling and the why behind data modeling best practices.
You can say that again. People wonder why I get all twitchy when I have to review code that makes the data model an echo of the object model (because it's trivial to annotate your base class so the tables get created automatically at deployment time). And why I won't help them when they have performance issues ("But I thought you knew about database performance!" "I do, and this isn't it."). Back when I was in college RDBMSes were still pretty new, so we didn't have any data modeling classes (we still thought ISAM was pretty cool), hopefully they do now. A little discrete math and relational algebra wouldn't be out of place either. I don't see XML-based object databases taking over the world any time soon, better learn to use the tools you have.
Right now, everyone is thinking of hey you can't break every problem into parallel tasks. Well, what if we make an algorithm breakthrough that says we can?
Good luck, I believe that particular problem (generalization, when some parallelism can be extracted within tasks) has been shown to be NP-hard. Even if you come up with a golly-gosh-whizzbang algorithm or pattern that takes maximum advantage of a multi-cpu system, you're still going to have a hard time forcing problems to fit it. My guess is that even when we've got 4-core processors on almost every desk, 80% of the software people use day-to-day will still block on a single CPU, just because the problem either isn't easily broken down, or not enough of it is (what good is it to have the initialization routine run in O(1/n), if the main body of the program doesn't?).
I think our best bet is to hope (or help) the major OS suppliers come up with some good general-purpose multi-tasking libraries, so at least some common operations will be able to take advantage of multiple CPUs.
The 80 cores are all simple floating point cores. A lot like the IBM/Sony Cell.
Nope. That's what they made for the proof-of-concept demo, but ultimately they'll use something else. From TFA:
These cores will be low power and probably based on a past-generation Intel architecture that has been refined and perfected.
I'm betting Pentium Pro. Good, solid architecture, decent performance, still runs a lot of software. Wasn't the P-II basically just the PPro with MMX (and a half-speed cache...)? Hmmm, now that I think of it, parent could be right, they might go with the i860 or something like that.
Then again, since performance per watt is an issue, maybe they'll be able to go with a Pentium-M design. Not sure how power consumption differs from the PPro, and it's probably not comparable since I doubt they were ever both manufactured on the same process. Be interesting to see, from a technology standpoint. Anybody know how well Sun's high-end UltraSPARC systems are selling? Might help to indicate how much desire there is for big multi-core CPUs...
I see one process running ("top[1]"), and two or three others (X, postgres) that occasionally pick up a quanta or two, and a couple dozen sitting around in "sleep" state. Load average 0.0 / 0.1 / 0.1.
Oddly enough, if I telnet into a development DB server (a dual-processor P-IV box), I see basically the same thing (it's another group's server, and they're in a staff meeting). Couple of Oracle processes in "cpu0" and "cpu1" states, couple of dozen more in "sleep" state. Load average 0.2 / 0.2 / 0.2.
Enormous memory bandwidth doesn't require enormous amounts of RAM, the two are completely independent.
Well, not completely. If you're going to increase your bandwidth by increasing the number of data and address lines, then you're going to have to connect those lines to some RAM. To decrease the contention, you'll want to connect each line to as few slots as possible, so you wind up spreading those lines across more slots. If you don't fill those slots, then you're wasting your bandwidth.
Yes, you probably won't fill those slots with a biggest DIMMs you can get, but if you want 40x the bandwidth, you may wind up with 40x the number of slots, so even if you just stick a 256M stick in each one, you're looking at 10G...
Hmmm, I know I saw an ad in a flying magazine once for pushbuttons that had something like a 32x32 fiber-optic matrix, which allowed them to have their labels changed. I can't seem to find a reference to them now, though, so maybe they weren't reliable (those pilots are kind of finicky about dependable avionics). They might have been good for a kiosk.
Yep, this is what I plan to do. With a rotating two-week log file. If they do something and I haven't caught on to it within two weeks, I doubt it's that bad. Of course, I'll run a log sniffer looking for certain words every night and have it e-mail me any hits, but like the PP said, don't sweat the small stuff. If I find out my kids have been cheating in class, I'm not gonna hit the roof. But if they're planning to run away, or shoot someone, then I'd rather know before it's too late.
;)
As others have said, I plan to stay involved in my kids lives, so I figure I'll probably find out all I need to know while we're driving to and fro. I have the advantage of being a former devious teen, so I know plenty about that, while they know nothing about being a parent. Let 'em think I'm just goofy, simple Dad, who can't seem to keep the satellite dish aimed, so they miss their favorite shows...the night before a big test....
I don't have a lot of LISP experience, but it looks like once you grok the LISP nature, it's an incredible environment. You can write new language primitives (no more complaining "Well, when I used to program in $LANG, we had the $FOO feature" -- you write an implementation of $FOO and use it just like it was part of the language). It's also easy to write complete mini-languages (or maybe I should say "extension languages"), so you can create a domain-specific language, then write all your code in that language. Kind of like writing numerical analysis programs using Mathematica instead of FORTRAN. It also seems to lend itself to "bottom up" development, making it easy to write (and test) small routines, then use those routines to build more powerful ones.
I've been meaning to get a handle on LISP for a long time now, just wish I had the free time to do so (I've got Paul Graham's book, as well as SICP).
He said that Bill G. was a pretty smart guy, but he really had nothing nice to say about MS, aside from the fact that they're a terrifically successful company. Unless you're an evil genius, and you take the phrase "achieved success largely by seeking out and destroying other people's brilliant ideas" as a compliment.
I raised that issue in this discussion recently, and someone replied that the keyboard is projected from a kind of transparency, it's not dynamically generated. So I guess they could, but I imagine you'd have to either pre-order a bunch (say at least half of a production run) or otherwise be able to assure them that they'd be able to recoup the investment. I imagine that Dvorak wouldn't be too hard, you should be able to use an existing driver and just change the keyboard picture you project. Split might be harder, since you'd have to rewrite the firmware to recognize "presses" in different places.
Yeah, people used to say the same thing about Alta Vista, and look how wrong they were!
I think with billions, you get multiple girlfriends. Kind of like a side order. At least, a lot of the rich guys I know have girlfriends on the side...
Nah, then they'd just go farther back...
Any idea what I'm supposed to do if I want to lay it on an airline tray table and watch something? It would suxx0r if it changed orientation every time the plane banked...
You've got a better imagination than I do, then. I can't see applications forking off copies of themselves and jockeying for position! If you meant "I can see running other, more memory-intensive apps in tandem" then duh, you'll use more memory. Exactly the same as you would on a single-core system. If you've got an app that scales well, it'll still take the same amount of memory no matter how hard it's exercising however many CPUs. Input set sizes are pretty much fixed, whether they're hard-coded or dynamically configured based on system size: your app will allocate the same amount of memory either because it always grabs 32M or because it always grabs 1/16th of total system memory. Number of CPUs has nothing to do with it. Unless there's some software that allocates one thread per CPU, and allocates some fixed buffer size per thread, which now that I mention it actually sounds reasonable for some classes of software, but I've never heard of it actually being done.
Actually, it's worth noting that NEC got access time for bubble memories down to 16.5ms, roughly a third the speed of disk drives at the time. The only machine I ever used that had bubble memory was a TI 765 portable data terminal. It had 20K, which allowed the user to enter text (or in our case, enter data in response to a canned program) off-line, then upload it the next time they could get to a phone. Bubble memory was far preferable to the cassette tapes used in the earlier models of the "Silent 700" series, as our users were dragging these terminals from cornfield to cornfield, entering insect infestation data. More dust, dirt and industrial chemicals than most systems get, that's for sure.
So every movie will look like it was shot during a rave. Cool!
Uh, the post I was replying to was chastising the GP for relying on beta software for his primary OS, implying that it was unreliable and implying that his data was in imminent danger. I never said people shouldn't have backups, in fact I implied as much by saying that if his box suffered some kind of catastrophic event, the most he'd lose was whatever show or shows he'd recently recorded.
Whew! Glad I switched to Solaris, where I have a nice non-infringing home directory path:
I've worked with processes and without, and the best is...just having good competent developers and a manager who can both crack the whip to get things done and shield his team from the political BS. It's only happened a couple of times, but it was nice while it lasted.
Interestingly, my last gig was with a "CMM level 5" organization, who turned out some of the worst code I've ever seen. They gathered requirements (which the client couldn't completely verify, due to language issues), then created their use cases, then their sequence diagrams, and then they proceeded to cut and paste existing code into EJBs. The result is totally unmaintainable (as they found out when they had to add a new requirement to an existing module), and largely non-performant. They were able to address the performance by splitting the app between two machines (one of the few nice things about EJBs), and since they're contractors, they won't have to address maintainability. So much for CMM level 5.
The place where I work now is a total cowboy shop. No source code management, no process, no procedures, total anarchy. And it works pretty well. Pretty soon we'll have a source code management system in place, because *I* don't feel comfortable without one, and because when I told that to my boss he said "Go ahead and set one up". He also told me I could write a task-tracking database system in Ruby, which I'm looking forward to as I've never used Ruby before. But this all works because we all have pretty basic tasks (data comm and data conversion) with pretty well-defined deadlines and everybody's pretty competent. We don't miss deadlines and we don't screw around with new technology on customer-related tasks (unless it's unavoidable, like when we all sat down and learned SOA because we had to interface with a new system and that's the interface the vendor supported). I think it helps that the tasks are pretty discrete and tend to have short deadlines (two weeks to a month is typical).
As always, having a good team is all the really matters. And that tends to be tough enough to assemble even over here, forget about it if half your developers are in another country and don't speak your language very well. I think it works with open source because OSS tends to attract people who are good at what they do and can deal with language and time zone issues, but I doubt you'll ever be able to assemble a decent team from a couple of senior developers and a lowest-bidder team from the outsourcer of the month.
"We need an inventory module for this project. Use the one from the MegaMess project."
"Yeah, sure, that should work. A little overkill, but it'll do what we need."
"Oh and it has to track the inventory by supplier's parent company and supplier's parent company's SKU."
"Uh....what?"
"Yeah, we get most of our inventory from local suppliers, but they all get it from the OEM. We need to use the OEM part numbers, with an indication of which OEM it is."
"Uh, but the MegaMess project tracked inventory by product group. It doesn't even use SKUs. And we don't need to report on SKUs for what we're doing, why do we need them?"
"Director of marketing wants to see a report broken down by SKU, and rolled up by parent supplier."
"I don't think we're going to be able to use the MegaMess inventory."
"DAMMIT! Just use the components we've already got! We aren't going to write any new code for this!"
I think our best bet is to hope (or help) the major OS suppliers come up with some good general-purpose multi-tasking libraries, so at least some common operations will be able to take advantage of multiple CPUs.
Then again, since performance per watt is an issue, maybe they'll be able to go with a Pentium-M design. Not sure how power consumption differs from the PPro, and it's probably not comparable since I doubt they were ever both manufactured on the same process. Be interesting to see, from a technology standpoint. Anybody know how well Sun's high-end UltraSPARC systems are selling? Might help to indicate how much desire there is for big multi-core CPUs...
I see one process running ("top[1]"), and two or three others (X, postgres) that occasionally pick up a quanta or two, and a couple dozen sitting around in "sleep" state. Load average 0.0 / 0.1 / 0.1.
Oddly enough, if I telnet into a development DB server (a dual-processor P-IV box), I see basically the same thing (it's another group's server, and they're in a staff meeting). Couple of Oracle processes in "cpu0" and "cpu1" states, couple of dozen more in "sleep" state. Load average 0.2 / 0.2 / 0.2.
Your point?
[1] "prstat", actually
Yes, you probably won't fill those slots with a biggest DIMMs you can get, but if you want 40x the bandwidth, you may wind up with 40x the number of slots, so even if you just stick a 256M stick in each one, you're looking at 10G...
Hmmm, I know I saw an ad in a flying magazine once for pushbuttons that had something like a 32x32 fiber-optic matrix, which allowed them to have their labels changed. I can't seem to find a reference to them now, though, so maybe they weren't reliable (those pilots are kind of finicky about dependable avionics). They might have been good for a kiosk.