I really love Perl but I have to say one thing is a pain in the arse compared to C++, and that's reference syntax. Whenever I decide to change a normal type to a ref type--and this happens a lot with arguments to functions--there's all this error-prone replacing of var with $var. Whereas in C++ a reference type looks exactly the same but behaves differently.
The KB finally got approved by the folks at savannah. Will start importing code and setting things up soon.
Wow, I didn't know about these shell builtins until today but they're great. Suppose your pwd is /bar and you want to cd to /foo but not lose /bar. Do "pushd /foo". This will cd you to /foo, and push /bar on the dirs stack. Type dirs to see the whole dir stack. Or do "popd" and you'll go back to /bar.
Available, I believe, under *csh and bash.
This is a note to self. The next game you should implement under Gamework is Connect-4. The branching factor is not huge (mostly constant at 7, because there are 7 columns) and there are early payoffs that will allow tons of pruning. And also you should actually *test* the Mancala implementation you wrote, you bum, instead of letting it sit there and rot.
So a word of warning to the wise: if you try to rebuild your FreeBSD ports tree via the single big ports.tgz, make sure you clean out the tree first. Old patch files sitting around will kill you.
Holy smokes having a 56K modem sucks. Unfortunately the modem I bought a while back for my linux box was a winmodem. I compiled drivers for it back when I had Mandrake but from what I hear it's quite an ordeal to get a winmodem to work under FreeBSD, i.e. likely kernel changes, and that's just not worth the effort. So I ended up cruftily running a WinNT port of Squid proxy server on my laptop. The actual binary was a little hard to find. Am busy installing ports for the gnome developer's toolkit so I can make nifty useless GUIs for QC. It's slow going, cause like 1 in 5 tarballs gets corrupted, probably because of this weird network setup.
Apparently the M$ dudes had never heard of the zero-one-infinity rule when they designed ActiveSync to support up to 2, but no more, partnerships for a given device. And the number of the counting shall be...
Phew finally got the KB submitted to savannah for approval, took me quite a while to get everything prepared, what with licensing every source file, getting rid of gifs, etc. This ain't SourceForge kids!
This is absolutely the worst English I have ever seen: "Those of us who would like to be an IT Professional and study for the purpose are always in dispersion that we can’t implement the things to solve real life problems what we have learned from books and lectures..." Read the rest here. My CS account was getting bombarded by messages from these people about their stupid programming contest. It put me in such a dispersion so that real problems are quite smoky to me.
Have a cool new program idea: speech-to-shell. That way I could be walking around doing dishes or something and be cd'ing around doing other stuff on my FreeBSD box at the same time. Unlike integrating voice recognition into a monolithic Office app this one strikes me as useful, 'cause if it was good enough you could use it for anything. Right away I would start using it to queue things up in xmms, adjust kmix volume, mount and unmount network shares, run and monitor builds, logout, reboot, etc. Rather than defining a lot of special words in the program itself you could just make a bunch of phonetic bash aliases like "seedee" or "elless."
One possibility is libsphinx2. Check out the air travel finder, you can call up the 800 number and ask it questions in English. It's a little buggy but still damn impressive. There are a number of different speech recognition modules on CPAN, including some that interface to Sphinx2. Would be a quick way to prototype the idea.
Frequently in building up data structures you have to do so in multiple passes. A two-pass compiler, a graph of the vertex/edge variety, and a multi-dimensional array using C++ new allocation are examples of this. In all cases the root cause is indirection. With a compiled language you have a bunch of symbols and then references between them--so one level of indirection--which will require two passes if the language doesn't use forward declarations. When building up a graph you may have to read in all the vertices followed by the edges. When allocating C++ arrays you have to loop through each dimension (so one pass for each level of direction) successively. Note that in all cases you could solve the multiple pass problem through forward declaration, but which way is cleaner is situation-dependent.