Older blog entries for lindsey (starting at number 7)

5 Apr 2002 (updated 5 Apr 2002 at 02:20 UTC) »
cmiller is gaining wide fame around here. Some sort of script. I'm proud to say that I knew him when he was first introduced to a real user interface:

From: Chad <chadmill@valdosta.peachnet.edu>
Date: Sun, 22 Oct 1995 22:51:03 -0400 (EDT)
To: "Mark R. Lindsey" <mrlindse@valdosta.peachnet.edu>
Subject: bash

Mark,
Hey--I set up bash as my shell (well--kinda. This is in my .login:
"bash -i ; logout" . Pretty lame, huh?).

whytheluckystiff

mentions that PHP seems like toy coding; I've had the same thought. In fact, at ApacheCon a couple of years ago, it appeared to me that the PHP programmers were the kids, and the Java programmers were the adults.

Oh, and speaking of interpreted code -- isn't it fair to say that all code on your machine is interpreted? Granted -- it's not interpreted by a software interpretor -- but what particular elegance is provided by that? It speaks more to the weakness of hardware engineers than to the strength of computer scientists.

(I laughed after I wrote that.)

jcv and I have experienced significant pain as PHP applications grow. Sure, you can code in anything if the you're willing to make and follow all of your own rules (parameter passing, memory management, return conventions, data representations, mutual exclusion, etc.). We abandoned PHP for Java.

I guess that's all there is

I'm realizing finally that Unix seems to be the reigning King of Operating Systems that is actually used widely.

I remember having thoughts as a kid, that real computer folks couldn't possible use MS-DOS, which was the only thing available at the time. It was fairly obvious that the popular-culture myth of the mainframe wasn't running DOS.

I got into Unix when I accidently got a SunOS account on the local college's minicomputer, and I knew right off that Unix was Good Stuff. I played with it throughout my teenage years. I remember thinking that I wanted to be knowledgable about Unix by the time that I went to school there.

But I kinda always thought that there was something better; after all, do supercomputers run Unix? Is egrep or vi involved in the launching of missiles?

I'm in an Operating Systems course now, and even though there are lots of research ideas and halves of a real OS here and there, Unix is still the hottest thing going. And, in fact, the SGI Origin supercomputer in the department runs a Unix.

3 Apr 2002 (updated 3 Apr 2002 at 15:42 UTC) »
In Praise of Programming

I've known several smart people whose only programming experience came from doing CS course assignments who said that they really didn't enjoy doing programming.

Programming is building gadgets -- no, more than building gadgets -- when it's done right, programming is building gadgets and connecting them to other gadgets then using those conglomerated gadgets to build larger, more magnificent gadgets! Programming is a series of puzzles to be solved, of aesthetic design decisions, of creating spaces, of tradeoffs and balances, of pursuasive conversation, of architecture and re-architecture, of thousands of tiny discoveries. Every useful program gives its author a chance to pursue greatness, and to inflict some miniscule but absolutely perfect order on the decaying universe.

3 Apr 2002 (updated 3 Apr 2002 at 12:34 UTC) »

There appears to be a hierarchy of evidence for a scientific thesis: analysis, simulation, and experimentation.

  • Analysis usually comes in the form of theoretical, mathematical-style modelling and proofs. The academics that I'm around seem to consider analysis to be an extremely-strong form of evidence; i.e., if you can prove it analytically, then it's gotta be true. Analysis lets you make those nice, smooth graphs.

  • Simulation seems to be running programs which implement an analytical models which transform the system state as the model predicts it would through time. Simulation appears to be useful, but it's not always highly respected. For example, this crowd distrusts the popular ns-2 network simulator for many types of network experiments, because it predicts behaviors which don't happen.

  • Experimentation is everybody's favorite technique for giving evidence, and it's particularly popular here for demonstrating properties of networks. Experimentation lets you test something new (e.g., a proposed active queue-management algorithm for routers) or something existing (e.g., the end-to-end behavior of traffic through Internet paths). Empirical graphs are jagged and bumpy, with spikes and dips caused by complicated and hidden real-world complexities.

Analysis is considered extremely strong because it uses formal proof techniques, but I don't really find it convincing for two reasons: (a) mathematical/theoretical-types always seem to oversimplify their model in favor of elegance and beauty instead of reality; (b) it's too easy to convince a human of something that it wants to believe. For example, if you've ever written a nontrivial program, you probably believed that it worked long before experimentation would support the theory that it actually worked.

Proofs are `strong' only because everyone wants to believe that they're strong. But there are numerous cases of published proofs standing for years, then being shown to be flawed. (E.g., some of the fundamental theorems of Real-Time Systems theory were published by Liu and Layland in 1973, but some of the proofs in it were shown to be flawed in the late 1990's.)

Donald Knuth's famous quote hilights the tension between analysis and reality:

Be careful about using the following code -- I've only proven that it works, I haven't tested it.

So it appears that the chief purpose of analysis is to simplify the life of the would-be scientist.

Date: Sat, 30 Mar 2002 14:18:28 -0500 (EST)
From: Mark R. Lindsey <lindsey@cs>
To: webgain.edu@webgain.com
Subject: JavaCC license

Hello,

I'm a graduate student in Computer Science at the University of North Carolina at Chapel Hill.

I'm planning to use JavaCC for a project, but I noticed that section 13, "Export Law.", of the license agreement for JavaCC includes the statement that

You agree and certify that neither the Software nor any direct product thereof [...] will be acquired, shipped, transferred or re-exported, directly or indirectly, to a national of [...] People's Republic of China, [...] People's Republic of Vietnam [...]
( http://www.webgain.com/java_cc_web_sla.html)

Some of my classmates, who are also working on this project, are nationals of China, and one of my lab mates, Long, is from Vietnam. Since we're not planning to retain IP rights to this work, I normally would distribute the source code for it freely via AFS volumes and web pages. But with this restriction on the JavaCC license, it sounds like I'm going to need to ensure that the many of the International students in my department don't get access to it.

I've seen similar restrictions on encryption software, but never on a lexer/parser generator.

Am I interpreting this stipulation properly? If so, then I can just store it in AFS, and setup an Access Control List that includes students and faculty from the US and its allies, and allow only them to access it. Or just list the students and faculty from the countries in the list, and deny them access to it.

Thanks!

---
Mark R. Lindsey
UNC-CH Computer Science

27 Mar 2002 (updated 17 Dec 2003 at 03:37 UTC) »

One of the primary functions of school, imho, is to provide a motivation to do interesting things now. For example: there are oodles of interesting papers out there, but I normally wouldn't read so many of them at the moment if I weren't given some sort of motivation to do so.

20 Mar 2002 (updated 20 Mar 2002 at 21:06 UTC) »

johnchristopher: You're certifiable.

johnchristopher: WHat answers doesn't it have?

markrandalllindsey: doesn't what have?

markrandalllindsey: Oh, Academic CS.

markrandalllindsey: It doesn't have answers to any problem which is not of interest to an academic researcher.

markrandalllindsey: Ooh, nifty. I get a blue box.

markrandalllindsey: So, for example, if there doesn't happen to be an academic who thinks that the particular configuration and operation of hundreds of programs spread across tens of machines is an interesting research problem, then it's just left to the engineering types to figure it out on their own.

johnchristopher: Yeah. I s'pse that's true.

markrandalllindsey: But if an academic thinks it's interesting to (my favorite example) develop scheduling algorithms that really only work when context switching is free and individual instructions can be sliced in half, then that will get researched.

johnchristopher: But, as an academic, you can eventually decide what's interesting for yoursefl.

markrandalllindsey: OTOH, engineering CS (in my humble experience) doesn't have all of the answers, either. Research efforts can be cut short by external deadlines so that real solutions are never quite found or tested, industry sorts can tend to believe claims a little to readily, and can resort to brute force too readily.

markrandalllindsey: And that's the weird, sticky part about academic CS: I can't really blame anyone for working on things that I find uninteresting and which may be provably impractical. It's each person's prerogative to work on whatever seems nifty to them.

johnchristopher: Very true.

markrandalllindsey: But I think sometime that the CS types that I'm aroudn are trying to imagine what the problems really are without any actual knowledge of what the problems are, and that seems unfortunate.

markrandalllindsey: Of course, I'm not at an engineering or technical institution, so it stands to reason that the bent here may be more theoretical. Or perhaps it's not more theoretical, and my first encounter with throw-hardware-to-the-wind theoreticians has just been so startling.

johnchristopher: You disillusioned?

markrandalllindsey: Not really, because I see a gigantic value in the sort of extremely-careful, scientific approach that's taken by the people here (my neck of the academic woods) that I'd never really seen before.

markrandalllindsey: So my goal here is to be as good an academic as I can be for a little while, and suck all of the good stuff out that I can, and then go and be a better engineer than I would have been otherwise.

johnchristopher: That would be a plan.

markrandalllindsey: It has all of the properties of a plan!

johnchristopher: Yup.

markrandalllindsey: this conversation has been added to my diary, btw.

johnchristopher: Oh, great, now I look like a bumbling sounding board AI program.

markrandalllindsey: Well, it is my diary.

19 Mar 2002 (updated 19 Mar 2002 at 02:42 UTC) »

Academic Computer Science doesn't have all of the answers.

16 Mar 2002 (updated 16 Mar 2002 at 15:39 UTC) »

I'm currently on break from school. I've realized that I'm the only one in my little circle who seems to be taking spring break very seriously.

This further confirms one of my theories: being a grad student is really being an entry-level academic. Once you graduate with a PhD, you're a real scholar. I.e., graduate school is to Academe what floor-sweeping duties are to a woodworking shop.

So, since graduate life is just a low-end job, spring break doesn't make too much sense. Everyone has their ongoing RA duties, class lecture preparation and grading, their perpetual PhD projects, and the unremitting flow of papers to read. If you take a break it'll all be there waiting, but compounded with another week's pressure to finish school.

I'm glad to have some time away, though. I've been able to catch up on some reading and reflect a bit on this semester's curriculum.

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!