Older blog entries for ahosey (starting at number 27)

17 Nov 2000 (updated 17 Nov 2000 at 06:40 UTC) »
WARNING for you academic Advos, sysadmin geek talk below Skip it

Waldo: put Windows on first, then Redhat, and be sure to tell Redhat's LILO setup screen about your Windows partition. (I think the newer Redhats actively look for Windows installs on the disk.) If the installer sees the Windows partition it should set you up with a LILO stanza that will do the job. If for some reason you must have Redhat on first, the Windows install will kill LILO when it installs its own MBR. Boot from a rescue disk, mount the Linux partition, and rerun lilo with the "-r" flag.

Or wait, are you dealing with multiple hard drives? Ah, that is sufficiently more complex. Contact me.

cdent: when the restlessness overcomes the intertia, I shall go. The vaguely dissatisfied rumblings I occasionally air out are the seeds of that restlessness. And the hostile takeover may be closer than you think...

Kernels are fairly low level pieces of code, in which the common code paths are traversed a lot. There is probably plenty of justification there for micro-optimization. As you move up the "code ladder" i.e. kernel, libraries, servers, apps[1] - optimization gets less emphasis. It seems to be an article of faith among app programmers that "the hardware is fast enough." Visual Basic perhaps being the modern culmination of this attitude. I recently read Software Runaways by Robert Glass and some of the articles collected there suggest that faith is misplaced. Software written with 4GLs took minutes to do what the old "antiquated" software did in seconds. Not that 4GLs are inherently bad, but in these cases they were misapplied.

Maybe I will invest in some Knuth books for my collection, that should get me back into algorithms and math. (Not that Knuth, the other Knuth.) I still have my Lewis and Denenberg book on data structures (excellent book) and sometimes I pull it out and read some of the proofs or the algorithms. One problem with college is that the students, willing as they may be, usually don't have the perspective to really grok the lesson. Now that I've been doing this for a few years the books make a lot more sense.

I did a Google search for "discrete structures" and found this page with some interesting maxims. My favorite is this one because, oddly enough, it is under the heading "General Operating Principles"

1.There is no general methodology for solving a problem.


[1] Strictly speaking, servers are applications but are a special case in my little taxonomy because they mostly interact with other software, not people, so their performance demands are somewhere between libraries and so-called end-user apps.

barryp: Logarithms... it's starting to come back to me now. Maybe I'm not just stupid, maybe I'm just out of practice. I'm reading back thru schoen's diary now to try and limber my brain.

Using the integer coefficient vs. the float coefficient would be a decision of "fast fit" vs. "best fit". Integer multiplication would be a little faster but you'd waste a few more bytes in some circumstances. Space vs. time, the classic tradeoff in computerized problem solving. Of course that decision is a "micro-optimization" anyway - unless n is really freaking big - and micro-optimizations are mostly frowned upon these days. On the other hand Musashi said that the true tests of skill are "the small, fine works."

I've found that most of the programming one does as a sysadmin doesn't strain the "advanced" fields of programming theory and it doesnt't require any math at all. There's a lot of "glue" programming, which often requires one to be clever but not very deep. And in my case I do a lot of patches to free software, which makes me feel good but again these are very small hacks. There is one large piece of software done for the company in which I am applying increasingly sophisticated techniques. And it's working out well which makes me feel good about being able to use that knowledge, but I'd like to do that more often than this job really requires. I mean I could structure my solutions in ways that would require a lot of custom code but that's hardly good business. It's better in the long run to take established (free software) tools, shim them together with a little code where needed, and set it loose. That's why I love well structured modular softwares (like Apache) cause they readily lend themselves to that sort of approach.

Wow. Three top notch reponses to my little theorem. Props to barryp, Pseudonym, and especially schoen. In case anyone was wondering I wasn't trying to get you to do my homework. I haven't done homework in years... perhaps if I were doing homework my math wouldn't be so rusty.

I took a lot of math classes in college, some calculus, and statistics, and discrete math thru the computer science department. I did well in most of them, but when it comes to real world application my math skills seem so feeble. It's like I know enough math to want to prove my ideas but not enough math to actually get the job done.

For instance, how did you guys know log(256^n) was the way to get the maximum number of symbols in an encoding? In my first attempts at a proof I had a function maxlength(n) but I didn't know how to break that function into mathematical elements to reach a QED.

14 Nov 2000 (updated 14 Nov 2000 at 02:21 UTC) »

Assume 8-bit bytes and strings composed of 1 byte per character. For an unsigned integer stored in n bytes prove:

(a) 3n bytes will always provide enough space to hold the decimal string representation of the integer.

(b) 3 is the smallest coefficient to provide enough storage for all values of n.

I know this to be true but proving (a) is harder than I thought.

9 Nov 2000 (updated 9 Nov 2000 at 19:33 UTC) »
ajv: I totally agree with your ideas about the "ramp up" time for a free software contributor, and that good architectures reduce ramp up time and make contributing more enjoyable, which vitalizes the project. For example I was able to make my first modifications to sawfish in less than an hour from the first time I looked at the source code.

I have, tucked away, an unfinished essay on pluggable scriptable software, with about half of it devoted to the social (or survival) advantages of such software in the free software world. I don't claim credit for the seed of the idea, I was just trying to flesh out some things that I heard Jim Blandy mention one time.

Chris keeps bugging me to post up the essay even though it's not complete. Maybe I'll do that.

Then sej said:

1) all the external documentation and design documents were no substitute for the direct reality of inspecting the architecture in a debugger. They served as a map for the territory, but were not the territory by any stretch of imagination. A large dose of experimentation, reasoning, and inter-programmer dialogue was required to build up a more detailed understanding of how things actually worked.

This is true. To return to my sawfish example, it was extremely useful to me to have sawfish-client available to examine the data structures of the running window manager, and interact with the window manager in real time and see my results either on the screen or by examining the internals of sawfish using sawfish-client. It was the excellent design of sawfish, combined with the excellent debugger/interpreter, combined with the excellent API documentation, that made working on sawfish easy and fun.

Interpreted languages usually have an advantage over compiled languages here, or at least they do if the language provides some form of eval(). eval() makes available the entire scope of the language from the debugger instead of just limited calls to API functions. This allows richer interaction with the running program.

Back in, oh... let's say the 80s, a slutty pop star was at least recognized as a slutty pop star. They were millionaires, they were successful and popular, they were even admired by many, but they were acknowledged as a sex symbol with all the positive and negative connotations thereof.

But in today's world we have Brittany Spears and Christina Aguilera being touted as positive role models for young girls. What the fuck is going on here? Yeah, I know this has already been debated in many circles. What I find interesting/disturbing, the point I'm trying to make here, is that 15, maybe even 10 years ago, there wouldn't have been a debate, they would have been teenage sex symbols, period. Something has changed in our culture since then, and maybe not for the better.

There's something I want to know, vis a vis the whole GNOME/KDE debate: There's more than one free software kernel out there. Why aren't people bitching about that? I don't see anyone saying the FreeBSD guys should shut down and work on Linux. Or the Linux guys should shut down and work on FreeBSD. I bet there are people out there that think that, but my point is that I'm not seeing those people because the kernel project dichotomy is not blown out of proportion like the desktop seperation is. What gives with that?

We rolled out new web services, replacing one machine with three machines. I'm now convinced there are no web problems which can't be solved with mod_rewrite.

I've set up sawfish so a giant gong sounds when a new window is opened. You should hear it when I restart a session and 20 windows start up. I am amused. Chris is appalled.

Do you ever do that thing where you talking to someone about a problem or an idea, and as you bounce around the ideas your brain kind of switches gears and the solution starts to come out of your mouth and you're thinking as fast as you're talking and it feels like you're going too fast but it doesn't matter because you know that everything you're saying is exactly right anyway.

I find that exhilarating.

18 older entries...

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!