If you're at a university, check out your library's web site; here at UT, I can browse practically any online journal I please simply by using the library's proxy server.
A computer engineering degree is basically a specialized Electrical Engineering degree. It focuses on the design of hardware architectures, and a lot of the programming you do will be low-level stuff like assembly.
You'll take all the EE courses in electronics, and on top of that you'll have some courses that focus on computer architecture and programming. (plus you'll have electives of course)
CS delves into the theory of things; the skills you get from a CS degree will be useful to you for many, many years because you are learning how to learn, and how to solve problems.
MIS/CIS is more like a trade-school degree. It seems wrong that an accredited institution will even give a 4-year degree in such a thing; it should be a 2-year degree. You learn how to use tools that are provided to you, so you end up with a skill set that will be outdated in just a few years when new technologies come about.
MIS/CIS also tends to place an emphasis on business/management. Learn to be a Pointy Haired Boss who can't tell the difference between an Etch-A-Sketch and a laptop! "Shake it to reboot."
I've seen a couple of corporate machine rooms that use this idea. There is actually a company that makes that sort of rack especially for computers, and they have accessories like keyboard trays that clip to the bottom of the shelf.
This from a recent interview with Tom Phoenix and Randal Schwartz, authors of Learning Perl:
I often tell my students that Python and Perl are about equally capable, but philosophically incompatible: Perl is jam-packed with shortcuts, while Python has essentially none. That makes Python easier to learn, in general; Perl students have to learn many of its common defaults before they can follow along in someone else's program. But Perl is easier to use, even at the expense of being harder to learn. That's a good trade-off, since you learn it only once, then use it again and again.
Perl is an incredibly flexible and useful language, and the forthcoming Perl 6 will only continue to improve upon this.
Don't knock it until you've used it. Really used it.
All too often, we get so carried away with the "this is neat" aspect of ideas that we forget to ask: Is this really a good idea?
Technology is really neat, it has tons of wonderful applications... but, you can't just throw technology at a problem for the sake of using technology.
When I first got a TI-85 in 8th grade, it was a really neat toy. I found that I could load all sorts of games on it, like Tetris and Galaxian. That calculator got used for games far more than it got used for schoolwork. Did it ever help me learn more about math, or get better at math? Nope. In fact, it probably hurt my skills at arithmetic.
Then, I went off to college. Classes were more intense and interesting, so I had less cause to play games and daydream. You don't have so much busywork, so even in math and science classes there is rarely a need for a calculator at all; you do all your work, and then sometimes at the end of a problem you'll plug a few numbers in the calculator to get a final answer.
Kids in school should be learning to think, not how to play with shiny toys.
There is a better article on ZDNet, with more technical details, including a very sketchy description of some of the algorithmic ideas used in developing HAL.
If you read the EE Times article on the same subject (a much better article IMNSHO), you'll see that the aim of this company is to produce high-speed chips with low power consumption. They want twice the speed for only half again as much power.
The company has not yet announced which architecture their chips will use; most likely RISC, and the aforementioned EE Times article speculates that they will use MIPS rather than PowerPC because of lower licensing fees.
This design will not be finished for another 18 months. By that time, Intel and AMD will certainly have passed the 2.2 GHz mark. But still, the embedded systems market should be a little excited over this one.
Yes, PocketC does require a runtime to be installed, and it is really a sort of bastardized C.
I haven't heard of any other onboard C-development stuff, but if you want to make "pure" binaries there is a dev kit for gcc. Onboard development is neat, but Quartus Forth seems to be the only onboard system powerful enough to create real, moderately large and useful apps.
This really is great news for the Palm, if for no other reason than the fact that it carries an open source license. As anyone who owns a Palm has noticed, there is a dearth of open and/or free software developed for it.
The mindset of Palm programmers seems to be morbidly similar to that of most Windows programmers - develop an app, release it as Shareware with a nag screen and 30-day trial period, then try to make a few bucks by selling your software on PalmGear, so any project to further open development for the Palm is a big step forward.
On the downside, it appears that it wants a device with at least 4MB of memory (Sorry III, V and 2MB Visor owners...) and it doesn't seem to have the ability to create standalone PRC files (thats a standalone application file).
Some of the other alternatives for developing directly on your Palm (no PC necessary; these read MemoPad or DOC files with your source):
Quartus Forth: A standalone Forth interpreter/compiler that is quite powerful; however, the free version can't compile PRCs, and it costs $70 to register.
LispMe is a Scheme compiler, licensed under the GPL. Yummy. Now we just need a better way to write parentheses in graffiti...
PocketC is an onboard C compiler, distributed as shareware.
Yes, its quite simple. At my old high school, Bess only blocked sites based on the URL; it didn't do content filtering (but maybe this was just due to poor configuration?) We wrote a simple perl CGI script to take a URL from a web form, download the page and print it to the browser. So, you have the remote page coming from your own (non-blocked) server.
Here's the code if anyone wants to try it out...
Note that it requires the LWP module, which you can get from your friendly neighborhood CPAN archive (http://www.cpan.org)
#!/usr/bin/perl -w
use LWP::UserAgent;
use CGI qw/:standard/;
$url = param('url');
print header();
if (defined($url)) {
if (substr ($url,0,7) eq "http://") {
$site = substr param('url'),7;
@spliturl = split (/(\/)/, $site);
$server = $spliturl[0];
} else {
@spliturl = split (/(\/)/, $url);
$server = $spliturl[0];
}
print "<base href=\"http://$server\/\">";
my $ua = new LWP::UserAgent;
my $request = new HTTP::Request 'GET', "$url";
$res = $ua->request($request);
print $res->content if $res->is_success;
} else {
print "<form method=GET action=\"$0\">\n";
print "Enter a URL: <input type=text name=url size=100>\n";
print "</body>\n</html>\n";
}
With the full release of OS X just around the corner (March 24 I hear), this thing is looking really nice - the uberlaptop. Light, decent battery life, sleek, powerful - and with OS X, it's even UNIX. Plus, who doesn't want a portable widescreen DVD player?
Regular viewership of network news has fallen from 38% to 30% in the past two years, while local news viewership declined from 64% to 56%. Yet fully one in three Americans go online for news at least once a week, compared to 20% two years ago. And 15% say they receive daily news reports from the Net, up 6%.
Hrm, this makes me want to spew out a few quotes:
43% of all statistics are made up on the spot.
There are lies, there are damn lies, and there are statistics.
There is a project at UNT, the University of North Texas (in Denton, TX) where an operational prototype has already been built. The car was built from an old Volkswagen bug (just the frame and chassis), has a 200 gallon tank (IIRC) in the back and goes about 15 miles on 45 gallons of LN2. The heat exchangers are mounted along the top of the car and create quite a bit of frost. You can see the UNT website for more info about the car.
There is another project at the University of Washington called LN2000, and after a quick glance at the website it appears to be even further along than the UNT project. Their test vehicle is a converted 1984 Grumman-Olson Kubvan mail delivery van and they also have a website.
My first thought when I saw that URL was "Hey! The Societas Eruditorum finally got more stuff on their website!" But alas, it is eruditum.org, not eruditorum.org.
In case you haven't read Cryptonomicon, eruditorum.org is referenced fairly often there - for example, Enoch Root's email is root@eruditorum.org.
/* Workaround for mapstart: the only op which needs a different ppaddr */
#undef Perl_pp_mapstart
#define Perl_pp_mapstart Perl_pp_grepstart
#define XS_DynaLoader_boot_DynaLoader boot_DynaLoader
EXTERN_C void boot_DynaLoader (pTHX_ CV* cv);
#ifdef BROKEN_UNION_INIT
/*
* Cribbed from cv.h with ANY (a union) replaced by void*.
* Some pre-Standard compilers can't cope with initialising unions. Ho hum.
*/
typedef struct {
char * xpv_pv;/* pointer to malloced string */
STRLEN xpv_cur;/* length of xp_pv as a C string */
STRLEN xpv_len;/* allocated size */
IV xof_off;/* integer value */
double xnv_nv;/* numeric value, if any */
MAGIC* xmg_magic;/* magic for scalar array */
HV* xmg_stash;/* class package */
I still swear by TNT, the AIM client for emacs - implemented, of course, in emacs lisp. I would tell any emacs fan to give it a shot. All the GUI linux AIM clients have been very disappointing to me - they all seem to segfault or otherwise hang/crash on a regular basis.
The only gripe I have about TNT is that it doesnt do logfiles - although, its simple enough to save a chat buffer manually. But, I spoke with a developer and he says logfiles are in the works, and I may add that functionality myself if I learn some more lisp.
Ah, isn't it great to never leave your text editor? See vi or vim try to do this! Join the Church of Emacs[?]
I live in a dorm at UNT (University of North Texas) and for a good while we had incoming telnet and FTP blocked (anything off of the campus network couldn't get in). It made it rather annoying when I went home for a weekend but wanted to telnet into my running box. And, I couldn't use ssh because I don't have time to download and install a client on every Windows box that I use. (who knows of a nice Windows ssh client? I haven't looked.)
Funny thing is, the wonderful UNT network people were only blocking connections that were coming in on 2 ports - 21 and 23 (ftp and telnet, fyi). Thats all. Nothing else. Um, guys, maybe thats not too bright. Solution? Just run the services on another port...not too tough, just add a few lines to/etc/services and/etc/inetd.conf and restart inetd. Then you can telnet and ftp to your hearts content, just use the new ports.
PCs and consoles are becoming one and the same, to the point that they're even going to be capable of running the same software. We've seen lots of console emulators for the PC...how long is it going to be before PC emulators for our favorite console systems start popping up?
And of course, somebody will _have_ to port Linux to it, and then add on some better hardware and then.....oh, hey, look, its a low-end PC with a TV instead of a monitor!
This stuff is bound to get some negative publicity...people think of explosives, and of course weaponry is one of the first things that comes to mind. Terrorist bombings are always eaten up and blown out of proportion (haha, punny) by the news, and the general public gets paranoid about anything that they don't understand...it's not as if this stuff is going to be freely available at drug stores.
It would probably be better if some stuff never made it to big news, and this is probably one of those things.
Ehm... that site requires a subscription to PRL :)
If you're at a university, check out your library's web site; here at UT, I can browse practically any online journal I please simply by using the library's proxy server.
And no, I will not post the PDF. Sorry.
A computer engineering degree is basically a specialized Electrical Engineering degree. It focuses on the design of hardware architectures, and a lot of the programming you do will be low-level stuff like assembly.
You'll take all the EE courses in electronics, and on top of that you'll have some courses that focus on computer architecture and programming. (plus you'll have electives of course)
CS delves into the theory of things; the skills you get from a CS degree will be useful to you for many, many years because you are learning how to learn, and how to solve problems.
MIS/CIS is more like a trade-school degree. It seems wrong that an accredited institution will even give a 4-year degree in such a thing; it should be a 2-year degree. You learn how to use tools that are provided to you, so you end up with a skill set that will be outdated in just a few years when new technologies come about.
MIS/CIS also tends to place an emphasis on business/management. Learn to be a Pointy Haired Boss who can't tell the difference between an Etch-A-Sketch and a laptop! "Shake it to reboot."
I've seen a couple of corporate machine rooms that use this idea. There is actually a company that makes that sort of rack especially for computers, and they have accessories like keyboard trays that clip to the bottom of the shelf.
Perl is an incredibly flexible and useful language, and the forthcoming Perl 6 will only continue to improve upon this.
Don't knock it until you've used it. Really used it.
Technology is really neat, it has tons of wonderful applications... but, you can't just throw technology at a problem for the sake of using technology.
When I first got a TI-85 in 8th grade, it was a really neat toy. I found that I could load all sorts of games on it, like Tetris and Galaxian. That calculator got used for games far more than it got used for schoolwork. Did it ever help me learn more about math, or get better at math? Nope. In fact, it probably hurt my skills at arithmetic.
Then, I went off to college. Classes were more intense and interesting, so I had less cause to play games and daydream. You don't have so much busywork, so even in math and science classes there is rarely a need for a calculator at all; you do all your work, and then sometimes at the end of a problem you'll plug a few numbers in the calculator to get a final answer.
Kids in school should be learning to think, not how to play with shiny toys.
There is a better article on ZDNet, with more technical details, including a very sketchy description of some of the algorithmic ideas used in developing HAL.
The company has not yet announced which architecture their chips will use; most likely RISC, and the aforementioned EE Times article speculates that they will use MIPS rather than PowerPC because of lower licensing fees.
This design will not be finished for another 18 months. By that time, Intel and AMD will certainly have passed the 2.2 GHz mark. But still, the embedded systems market should be a little excited over this one.
TI has been the major supplier of Sun's Sparc chips for a long time.
Yes, PocketC does require a runtime to be installed, and it is really a sort of bastardized C. I haven't heard of any other onboard C-development stuff, but if you want to make "pure" binaries there is a dev kit for gcc. Onboard development is neat, but Quartus Forth seems to be the only onboard system powerful enough to create real, moderately large and useful apps.
The mindset of Palm programmers seems to be morbidly similar to that of most Windows programmers - develop an app, release it as Shareware with a nag screen and 30-day trial period, then try to make a few bucks by selling your software on PalmGear, so any project to further open development for the Palm is a big step forward.
On the downside, it appears that it wants a device with at least 4MB of memory (Sorry III, V and 2MB Visor owners...) and it doesn't seem to have the ability to create standalone PRC files (thats a standalone application file).
Some of the other alternatives for developing directly on your Palm (no PC necessary; these read MemoPad or DOC files with your source):
Quartus Forth: A standalone Forth interpreter/compiler that is quite powerful; however, the free version can't compile PRCs, and it costs $70 to register.
LispMe is a Scheme compiler, licensed under the GPL. Yummy. Now we just need a better way to write parentheses in graffiti...
PocketC is an onboard C compiler, distributed as shareware.
And, one musn't forget the ever-helpful Palm OS Programmers FAQ
Yes, its quite simple. At my old high school, Bess only blocked sites based on the URL; it didn't do content filtering (but maybe this was just due to poor configuration?) We wrote a simple perl CGI script to take a URL from a web form, download the page and print it to the browser. So, you have the remote page coming from your own (non-blocked) server.
Here's the code if anyone wants to try it out...
Note that it requires the LWP module, which you can get from your friendly neighborhood CPAN archive (http://www.cpan.org)
#!/usr/bin/perl -w
use LWP::UserAgent;
use CGI qw/:standard/;
$url = param('url');
print header();
if (defined($url)) {
if (substr ($url,0,7) eq "http://") {
$site = substr param('url'),7;
@spliturl = split (/(\/)/, $site);
$server = $spliturl[0];
} else {
@spliturl = split (/(\/)/, $url);
$server = $spliturl[0];
}
print "<base href=\"http://$server\/\">";
my $ua = new LWP::UserAgent;
my $request = new HTTP::Request 'GET', "$url";
$res = $ua->request($request);
print $res->content if $res->is_success;
} else {
print "<form method=GET action=\"$0\">\n";
print "Enter a URL: <input type=text name=url size=100>\n";
print "</body>\n</html>\n";
}
exit;
Yay Google!! Too bad their cached copies of MathWorld (mathworld.wolfram.com) are gone now...
- 1" thick titanium case (13.5x9.5x1)
- Weighs 5.3 pounds
- 5 hour battery life
- 400 or 500 MHz PowerPC G4
- 15.2-inch diagonal widescreen (3:2 ratio) display
- Slot-loading DVD drive
- Up to 1GB of RAM
- Up to 30GB of disk space
- Built-in Airport antenna
With the full release of OS X just around the corner (March 24 I hear), this thing is looking really nice - the uberlaptop. Light, decent battery life, sleek, powerful - and with OS X, it's even UNIX. Plus, who doesn't want a portable widescreen DVD player?Hrm, this makes me want to spew out a few quotes:
43% of all statistics are made up on the spot.
There are lies, there are damn lies, and there are statistics.
You want to be http://www.sharkyextr eme.com/games/columns/beatdown_gencon2k/ - there.
They must be running IIS! {grin}
There is another project at the University of Washington called LN2000, and after a quick glance at the website it appears to be even further along than the UNT project. Their test vehicle is a converted 1984 Grumman-Olson Kubvan mail delivery van and they also have a website.
My first thought when I saw that URL was "Hey! The Societas Eruditorum finally got more stuff on their website!" But alas, it is eruditum.org, not eruditorum.org. In case you haven't read Cryptonomicon, eruditorum.org is referenced fairly often there - for example, Enoch Root's email is root@eruditorum.org.
Alas, the VAX 4000 is considerably smaller than the 11/780, but maybe we could still get a drink or two inside... {grin}
yohmaz says:
/* BROKEN_STATIC_REDECL */
/* pointer to malloced string */
/* length of xp_pv as a C string */
/* allocated size */
/* integer value */
/* numeric value, if any */
/* magic for scalar array */
/* class package */
/* >= 2 indicates recursive call */
/* current owner thread */
/* USE_THREADS */
/* BROKEN_UNION_INIT */
6 -linux", 47);
* )&sv_list[0]));
* )&sv_list[1]));
/* ALLOW_PERL_OPTIONS */
/* ALLOW_PERL_OPTIONS */
-----------
For the next Obuscated C code contest, I'm going to write the follwing perl script:
#!/usr/bin/perl
print "Hello World\n";
and then
perl -MO=CC,-O2,-oobfuscate.c obfuscate.pl
and submit the obfuscate.c
----------
So, here's the output {grin}:
*whine* but its ONLY 295 lines...
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
/* Workaround for mapstart: the only op which needs a different ppaddr */
#undef Perl_pp_mapstart
#define Perl_pp_mapstart Perl_pp_grepstart
#define XS_DynaLoader_boot_DynaLoader boot_DynaLoader
EXTERN_C void boot_DynaLoader (pTHX_ CV* cv);
static void xs_init (pTHX);
static void dl_init (pTHX);
static PerlInterpreter *my_perl;
#ifdef BROKEN_STATIC_REDECL
#define Static extern
#else
#define Static static
#endif
#ifdef BROKEN_UNION_INIT
/*
* Cribbed from cv.h with ANY (a union) replaced by void*.
* Some pre-Standard compilers can't cope with initialising unions. Ho hum.
*/
typedef struct {
char * xpv_pv;
STRLEN xpv_cur;
STRLEN xpv_len;
IV xof_off;
double xnv_nv;
MAGIC* xmg_magic;
HV* xmg_stash;
HV * xcv_stash;
OP * xcv_start;
OP * xcv_root;
void (*xcv_xsub) (CV*);
void * xcv_xsubany;
GV * xcv_gv;
char * xcv_file;
long xcv_depth;
AV * xcv_padlist;
CV * xcv_outside;
#ifdef USE_THREADS
perl_mutex *xcv_mutexp;
struct perl_thread *xcv_owner;
#endif
cv_flags_t xcv_flags;
} XPVCV_or_similar;
#define ANYINIT(i) i
#else
#define XPVCV_or_similar XPVCV
#define ANYINIT(i) {i}
#endif
#define Nullany ANYINIT(0)
#define UNUSED 0
#define sym_0 0
Static OP op_list[3];
Static LISTOP listop_list[2];
Static SV sv_list[12];
Static XPV xpv_list[7];
Static XPVAV xpvav_list[3];
Static XPVHV xpvhv_list[1];
static OP * pp_main (pTHX);
static OP op_list[3] = {
{ 0, 0, NULL, 0, 0, 65535, 0x0, 0x0 },
{ 0, 0, NULL, 0, 177, 65535, 0x0, 0x0 },
{ (OP*)&listop_list[1], 0, NULL, 0, 190, 65535, 0x1, 0x0 },
};
static LISTOP listop_list[2] = {
{ 0, 0, NULL, 0, 209, 65535, 0x5, 0x0, 0, 0, 1 },
{ 0, 0, NULL, 0, 178, 65535, 0xd, 0x40, &op_list[1], &op_list[2], 5 },
};
static SV sv_list[12] = {
{ &xpvav_list[0], 1, 0xa },
{ &xpvav_list[1], 1, 0xa },
{ 0, 1, 0x100 },
{ &xpv_list[0], 1, 0x4840004 },
{ &xpvhv_list[0], 2, 0x2000000b },
{ &xpvav_list[2], 2, 0xa },
{ &xpv_list[1], 1, 0x4040004 },
{ &xpv_list[2], 1, 0x4040004 },
{ &xpv_list[3], 1, 0x4040004 },
{ &xpv_list[4], 1, 0x4040004 },
{ &xpv_list[5], 1, 0x4040004 },
{ &xpv_list[6], 1, 0x4040004 },
};
static XPV xpv_list[7] = {
{ 0, 12, 13 },
{ 0, 37, 38 },
{ 0, 26, 27 },
{ 0, 47, 48 },
{ 0, 36, 37 },
{ 0, 30, 31 },
{ 0, 1, 2 },
};
static XPVAV xpvav_list[3] = {
{ 0, -1, -1, 0, 0.0, 0, Nullhv, 0, 0, 0x1 },
{ 0, -1, -1, 0, 0.0, 0, Nullhv, 0, 0, 0x1 },
{ 0, -1, -1, 0, 0.0, 0, Nullhv, 0, 0, 0x1 },
};
static XPVHV xpvhv_list[1] = {
{ 0, 0, 31, 0, 0.0, 0, Nullhv, -1, 0, 0, 0 },
};
static int perl_init()
{
dTHR;
dTARG;
djSP;
{
SV **svp;
AV *av = (AV*)&sv_list[1];
av_extend(av, 1);
svp = AvARRAY(av);
*svp++ = (SV*)&PL_sv_undef;
*svp++ = (SV*)&sv_list[2];
AvFILLp(av) = 1;
}
op_list[0].op_ppaddr = pp_main;
op_list[1].op_ppaddr = PL_ppaddr[OP_ENTER];
xpv_list[0].xpv_pv = savepvn("Hello world\n", 12);
listop_list[0].op_ppaddr = PL_ppaddr[OP_PRINT];
op_list[2].op_ppaddr = PL_ppaddr[OP_EXIT];
listop_list[1].op_ppaddr = PL_ppaddr[OP_LEAVE];
xpv_list[1].xpv_pv = savepvn("/usr/local/lib/perl5/5.6.0/i686-linux", 37);
xpv_list[2].xpv_pv = savepvn("/usr/local/lib/perl5/5.6.0", 26);
xpv_list[3].xpv_pv = savepvn("/usr/local/lib/perl5/site_perl/5.6.0/i68
xpv_list[4].xpv_pv = savepvn("/usr/local/lib/perl5/site_perl/5.6.0", 36);
xpv_list[5].xpv_pv = savepvn("/usr/local/lib/perl5/site_perl", 30);
xpv_list[6].xpv_pv = savepvn(".", 1);
{
SV **svp;
AV *av = (AV*)&sv_list[5];
av_extend(av, 5);
svp = AvARRAY(av);
*svp++ = (SV*)&sv_list[6];
*svp++ = (SV*)&sv_list[7];
*svp++ = (SV*)&sv_list[8];
*svp++ = (SV*)&sv_list[9];
*svp++ = (SV*)&sv_list[10];
*svp++ = (SV*)&sv_list[11];
AvFILLp(av) = 5;
}
PL_main_root = (OP*)&listop_list[1];
PL_main_start = &op_list[0];
PL_curpad = AvARRAY((AV*)&sv_list[1]);
PL_initav = (AV *) Nullsv;
GvHV(PL_incgv) = (HV*)&sv_list[4];
GvAV(PL_incgv) = (AV*)&sv_list[5];
av_store(CvPADLIST(PL_main_cv),0,SvREFCNT_inc((AV
av_store(CvPADLIST(PL_main_cv),1,SvREFCNT_inc((AV
PL_amagic_generation= 0;
return 0;
}
#include "cc_runtime.h"
static
CCPP(pp_main)
{
I32 oldsave;
SV **svp, *sv, *src, *dst, *left, *right;
MAGIC *mg;
djSP;
lab_80f5670:
PL_op = &op_list[1];
DOOP(PL_ppaddr[OP_ENTER]);
TAINT_NOT;
sp = PL_stack_base + cxstack[cxstack_ix].blk_oldsp;
lab_80f5848:
PUSHMARK(sp);
EXTEND(sp, 1);
PUSHs((SV*)&sv_list[3]);
PL_op = (OP*)&listop_list[0];
DOOP(PL_ppaddr[OP_PRINT]);
lab_82cddd8:
TAINT_NOT;
sp = PL_stack_base + cxstack[cxstack_ix].blk_oldsp;
PL_op = &op_list[2];
DOOP(PL_ppaddr[OP_EXIT]);
DOOP(PL_ppaddr[OP_LEAVE]);
FREETMPS;
PUTBACK;
return PL_op;
}
int
main(int argc, char **argv, char **env)
{
int exitstatus;
int i;
char **fakeargv;
PERL_SYS_INIT3(&argc,&argv,&env);
if (!PL_do_undump) {
my_perl = perl_alloc();
if (!my_perl)
exit(1);
perl_construct( my_perl );
PL_perl_destruct_level = 0;
}
#ifdef CSH
if (!PL_cshlen)
PL_cshlen = strlen(PL_cshname);
#endif
#ifdef ALLOW_PERL_OPTIONS
#define EXTRA_OPTIONS 2
#else
#define EXTRA_OPTIONS 3
#endif
New(666, fakeargv, argc + EXTRA_OPTIONS + 1, char *);
fakeargv[0] = argv[0];
fakeargv[1] = "-e";
fakeargv[2] = "";
#ifndef ALLOW_PERL_OPTIONS
fakeargv[3] = "--";
#endif
for (i = 1; i argc; i++)
fakeargv[i + EXTRA_OPTIONS] = argv[i];
fakeargv[argc + EXTRA_OPTIONS] = 0;
exitstatus = perl_parse(my_perl, xs_init, argc + EXTRA_OPTIONS,
fakeargv, NULL);
if (exitstatus)
exit( exitstatus );
sv_setpv(GvSV(gv_fetchpv("0", TRUE, SVt_PV)), argv[0]);
PL_main_cv = PL_compcv;
PL_compcv = 0;
exitstatus = perl_init();
if (exitstatus)
exit( exitstatus );
dl_init(aTHX);
exitstatus = perl_run( my_perl );
perl_destruct( my_perl );
perl_free( my_perl );
PERL_SYS_TERM();
exit( exitstatus );
}
/* yanked from perl.c */
static void
xs_init(pTHX)
{
char *file = __FILE__;
dTARG;
djSP;
#ifdef USE_DYNAMIC_LOADING
newXS("DynaLoader::boot_DynaLoader", boot_DynaLoader, file);
#endif
/* bootstrapping code*/
SAVETMPS;
targ=sv_newmortal();
#ifdef DYNALOADER_BOOTSTRAP
PUSHMARK(sp);
XPUSHp("DynaLoader",strlen("DynaLoader"));
PUTBACK;
boot_DynaLoader(aTHX_ NULL);
SPAGAIN;
#endif
FREETMPS;
/* end bootstrapping code */
}
static void
dl_init(pTHX)
{
char *file = __FILE__;
dTARG;
djSP;
/* Dynamicboot strapping code*/
SAVETMPS;
targ=sv_newmortal();
FREETMPS;
/* end Dynamic bootstrapping code */
}
The only gripe I have about TNT is that it doesnt do logfiles - although, its simple enough to save a chat buffer manually. But, I spoke with a developer and he says logfiles are in the works, and I may add that functionality myself if I learn some more lisp.
Ah, isn't it great to never leave your text editor? See vi or vim try to do this! Join the Church of Emacs[?]
Funny thing is, the wonderful UNT network people were only blocking connections that were coming in on 2 ports - 21 and 23 (ftp and telnet, fyi). Thats all. Nothing else. Um, guys, maybe thats not too bright. Solution? Just run the services on another port...not too tough, just add a few lines to
PCs and consoles are becoming one and the same, to the point that they're even going to be capable of running the same software. We've seen lots of console emulators for the PC...how long is it going to be before PC emulators for our favorite console systems start popping up?
:)
And of course, somebody will _have_ to port Linux to it, and then add on some better hardware and then.....oh, hey, look, its a low-end PC with a TV instead of a monitor!
Nothing like reinventing the WebTV
This stuff is bound to get some negative publicity...people think of explosives, and of course weaponry is one of the first things that comes to mind. Terrorist bombings are always eaten up and blown out of proportion (haha, punny) by the news, and the general public gets paranoid about anything that they don't understand...it's not as if this stuff is going to be freely available at drug stores.
It would probably be better if some stuff never made it to big news, and this is probably one of those things.