some of my undergrad profs had been long-time lisp hackers, and i got to see some really crazy code in AI classes. not that it was syntacticaly obfuscated, the way perl often ends up being, but they were able to cram an incredible amount of semantics into tiny, clean procedures. really cool stuff.
but then they started introducing macros, and we were back to syntactic obfuscation.:)
i'd actually be careful with such sweeping judgements. some schools (for example NWU) make their CS and CIS the same, so you end up taking the same classes and getting the same education, and the difference is whether you register through school of engineering or college of arts and sciences - which means you'll get different school requirements and major name on the diploma.
the stigma of CIS is actually a pretty big issue because while on the positive side there are places that give you a full CS education, there's also a surprising number of institutions with badly hacked up degrees in ms office...
some of the entries are really cool - such as the program whose output really depends on the phase of the moon, or the program that is its own build script and makefile.
i only wish these contests went more into the extremes: use languages that really lend themselves to obfuscation - such as perl, the king of polymorphic semantics - or abuse the hell out of languages that were designed to be pristine clean - such as scheme or smalltalk (to a degree).
i mean, come on, obfuscating c just ain't that hard.;)
Re:more games, different games
on
Gifts For Geeks
·
· Score: 1
yes, the expansion options are cool. the two-board expansion is probably my favorite - although it makes game length increase superlinearly with number of players.:)
i'm also really looking forward to their translation of 'the starfarers of catan' - the german version looks very promising, and it seems the game itself is 'settlers' on steroids... alas, it won't be available till next year.
electronics make fine gifts, but the above reads more like a list of cool concepts than a list of things people would actually want to get. i mean, i love the empeg and drool over the idea of a personal beowulf, but for a christmas gift i would much rather get some cool games, no matter whether or not they're computer-based.
speaking of games, i can't believe nobody mentioned companies like cheapass games, who make really cool and relatively inexpensive card, board, and dice games. make sure to check out 'brawl' and 'button men' - i'd take those over a thinkgeek gift in an eyeblink.:)
another good place for gifts is mayfair games, publishers of such fine products as settlers of catan or the original edition of cosmic encounter. and if you're into small/indie game makers, there's also the wizard's attic, who sell such twisted little games as black death, in which you play the plague trying to wipe out europe, or the non-verbal role-playing game the land of og.
is anybody else on slashdot a fan of non-computer games? if so, post your favorites! the more gift ideas, the better...:)
*Sigh*... I hate to wax nostalgic, but I wish I had been born 15 years early. Due to my youth (born in 1977), I really missed so many great things -- or caught them only at the end of their lifespan.
i know what you mean.:) but think of it this way - we caught the BBSs in their glory days.:)
alas, many of those great things weren't really widely accessible until very recently. take the internet, for example - until about '94, getting hobbyist access was really tough and quite expensive, unless your school or employer provided you with one.
plus, it was a lot of fun to be on the forefront of the developing internet just as it was gaining popular acceptance. like learning html 1.0 by fiddling with then-brand-new mozilla^H^H^H^H^H^H^HNCSA mosaic 0.9beta:) not to mention events like the black thursday...
fidonet! now there's a network i haven't heard mentioned in a while. my first net access was through fidonet (bbss with internet connections were really expensive!), and i got screamed at a lot by the sysop for chaining together bbs message board -> bbs/fidonet email gateway -> fidonet/internet email gateway -> email/ftp gateway -> ftp to download files from the net by email.:)
and now i have dsl and haven't logged on to a bbs for ages, even though a friend of mine is still sysoping one.:(
not that i miss slow connections and inane boards, but the bbss were amazing in that they supported actual communitites. i mean, people on bbss lived in the same geographical area, bumped into each other on the boards a lot, and many reallife friendships started on the boards. there's nothing quite like that anymore on the geographically-blind internet.
i can't resist comparing this to the extinction of eccentric private bookstores due to chains like borders or barnes and noble. sure, now the selection is vast and information is cheap - but the interaction with interesting people is lost.
but now i'm sounding like a nostalgic 1995-era wired journalist pining after a vague dream of 'virtual communities'. i better stop.:)
ok, s/verdana/times new roman/g (or courier new or any of the truetype serif fonts coming with windows). the point still stands - at low resolution, it's hinting that matters, not anti-aliasing.
In windows, all of the true type fonts I use look great without anti-aliasing. If you want beautiful fonts in X windows use an X server that supports true type fonts.
it's not a matter of them being truetype or not - it's because fonts shipped with windows are hinted properly for low resolutions.
there are many things that go wrong when you try to render a font in extremely low res - stem widths and line thickness become unequal between letters, features become slightly dislocated, and so on. anti-aliasing doesn't solve the problem - it only makes it appear slightly less problematic.
the right solution really is using properly hinted fonts. hinting is a process in font design where you specify additional information in the font description for low-resolution rendering.
for an example, fire up a windows wordprocessor, and try typing some text in the verdana font (it's beautifully hinted!) at different sizes ranging from 6 to 24. now lean closer to the monitor, and take a look at pixel-level differences between the same letter in different sizes. notice, for example, that the loops (such as in d or p or o) will become sometimes rectangular, sometimes square, but consistenly so for every letter of that size, line thickness (say, vertical lines in d, p, t, etc.) will change consistenly for all letters as you go up in size, etc.
now go back to your linux partition, and run netscape with the default serifed font (times, if i'm not mistaken). at low resolution it just looks sad in comparison - t is differrent thickness than d, different loops have different shapes, and so on.
the matter is not aliasing. it's using fonts that are designed for low-resolution display. unfortunately, hinting is a delicate and thankless aspect of font design (well-hinted font doesn't get your work into the emigre catalog, you know!), and while there are a few, it's not clear how many more free well-hinted fonts we'll see in the future...
However, this guy is actually claiming that the computer will have some of the attributes of HAL: Artificial intelligence, the ability to repair itself, etc. Now he just sounds wacko.
especially laughable are their claims of AI. 'opening the door to speech recognition and lip reading' - basic dictation maybe, but lip reading? not in your wildest dreams, folks. anything vision-based is computational death. we have hard enough time getting computers to recognize something as simple as a face in camera image, and that already requires fast hardware. getting it to recognize facial features is simply too computationally expensive, regardless of their allusions that their 1GHz desktop box could do that.
although at least he's careful enough to say 'speech recognition' not 'language recognition'. if NLP research proves anything, it's that natural language processing isn't going to happen in the foreseeable future, not in the strong case of understanding arbitrary sentences. specialized contexts and specialized vocabularies - yes, that's likely - but nothing like HAL.
not to mention nuggets like 'it will start addressing the issues of consciousness'. yes, and a turing machine addresses the issues of free will. ugh. to abuse mcdermott's quote, artificial intelligence just met natural stupidity.
Cool, a multiprocessor on wheels. Now all it needs is a few servo motors, a grasping arm, and a video camera.
oh no. i can already imagine. robots routinely crash into all sorts of things when debugging vision code or action control loops, but i wouldn't want to be responsible for debugging this one. it's painful to even think of such cool equipment colliding with an obstacle crash-dummy style at 2m/s.:)
especially since that obstacle often happens to be person debugging it... (no, i'm not bitter!:)
here are some suggestions coming from someone in academia, who deals with advising, ta hours, and a lot of asynchronous collaboration:
multiple front-ends to the pim: web-based, emacs plugin (please?:), maybe gui app, and so on.
give access levels for remote users (so that people can sign up for meetings in open calendar slots, but can't change my existing ones, etc.)
project management, timelines, goal hierarchies, etc. with file sharing (so people can view my todo list, etc.)
integration with existing mail/news readers (mhmm... vm and gnus:)
pda sync, including wince! synching with my wince box is the only reason why i still use outlook.:( (and yes, i tried vmware, but had a *horrifying* experience with the combination of it and redhat 6... never again...)
simple integration to apache and other popular servers, as necessary, rather than custom rdbms's or web servers...
I'm continually surprised at how slowly things move in the computer world. There are performance improvements on the hardware side, yes.... Overall, though, programming and computer use are the same as they were ten years ago.
on one hand, artificial intelligence, the area i work in, is entering a new renaissance exactly because of moore's law. the fundamental algorithms of ai haven't changed too much over the last few decades. but it's only now that we have fast enough processors to actually try and do things like formal inference in a computer game, where you have only 10% of a consumer-grade CPU available for controlling your characters.
on the other hand, i agree that the fundamentals don't change very fast. imperative programming and functional programming remain the same, consumer operating systems are largely monolithic, even languages tend to stick around.
case in point, even python is really lisp, only dressed in algol syntax...;) *putting flame suit on*
i'm pretty sure the grandparent of this posting was an amusing if trollish rant, but since we're on the topic of usefulness of a college degree, i though i'd throw in this fascinating story.
a senior researcher from electronic arts (yes, they have a research division!) was invited to our department for a presentation about their labs and life in the gaming industry. and since the room was full of starry-eyed students (yours truly included), the topic of employment and requirements for getting into the game industry naturally came up.
it was very interesting to hear that, when evaluating candidates, they pay attention not to the applicant's familiarity with hot technologies, but to the applicant's general education! yup, the standard "did they get a bachelor's? a master's? what do they know?"
the reason is that, not surprisingly, good education gives people the foundation on which they can learn and use any particular system (and dev tools in games change very rapidly), while people familiar with tools but shaky on fundamental concepts will be likely unable to switch when a better tool comes around.
a good comparison is with that of a 3dmax guru without art skills, and an artist without 3dmax skills. the point is that the latter can learn the tool relatively quickly, while the former will fail miserably knowing only the particulars of the tool, but not about composition, color theory, and so on.
2) Academic CS curriculums are typically behind the curve - after all, the professors are teaching what they learned 5-10 years ago, and most of them don't keep up with new technology (with some few exceptions, where they're involved). If you're not at the top half-dozen schools, then it's likely you're not cutting-edge in computing.
but good cs curricula are not supposed to teach flavor-of-the-month languages and dev environments!
computer science (as opposed to computer job prep) is in the business of teaching the fundamentals of the science, not the hot new techniques. a bachelor's in cs should signify not knowledge of the windows api, but knowledge of how to learn windows or any other api; not skills in admining win2k networks, but in networks structures and implementations which can be easily reapplied to win2k; not familiarity with linux kernel, but understanding operating systems in enough detail so that the details could be acquired reasonably quickly should need be. students shouldn't be taught mfc or linux kernel hooks - rather, they should be taught how to learn them efficiently.
of course, it's very good if the department pays attention to what's marketable, but teaching kids skills that are likely to be obsolete by the time they graduate is only a disservice. the benefit of learning computer science is acquiring the skills to rapidly learn new languages and systems, and be able to fit them into the larger framework of existing knowledge.
but that's just my opinion, i could be wrong (although i wonder, considering the number of those who reinvent higher-order procedures and other intro-to-programming concepts under the label of 'cutting-edge programming patterns')
my oh my, sun is really getting pissed that msft dared to one-up them in the virtual machine game.:)
the question of course is, which one is better? they're both pretty reasonable, so far as vms are concerned, and java does have the cross-platform appeal going for it (although anyone who tried to actually develop cross-platform software becomes very disillusioned very fast.:)
but there's one truly beautiful aspect of.net - using com as a wrapper, it lets completely unrelated languages operate with the operating system and with each other [link]. can you imagine, writing your application in some nice OO language, say, Python or C# (not C++ - garbage collection is your friend!), with a text processing front-end written in perl, user interface in something pretty like VB, and maybe a lisp/scheme scheduling or AI engine in the background, all working seamlessly?
using each language in what it's best at, and all of them together to accomplish the task. that's the ultimate programmer's dream. screw cross-platform compatibility.
here's a bit on the sims' ai, from what i can remember from will wright's talk at the ai and computer games symposium this spring...
basically, when it comes to everyday actions (taking out trash, eating, etc), the sims are pretty much slaves to their drives - for instance, they eat when hungry, but won't eat in anticipation that they'll be going to work soon and will be hungry afterwards. i don't think the timing of their behaviors ever actually changes from that model.
the targets of their behaviors, on the other hand, definitely get learned. sims form object associations easily - get used to the beds they sleep in, appliances that supply them with food, and so on. it's actually a very cool simulation of getting into a habit of doing things - after sleeping every day in the master bedroom, a sim will only reluctantly sleep on the couch.:)
the implementation is also pretty interesting. the way the sims know where to go for things (how to make food, etc.) is because all active objects in the world 'advertise' what they can do - fridge sends out messages saying "hi, i offer +8 in energy!", easel announces "i offer +2 in fun and art skill!", and so on.
the strength of the message also decays with distance, so a hungry sim will feel the fridge's message very strongly when he's nearby, and weakly if he's far away. this in effect looks like a hill-climbing algorithm - a fridge may put up a 'food' hill of height 8, a grill will produce a hill of height 6, and so on, and the hunger variable in the sim controls how much he's inclined to climb to the 'top' of the food hill, as opposed to doing other things...
well, then check out their next product, simsville. it looks like they're trying to go one level up from the sims, and have a simulation of whole town starting from a simcity-like level down to micromanagement of individual households. if the web page is to be believed, it'll be released sometime within the next 5 years...:)
Why do you think role-playing games are so vehemently denounced by certain segments of our society, and almost always recieve shoddy treatment at the hands of Hollywood. It certainly isn't because they're tales told by an idiot, full of sound and fury, signifying nothing. If you want that, watch your average Hollywood action movie.
conspiracy theories aside, i think the problem lies exactly in the fact that they're not tales full of sound and fury - or rather, in that they're not tales at all.
rpg games as such are a medium for participatory storytelling. they're not any form of a "folktale of this culture" - they're a form that requires the narrator and the audience to recreate the tale at every telling. and this process of recreation requires a level of participation and interaction that's virtually unknown in other forms of pop culture (well, maybe except for children's theater).
as a social phenomenon, it's vaguely unsettling because it calls for the kind of a pretend-play that usually atrophies by adolescence. as a storytelling technique it's also very strange, embodying all the 'hot' postmodern ideas - interactivity, nonlinearity, author/audience ambiguity, and what have you. and it's impossible to capture this in any medium that doesn't share these characteristics - muds and computer games succeed somewhat, but movies or books really have no chance.
so my point is, rpgs receive shoddy treatment not because they talk about revolution or totalitarian systems - after all, books and films that touch on the same themes (1984, brave new world, metropolis, the list goes on and on) are deservedly respected, if not revered. rpgs are distrusted by some people simply because they're a very unusual form of storytelling. and they get butchered in the media simply because it's impossible to give justice to this form in a medium that's inherently linear and presentational.
but that's just one deconstructionist literary geek's opinion. i could be wrong.:)
it's very cool to see the evolved automata work in real life. yeah, it might have been just a cute hack of hooking up a GA system to an automated manufacturing tool, but damn it looks cool!
it's curious, though, that as a branch of AI research, GA has pretty much plateaued. it's been becoming apparent that there are serious limitations to the GA model of design - first and foremost, just like in connectionist systems, the GA system tells the designer nothing* about the workings of the system - a scientist looking at a GA system has no better of a chance to figure out what it's doing than when looking at a biological creature.
and secondly, GAs and connectionist systems alike are very good - in fact, entirely too good - at adapting themselves to the detils of their environment. this means they will use the strangest characteristics of the environment (or training data in case of NNs) if they're only beneficial - and not necessarily the characteristics we'd like them to use.
there's actually an amusing second-hand (third-hand?) story of the incredible adaptivity of NNs. a research lab somewhere develops what appears to be a pretty good NN-based tank detection system for aerial surveillance photographs. they train it on a corpus of photos of tanks going through some natural terrains, and it performs admirably - the program detects tanks not only in the photos similar to the training set, but also in very different ones. in other words, it's quite robust.
so they show it to the people upstairs, and they're reasonably impressed, too. so the machine is given a completely novel set of images to see how it would do - but this time, it utterly fails! everyone's baffled - what's going on, why does it fail now when it used to work so well?
only after a while someone took a good look at the two series of images, and realized - the program really learned to detect tree shadows! because the original series pictures had tanks driving through greenery, the NN detected it was more reliable to rely on that than on anything else... **
and the moral of the story is - these systems are very efficient in adapting to the given task, in whatever way is most optimal. but we as designers don't know what they're 'really' doing - we (connectionist ai people, biologists, dynamic systems people, etc.) lack the proper analytical tools to describe such complex systems. will GAs ever be used to evolve anything larger than toy insect-like agents? probably no, not until better analytical techniques are developed - that is, if ever.
r
*) all right, so i exaggerated.:) it may tell us something (ie. simple associations, etc.), but it's not nearly enough from an engineering point of view
**) does anyone have a reference for this story? i think i saw it in something written by dreyfus, but i can't for the life of me remember...
IMO the schools should be teaching the concept of "portability" every bit as much as "the language". Locking students into a proprietary development environment is the anthesis of this.
no, not a good idea, not in intro classes. before becoming familiar with at least one language, a student doesn't have enough background to form good concept of differences between implementations or dialects. example i encountered recently: consider trying to explain to someone who's currently learning c++, and hasn't taken compilers yet, why msvc++ breaks on code such as:
for (int i = 0 ; i < 1 ; i++ );
for (int i = 0 ; i < 1 ; i++ );
the answer is that msvc++ declares the variable outside of the scope of the loop body and then flags a 'duplicate declaration' error when it gets through the second line - but without more knowledge a student is not going to know what that means.
having just ta'd intro to c++ last year, i can think of a miriad reasons for sticking to one commercial dev environment only - you don't have to worry about non-standard implementations of c++ (ie. "what do you mean my code can't work? it works just fine in my turbo c++ 0.39beta for dos!"), you don't have to worry about students using environment differences to cheat (ie. "what do you mean my code can't work?", again), you don't have to worry about usage differences (ie. "to insert a breakpoint hit F9, unless you're using xgdb in which case you hit C-space, or if you're using codewarrior, in which you right-click in the margin to the left of the line in the editor, or if you're using turbo c++ 0.39beta for dos..."), you can actually teach very environment-dependent uses like debugging tricks and project management, et cetera, et cetera...:)
but, we've always made a point of allowing people to use unix tools if they want to. it makes us very happy if someone asks to do that - it usually means they know what they're doing and they'll be a good student.:)
here are my reasons for liking functional languages:
elegance. abandoning side-effects is a huge step towards understandable code, and it makes math-like operations (such as applying a function over an array - cf. map) clear and easy to write.
compilation. functional languages lend themselves to much better optimization than imperative languages (why? no side effects!), and it lets you do really powerful things, like full-code optimization (as opposed to standard block-based optimization). which leads us to...
speed. granted, interpretation of functional languages can be pretty slow (then again, so it is with java:) ). but compilation is a different matter. ever tried to use the stalin scheme compiler? the damn thing compiles code that's faster than hand-written C!
minimalism. while not necessarily a feature of all functional languages (say, lisp), minimalism is often a design goal in new fp's such as scheme. the single concept of continuations, for example, subsumes a large number of unrelated concepts from other languages, such as longjmps, try..catch loops, non-local exits, or gotos, and by doing that it makes explicit the similarities between them (and also leads to better optimizations, but i mentioned that already).
expressiveness. and finally, the most visible aspect of fp - increased expressiveness. fp's make things like higher-order procedures suspiciously easy (and to think it took the whole hoopla over patterns to make the oo community realize the usefulness of higher-order procedures!). or take applications of functions over large sets of data - would you rather hand-craft loops upon loops, or just say (map fn data)?
it's a fascinating article. it explores how, in the search of an updated self and liberation from the stereotype of crazed coffee-house revolutionaries, the contemporary left managed to liberate itself from a coherent ideology as well, and has become full of, literally, rebels without a cause. worth checking out!
Re:"Gender Exploration?" That's like, totally gay!
on
Men Playing as Women
·
· Score: 1
after first reading: funny, i didn't realize rochester tech aditted people without high school diplomas.
after second reading: aha! i get it! the punchline is in the email address. hehehe. too bad the text was way overboard and crushed the joke.
some of my undergrad profs had been long-time lisp hackers, and i got to see some really crazy code in AI classes. not that it was syntacticaly obfuscated, the way perl often ends up being, but they were able to cram an incredible amount of semantics into tiny, clean procedures. really cool stuff.
:)
but then they started introducing macros, and we were back to syntactic obfuscation.
There are many reasons to prefer CS to CIS.
i'd actually be careful with such sweeping judgements. some schools (for example NWU) make their CS and CIS the same, so you end up taking the same classes and getting the same education, and the difference is whether you register through school of engineering or college of arts and sciences - which means you'll get different school requirements and major name on the diploma.
the stigma of CIS is actually a pretty big issue because while on the positive side there are places that give you a full CS education, there's also a surprising number of institutions with badly hacked up degrees in ms office...
some of the entries are really cool - such as the program whose output really depends on the phase of the moon, or the program that is its own build script and makefile.
;)
i only wish these contests went more into the extremes: use languages that really lend themselves to obfuscation - such as perl, the king of polymorphic semantics - or abuse the hell out of languages that were designed to be pristine clean - such as scheme or smalltalk (to a degree).
i mean, come on, obfuscating c just ain't that hard.
yes, the expansion options are cool. the two-board expansion is probably my favorite - although it makes game length increase superlinearly with number of players. :)
i'm also really looking forward to their translation of 'the starfarers of catan' - the german version looks very promising, and it seems the game itself is 'settlers' on steroids... alas, it won't be available till next year.
electronics make fine gifts, but the above reads more like a list of cool concepts than a list of things people would actually want to get. i mean, i love the empeg and drool over the idea of a personal beowulf, but for a christmas gift i would much rather get some cool games, no matter whether or not they're computer-based.
:)
:)
speaking of games, i can't believe nobody mentioned companies like cheapass games, who make really cool and relatively inexpensive card, board, and dice games. make sure to check out 'brawl' and 'button men' - i'd take those over a thinkgeek gift in an eyeblink.
another good place for gifts is mayfair games, publishers of such fine products as settlers of catan or the original edition of cosmic encounter. and if you're into small/indie game makers, there's also the wizard's attic, who sell such twisted little games as black death, in which you play the plague trying to wipe out europe, or the non-verbal role-playing game the land of og.
is anybody else on slashdot a fan of non-computer games? if so, post your favorites! the more gift ideas, the better...
*Sigh*... I hate to wax nostalgic, but I wish I had been born 15 years early. Due to my youth (born in 1977), I really missed so many great things -- or caught them only at the end of their lifespan.
:) but think of it this way - we caught the BBSs in their glory days. :)
:) not to mention events like the black thursday...
:)
i know what you mean.
alas, many of those great things weren't really widely accessible until very recently. take the internet, for example - until about '94, getting hobbyist access was really tough and quite expensive, unless your school or employer provided you with one.
plus, it was a lot of fun to be on the forefront of the developing internet just as it was gaining popular acceptance. like learning html 1.0 by fiddling with then-brand-new mozilla^H^H^H^H^H^H^HNCSA mosaic 0.9beta
arg! i'm too young to be nostalgic!
fidonet! now there's a network i haven't heard mentioned in a while. my first net access was through fidonet (bbss with internet connections were really expensive!), and i got screamed at a lot by the sysop for chaining together bbs message board -> bbs/fidonet email gateway -> fidonet/internet email gateway -> email/ftp gateway -> ftp to download files from the net by email. :)
:(
:)
and now i have dsl and haven't logged on to a bbs for ages, even though a friend of mine is still sysoping one.
not that i miss slow connections and inane boards, but the bbss were amazing in that they supported actual communitites. i mean, people on bbss lived in the same geographical area, bumped into each other on the boards a lot, and many reallife friendships started on the boards. there's nothing quite like that anymore on the geographically-blind internet.
i can't resist comparing this to the extinction of eccentric private bookstores due to chains like borders or barnes and noble. sure, now the selection is vast and information is cheap - but the interaction with interesting people is lost.
but now i'm sounding like a nostalgic 1995-era wired journalist pining after a vague dream of 'virtual communities'. i better stop.
ok, s/verdana/times new roman/g (or courier new or any of the truetype serif fonts coming with windows). the point still stands - at low resolution, it's hinting that matters, not anti-aliasing.
In windows, all of the true type fonts I use look great without anti-aliasing. If you want beautiful fonts in X windows use an X server that supports true type fonts.
it's not a matter of them being truetype or not - it's because fonts shipped with windows are hinted properly for low resolutions.
there are many things that go wrong when you try to render a font in extremely low res - stem widths and line thickness become unequal between letters, features become slightly dislocated, and so on. anti-aliasing doesn't solve the problem - it only makes it appear slightly less problematic.
the right solution really is using properly hinted fonts. hinting is a process in font design where you specify additional information in the font description for low-resolution rendering.
for an example, fire up a windows wordprocessor, and try typing some text in the verdana font (it's beautifully hinted!) at different sizes ranging from 6 to 24. now lean closer to the monitor, and take a look at pixel-level differences between the same letter in different sizes. notice, for example, that the loops (such as in d or p or o) will become sometimes rectangular, sometimes square, but consistenly so for every letter of that size, line thickness (say, vertical lines in d, p, t, etc.) will change consistenly for all letters as you go up in size, etc.
now go back to your linux partition, and run netscape with the default serifed font (times, if i'm not mistaken). at low resolution it just looks sad in comparison - t is differrent thickness than d, different loops have different shapes, and so on.
the matter is not aliasing. it's using fonts that are designed for low-resolution display. unfortunately, hinting is a delicate and thankless aspect of font design (well-hinted font doesn't get your work into the emigre catalog, you know!), and while there are a few, it's not clear how many more free well-hinted fonts we'll see in the future...
However, this guy is actually claiming that the computer will have some of the attributes of HAL: Artificial intelligence, the ability to repair itself, etc. Now he just sounds wacko.
especially laughable are their claims of AI. 'opening the door to speech recognition and lip reading' - basic dictation maybe, but lip reading? not in your wildest dreams, folks. anything vision-based is computational death. we have hard enough time getting computers to recognize something as simple as a face in camera image, and that already requires fast hardware. getting it to recognize facial features is simply too computationally expensive, regardless of their allusions that their 1GHz desktop box could do that.
although at least he's careful enough to say 'speech recognition' not 'language recognition'. if NLP research proves anything, it's that natural language processing isn't going to happen in the foreseeable future, not in the strong case of understanding arbitrary sentences. specialized contexts and specialized vocabularies - yes, that's likely - but nothing like HAL.
not to mention nuggets like 'it will start addressing the issues of consciousness'. yes, and a turing machine addresses the issues of free will. ugh. to abuse mcdermott's quote, artificial intelligence just met natural stupidity.
Cool, a multiprocessor on wheels. Now all it needs is a few servo motors, a grasping arm, and a video camera.
:)
:)
oh no. i can already imagine. robots routinely crash into all sorts of things when debugging vision code or action control loops, but i wouldn't want to be responsible for debugging this one. it's painful to even think of such cool equipment colliding with an obstacle crash-dummy style at 2m/s.
especially since that obstacle often happens to be person debugging it... (no, i'm not bitter!
(and yes, i tried vmware, but had a *horrifying* experience with the combination of it and redhat 6... never again...)
I'm continually surprised at how slowly things move in the computer world. There are performance improvements on the hardware side, yes. ... Overall, though, programming and computer use are the same as they were ten years ago.
;) *putting flame suit on*
on one hand, artificial intelligence, the area i work in, is entering a new renaissance exactly because of moore's law. the fundamental algorithms of ai haven't changed too much over the last few decades. but it's only now that we have fast enough processors to actually try and do things like formal inference in a computer game, where you have only 10% of a consumer-grade CPU available for controlling your characters.
on the other hand, i agree that the fundamentals don't change very fast. imperative programming and functional programming remain the same, consumer operating systems are largely monolithic, even languages tend to stick around.
case in point, even python is really lisp, only dressed in algol syntax...
i'm pretty sure the grandparent of this posting was an amusing if trollish rant, but since we're on the topic of usefulness of a college degree, i though i'd throw in this fascinating story.
a senior researcher from electronic arts (yes, they have a research division!) was invited to our department for a presentation about their labs and life in the gaming industry. and since the room was full of starry-eyed students (yours truly included), the topic of employment and requirements for getting into the game industry naturally came up.
it was very interesting to hear that, when evaluating candidates, they pay attention not to the applicant's familiarity with hot technologies, but to the applicant's general education! yup, the standard "did they get a bachelor's? a master's? what do they know?"
the reason is that, not surprisingly, good education gives people the foundation on which they can learn and use any particular system (and dev tools in games change very rapidly), while people familiar with tools but shaky on fundamental concepts will be likely unable to switch when a better tool comes around.
a good comparison is with that of a 3dmax guru without art skills, and an artist without 3dmax skills. the point is that the latter can learn the tool relatively quickly, while the former will fail miserably knowing only the particulars of the tool, but not about composition, color theory, and so on.
2) Academic CS curriculums are typically behind the curve - after all, the professors are teaching what they learned 5-10 years ago, and most of them don't keep up with new technology (with some few exceptions, where they're involved). If you're not at the top half-dozen schools, then it's likely you're not cutting-edge in computing.
but good cs curricula are not supposed to teach flavor-of-the-month languages and dev environments!
computer science (as opposed to computer job prep) is in the business of teaching the fundamentals of the science, not the hot new techniques. a bachelor's in cs should signify not knowledge of the windows api, but knowledge of how to learn windows or any other api; not skills in admining win2k networks, but in networks structures and implementations which can be easily reapplied to win2k; not familiarity with linux kernel, but understanding operating systems in enough detail so that the details could be acquired reasonably quickly should need be. students shouldn't be taught mfc or linux kernel hooks - rather, they should be taught how to learn them efficiently.
of course, it's very good if the department pays attention to what's marketable, but teaching kids skills that are likely to be obsolete by the time they graduate is only a disservice. the benefit of learning computer science is acquiring the skills to rapidly learn new languages and systems, and be able to fit them into the larger framework of existing knowledge.
but that's just my opinion, i could be wrong (although i wonder, considering the number of those who reinvent higher-order procedures and other intro-to-programming concepts under the label of 'cutting-edge programming patterns')
my oh my, sun is really getting pissed that msft dared to one-up them in the virtual machine game. :)
:)
.net - using com as a wrapper, it lets completely unrelated languages operate with the operating system and with each other [link]. can you imagine, writing your application in some nice OO language, say, Python or C# (not C++ - garbage collection is your friend!), with a text processing front-end written in perl, user interface in something pretty like VB, and maybe a lisp/scheme scheduling or AI engine in the background, all working seamlessly?
the question of course is, which one is better? they're both pretty reasonable, so far as vms are concerned, and java does have the cross-platform appeal going for it (although anyone who tried to actually develop cross-platform software becomes very disillusioned very fast.
but there's one truly beautiful aspect of
using each language in what it's best at, and all of them together to accomplish the task. that's the ultimate programmer's dream. screw cross-platform compatibility.
here's a bit on the sims' ai, from what i can remember from will wright's talk at the ai and computer games symposium this spring...
:)
basically, when it comes to everyday actions (taking out trash, eating, etc), the sims are pretty much slaves to their drives - for instance, they eat when hungry, but won't eat in anticipation that they'll be going to work soon and will be hungry afterwards. i don't think the timing of their behaviors ever actually changes from that model.
the targets of their behaviors, on the other hand, definitely get learned. sims form object associations easily - get used to the beds they sleep in, appliances that supply them with food, and so on. it's actually a very cool simulation of getting into a habit of doing things - after sleeping every day in the master bedroom, a sim will only reluctantly sleep on the couch.
the implementation is also pretty interesting. the way the sims know where to go for things (how to make food, etc.) is because all active objects in the world 'advertise' what they can do - fridge sends out messages saying "hi, i offer +8 in energy!", easel announces "i offer +2 in fun and art skill!", and so on.
the strength of the message also decays with distance, so a hungry sim will feel the fridge's message very strongly when he's nearby, and weakly if he's far away. this in effect looks like a hill-climbing algorithm - a fridge may put up a 'food' hill of height 8, a grill will produce a hill of height 6, and so on, and the hunger variable in the sim controls how much he's inclined to climb to the 'top' of the food hill, as opposed to doing other things...
well, then check out their next product, simsville. it looks like they're trying to go one level up from the sims, and have a simulation of whole town starting from a simcity-like level down to micromanagement of individual households. if the web page is to be believed, it'll be released sometime within the next 5 years... :)
Why do you think role-playing games are so vehemently denounced by certain segments of our society, and almost always recieve shoddy treatment at the hands of Hollywood. It certainly isn't because they're tales told by an idiot, full of sound and fury, signifying nothing. If you want that, watch your average Hollywood action movie.
:)
conspiracy theories aside, i think the problem lies exactly in the fact that they're not tales full of sound and fury - or rather, in that they're not tales at all.
rpg games as such are a medium for participatory storytelling. they're not any form of a "folktale of this culture" - they're a form that requires the narrator and the audience to recreate the tale at every telling. and this process of recreation requires a level of participation and interaction that's virtually unknown in other forms of pop culture (well, maybe except for children's theater).
as a social phenomenon, it's vaguely unsettling because it calls for the kind of a pretend-play that usually atrophies by adolescence. as a storytelling technique it's also very strange, embodying all the 'hot' postmodern ideas - interactivity, nonlinearity, author/audience ambiguity, and what have you. and it's impossible to capture this in any medium that doesn't share these characteristics - muds and computer games succeed somewhat, but movies or books really have no chance.
so my point is, rpgs receive shoddy treatment not because they talk about revolution or totalitarian systems - after all, books and films that touch on the same themes (1984, brave new world, metropolis, the list goes on and on) are deservedly respected, if not revered. rpgs are distrusted by some people simply because they're a very unusual form of storytelling. and they get butchered in the media simply because it's impossible to give justice to this form in a medium that's inherently linear and presentational.
but that's just one deconstructionist literary geek's opinion. i could be wrong.
it's very cool to see the evolved automata work in real life. yeah, it might have been just a cute hack of hooking up a GA system to an automated manufacturing tool, but damn it looks cool!
:) it may tell us something (ie. simple associations, etc.), but it's not nearly enough from an engineering point of view
it's curious, though, that as a branch of AI research, GA has pretty much plateaued. it's been becoming apparent that there are serious limitations to the GA model of design - first and foremost, just like in connectionist systems, the GA system tells the designer nothing* about the workings of the system - a scientist looking at a GA system has no better of a chance to figure out what it's doing than when looking at a biological creature.
and secondly, GAs and connectionist systems alike are very good - in fact, entirely too good - at adapting themselves to the detils of their environment. this means they will use the strangest characteristics of the environment (or training data in case of NNs) if they're only beneficial - and not necessarily the characteristics we'd like them to use.
there's actually an amusing second-hand (third-hand?) story of the incredible adaptivity of NNs. a research lab somewhere develops what appears to be a pretty good NN-based tank detection system for aerial surveillance photographs. they train it on a corpus of photos of tanks going through some natural terrains, and it performs admirably - the program detects tanks not only in the photos similar to the training set, but also in very different ones. in other words, it's quite robust.
so they show it to the people upstairs, and they're reasonably impressed, too. so the machine is given a completely novel set of images to see how it would do - but this time, it utterly fails! everyone's baffled - what's going on, why does it fail now when it used to work so well?
only after a while someone took a good look at the two series of images, and realized - the program really learned to detect tree shadows! because the original series pictures had tanks driving through greenery, the NN detected it was more reliable to rely on that than on anything else... **
and the moral of the story is - these systems are very efficient in adapting to the given task, in whatever way is most optimal. but we as designers don't know what they're 'really' doing - we (connectionist ai people, biologists, dynamic systems people, etc.) lack the proper analytical tools to describe such complex systems. will GAs ever be used to evolve anything larger than toy insect-like agents? probably no, not until better analytical techniques are developed - that is, if ever.
r
*) all right, so i exaggerated.
**) does anyone have a reference for this story? i think i saw it in something written by dreyfus, but i can't for the life of me remember...
IMO the schools should be teaching the concept of "portability" every bit as much as "the language". Locking students into a proprietary development environment is the anthesis of this.
no, not a good idea, not in intro classes. before becoming familiar with at least one language, a student doesn't have enough background to form good concept of differences between implementations or dialects. example i encountered recently: consider trying to explain to someone who's currently learning c++, and hasn't taken compilers yet, why msvc++ breaks on code such as:
for (int i = 0 ; i < 1 ; i++ );
for (int i = 0 ; i < 1 ; i++ );
the answer is that msvc++ declares the variable outside of the scope of the loop body and then flags a 'duplicate declaration' error when it gets through the second line - but without more knowledge a student is not going to know what that means.
absolutely right!
:)
:)
having just ta'd intro to c++ last year, i can think of a miriad reasons for sticking to one commercial dev environment only - you don't have to worry about non-standard implementations of c++ (ie. "what do you mean my code can't work? it works just fine in my turbo c++ 0.39beta for dos!"), you don't have to worry about students using environment differences to cheat (ie. "what do you mean my code can't work?", again), you don't have to worry about usage differences (ie. "to insert a breakpoint hit F9, unless you're using xgdb in which case you hit C-space, or if you're using codewarrior, in which you right-click in the margin to the left of the line in the editor, or if you're using turbo c++ 0.39beta for dos..."), you can actually teach very environment-dependent uses like debugging tricks and project management, et cetera, et cetera...
but, we've always made a point of allowing people to use unix tools if they want to. it makes us very happy if someone asks to do that - it usually means they know what they're doing and they'll be a good student.
any others?
hehee... this reminds me - the new republic (a fine liberal magazine, btw!) had an article recently about leftist movements in the context of wto protests: "protest too much (meet the new new left: bold, fun, and stupid)" by franklin foer.
it's a fascinating article. it explores how, in the search of an updated self and liberation from the stereotype of crazed coffee-house revolutionaries, the contemporary left managed to liberate itself from a coherent ideology as well, and has become full of, literally, rebels without a cause. worth checking out!
after first reading: funny, i didn't realize rochester tech aditted people without high school diplomas.
after second reading: aha! i get it! the punchline is in the email address. hehehe. too bad the text was way overboard and crushed the joke.