February 2004

Party reflections

February 1, 2004 - Categories: -Uncategorized

Had Diane, Dominique, Jerome, Marcelle, Martin, Peppy and Sean over
for dinner and conversation at our house. Tons of fun, although the
conversation was sometimes uncomfortably risque. My sister dominated
the conversation, telling many stories and focusing it on things like
alcohol and school escapades.

I suppose I’m more of a quiet person. I was thinking of having a chess
game and a Scrabble game run simultaneously, although Taboo or Jenga
would also have been acceptable. That said, I learned a lot about
people today, so it also worked out.

Ragnarok Online in Linux

February 1, 2004 - Categories: -Uncategorized

Zak said:

Ragnarok Online…

… in GNU/Linux…

… does work ;)

Proof? Here’s a screenshot:

http://zakame.spunge.org/shots/Screenshot-Ragnarok.png

I did this using wine-cvs. The game is installed in my winxp partition,
so I really didn’t have to do some painful (re)installs… It didn’t
really need much sweat, just a lot of download time (I’m still on a 56k
modem, and worse yet, on a softmodem… and its 2004 :( As for getting
the game itself, it wasn’t a problem: the level-up guys were literally
throwing it away at the local mall, and guess what, I found it in a
trash bin… ;)

There are still some problems, though. Running it in fullscreen was
good, except that you can’t type input on the login forms or on the
chatbox. Also, there are some random glitches with the graphics, missing
sprites and general window corruption. I’m guessing some glitches on
wine’s DirectDraw components, so I’m going to try to fix it… :)

To get this feat working on your own box, here’s a mini-howto:

0x0	Get the latest driver modules for your video card: for my nvidia
	GeForce2 MX, it was a one-liner: apt-get -t testing -u install
	nvidia-kernel-src nvidia-glx-src, then a quick compile ;D

0x1	Get wine: apt-get -t testing -u install wine ought to be enough,
	though getting wine-cvs might be more worthwhile, especially if
	you're goin' to play with wine daily, like me.

0x2	Setup wine: apt-get winesetup, then winesetup, that should do.

0x3	Install RO, or if you're on dual boot, run RO: my winxp
	partition is on /mnt/winxp, so I just do a (cd
	/mnt/winxp/Program\ Files/Gravity/RagnarokOnline && wine
	Ragnarok.exe), and it just works, assuming you installed RO on
	default paths.

HTH, fellow RO addicts. Questions? Comments? Post away ;) I’m off
playing…

Zakame +)

E-Mail from Zak B. Elep

Jerome topped the JITSE!

February 2, 2004 - Categories: -Uncategorized

(Unofficially) topped the exams :-P. Got the word from
the JITSE trainor Amil’s talking to re training.
Amil’s 3rd, so we’re figuring Neil’s 2nd.

Nifty. Respect++. ;)

E-Mail from Jerome Punzalan

Old computers

February 2, 2004 - Categories: -Uncategorized

http://www.old-computers.com

E-Mail from Dominique Cimafranca

More geek personality tests

February 2, 2004 - Categories: -Uncategorized

http://www.innergeek.us/geek.html

Miguel Paraz on Livejournal

February 2, 2004 - Categories: -Uncategorized

Miguel Paraz has a new blog on
http://www.livejournal.com/users/mparaz/ .
http://www.mparaz.com/wordpress/ still has some notes.

Dealing with too much magic

February 3, 2004 - Categories: -Uncategorized

http://lsd.student.utwente.nl/jicarilla/TooMuchMagic

E-Mail from Miguel A. Paraz

Mock chili

February 3, 2004 - Categories: -Uncategorized

I stuffed myself silly on baked+fried beans and ground beef. It was a
pretty good meal, although a little heavy on the protein side.

Ingredients for one serving:

- 1 whole onion (adjust)
- 4 cloves garlic (adjust)
- 1/8 kg ground beef
- 200g can of pork and beans, somewhat drained
- salt and pepper

To prepare:

  1. Chop the onions. Crush and chop the garlic. Open the can of beans.
  2. Prepare the pan over medium heat. Put a pat of butter in it. When the butter melts and starts sizzling, drop in the onions and the garlic. Stir so that it doesn’t burn. The butter will help the heat distribute evenly.
  3. After the onions and garlic change color (you can wait for them to be slightly brown, if you want), put in the beef. Add lots of salt and pepper.
  4. Brown the beef, breaking up the chunks and stirring briskly.
  5. (optional) After the beef has browned, you can drain it to get rid of some fat. (If you’re using an electric stove, you can turn the heat off.)
  6. Pour the beans into the pan. Stir until you’re happy.

I seem to have gotten the hang of onions and garlic. Whee! That is: I
get a significant color change that’s not just caused by the butter,
and the onion bits become soft and sweet.

Tomorrow lunch: toasted pita bread with beef, onions and garlic.

New story: A Fairy Tale

February 4, 2004 - Categories: -Uncategorized

I forced myself to write today (last night?), and here is the result:
A Fairy Tale. Like many things, this story will
mean different things to different people. It has some meaning, but
should not be taken as definitive. The true test of it as literature
would be if complete strangers can understand it, but what complete
stranger reads my ShortStories, anyway?

It doesn’t feel very fairy-tale-ish. Perhaps I need to make the plot
formulaic. ;)

SIGGRAPH

February 4, 2004 - Categories: -Uncategorized
Introductions

- Father Rene Javellana, director of Fine Arts program in Ateneo
- Richi Lerma
- Glen from the office of international programs
- Dondon, ASTI/DOST
- Fatima Lasay, UP College of Fine Arts, independent
- Norelyn Babiera, private sector, organized trade shows and exhibitions. one of the events was the Graphic Expo. Industry professionals in the graphic design sector and the academe. That’s how I met Fats. Familiar with SIGGRAPH.
- Joel de Leon, assistant curator of the Ateneo Art Gallery
- Sammy Villareal, iAteneo president.
- Russell Santos, 4 BS CS. Academe officer of CompSAt
- Sandra Lovenia, CS department OIC
- Eric Vidal, teaches CG at the department
- me
- Martin Gomez, External VP of CompSAt
- Luis Sarmenta, director of AJWCC and a whole bunch of senior theses students

Brief background

Fatima Lasay

ACM SIGGRAPH is a special interest group in computer graphics. Since
1974. It was founded to promote the generation and dissemination of
interactive technologies. The parent organization is ACM. ACM is the
world’s first educational and scientific community. Fats wrote to them
in 1995 in the hopes of establishing a professional or student chapter
in the Philippines, which unfortunately never materialized. Some
people from SIGGRAPH in Singapore contacted her. The senior delegation
intended to visit SE Asia, so she’s coordinating in Manila. Last time,
actually, they had plans, but they backed out because of SARS. They’ve
already booked the tickets. Also, a reminder, the SIGGRAPH meeting is
not a UP initiative – I’m just coordinating the meeting so that they
meet the right people. Practictioners and developers in the field.

Particulars of the visit

Communication from Lee Young Tsui from Nanyang University. 4 people in
the delegation. President of SIGGRAPH, Alain Chesnais (find out right
pron), VP Alan Chalmers, and YT Lee. The delegation will meet its own
costs for travel and accommodation, purpose: connect with local
activists and determine level in region and how SIGGRAPH can help.

For SIGGRAPH, this is a fact-finding mission and they expect a very
exploratory discussion – round-table type. They want to meet with
people responsible for development in the field. This might also be
an opportunity for a technical seminar before or after the meeting.
We have three seminars; pick one or two. They also hope to hear some
local works.

Given the time constraints, it would be good for the delegation to
stay at one place for one day, then move to Makati in preparation for
the trip. Moderate refreshments will be enough. Informal setting. Key
objective: interact. (Yay!)

In coordinating this meeting, I asked several institutions to host. I
have asked UP, Lasalle, and Ateneo. Ateneo responded fastest, so it
well be held there. I’m very pleased that we have the OIP to help out
hosting the delegation.

Several objectives:

- bringing the right people together. How are we going to strategize

the interest of SIGGRAPH in Asia and the Philippines? I want this
relationship to be mutually beneficial. How do we put these
strategies into the presentations we are going to deliver? What
kinds of presentations should we deliver? What questions and issues
are we going to raise? For example, the people from Indonesia want
to raise the issue of the price of software. Of course, some of us
want to use open source software. We try to balance these things.

- I like the possibility also that we are going to forge renewed

relationships between our different organizations. A lot more
exciting results from this meeting beyond just the SIGGRAPH.

Before we go to the itinerary, are there any questions?

Luis: So you want to talk about the strategy now?

Well, if we can do that now. Of course, we can also do that over
e-mail. Important to look at the itinerary.

Martin: Is this meeting open to the public?

Yes it is.

Martin: Can the Ching Tan Room accommodate this?

Glen: ~ 80 people.

Martin: We might as well promote it. When do we start promoting?

Richi: After this meeting.

Fatima: Three choices for facilities – here, Artspeak, and Norelyn’s
in Makati.

Delegation there at Artspeak. The one at Ching Tan Room will be a
little more intimate, not as open to the public. We’ll decide when we
look at the itinerary.

Rich: What exactly will we doing in terms of the art of it? Bit of a
background on our interest in this project: none of us here in the
gallery are experts. First immersion in the field was actually
through Fats. New Media works last year, decode. The online component
is still ongoing. The online exhibition space of the museum. Our
interest really is having artists have course to utilizing new tools
in art-making and opening up new possibilities for Filipino
artists to compete internationally for the art they produce. Somehow
we want to get that in.

SIGGRAPH actually has a travelling art show. They have the annual
conference, small conferences, chapters around the world,
publications, awards, contests… They also provide for an exchange
of information between the organization and decision-makers in
government. Crucial that we have the arts in the meeting for
clarification before we go to the itinerary.

Proposed itinerary/programme for deliberation

Arrival of SIGGRAPH is 8:30PM at NAIA. Ateneo will pick them up.

(Late arrivals from CSB between Villareal and Norelyn.)

Vanessa Fuente, CSB, Multimedia Arts department.
Brya from faculty CSB, multimedia arts. Graphics side also.

I will take care of expenses incurred during the transfer. No
problem with the rooms. Anything for clarification…? They will be
billeted at Alingal Hall.

Glen: Two of the rooms will have dual bathrooms, but the other has common.
Is that okay?

No problem. (rent-a-car joke.)

February 20, Friday, is the round-table discussion proper at the
Ching Tan Room at JGSOM. Walking distance, yes.

Richi: We might need you to come in the day before to see if the room
layout is okay.

10 AM to 2:30 PM right? Is there any chance that can be extended?

Richi: No, sorry, it’s also used as a classroom. We can set it up in
the morning and they won’t touch it.

Martin: Would Escaler be too big for this?

Richi: I don’t know.

Martin: There’s a real lecture hall.

Sacha: It’s kinda large.

We begin at 10 AM. 10:15, Welcome remarks.

Richi: We’re trying to ask the academic vice president.

Glen: She’s willing to host one of the lunches.

Richi: Commitment to lunch or dinner?

Martin: Father Ben?

Richi: we’ll see.

1030. Introductions by myself. Presentation from SIGGRAPH.

And then 1055 a presentation by Norelyn on the graphic expo.

Norelyn: 20 minutes is actually already quite long. Clarify a few
things. Graphic industry is quite diverse: applications could be
print, web publishing, multimedia and animation. Being as diverse as
that, we don’t really have certain data or scientific data where you
know how many graphic designers are in the field. Considering digital
photography. There’s no data on practicing professionals in the
Philippines and how much commercial volume is the industry running
over an annual rate. The association of advertising suppliers of the
philippines is just catering to one group. animation, multimedia
production houses, commercials on tv. Of course we have the print
side, the large-format billboards that you see all over EDSA,
print-ads in the newspapers. I’m also a member of ASAP and I can’t
see any scientific data on industry volume in terms of pesos. Well,
since I’m the only one doing a very very mixed trade show catering to
graphics professionals. Dent GraphicExpo made, contribution to
industry over 10 years. Reason why she put her resources in this
trade show for the past 10 years and how they had been supported by
other organizations. The Graphic Expo is also supported by the
vendors like HP, Epson, Sony, and all others in the industry from
print to web publishing, even software, and of course CSB has always
been a partner to us. I will present Graphic Expo, the only trade
show for graphics in the country, but maybe 10 minutes is okay.

Martin: In presenting the industry, also professional organizations?

Norelyn: Yes, as far as I can. Pockets all over the country. EARP,
iDN Club Philippines. Outdoor advertising association of the
Philippines. PhilMUG. Philweavers. ACPI

Martin: Thanks for that input. I’m the moderator of Philweavers, so I
can encourage more people to contribute. Motion graphics. SIGGRAPH
might be very interested in that – interactive media as well. Thanks.

(Father Rene Javellana, director of Fine Arts program in Ateneo)

Important thing: How active the industry is. Details – a visit to
facilities, meeting with artists in the Philippines – following day,
when they go to Makati.

Luis: How active is the industry here? A lot of it is going into
advertising, media. Is this local?

Norelyn: Graphic design – print, motion graphics (multimedia,
animation). Professionals are also involved in outsourcing. Key
sector of DTI. Animation sector for outsourcing jobs for film and
other things here in the Philippines. The mission now for the
Animation Council of the Philippines – they’re in touch with DTI and
they’re one of the primary sectors. File transmissions over the
Internet. Digital network. Even before the advent of technology,
several production houses are doing cel animation. When they do cel
animation, they do a lot of cel animation sent to Japan. Scanned and
digitized in Japan. 80s, cel animation, now, migrated to digital.
Price of the software is another question. The thing now is
outsourcing, but even before the advent of digital technology -
utilized Philippine creative cartoonists for Disney and anime and
several others. I want the delegation to see what Roadrunner is
doing, UNITEL…

Also, if there are specific issues in the industry, maybe we can get
them to help out. Maybe that would be our chance also to present the
issue.

Luis: I have a couple of questions following up on this. Do you have
a sense of… So, we’re doing a lot of outsourcing. Do you have a
sense of how the rest of the world sees the Philippines in terms of
outsourcing? I wonder if part of our strategy should be promoting our
artists. How do they perceive the Philippines?

Norelyn: It’s always being promoted by the government. Their clients
have really, really taken a look at the Filipino creativity and trying
to balance the work ethic. Deadlines… Artistic temperament. No
formal discipline. Weak points I’d heard from them. Aptitude is there.

Luis: So it’s well-known. The reason I

Norelyn: Our software proficiency has to be really beefed up.

Luis: Is that something we’re lacking right now?

Norelyn: Not really. Certification institutes. Photoshop, Illustrator,
Indesign, Macromedia certification… for very very specific software.
The upgrades for these are just a matter of months. We were only at 7
and now there’s 8. That was just 6 months ago. Industry professionals
have to take new certifications for the new versions. Our creativity
has to be enhanced by the digital tools – software proficiency. There
are so many training institutes handling that, especially in the
graphics arts industry. Prices are quite steep in terms of
certification. I only do it twice a year. PCCI. Helps people in the
advertising industry to come for night classes for refresher courses
and upgrades. We are very much abreast with the worldwide industry.

Luis: Are our graphic artists well-versed in all the new… like
Maya…

Norelyn: Yes. Alias, Maya… Their applications are actually more
geared toward TV commercials. Very specific specialization. People who
are doing TV commercials… There has to be a reengineering. I’m glad
CSB provides software for its students and trains it in very very
specific software. They’re preparing their students for the industry,
and that’s very good. That’s a good thing. On my side, in the Graphic
Expo, I do several competitions, and we always invite several levels.
Buoyant industry.

Luis: One last thing. I bring up these things because I was in
Singapore two weeks ago and my personal area of research is in grid
computing, which is doing geographically distributed computation. I
was in Singapore talking to some people there. Sun Microsystems.
They’re trying to promote grid computing. How can we promote it in the
Philippines? In other countries, pharmaceutical research, etc. Their
idea was (they don’t know how to pursue it) to take advantage of the
Filipino’s creativity when it comes to graphical stuff. They were
suggesting something like… Singapore has all the computational
resources, but lacked the talent. Do the creative stuff in the
Philippines then ship the data to Singapore where they can crunch the
numbers. ASEAN multimedia grid? Outsourcing for Hollywood.
Interesting idea. If well-known for talent, maybe we can do that.
From the computational side, there also is… A lot of these things
already use grid computing, render farms. Anyway, that’s an idea that
I just ran into a couple of weeks ago. I think this is something that
SIGGRAPH will find interesting. I’m not sure.

(Sacha excuses herself.)

E-Mail from rlerma@ateneo.edu

Debconf4

February 4, 2004 - Categories: -Uncategorized

Debconf4 will be held in Brazil from 2004.05.26 to 2004.06.02. I wish
I could go. Hey, maybe I can!

E-Mail from Pablo Lorenzzoni

New comic strip

February 5, 2004 - Categories: -Uncategorized

According to fsbot, the bot on #emacs:

reeality is a new dilbertesq/UFesq comic strip: http://www.ee.ryerson.ca/~elf/reeality

Reading a book in Emacspeak

February 5, 2004 - Categories: emacs

From Nath on the emacspeak mailing list:

You can try C-e n which will read you the text until you stop the speech
by pressing C-e s but the cursor will stay at the position it was just
before you run the command. Sorry I don’t know the command which will
cause the cursor to move in the same time the text is read.

E-Mail from Nath

coke made a background

February 5, 2004 - Categories: -Uncategorized

coke made a desktop background using one
of my pictures. Here’s the thumbnail:

../pics/sacha_of_borg_thumb.png

If you want to grab the picture, get it from
http://sacha.free.net.ph/notebook/pics/sacha_of_borg.png (~700k,
fairly big).

Eric’s testimonial

February 5, 2004 - Categories: -Uncategorized

I know a hacker named Eric,
Who is certainly not geek generic
    He is better than me
    At music and C
And in graphics and games he’s demonic.

Checking for unmatched parentheses

February 5, 2004 - Categories: -Uncategorized
M-x check-parens

Internationalization/localization in Filipino

February 5, 2004 - Categories: -Uncategorized

From Mike S. Lacanilao on PLUG:

this only reminds me that we filipino dont really like to have or at
least to see a tagalized version of international apps..
isn’t good to have this recognition for our country..

I think it’s nice, like the way I think it’s nice that cellphones come
with Filipino prompts and Filipino sections in their manuals. I know a
number of people who set their phones to the Filipino interface. I
think it’s nice to have Filipino as a choice on ATMs. I think it’s
nice that train announcements are done in English and Filipino.

But personally, I prefer the English terms because that’s what I
started out with, at least for technical things. I use a cellphone,
not a selpon. I’d rather see “Settings saved.” than “Na-save na ang
settings mo.” or something like that. <shrug>

I’m not against the Filipino language. If having localized interfaces
means that more people will feel comfortable on the Net, then well and
good.

Bot implants

February 5, 2004 - Categories: -Uncategorized

Freaked someone out with my data collection capabilities. ;)

  sachac: you know so much about me!
  shapr: Whoops. ;) EmacsChannelDemographics, plus #emacs
  shapr: I have notes on other people too.
 * sachac laughs.
  how did you know I'm both a Finnish and Swedish resident?
 * shapr is impressed.
  You must have a superior memory.
  shapr: BBDB. ;)
  wow
  shapr: I also know you've played around with IPv6...
  shapr: ... #symbian #widian #twisted @#emacs #haskell #orkut, last time
          I peeked...
 * sachac laughs.
  Data collection.  I can delete it from my BBDB if you
          want, but it's kinda cute knowing this trivia.
  I should learn how to use BBDB
  how do you know that? ;-)
 * shapr can guess
  impressive.
  no, I don't mind at all.
  It's nice to know someone outside my direct family is interested enough
         to record that info about me :-)
 * shapr feels ego swell
  anyways,
  last I remember (without BBDB) you were doing a graduate degree, is that
         still true?
  has the FSF lured you away from your secret tropical hideaway to the land
         of big money for open source coders?
 * shapr googles for sachac
  bbdb?
  big brother data base
  shapr: Actually, this started from our conversation about Dvorak in
          #emacs (don't remember when, though) when we noticed the high proportion
          of Dvorak users among Emacs users.
  it's written in elisp
  o_O?
  Peacimowen: A contact manager for Emacs.
  you know emacs?
  I know of emacs
  Peacimowen: I've also used it to simulate bot-like behavior, though.
          
  shapr: I took a few units toward an MA Education after finishing my BS
          CS, but as CS Ed isn't really a research area here, I'm eyeing schools
          in Australia (very active in CS Ed conferences).
  sachac: have you seen my "I am not a koala" kinesis remapping?
  shapr: ERC hooked into BBDB, so when I /whois, it captures as much
          information as I can.
  remapping originally suggested by kensanata, he of much brain.
  I've never touched emacs.. I just know it exists.
  Peacimowen: it is very powerful
  shapr: As it can, that is. No, I haven't seen your kinesis
          remapping... 
  Peacimowen: It's really cool.

Advice for social networking services

February 5, 2004 - Categories: -Uncategorized, connecting

http://www.lifewithalacrity.com/2004/02/my_advice_to_so.html

CleverCS

February 6, 2004 - Categories: -Uncategorized

From Amir on Orkut:

CleverCS is a forum for clever computer science ideas, particularly in more applied areas. The emphasis is on ideas that most people would understand without much technical expertise in the area. The ideas may come from recent publications or may merely be speculative discussions on possibly interesting new research directions.

The url is:

http://cgi.cse.unsw.edu.au/~ideas/

http://cgi.cse.unsw.edu.au/~ideas/?theme=rss

Guide to managing media and public relations in the Linux community

February 6, 2004 - Categories: -Uncategorized

http://www.tldp.org/LDP/Linux-Media-Guide/html/index.html

An excellently written general guide to media and PR. Coool.

Oops, lost notes

February 8, 2004 - Categories: -Uncategorized

Pfft! Carefully typed notes lost because I forgot to C-c C-c the
*Remember* buffer before closing my computer. The battery drained.

DevC++

February 8, 2004 - Categories: -Uncategorized

Gerald R. Generoso wrote in to say that http://www.bloodshed.net has a
simple and easy-to-use tool for programming. This is probably
Bloodshed’s DevC++, which I rather like, but don’t like as much as
Emacs. ;)

E-Mail from apache

“Geeks Put the Unsavvy on Alert: Learn or Log Off”

February 8, 2004 - Categories: -Uncategorized

With viruses such as MyDoom spreading, technophiles are chastising users
they view as wanting the benefits of digital technology while shirking from
the responsibilities that come with using it. World Wide Web Artists
Consortium President Scott Bowling writes, “It takes affirmative action on …
http://www.acm.org/technews/articles/2004-6/0206f.html#item3

E-Mail from technews@hq.acm.org

Dell blog

February 8, 2004 - Categories: -Uncategorized

http://linux.dell.com/blog

University of Canterbury

February 9, 2004 - Categories: -Uncategorized

http://www.canterbury.ac.nz/courses/postgrad/pedu.shtml

Master of Science Education – M.Sc.Ed.

The course of study for the degree comprises either
(a) six courses and two research projects or
(b) six courses and a dissertation

Candidates must have qualified for a degree in science, engineering or
technology and completed a recognised teacher training course of not
less than one year or acquired teaching experience.

The minimum period of enrolment is two years of full-time study, the
maximum is six years of part-time study.

Deadline for international applications: Tue 30 Sep

New story by JM

February 9, 2004 - Categories: -Uncategorized

http://www.mycgiserver.com/~butiki/stories/sleep.html

The Joel Test: 12 Steps to Better Code

February 9, 2004 - Categories: -Uncategorized

http://www.fogcreek.com
By Joel Spolsky

Wednesday, August 09, 2000

Have you ever heard of SEMA? It’s a fairly esoteric
system for measuring how good a software team is. No,
wait! Don’t follow that link! It will take you about
six years just to understand that stuff. So I’ve come
up with my own, highly irresponsible, sloppy test to
rate the quality of a software team. The great part
about it is that it takes about 3 minutes. With all
the time you save, you can go to medical school.

The Joel Test

   1. Do you use source control?
   2. Can you make a build in one step?
   3. Do you make daily builds?
   4. Do you have a bug database?
   5. Do you fix bugs before writing new code?
   6. Do you have an up-to-date schedule?
   7. Do you have a spec?
   8. Do programmers have quiet working conditions?
   9. Do you use the best tools money can buy?
  10. Do you have testers?
  11. Do new candidates write code during their
interview?
  12. Do you do hallway usability testing?

E-Mail from ErL

Wearable ring mouse

February 9, 2004 - Categories: -Uncategorized

Jonas Meyer on wear-hard@haven.org:

Does anyone have any experience with the Bosswave FinRing, out of
Taiwan? It’s a little mouse that you wear on your index finger like a
ring, and you operate by tilting and pressing the buttons with your
thumb. It’s wireless, and has a little usb receiver, which they claim
acts like a standard usb mouse (so you can plug it into any os that
knows about usb). The receiver looks to be about the size of a cell
phone, which I guess is a bit big, but the mouse itself seems like the
ideal wearable mouse solution. Very unobtrusive. Or you can get it
in hot pink, and have it be very obtrusive.

http://www.bosswave.com/mouse/finring/index.shtml

Anyway, if anyone knows about this, or has used one, I would
appreciate hearing about it, as I am about to plunk down $80.

I want mine in hot pink. ;)

E-Mail from Jonas Meyer

Chamberlain Fong

February 9, 2004 - Categories: -Uncategorized

spectralfft@yahoo.com

New referrers

February 9, 2004 - Categories: -Uncategorized
2004.02.01 http://www.blogcn.com/user5/robinh/main.asp
2004.02.03 http://www.javablogs.com/Welcome.jspa
2004.02.03 http://www.livejournal.com/users/quirky/friends
2004.02.03 http://www.freepgs.com/yecartes/wiki.pl
2004.02.06 http://www.geocities.com/thenonymous/home.html
2004.02.06 http://naesten.stumbleupon.com/
2004.01.27 http://www.vanillaice.net

../../sitelogs/sacha.free.net.ph-access_log.1

More thoughts

February 9, 2004 - Categories: -Uncategorized

Deleted: Lost secret key

Modeline

February 10, 2004 - Categories: -Uncategorized

Modeline “1024×600″ 51 1024 1040 1216 1328 600 600 606 626

Another one of those people =)

February 10, 2004 - Categories: -Uncategorized
... some conversation about how I'm only 20 and already a teacher ...
 sachac if you were my teacher I'd get you drunk
 houd1ni: Tough. I don't drink.
 and make funny pictures of you :)
 sachac uhm... no vice ?
 no smoke drink drugs ?
 houd1ni: Clean.
 what kind of a man are you ?
 houd1ni: Obviously you haven't researched enough about me.
 sachac I didnt research nothing about you.
 sachac I was only bored and looked at different pages.
 houd1ni: Short answer: I'm not.
 sachac you are not what ?
 houd1ni: Hmm. Actually, there's another answer to your question. I am Homo sapiens sapiens. ;b
 sachac you are confusing me
 are you homo-sexual ?
 :)
 what does homo sapiens sapiens mean ?
 sachac what is homo sapiens sapiens anyways ?
 whats this bs about homo sapiens
 :)
 uhm...
 uhmm
 noone knows what home 2 x sapiens is.
 :)
 houd1ni: You probably don't know what it's like to be one. ;)
 cmon sachac enlighten me
 Will all the Homo sapiens sapiens in this channel please raise an appendage?
 (Nothing obscene, now. =) )
 sachac cant you drop the riddles ?
 I'm a low iq guy
 power to the people
 oh yeah all the homo 2x sapiens make a club
 :)
 sachac you are alone.
 
 I guess I really am the only Homo sapiens in here.
 Oh well.
 Figured as much.
 sachac is the only homo 2 x sapiens in the world
 :)
... time passes ...
 oh man my stomach hurts..
 I hate girls.
...
 sachac you are smart. if I was a girl I'd merry you
 hehe
 I thought sachac was a girl :/
/notice darko`` Shhhh! I was having too much fun!
-darko``- ACK! Okay :)
 is not.
 he is homo sapiens sapiens
 whatever that means.

Continued on 2004.02.11

Awwww, he finally found out

February 11, 2004 - Categories: -Uncategorized
 viking667 yesterday I was very impressed w/ sachac
 *** Your new nickname is sachAway
 he is a smart dude
 I didnt expect to see smart people from .ph
 I have to admit that.
 houd1ni: mrmm? What did he say?
 now I changed my mind.
 ah nothing in particular
 oh - she, sorry.
 general stuff.
 it's a he
 sachac isn't a he.
 are you sure ?
 I know her.
 bahahahaha
 houd1ni: remember how long I've been here for - since 1997
 dude viking667 we are nick arround here
 you cant be sure it's a she
 houd1ni: you think everyone who uses Linux and uses it WELL has to be a female?
 a male, that is
 houd1ni: as I said, I know sachac. I've been around long enough to correct that mistake.
 houd1ni: would you like to see a pic of her?
 syn-ack I guess yeah.
 houd1ni: lemme find it....
 houd1ni: http://www.offdwall.net/gallery/linops/abh
 syn-ack I'll take alook
 dude you cant convince me.
 you know they got tricked by a woman...
 and she became a Pope
 houdini, well, it came out, when she gave birth on easter, on the stairs of St. Peter in the vatican ;)
 Nico hehe see ? you cant be sure sachac is a female
 houd1ni: actually, we can be sure.
 houd1ni, as a matter of fact, after some time on IRC, you know whom you can trust, and whom not ...
 Several of the ops could theoretically have "met" her eyeball
 especially if you have met someone ... not saying that i have met sachac
 Nico alright !
 I'm conviced
 it's a she.
 I see girls on the page syn-ack pasted
 I can see nico too :)
 houd1ni: Ive not pasted a thing to that site yet...
 syn-ack ?
 Ive commented on the site, but I havent pasted,
 http://www.offdwall.net/gallery/linops/aaf
 nico :)
 houd1ni: um, yes, thats nico, and?
 there is nothing i omit ... you just need to do what i am telling you
 syn-ack I'm excited.
 viking667 dont you have a picture ?
 houd1ni: I rely on previous piccies I've seen.
 yes
 viking667 do you have a picture of yourself ?
 She looked pretty good in her kit too.
 houd1ni: actually, no - not one that's on the computer.
 I haven't had my hand on a scanner that actually WORKS for a LONG time.
 viking667 I see.
 viking667 I've seen some really nice girls in that pictures
 like dreamd or somehting.
 I'm impressed.
 houd1ni: please do us a favor....shoot yourself.
 syn-ack aaa I tried. missed the target.
 too bad. :/
 syn-ack what is your problem ?
 houd1ni: you sound so abosulty AMAZED that a WOMAN can use linux....like they are sub par to a man...Its
          sickening
 syn-ack you dont understand. I have absolutely nothing against women.
 heh heh heh - look out, houd1ni - they're after you 
 but... I didnt meet women that can use linux
 that's all
 houd1ni, my mother can use linux, and she's 64
 Hell!  My WIFE uses Linux!!!
 I discovered something new and I'm impressed
 what is wrong with that ?
 My old roomate used Liux just fine
 She's most certainly NOT a Computer geek.
 ( and she is a elementary school teacher, not that this is a problem really ;)
 and she was a girl.....
 Nico woman usually preffer windows-like OS's
 liux too
 or OS/2 you know
 The funny thing is - gI gave her a choice of Linux or Win98, she chose Linux.

Awwwwww, someone finally let the cat out of the bag… <mock pout>

The continuing saga

February 11, 2004 - Categories: -Uncategorized
 sachac: oh you got called "dude"? :)
 I think I called sachac a "dude" :)
 that was quite funny
 sachac: log?
 sachac: i just scroll back :P
 I'm still not convinced it's a she. :)
 * coke slaps houdini
 that works well today, reading houdini's mind ;)
 Nico haha
 don't offend ladies :P
 houdini, sachac owns you
 coke hold on here... a lady tricked some men and she became the Pope
 * sachac whistles innocently.
 chexsum nobody owns me.
 houdini: 1 0wnz j00. ;b
 sachac alright. prove it.
 words are only words... the facts matter/
 houdini: lots of facts on sachac on google
 facts have been presented
 houdini: I don't have to convince you. Your opinion doesn't really matter to me. =)
 sachac that's always a good and evasive excuse isnt it ?
 * coke thinks it is the best excuse not to care about what others think of you
 coke it's easy to write an article or something. you document yourself and write the paper.
 houdini: They say the best excuses are true ;)
 houdini: riiight... even when it is on other big sites?
 hehe
 coke, but as well sometimes the best thing you can do
 coke big sites like... ?
 houdini: just google
 coke I will use google...
 alright..
 houdini: Anyway, prove your opinion matters to me :)
 sorry chief...but I dont see any of those big sites.
 enlighten me.
 this is not a contest or anything.
 just my curiosity
 * coke thinks it is not worth wasting time on houdini
 houdini - you dont know what to look for
 chexsum sacha chua
 bleh

Dutch

February 12, 2004 - Categories: -Uncategorized

“zeg hoi” == “say hoi” :P
http://www.taalthuis.com/course/beginners/index.htm

Slashdot story: how toy penguins and geek girls can help save the world. ;)

February 12, 2004 - Categories: -Uncategorized

http://slashdot.org/articles/04/02/11/1855209.shtml?tid=106&tid=126&tid=163&tid=185

CS problems

February 12, 2004 - Categories: -Uncategorized

http://www.ocf.berkeley.edu/~wwu/cgi-bin/yabb/YaBB.cgi?board=riddles_cs;action=display;num=1068659376

Chess

February 12, 2004 - Categories: -Uncategorized

http://www.eudesign.com/chessops/ch-clear.htm

Sean vs Sacha

February 12, 2004 - Categories: -Uncategorized
Move Sean Sacha
1 e4 e5
2 Nf3 Nc6
3 d3 Nf6
4 Nc3 Bb4
5 Be3 d5
6 exd5 Nxd5
7 Bd2 Bg4
8 Qe2? o-o
9 h3 Bh5
10 g4 Bg6
11 Nxe5 Nxe5
12 Qxe5? Re8 (pinning the queen; see position)

After 12. Qxe5

13 d4 Nxc3
14 a3 Rxe5
15 dxe5 Ne4? (easy counter)
16 Bd3? Bxd2+
17 Kf1 Qd4
18 Bxe4 Bxe4
19 Rg2 Qc4#

8| R|.|.|Q|.|R|K|.
7| P|P|P|.|.|P|P|P
6| .|.|.|.|.|.|B|.
5| .|.|.|N|q|.|.|.
4| .|B|.|.|.|.|p|.
3| .|.|n|p|.|.|.|p
2| p|p|p|b|.|p|.|.
1| r|.|.|.|k|b|.|r
.| -|-|-|-|-|-|-|-
.| a|b|c|d|e|f|g|h

Final position

8| R|.|.|.|.|.|K|.
7| P|P|P|.|.|P|P|P
6| .|.|.|.|.|.|.|.
5| .|.|.|.|p|.|.|.
4| .|.|Q|.|B|.|p|.
3| p|.|.|.|.|.|.|p
2| .|p|p|B|.|p|.|.
1| r|.|.|.|.|k|r|.
.| -|-|-|-|-|-|-|-
.| a|b|c|d|e|f|g|h

ChessGames

RSS export

February 14, 2004 - Categories: -Uncategorized

A really hairy hack promises to let me do RSS export of blogged
entries. It’s in rss.el right now. Warning – it’s absurdly nasty.

Blogging to RDF

February 14, 2004 - Categories: emacs

http://feedvalidator.org/check.cgi?url=http%3A%2F%2Fsacha.free.net.ph%2Fnotebook%2Fwiki%2Fblog.rdf says that my feed validates fine now. I hope that this blogs correctly!

This entry by Sacha Chua.

../../notebook/emacs/emacs-wiki/rss.el

Hey, RSS blogging seems to work!

February 14, 2004 - Categories: emacs

And it still validates, which is always a very good thing…

../../notebook/emacs/emacs-wiki/remember.el

Bookmarking

February 14, 2004 - Categories: emacs
 forcer: If I run across an interesting URL, I file it right away with some context clues.
 forcer: If I need to refer to it again, I use a small elisp function that searches my notes.
 forcer: It's a bit more context-sensitive than bookmarks, and it allows me to share the data with other people.
 ah
 forcer: If I feel diligent, I put it into my BBDB. Then I can hippie-expand from it in my mail and in chat.
 forcer: For example, tldpM-/ is
 so to say, you have a list of URLs and associated text :)
 forcer: The Linux Documentation Project (http://www.tldp.org) is an excellent resource for newbies and
         experienced users alike. Check out its HOWTOs and guides for tons of information. There's a Linux Cookbook in
         there too, I think...
 :)
 forcer: Not really. I have random blog notes which occasionally have URLs. I can search on that and on the text
         around it.
 forcer: I can also figure out when I visited a site...
 ah
 forcer: ... and since planner.el captures all sorts of annotations, I can usually even tell you how I found out
         about the page - it gets linked to an e-mail or to another planner page...
 forcer: The e-mail links take me directly to the article, if it hasn't been expired yet.
 forcer: If not, well, it's a message ID and it has the author's name, so I guess I can just search. 
 forcer: Pretty useful system, a bit more flexible than bookmarks (at least for me.)

RSS feed now available!

February 14, 2004 - Categories: -Uncategorized

http://sacha.free.net.ph/notebook/wiki/blog.rdf

Please complain loudly if this doesn’t seem to work, as it’s alpha.

Wonderful day today!

February 14, 2004 - Categories: -Uncategorized

Had a very lazy Saturday afternoon with Diane. Wonderful. =D

ff-find-other-file

February 15, 2004 - Categories: -Uncategorized

ff-find-other-file lets you switch from, say, a .cpp file to an
associated .h file.

E-Mail from Felix

Cleaned up planner-rss.el

February 15, 2004 - Categories: emacs

planner-rss.el should now be ready for (almost) general use. You can
get it from
http://sacha.free.net.ph/notebook/emacs/emacs-wiki/planner-rss.el . To use it, add

(require 'planner-rss)
(add-to-list 'remember-append-to-planner-hook 'planner-rss-add-note t)

to your .emacs, and use M-x remember-to-planner.

../../notebook/emacs/planner-config.el

Chess site

February 15, 2004 - Categories: -Uncategorized

Just created accounts on http://itsyourturn.com (sachachua) and
http://www.stansco.com/cgi-bin/nc_ppp.cgi?16686 . Feel free to
challenge me to a chess game there – good practice! =)

Windows to Linux roadmap

February 16, 2004 - Categories: -Uncategorized

“You’re moving from Windows to Linux. You’ve decided you want the
stability, flexibility, and cost savings of Linux, but you have many
questions in your head. Isn’t Linux like Unix? Isn’t Unix hard? Where do
you begin to make sense of all of this? Is there a map you can follow?

This roadmap is designed to help you take the experience and knowledge
that you already have in computing and redirect it to working in Linux.
It’s not the only reference you’ll ever need, but it will help you get
past some of your first obstacles and adjust to a new and, I think,
exciting approach to computing. As you follow this roadmap, you’ll
discover many new resources to help you learn, troubleshoot, and manage
Linux.”

(more)
http://www.desktoplinux.com/news/NS6990453177.html

E-Mail from Jeremy Hogan

Ebook: Emacs in 24 hours

February 16, 2004 - Categories: emacs

Ran across http://freebooks.by.ru/view/EmacsIn24h/emacs173.htm from google:gnus+nntp+mail+source+example . Looks like a pretty good resource.

{{2:2004.02.16,EmacsTips}}

Dilbert comic on dangerous geekettes

February 16, 2004 - Categories: -Uncategorized

http://www.dilbert.com/comics/dilbert/archive/dilbert-20040215.html

Peppy said:

couldn’t help but laugh when I saw the date on that Dilbert strip
forwarded to you by Eric. didn’t occur to me that you’d fit the
description of the problem co-worker Dilbert gave the first time I
read it. =)

E-Mail from Eric Vidal

CS161 Long Test 2 anecdotes

February 16, 2004 - Categories: -Uncategorized

Jino stood up to pass his paper. Miguel Arguelles pounded his desk in
annoyance, and everybody laughed. Apparently, he was trying to finish
first.

Picking projects for the open house

February 16, 2004 - Categories: -Uncategorized

http://sacha.free.net.ph/notebook/cs21b/games.zip contains the final
projects from last semester’s CS21A. Try them out – they’re pretty
cool! We’re thinking of having a few of them at the open house demo.

Warning: freshman code ahead… =)

gnu.emacs.sources/tex-skak.el: a way to typeset chess moves and board diagrams in LaTeX

February 16, 2004 - Categories: emacs

This is a special mode for editing LaTeX files which use the skak package.

\usepackage{skak} is a beautiful way to typeset chess
moves and board diagrams in LaTeX. This file implements
a special editing mode for such documents ontop of the
AUC TeX and chess.el packages. Both packages are very
flexible and extensible. This file can be considered glue
code to unify the power of both packages.

Mirrored at ../emacs/tex-skak.el

E-Mail from Mario Lang

back-to-indentation: jump to first non-blank character

February 17, 2004 - Categories: -Uncategorized

To move over the indentation on a line, do `M-m’
(`back-to-indentation’). This command, given anywhere on a line,
positions point at the first nonblank character on the line.

E-Mail from iso

Emacs Learning Instruction Program

February 17, 2004 - Categories: emacs

The beta of ELIP, the Emacs Learning Instruction Program, is now
stable enough for wide release.

ELIP is “flashcards on steroids” and provides learning via

- spaced interval recall (like SuperMemo)
- Leitner “box” method
- plain old flashcards

Modes are present for questions and answers in

- simple form
- ellipsis form, generated from chosen text material
- passage memorization form (i.e., memorize the Gettysburg address).

ELIP installation requires some EMACS ‘smarts’ and had EDB, the EMACS
Database, as a prerequisite. This is all explained in the
documentation.

The distribution comes with a small Hawaiian language database, a
large Spanish vocabulary database, a large Esperanto vocabulary
database, an Esperanto grammar database, and the “I Have a Dream”
speech for learning by memorization.

There is a small, low volume mailing list available.

ELIP is found at

http://www.chungkuo.org/elisp/elip.zip

and comments, bug reports, ideas and suggestions are welcome.

E-Mail from ChipsChap

Thoughts on the CS161 test

February 17, 2004 - Categories: -Uncategorized

I’m halfway done checking the second long test in operating systems,
and I have a few thoughts about it. As a teacher, I suspect I’m
supposed to go along with the official line, but somehow, I feel that
something’s wrong here.

The test was easy. It was just memorization and regurgitation. Because
the different sections covered the same material and the same
questions were asked in several ways, you can actually figure out most
of the answers based on the questions in other sections.

The hardest part was the modified multiple choice. I don’t think that
was because of any inherent difficulty in the subject matter, although
the analogies were pretty nice. Rather, modified multiple choice was a
pain because it devolved into a set of true or false questions where
scores were given only for particular combinations.

I believe that tests shouldn’t just measure students’ test-taking
skills. I don’t feel comfortable with this particular kind of modified
multiple-choice test, although I realize that it forces the students
to think about what statements really are true and which ones aren’t.

We missed an opportunity to reinforce process simulation, too. My bad.
Maybe I should have volunteered for that section of the test.

I don’t really know why I’m reflecting on this. Maybe it’s because I
don’t want to just make my students memorize things that aren’t
personally meaningful to them. I don’t want to take points off because
it’s the bakery algorithm and not the banker’s algorithm or things
like that. I don’t want to just fill their heads with facts that
they’ll forget or half-remember during standardized examinations like
employers’ tests or the JITSE.

But I have to teach it that way… <sigh>

nethack-el

February 17, 2004 - Categories: -Uncategorized

I have rediscovered the joys of nethack thanks to nethack-el, a
package that allows me to play that insanely addictive RPG from within
Emacs buffers. I hear there are even Dvorak bindings for it, which is
a very good thing.

I had a wimpy wizard who quite luckily and through no fault of her own
acquired a master mind flayer as a pet (tame kitten discovered a
polymorph trap). Did Really Well until I died due to some impatient
attacks on a queen bee. And it was going so well… <sniff>

Probably shouldn’t play until I can afford several seconds per move.

Having Elbereth on a keyboard macro is really, really good.

WHEE! Twiddler works!

February 18, 2004 - Categories: geek

Apparently, all you have to do is compile USB support into the kernel,
and everything’s all set!

That’s what I get for trying to make it a module…

(We might have been faster commuting. ;) )

nethack code to check if a character has something in the inventory

February 19, 2004 - Categories: emacs
(defvar nethack-temp-log nil "String containing captured messages.")

(defun nethack-has-item-p (regexp)
  "Return non-nil if the character has an item matching REGEXP in the inventory."
  (let ((nh-filter-hook (append (list 'nethack-store-log) nh-filter-hook))
        (nethack-temp-log nil))
    (nh-send-and-wait "inv 1")
    (nh-send nil)
    (string-match regexp nethack-temp-log)))

(defun nethack-store-log (string)
  (setq nethack-temp-log (concat nethack-temp-log string "\n")))

(defvar nh-filter-hook nil "Hook that is called with the received line.")

(defadvice nh-filter (around sacha activate)
  "Insert contents of STRING into the buffer associated with PROC.
Evaluate the buffer contents if we are looking at a prompt and then
delete the contents, perhaps logging the text."
  ;; insert output into process buffer
  (with-current-buffer (process-buffer proc)
    (goto-char (point-max))
    (insert string)
    (forward-line 0)
    (if (looking-at nh-prompt-regexp)
	(let ((prompt (match-string 1)))
          (nh-log (buffer-substring (point-min) (point)))
          (unless (run-hook-with-args-until-success 'nh-filter-hook (buffer-substring (point-min) (point)))
	    (eval-region (point-min) (point)))
	  (cond ((or (equal prompt "command")
		     (equal prompt "menu"))
		 (nh-print-status)
		 (sit-for 0)
		 (setq nh-at-prompt t)))))))

Geekiness

February 19, 2004 - Categories: -Uncategorized

On orkut.com’s Geeks community, Joel said:

You’re right. Geekiness is the state of wanting to know and
understand everything. True Geeks can geek on any topic, after very
little preparation.

Example: My degree is Chemistry, I work in computers, and I do
theater tech/SF conventions/other cons/etc. on the side. My GF is a
mechanincal engineer (and just as much a geek). I make her crazy
sometimes because just talking about what she does at work I’ll pick
up enough about stuff (that she has a degree in and I don’t) to make
informed suggestions as to how to fix problems they’re having.

This goes hand-in-hand with the state of “Being an Engineer”. PEs
will make you believe that it involves much training, experience,
and certification. I claim that it is a state of mind, encompassing
a certain level of geekiness, and a whole lot of logical problems
solving.

Checking planner-rss autocategories

February 19, 2004 - Categories: emacs

I’ve added `planner-rss-category-feeds’ to planner-rss. This examines
the text of the note and copies it to different RSS feeds depending on
the regular expression match. In the future, I might actually just run
a lot of hooks on the thing.

If this works, I should have a new entry in
http://sacha.free.net.ph/notebook/wiki/planner.rdf

../../notebook/emacs/emacs-wiki/planner-rss.el

Good idea for nethack.el

February 19, 2004 - Categories: -Uncategorized

From the Emacs channel:

kanaldrache: yes, therefor i want a mapping function … take a
picture of that level when you leave it so that you can chekc nine
levels later “Mhh, where was that expensive shop? Level 4 or level
7?” without walking back or use you /oT

Twiddler problem unsolved

February 19, 2004 - Categories: -Uncategorized

Still getting

usb 1-1: new low speed USB device using address 7
ohci_hcd 0000:00:02.0: urb c1361c00 path 1 ep0out 5ec20000 cc 5 --> status -110
ohci_hcd 0000:00:02.0: urb c1361c00 path 1 ep0out 5ec20000 cc 5 --> status -110
usb 1-1: device not accepting address 7, error -110

from my kernel. That’s with USB-OHCI support compiled in already.

CS161: Notes on file systems

February 20, 2004 - Categories: -Uncategorized

I might not be able to give a lecture on filesystems this Friday (or
it might whiz past with my mile-a-minute speech), so here are some
detailed lecture notes on file systems to help you review for the
final exams.

File systems. You know about file systems because that’s one of the
most obvious things about your computer. You know that your documents
are hidden somewhere on your hard disk. You know that programs are
stored in another directory. You know that you can make your own
directories to organize your programs and your data.

Why are file systems important? Well, remember what happens during
brown-outs or power fluctuations? If the power goes off and then on
again in a computer lab without uninterruptible power supplies
(UPSes), people will lose all their unsaved work. That’s because the
kind of memory we use loses its data if it doesn’t have power. Hard
disks, on the other hand, keep data even when the computer is off – so
save often!

Attributes

Let’s take a look at the data associated with files. Different
operating systems keep track of different things, but here’s a short
list.

- Name: The files in a directory should have unique names. This lets

us refer to that file.

- Type of file: What kind of file is it? Is it an image? A text

document? A webpage? This could help the operating system determine
the best way to open this file.

- Location: Remember our discussion about sectors, tracks, and

cylinders? Where is the file on the hard disk? In terms of the
logical filesystem, in what directory is the file?

- Size: How large is the file? How much data is in it right now?

- Protection: Can other people edit this file? run this file? read

this file? Who can work on this file?

- Time/date: When was it last modified? (Sometimes the operating

system stores more information, like creation time and access time)

- User identification: Who owns this file? (Windows 98 and below

don’t care about this.)

Operations

- Create, write, read, delete: Makes sense.

- Reposition within a file: When you’re reading a book and you want

to flip back to a certain place, you don’t have to close the book
and then open it again. You can just go to a certain position. Same
with files. Some files will let you easily jump to a specified
position within the file. On the other hand, some files will only
let you go forward and not back.

- Truncate: Get rid of everything after a certain position.

Access methods

- Sequential: You can only access it going forward. You can’t go back.

To read the 7th line in the file, you have to read the first 6
lines.

- Direct: You can jump around. This is also known as a random-access

file.

- Indexed: This is like the way a dictionary works. You can jump

around, but some places (like the beginning of entries for each
letter) are marked so that you can jump to them easily.

Partitions

Your hard disk is divided into partitions (PC term) or volumes (Mac
term). These are the “drives” you see on Windows. You can split up one
hard disk into a C: drive and a D: drive. If you learn about something
called RAID, you can combine two hard disks into just one drive.
(“Drive” is a confusing term, though, as you can have C:, D:, E:, F:,
etc. on just one hard disk.)

Directories

Single-level directory

Long, long ago, MSDOS didn’t have directories. Seriously. Well, there
was one directory, and all of your files had to be under it. You can
imagine how this sucked, as all of your program files had to be in the
same place as your data. Not only that, you were limited to 8
characters for the filename and 3 characters for the extension.

People used clever names like AAAAAAAA.TXT, AAAAAAAB.TXT and
AAAAAAAC.TXT for their files. Of course, after six months, who could
remember what the contents of each file were?

The diagram shows a single-level directory. The directory entries
are “cat”, “bo”, “a”, “test”, “data”, “mail”, “cont”, “hex” and
“records”. All of these entries point to files.

Two-level directory

Now we got to organize them by user, at least. Still sucked because
all of your files were in just one directory, but at least you didn’t
have to worry about other people’s naming schemes.

Tree-structured directory

This is the kind of directory tree you got used to in Microsoft
Windows. You can create directories (aka folders) inside directories
inside directories inside directories.

Links aren’t actually real directories. In Microsoft Windows, they’re
fake – for example, you can’t cd into them from the command line.

Acyclic graph directory

Remember the ln command from Unix? This is where links in Unix come
in. (They’re _real_ links, not like the fake ones in Microsoft
Windows. =) )

ln somefile anotherfile

creates a link: anotherfile will refer to the exact same file that
somefile refers to on the hard disk. They point to the same place on
the hard disk.

This allows you to have acyclic graph directories, because the same
file is referred to in two or more places.

General graph directory

ln returns! This time, we use it to make a symbolic link.

ln somefileordir anotherfileordir -s

Symbolic links can point to directories, so it’s perfectly acceptable
to make a link that points to one of your parent directories and thus
get into some kind of loop.

Basically, a general graph directory is anything that could have
these loops.

File protection

You don’t want just anyone messing around with your files. Remember
Unix file permissions and chmod? This slide talks about some of those
permissions, although the access groups the slide uses are different
from Unix permissions. Under Unix, it’s user, group, others. Other
operating systems support access control lists (ACLs) – this means
that instead of just giving permission to one group, you can specify
exactly who gets to do what to the file.

Allocation methods

Here we start looking at how things are physically stored on your
hard disk. You can start up defrag to get an idea of what it looks
like.

Contiguous allocation

It’s like contiguous allocation for memory. All the space the file
needs should be in one continuous block. The nice thing about it is
that it’s easy to figure out where all the data is – just find the
starting position and count off so and so many bytes. If you need to
allocate space for a new file, try either first-fit or best-fit.
Downside of this is that file sizes are fixed, because once it’s been
allocated and another file has been allocated next to it, the file
can’t grow.

Linked allocation

The file is treated as a list of blocks, where a block is a fixed-size
contiguous collection of bytes on the hard disk. The blocks don’t all
have to be together on the hard disk – each block in the file points
to the next one. Plus side: files can grow, just link in new blocks.
Minus: To read the file, you have to hop around the hard disk, plus
all of that pointing around wastes space because each block has to
refer to the next one. Solution: use groups of blocks (aka clusters),
but these might be bigger than you need – if so, then space is wasted.

File allocation table

Form of linked allocation. The links to the next block are kept in
one large table in a certain place in the hard disk.

Indexed allocation

Still uses blocks, but instead of each block pointing to the next one,
one block has an index that points to all of the blocks. This block
is called the inode (index node) under Unix. If the file is too big
for one index block, the index block refers to other index blocks.

Free-space management

How your computer can tell how much space you have free.

- Bit vector/map: keep track of every single block! Requires 1 bit per

block (1 if it’s occupied, 0 if it’s free).

- Linked list: Like the linked allocation scheme (one block points to

the next one) except this keeps track of the free ones.

- Grouping: The first free block has an index of free blocks (as many

as it can). If there are more free blocks than will fit in the
index, it just points to another index block.

- Counting: Keep track of the beginning of each set of free blocks

and how many free blocks there are.

Directory implementation

How directories work. That is – how do directories store info about
files within them?

One way is to just keep a list of all the filenames in that directory.
If you have a million files (and it’s happened!), this can get
_really_ slow.

Hashtables are supposed to be faster at lookup, so naturally there’s
a way to use them too.

Consistency checking

Remember the scandisk that shows up when you improperly shutdown your
computer? This is what’s happening. Your computer’s checking if what
it thinks your filesystem should be like is different from what it
actually is.

CS21A: ArrayList

February 20, 2004 - Categories: -Uncategorized

Quick review: arrays

Arrays are a neat way to store a fixed number of items. You can
declare and create arrays and loop over them. They’re perfect for
board games and other applications where you know exactly how many
items you’ll need to store.

EXERCISE: (Due 11:59:59 PM Sunday)

Download http://sacha.free.net.ph/notebook/cs21a/address.zip and unzip
it into a convenient directory. Open the HTML file and run it in
JCreator, or open a command prompt and type “appletviewer
address.html”. (If it gives you “Command not found”, try
“c:\j2sdk1.4.2_02\bin\appletviewer address.html”.

E-mail your answers to me by the specified time.

- Put 0 in the index field and a name in the name field. Press Set.

Put 1 in the index field and a different name in the name field.
Press Set. Put 0 in the index field and press Show. What happens?
Put 1 in the index field and press Show. What happens? (Note that
the data doesn’t get saved to the hard disk – you’ll learn how to do
that in CS21B!)

- What is the largest number that you can use in the index field

without getting an error?

- What is the smallest number that you can use in the index field

without getting an error?

- How many items can this simple address book store?

- As practice in applets, components, layouts and arrays, write your

version of this applet (ReallySimpleAddressBook). It should look
like this applet and behave exactly like this applet. (5 points)

- As practice in objects and arrays of objects, create a Person class.

The Person class should have a name attribute and a phone attribute
(both Strings), and it can have any methods you want. Make a
SimpleAddressBook applet that has a “Phone:” field after the Name:
field. It should set and show this as well as the name. Instead of
having two separate arrays for name and phone (you might forget to
update one of them – I do that all the time!), use just one array of
Person objects. (5 points)

- Make a SearchableAddressBook applet. Add a “Search by name” button.

When pressed, you should display the first record whose name equals
the one in the name field. NOTE: Use .equals(…) instead of == to
compare strings. You can also use .equalsIgnoreCase(…) if you want
“ABC” to be considered the same as “abc”. (5 points)

You may ask other people for help as long as you type and understand
your entire submission.

meetup.com

February 20, 2004 - Categories: -Uncategorized

Jeremy Hogan said on open-source-now-list@redhat.com:

Many of you have probably already heard of Meetup.com due to its
prominence in the Democratic primaries. In order to help LUGs, school
groups, and advocates to better and more easily co-ordinate gatherings
we’ve started redhat.meetup.com.

You’ll see us adding functionality over the coming weeks, and we’ll be
co-ordinating a special global meetup on April 1, 2004, so I urge you to
go ahead and sign up now. If you haven’t used it, it’s a great way to
spin up activity, to meet others interested in Red Hat, Linux, F/OSS
face to face in a casual setting.

http://www.meetup.com might be a nice way to organize local meetings.

E-Mail from Jeremy Hogan

eBay service

February 20, 2004 - Categories: -Uncategorized

I keep getting

Dear eBay Member,

Dear customer, you have been billed for $15.00 recently. Please
update your billing information at eBay Billing Center.

This is eBay auto generated message, if you think you received it
by mistake or you want to remove these notifications, please
update your profile at Billing Center.

in my mail. Now, I don’t use eBay at all, so chances are something weird is happening.

E-Mail from eBay Service

Instructions for wearable chording keyboards

February 20, 2004 - Categories: -Uncategorized

On wear-hard@haven.org, John McKown said:

http://chordite.com

where you can download free instructions
on how to build a wearable, chording keyboard.

E-Mail from John McKown

Chapter 2, “Editing and Navigating Java Source Code.”

February 20, 2004 - Categories: -Uncategorized

Link from mparaz on pinoyjug@yahoogroups.com:

http://www.sourcebeat.com/docs/Eclipse%20Live/Rev_1/Eclipse%20Live_SampleChapter.pdf

Stuff Eric should check out

February 20, 2004 - Categories: -Uncategorized

- Alain Chesnais (a-LAHN she-NAY)
- YT Lee, head of SEAGRAPH
- Barbara, in charge of organizing conferences (sponsored and in cooperation of)
- CGEMS link from http://www.siggraph.org (Computer Graphics Educational Materials Store, free)
- ACM DL
- Talk at 3:30 – trends

CS161 announcements

February 20, 2004 - Categories: -Uncategorized

Yes, there are exemptions: 90 and above. This includes the grades from
the projects. The list of exempted people will be posted on Monday.

Bad news for the CS juniors: you have to take the test also at the
same date! (Uh oh…) Thursday, 1:30 – 3:30 PM at C115. (That’s Chem
115)
AND there’s extra work _after_ the finals.

(Apologies for the confusion. Apparently, missed important small text.
My bad.)

Code for Nethack screenshots in Emacs

February 20, 2004 - Categories: emacs
(defvar nethack-screenshot-file "~/.nethack-notes" "Filename to store Nethack data in.")
(defun sacha/nethack-take-screenshot (caption)
  (interactive "MCaption: ")
  (save-window-excursion
    (save-excursion
      (find-file nethack-screenshot-file)
      (goto-char (point-min))
      (insert
       ".#1 " caption "\n\n"
       (with-current-buffer (get-buffer "*nethack map*")
         (buffer-substring-no-properties (point-min) (point-max)))
       "\n\n"
       (with-current-buffer (get-buffer "*nethack status*")
         (buffer-substring-no-properties (point-min) (point-max)))
       "\n\n")
       (save-buffer))))

ACM problem idea

February 21, 2004 - Categories: -Uncategorized

Trace through two strings. Forward scanning only. List of words which must all be found in the set of two strings.

Upcoming CS161 finals

February 21, 2004 - Categories: -Uncategorized

One of my students wrote about the CS161 finals, and I’m posting a
public apology. =)

I heard that the cs161 final exam(juniors) was going to be this
thursday Feb 26. Is it possible to move it to next week(march)?
Also, I think that we have too little time to prepare. Like what
cliff said, it should have been announced two weeks before. I have a
history exam, cs154 exam, philo presentation and a synthesis paper
due next week. It would be a load off my back if you moved it to
march. Thanks! =)

I know, I know. I’m really sorry about the confusion. I didn’t attend
one of the CS161 teacher meetings and when I asked what had happened,
they didn’t mention that they’d hold the junior finals at the same
time.

It’s also my fault that you have too little time to prepare. I should
have emphasized the need to read ahead during the sessions I let you
study on your own. I did that knowing that it was next to impossible
for me to teach a new topic while a test was coming up. I could never
concentrate on new topics as a student, and I hoped that as college
juniors and seniors you would be able to schedule your own time
wisely, using the free time to study and review more effectively than
I could help you do in the classroom. As few approached me for
consultation, I thought this was the case – and the improved average
on the 2nd exam might bear that out.

Still, I also know that many students would have been tempted to not
study for the finals if they felt they had another month for it, and
again I should have cleared that matter up earlier. I had been
planning to use the extra time to review the material more carefully
for the CS students, particularly as the equations we’ll be taking up
on Monday seem to be a favorite on IT exams like the JITSE.

I have most of the CS students in my classes. Personally, I would love
to have juniors take the exam in March, not only because you’ll have
more time to prepare for it but also because then we might be able to
test for more than just cursory understanding of the slides. I don’t
know if the other teachers will agree to this, though, as we will then
have to significantly change the test. If we’re going to do this, we
have to do it for all the CS students, not just those in my classes.

That said, it looks like many people will be exempted…

How to be a good team lead

February 21, 2004 - Categories: -Uncategorized

http://ask.slashdot.org/article.pl?sid=04/02/20/1749224&mode=flat

“Inventors Strut Stuff at Demo Show”

February 22, 2004 - Categories: -Uncategorized

From ACM Technews:

Dozens of high-tech innovations, ranging from small PCs to blogging tools
to “augmented reality” software, were spotlighted at the Demo conference in
Scottsdale, Ariz. Perhaps the most incredible product on display was Total
Immersion’s D’Fusion software, which uses Windows XP hardware to render …
http://www.acm.org/technews/articles/2004-6/0220f.html#item4

E-Mail from technews@hq.acm.org

“View From the Alpha Geek”

February 22, 2004 - Categories: -Uncategorized

From ACM Technews:

Programmer Rael Dornfest keeps track of IT innovation and innovators as
part of his job putting together O’Reilly & Associates’ Emerging Technology
Conferences. He says the key to understanding technology trends is to find
the trend-setters, or alpha geeks, that are widely recognized by their …
http://www.acm.org/technews/articles/2004-6/0220f.html#item10

E-Mail from technews@hq.acm.org

Fantastic news! Wonderful news! Excellent news!

February 22, 2004 - Categories: -Uncategorized

We get to postpone finals for juniors in CS161 to the normal time.
Wheee! I feel so much better now.

Of course, this gives us time to make really nasty tests… <evil
grin> CS students can expect lots of problem-solving, as we’re
_supposed_ to know this.

Exemptions for CS161

February 22, 2004 - Categories: -Uncategorized

No MIS student qualified for exemption.

CS161 Finals

February 22, 2004 - Categories: -Uncategorized

The following students are to take the CS161 final exam on Thursday.
They can e-mail me at sacha@free.net.ph to find out their pre-final
grade and what they need to score in order to attain a target letter
grade.

000100 Alindogan, John Marlon J. 4 BS MIS
000146 Ang, Lindsay Ritz T. 4 BS MIS
000257 Balagot, Julyett D. 4 BS MIS
000322 Bautista, Jose Miguel O. 4 BS MIS
000336 Baybay, Maria Margarita F. 4 BS MIS
000459 Cadelinia, Dwight Jr. M. 4 BS MIS
005011 Chan, Jacky T. 4 BS MIS
000612 Ching, James Henry Y. 4 BS MIS
000628 Chua, Aimee Lou T. 4 BS MIS
000822 De Claro, Ada Mae I. 4 BS MIS
000834 De Guzman, Myron Patrick S. 4 BS MIS
990791 Delfino, John Tristan S. 4 BS MIS
001191 Garcia, Miguel Jose A. 4 BS MIS
991211 Irigo, Justin A. 4 BS CS
001469 Kho, Krystle Ann G. 4 BS MIS
991571 Marchan, Allison Lilac S. 4 BS MIS
002032 Ong, Emmanuel I. 4 BS MIS
002050 Ong, Wendilyn Lou O. 4 BS MIS
992113 Sabilano, Jose Leonardo A. 4 BS MIS
981077 Sanchez, Patrick Philip R. 4 BS CS
002477 Santiago, Victor Roberto Manuel O. 4 BS MIS
002478 Santillan, Arthur A. 4 BS MIS
002536 Sembrano, Cyrus V. 4 BS MIS
002601 Songco, Marvin L. 4 BS MIS

YASD: Don’t cast sleep on the priest!

February 22, 2004 - Categories: -Uncategorized

Thought I’d help my pet baby green dragons out by casting sleep on the priest. This, apparently, is a Very Bad Idea.

Sample array code

February 22, 2004 - Categories: geek
import java.applet.*;
import java.awt.*;
import java.awt.event.*;

/**
 * Demo class for arrays
 * @author Sacha Chua (sacha@free.net.ph)
 * @date 22-Feb-2004
 */

public class ReallySimpleAddressBook extends Applet implements ActionListener
{
    private Button set;
    private Button show;
    private TextField index;
    private TextField name;
    private String names[];

    public void init()
    {
        names = new String[10];
        set = new Button("Set");
        show = new Button("Show");
        set.addActionListener(this);
        show.addActionListener(this);

        index = new TextField();
        name = new TextField();
        Label label1 = new Label("Index:");
        Label label2 = new Label("Name:");

        setLayout(new GridLayout(3, 2));
        add(label1);
        add(index);
        add(label2);
        add(name);
        add(set);
        add(show);

    }

    public void actionPerformed(ActionEvent e)
    {
        if (e.getSource() == set)
        {
            int i = Integer.parseInt(index.getText());
            names[i] = name.getText();
        }
        if (e.getSource() == show)
        {
            int i = Integer.parseInt(index.getText());
            name.setText(names[i]);
        }
    }
}

../../tmp/ReallySimpleAddressBook.java

Social networking diagram

February 23, 2004 - Categories: -Uncategorized, connecting

Should be fun to run this on a mailing list, using the References: tag…

- http://www.jibble.org/piespy
- http://www.daimi.au.dk/~terryp/pics/emacs-current.png

planner.el broken up into lots of little files

February 23, 2004 - Categories: emacs

It should compile cleanly under Emacs 21.3 (CVS). I’m still trying to
figure out how to install the fsf-compat package under XEmacs so that
I can get it to compile cleanly there.

WARNING! Many user-visible changes. In particular, you will now need
to require a bunch of other things in order to get the old behavior. I
should figure out how to set up the appropriate autoloads. In the
meantime, add some variant of the following to your .emacs:

(require 'remember)
(require 'planner)
(require 'remember-planner)
(require 'planner-experimental)
(require 'planner-bbdb)
;; (require 'planner-diary)
(require 'planner-gnus)
(require 'planner-id)
;; (require 'planner-notes)
(require 'planner-rss)
;; (require 'planner-schedule)
;; (require 'planner-timeclock)
(require 'planner-w3m)

This will no doubt break a number of things. Please complain loudly.
If you want the old version, you can get a tar.gz from
http://sacha.free.net.ph/notebook/emacs/planner/planner-current.tar.gz
.

Nvu, a WYSIWYG HTML editor for Linux

February 23, 2004 - Categories: -Uncategorized

http://www.nvu.com/index.html

Sample ArrayList code

February 23, 2004 - Categories: -Uncategorized

Here’s sample code for ArrayLists, which is a Java class that can
store any kind of object in an array that automatically grows.

Note: ArrayLists store objects. Generic objects. You’ll probably
need to convert (“cast”) them to another type before you can use them.
See example below.

Note: Only objects. You can’t store doubles, ints or booleans unless
they’re wrapped in another object. You can’t say list.add(5), but you
can wrap it in an Integer object and say list.add(new Integer(5));.
Then you can say Integer x = (Integer) list.get(0);
System.out.println(x.intValue());

import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
// NEW: You need this for ArrayList
import java.util.*;

public class OrderApplet extends Applet implements ActionListener
{
    private TextField nameField;
    private TextField orderField;
    private TextField valueField;
    private TextField indexField;
    private TextField nameFilterField;
    private Button addButton;
    private Button removeButton;
    private Button showAllButton;
    private Button showOnlyButton;
    private TextArea outputArea;

    // NEW: Declare the array list
    private ArrayList orderList;

    public void init()
    {
        // NEW: Create the array list
        orderList = new ArrayList();

        Label nameLabel = new Label("Name: ");
        add(nameLabel);
        nameField = new TextField(10);
        add(nameField);

        Label orderLabel = new Label("Order: ");
        add(orderLabel);
        orderField = new TextField(10);
        add(orderField);

        Label valueLabel = new Label("Value:");
        add(valueLabel);
        valueField = new TextField(5);
        add(valueField);

        addButton = new Button("Add order");
        addButton.addActionListener(this);
        add(addButton);

        Label indexLabel = new Label("Index:");
        add(indexLabel);
        indexField = new TextField(5);
        add(indexField);
        removeButton = new Button("Remove order at index");
        removeButton.addActionListener(this);
        add(removeButton);

        showAllButton = new Button("Show all orders");
        showAllButton.addActionListener(this);
        add(showAllButton);

        nameFilterField = new TextField(10);
        add(nameFilterField);
        showOnlyButton = new Button("Show selected orders");
        showOnlyButton.addActionListener(this);
        add(showOnlyButton);

        outputArea = new TextArea(20, 50);
        add(outputArea);

    }

    public void actionPerformed(ActionEvent e)
    {
        if (e.getSource() == addButton)
        {
            // Get the values from the text fields
            String name = nameField.getText();
            String order = orderField.getText();
            double value = Double.parseDouble(valueField.getText());
            // Create an Order object for these three items
            Order o = new Order(name, order, value);
            // Add the value to the list of orders
            // NEW: Add o to the list.
            orderList.add(o);
            showAllOrders();
        }
        else if (e.getSource() == removeButton)
        {
            int index = Integer.parseInt(indexField.getText());
            // NEW: Remove the object at the specified position.
            orderList.remove(index);
            showAllOrders();
        }
        else if (e.getSource() == showAllButton)
        {
            showAllOrders();
        }
        else if (e.getSource() == showOnlyButton)
        {
            showOrders(nameFilterField.getText());
        }
    }

    // TODO: Add a total
    public void showAllOrders()
    {
        // FIXME: Declare a temporary sum variable and set it to 0.0.

        // Update the order display no matter what button is clicked.
        outputArea.setText("");
        // NEW: Getting the size with the size() method.
        for (int i = 0; i < orderList.size(); i++)
        {
            // An ArrayList stores generic Objects.
            // All objects in Java are of the Object class.
            // If we want to use special methods of the Order
            // class, we have to tell Java it's an Order object.
            // (Order) before orderList.get(i) converts the
            // result into an Order object.

            // NEW: Casting (converting one object to another), .get(index)
            Order order = (Order) orderList.get(i);
            // What happens if you remove (Order) from the line above?

            outputArea.append("[" + i + "]: "  // index
                              + order.getName() + ": "
                              + order.getOrder() + ": "
                              + order.getValue() + "\n");
            // FIXME: Add the order value to the sum
        }
        // FIXME: Display the sum
    }

    // TODO: Add a total
    public void showOrders(String name)
    {
        // FIXME: Declare a temporary sum variable and set it to 0.0.

        // Show only the orders by a certain person
        outputArea.setText("");
        for (int i = 0; i < orderList.size(); i++)
        {
            Order order = (Order) orderList.get(i);
            // What happens if you remove (Order) from the line above?
            if (order.getName().equals(name))
            {
                outputArea.append("[" + i + "]: "  // index
                                  + order.getName() + ": "
                                  + order.getOrder() + ": "
                                  + order.getValue() + "\n");
                // FIXME: Add the order value to the sum
            }
        }
        // FIXME: Display the sum
    }
}

class Order
{
    private String name;
    private String order;
    private double value;

    public Order(String name,
                 String order,
                 double value)
    {
        // "this.name" refers to the name attribute,
        // but "name" by itself refers to the parameter.
        this.name = name;
        this.order = order;
        this.value = value;
    }

    public String getName()
    {
        // The "this." in this.name here is optional, but
        // we use it anyway: it's good practice
        return this.name;
    }

    public String getOrder()
    {
        return this.order;
    }

    public double getValue()
    {
        return this.value;
    }

}

../../notebook/school/current/cs21a/OrderApplet.java

Sample ArrayList code

February 23, 2004 - Categories: -Uncategorized

Here’s sample code for ArrayLists, which is a Java class that can
store any kind of object in an array that automatically grows.

Note: ArrayLists store objects. Generic objects. You’ll probably
need to convert (“cast”) them to another type before you can use them.
See example below.

Note: Only objects. You can’t store doubles, ints or booleans unless
they’re wrapped in another object. You can’t say list.add(5), but you
can wrap it in an Integer object and say list.add(new Integer(5));.
Then you can say Integer x = (Integer) list.get(0);
System.out.println(x.intValue());

Also at http://sacha.free.net.ph/notebook/cs21a/OrderApplet.java and
http://sacha.free.net.ph/notebook/cs21a/order.html

ASSIGNMENT: We don’t have classes on Wednesday. Add totals to this
code (should display total for all orders shown). Also, practice
layouts by making this neater.

Once you get the idea behind this applet, redo it until you can write
it from scratch without referring to your notes. Feel free to make
similar programs. This will take a few hours, but will be well worth
it!

Send me your OrderApplet.java with totals and whatever other
files you’d like me to look at by 11:59:59pm on Thursday.

import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
// NEW: You need this for ArrayList
import java.util.*;

public class OrderApplet extends Applet implements ActionListener
{
    private TextField nameField;
    private TextField orderField;
    private TextField valueField;
    private TextField indexField;
    private TextField nameFilterField;
    private Button addButton;
    private Button removeButton;
    private Button showAllButton;
    private Button showOnlyButton;
    private TextArea outputArea;

    // NEW: Declare the array list
    private ArrayList orderList;

    public void init()
    {
        // NEW: Create the array list
        orderList = new ArrayList();

        Label nameLabel = new Label("Name: ");
        add(nameLabel);
        nameField = new TextField(10);
        add(nameField);

        Label orderLabel = new Label("Order: ");
        add(orderLabel);
        orderField = new TextField(10);
        add(orderField);

        Label valueLabel = new Label("Value:");
        add(valueLabel);
        valueField = new TextField(5);
        add(valueField);

        addButton = new Button("Add order");
        addButton.addActionListener(this);
        add(addButton);

        Label indexLabel = new Label("Index:");
        add(indexLabel);
        indexField = new TextField(5);
        add(indexField);
        removeButton = new Button("Remove order at index");
        removeButton.addActionListener(this);
        add(removeButton);

        showAllButton = new Button("Show all orders");
        showAllButton.addActionListener(this);
        add(showAllButton);

        nameFilterField = new TextField(10);
        add(nameFilterField);
        showOnlyButton = new Button("Show selected orders");
        showOnlyButton.addActionListener(this);
        add(showOnlyButton);

        outputArea = new TextArea(20, 50);
        add(outputArea);

    }

    public void actionPerformed(ActionEvent e)
    {
        if (e.getSource() == addButton)
        {
            // Get the values from the text fields
            String name = nameField.getText();
            String order = orderField.getText();
            double value = Double.parseDouble(valueField.getText());
            // Create an Order object for these three items
            Order o = new Order(name, order, value);
            // Add the value to the list of orders
            // NEW: Add o to the list.
            orderList.add(o);
            showAllOrders();
        }
        else if (e.getSource() == removeButton)
        {
            int index = Integer.parseInt(indexField.getText());
            // NEW: Remove the object at the specified position.
            orderList.remove(index);
            showAllOrders();
        }
        else if (e.getSource() == showAllButton)
        {
            showAllOrders();
        }
        else if (e.getSource() == showOnlyButton)
        {
            showOrders(nameFilterField.getText());
        }
    }

    // TODO: Add a total
    public void showAllOrders()
    {
        // FIXME: Declare a temporary sum variable and set it to 0.0.

        // Update the order display no matter what button is clicked.
        outputArea.setText("");
        // NEW: Getting the size with the size() method.
        for (int i = 0; i < orderList.size(); i++)
        {
            // An ArrayList stores generic Objects.
            // All objects in Java are of the Object class.
            // If we want to use special methods of the Order
            // class, we have to tell Java it's an Order object.
            // (Order) before orderList.get(i) converts the
            // result into an Order object.

            // NEW: Casting (converting one object to another), .get(index)
            Order order = (Order) orderList.get(i);
            // What happens if you remove (Order) from the line above?

            outputArea.append("[" + i + "]: "  // index
                              + order.getName() + ": "
                              + order.getOrder() + ": "
                              + order.getValue() + "\n");
            // FIXME: Add the order value to the sum
        }
        // FIXME: Display the sum
    }

    // TODO: Add a total
    public void showOrders(String name)
    {
        // FIXME: Declare a temporary sum variable and set it to 0.0.

        // Show only the orders by a certain person
        outputArea.setText("");
        for (int i = 0; i < orderList.size(); i++)
        {
            Order order = (Order) orderList.get(i);
            // What happens if you remove (Order) from the line above?
            if (order.getName().equals(name))
            {
                outputArea.append("[" + i + "]: "  // index
                                  + order.getName() + ": "
                                  + order.getOrder() + ": "
                                  + order.getValue() + "\n");
                // FIXME: Add the order value to the sum
            }
        }
        // FIXME: Display the sum
    }
}

class Order
{
    private String name;
    private String order;
    private double value;

    public Order(String name,
                 String order,
                 double value)
    {
        // "this.name" refers to the name attribute,
        // but "name" by itself refers to the parameter.
        this.name = name;
        this.order = order;
        this.value = value;
    }

    public String getName()
    {
        // The "this." in this.name here is optional, but
        // we use it anyway: it's good practice
        return this.name;
    }

    public String getOrder()
    {
        return this.order;
    }

    public double getValue()
    {
        return this.value;
    }

}

Common networking errors

February 23, 2004 - Categories: teaching

Due 2004.02.23 11:59:59 PM: Source code and detailed notes on

- changes made
- problems encountered
- solutions tried/found
- outstanding problems
- plans for next step

I don’t expect everyone to have a fully-working game by tomorrow, so
most of your partial points will come from the notes. “It doesn’t
work.” isn’t enough; I need to know why it doesn’t work, if it used to
work before, what you’ve tried doing to get it to work, why you think
it doesn’t work, etc.

Along the way to your first milestone, you may have encountered the
following problems:

- ObjectInputStream seems to hang when you create it.

That happens when both sides of the connection try to create object
input streams at the same time, but the other side hasn’t opened an
object output stream yet. Fix: create the object output stream first
before you create the input stream.

ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());

- Your program lags terribly.

How are you doing your networking and repainting code? If you’re doing
animation, repaint() should be in one thread and your networking code
should be in another. You shouldn’t do them in the same thread because
then repaint() will only happen whenever something is received from
the socket connection. Also, make sure you have delays somewhere!
while (true) { repaint(); } means your CPU will spend
most of its time repainting. Add a Thread.sleep in that loop so that
your computer has time to do other things.

- You can’t write certain objects over the stream.

Make sure the object is serializable and all of its attributes are
either transient or serializable as well. You really shouldn’t be
sending your entire application over the network – what is the other
side going to do with all those textfields? Mark many of your
attributes transient or create a small, simple object that
encapsulates the data you need to send.

- You’ve sent an object over the network connection and you’re calling methods on it on the other side, but the one on the first computer isn’t changing!

That’s the way it works. If you send an object from computer A to
computer B, computer B isn’t working on the original object but on a
copy of it. Any changes on A won’t be automatically sent to B and vice
versa. The correct thing to do is examine the object and perform
different actions locally.

If you really need to get something like this working and you have
plenty of spare time, read up on RMI (Remote Method Invocation). It’s
out of the scope of CS21B, though.

For tonight, I want lots and lots of notes.

TOMORROW: Data structures (stacks, queues and linked lists).

Social network analysis

February 23, 2004 - Categories: -Uncategorized

http://www.jibble.org/piespy/

I want to run something like this on the PLUG mailing lists. I can
reuse their spring model and then build the network based on the
References: header.

SocialNetworkBot

February 23, 2004 - Categories: -Uncategorized

This is where all the magic happens. Starting up the app for every
arriving message is probably a bad idea. Better – Java server, then
pass it the message.

channel – mailing list

Mailing lists are simpler to track than chat channels. I can work on
the References header (and the attribution if necessary).

onMessage: Extract the References header. Find the latest one and root
the thread there.

I need a registry of message IDs and authors, then.

Question:

- What about digest users? Should infer based on attribution as well.

../../tmp/piespy/org/jibble/socnet/SocialNetworkBot.java

SocialNetworkBot

February 23, 2004 - Categories: -Uncategorized

This is where all the magic happens. Starting up the app for every
arriving message is probably a bad idea. Better – Java server, then
pass it the message.

channel – mailing list

Mailing lists are simpler to track than chat channels. I can work on
the References header (and the attribution if necessary).

onMessage: Extract the References header. Find the latest one and root
the thread there.

I need a registry of message IDs and authors, then.

Question:

- What about digest users? Should infer based on attribution as well?

../../tmp/piespy/org/jibble/socnet/SocialNetworkBot.java

Apache James

February 23, 2004 - Categories: -Uncategorized

JM Ibanez suggested looking at Apache James and writing a mailet.
Nifty idea, if I can get my mind around it!

(I just need something simple. If I get desperate, I’ll tokenize the
darn thing myself.)

Unix MBOX provider for javamail

February 24, 2004 - Categories: -Uncategorized
jmibanez sachac: aha! http://dog.net.uk/knife !
jmibanez sachac: a unix MBOX provider!

I don’t need to worry about mbox parsing yet

February 24, 2004 - Categories: -Uncategorized

I can fake it first for testing, anyway, and worry about mboxes later.
In fact, I might even end up having formail do the extraction – but
that would be cheating now… ;)

SocialNetworkAnalysis

RFC for mail messages

February 24, 2004 - Categories: -Uncategorized

http://www.w3.org/Protocols/rfc822/rfc822.txt

Another point: out of order messages

February 24, 2004 - Categories: -Uncategorized

We should store unresolved message-ids somewhere and fill them in later when we see them.

../../notebook/proj/java/org/sacha/socnet/TestListTracker.java

Lurker must do something like this already…

February 24, 2004 - Categories: -Uncategorized

Duh, Sacha.

The late night hack strikes again!

February 24, 2004 - Categories: -Uncategorized

Lots of little bugs. Most embarrassing. My bad.

Better RFC for mail messages

February 24, 2004 - Categories: -Uncategorized

http://www.rfc.net/rfc2822.html

Thanks, Karl Skibinski!

(See, having my work notes online is a Good Thing.)

E-Mail from Karl Skibinski

Cute calendar

February 24, 2004 - Categories: emacs

http://blog.outer-court.com/calendar/

I wonder if it might not be worth implementing this for PlannerMode

TODL, variation on LISP for cyborgs

February 24, 2004 - Categories: emacs
From Joe Corneli (jcorneli@math.utexas.edu)
Subject Re: displaying one character per line.
To help-gnu-emacs (help-gnu-emacs@gnu.org)
Date Tue Feb 24 03:47:55 2004 +0800

I want to be able to switch between different list views of a
document. For example, one might want to look at a text document as
a list of characters, a list of words, a list of phonemes, a list
(tree) of syntactic clauses, a list of sentences, or a list of topic
sentences that link to paragraphs, etc. Characters just happen to be
the simplest.

This is part of designing a mode I call todl-mode (for TODo List).
TODL is a variation on LISP specially designed for cyborgs :). The
idea is that if you can switch between different list views and add
hyperlinks to elements of each view, you will have a very powerful
tool for processing information.

I think of it as being somewhere in between lisp-mode,
emacs-wiki-mode, and something like outline-mode. It should be
possible to implement a TODL variant for any kind of code (so
todl-mode is also something like font-lock-mode).

E-Mail from Joe Corneli

Lecture on stacks and queues

February 24, 2004 - Categories: -Uncategorized

../cs21b/lectures/stackq.ppt

A short quiz will be given, then the rest of the time will be allotted
for projects. The deadline for milestone 1 (basic networking) has been
extended to tonight, 2004.02.24 11:59:59 PM.

Milestone 2: Networking (20 points total)

Due Monday 2004.03.01, 11:59:59 PM

- 15 points of 20: Play a two-player game where one player connects to

another.

- 20 points of 20: If you have a game that can take any number of

players, any number of players should be able to connect to a game.
If you have a game that takes only a certain number of players (ex:
2), you should have a server that allows people to meet other people
who want to play that game. Your program should take care of setting
up the appropriate connections.

Again, submit your source code and your notes on:

- changes you made
- problems you encountered
- solutions found
- problems you still haven’t solved
- next step

CS21B

Nethack!

February 25, 2004 - Categories: -Uncategorized

Take a short break from my usual chaotic female dark elven wizard
character and try out lawful human valkryies. Don’t do too well.
Magic? What magic?

Go back to elven evoker and try the same old thing. Oh, good, ring of
slow digestion. That’s really handy. Spellbook of wizard lock? What
the heck? What am I going to lock?

Pick up elven dagger quickly. Ooh, artifact weapon very handy.

Leisurely go through the first few levels. Make friends with almost
all the pets I find. No problem with food. Head down normal branch and
get to around level 8 before heading back to do the Mines.

Run into my old bones files on a _very_ scary bones level. See, I
spent time as a green dragon in one of my past lives, so I had a
couple of baby green dragons hanging out at Minetown. Hostile. Plus
assorted pets from my other past lives. Shudder to think of what would
happen if pesky monsters found all those wands that wizard characters
leave lying around. Run until main grave is found.

Forget that I can’t E-word on a grave. ARGH. Step to one side,
scribble E-word, and whack away with Sting. Grab loot – all cursed,
of course – and dump it on altar in Minetown, which is unfortunately
not co-aligned. Have not seen co-aligned altar all this game, and am
resigned to fact of life.

Run into my other bones file in the temple. Wand of fire picked up
earlier very useful – burn E-word nto ground near altar (remembered
not to try to write on altar!) and dump stuff there. Have to make
several trips back and forth as stupid previous evoker died on top of
altar. Pick up useful-looking uncursed/blessed things. Pseudo-identify
cursed bag of holding from vanishing contents; salvage a couple of
uncursed spellbooks from it (wheee!), including +oSleep.

Discover sleep is absolutely wonderful spell as can whack away at
sleeping monsters for a number of turns before waking them up. Hope
they’re dead before then.

Jump through hole in temple to rest of Minetown, followed by two tame
cats. Wander around collecting stuff.

Oops. Magic trap. Telepathy very good thing as hate the idea of
killing my pets.

ACK! Bloody Green-elf has a /oCM! Scribble E-word a few times
(having it as a keyboard macro Really Helps!) and go after that
blasted elf. Hurry to grab wand before other monsters get bright
ideas. In meantime, this section of the mine has gotten Really
Crowded…

E-word saves the day.

Find towel. Pets think it’s okay, so drop the blindfold I’d been using.

Wander around some more. Decide to see what monsters are still on the
level.

Oops. Right. Dropped the blindfold and picked up a towel a few turns
back, which meant that my blinding device was now at (m) instead of
(n), which meant…

Uh oh. Accidentally put on an un-IDed ring.

Uh oh. It’s stuck.

Oh no! Cursed ring alert! Run up the stairs quickly. If I can get this
ring off in the Minetown fountains (apologies to the guards!), then I
might still be able to survive…

Find myself changing into a vampire on the way. Uh oh. Ring of
polymorph. While this isn’t a half-bad form, I’m going to have to
periodically drop all my stuff if I change to a weak form…

I scrawl the E-word with my fingers. Hey, that’s pretty cool.

Change into a vampire bat. Do nothing for a few rounds, as can’t move
a handspan with all my loot. Can’t even cast spells.

Change into a vampire. Hey, high strength can be quite handy sometimes.
Continue running for the fountain.

Dip the ring into the fountain. Whew! It glowed!

Slip the ring off and wander around as a vampire waiting for my form
to return to normal. Tell myself to remember to use m instead of n to
blind self.

Head down to Mines’ End. A quick !PoOD tells me that someone’s already
cleaned out the gem cache. Fortunately, the culprit is standing right
to me, so I zap the dwarf with force bolts until he implodes. Grab
whatever loot there was.

Head back up.

Wander around.

Take off armor (can’t rip that apart now, only set I have), put on
uncursed poly ring, and wait. Turn into gray dragon. Ooh. Am satiated
and have ring of slow digestion, so have fun laying gray dragon eggs.
4 hatch.

Take off ring and return to human. Am followed by 4 dragons. Other
pets died some time ago.

Get teleportitis. Was hoping for teleport control, but can’t have
everything.

Go to big room. Uh oh. Wands on the floor. Make run for all the wands
within reach, then beeline for the down-staircase. Darn, Sokoban
stairs on this level too, but shouldn’t go up there while still no
teleport control or rock-bypassing attack like magic missile.

Go down. Have to leave pets behind, sniff sniff, but nasty troll with
poleaxe is very convincing.

Wander around. Decide to go back up, having remembered that bones file
left cursed magic whistle that will still work some of the time.

Uh oh. Former pet dragons no longer tame. Darn! They were so nice at that.

Run up, run down to Minetown, grab whistle, and try to dunk it in
every fountain found. Eventually uncurse it.

Silly me forgets to bring magic marker from stash for uncursing also.
Oh well. Blessed scroll of remove curse would have been really handy.

Go down. Put on unidentified uncursed ring for kicks.

Wander around. Accidentally put on =oPoly

Get message: “What kind of monster would you like to polymorph into?”

Stare at message.

Whoop for joy. Poly _and_ poly control! That, and slow digestion, and lots of rations…

Wheeeeeeee.

Save game quickly and take a step back. Do not want to accidentally
screw up game due to late-night play. Wheeeeeeeee. =)

Density/gravity map of orkut profiles geographically mapped across the US

February 25, 2004 - Categories: -Uncategorized

http://www.the-mathclub.net/orkutp.gif
and the z-axis luminosity is normalized and calcuate as sum [ 1/d.i^2 ]

Link from orkut channel on irc.freenode.net

Nethack

February 25, 2004 - Categories: -Uncategorized

Ooooh, level 17: I get tele-control!

Teaching thoughts

February 25, 2004 - Categories: -Uncategorized

One of my CS21A students wrote:

hehe. Thanks, I’ll try and make it there. Wow, you’re the only
prof I have who’s still very much excited about the class. :) My
other profs seem like they just want to bite our heads off and get
it over with. hehehe. j/k

I hope I can keep this up!

E-Mail from Jim I.

Eighth Workshop on Pedagogies and Tools for the Teaching and Learning of Object Oriented Concepts

February 25, 2004 - Categories: -Uncategorized

http://www.cs.umu.se/~jubo/Meetings/ECOOP04/

Note to self: check for proceedings.

E-Mail from JXrgen BXrstler

Eighth Workshop on Pedagogies and Tools for the Teaching and Learning of Object Oriented Concepts

February 25, 2004 - Categories: -Uncategorized

http://www.cs.umu.se/~jubo/Meetings/ECOOP04/

I wish I could do research like this…

Successfully applying object-oriented techniques requires a
thorough understanding of basic object-oriented concepts.
However, teaching and learning these concepts have proven to
be very difficult in the past.

Using traditional programming languages, concepts could be
introduced step by step. Abstract and advanced concepts, like
for example modules and abstract data types could be handled
as an afterthought. In the object-oriented paradigm, the basic
concepts are tightly interrelated and cannot easily be taught
and learned in isolation, making these tasks much more
challenging.

Switching to object-oriented development is not just a matter
of programming languages. Focusing on the notational details
of a certain language prevents students from grasping the “big
picture”. Many traditional examples are furthermore not very
suitable for the teaching and learning of object-oriented
concepts. Many popular examples (like for example ‘Hello
World’) actually contradict the rules, guidelines and styles
we want to instil in our students.

Educators must therefore be very careful when
selecting/developing examples and metaphors. Rules and
misconceptions that students develop based on doubtful
examples will stand in the way of teachers and learners as
well.

This is the eighth in a series of workshops on issues in
object-oriented teaching and learning. Previous workshops were
held at OOPSLA’97, ECOOP’98, OOPSLA’99, ECOOP’00, OOPSLA’01,
ECOOP’02 and ECOOP’03.

SUGGESTED TOPICS

We solicit contributions describing experiences, ideas and
resources to support the teaching and learning of basic object-
oriented concepts. We especially welcome submissions on the
topics listed below, but will consider other topics as well:

- successfully used examples and metaphors;
- approaches and tools for teaching (basic) object-oriented concepts;
- approaches and tools for teaching analysis and design;
- ordering of topics, in particular when to teach analysis and design;
- experiences with innovative CS1 curricula and didactic techniques;
- learning theories and pedagogical approaches / methods;
- representation of learning resources;
- distance education / net-based learning;
- collaborative learning;
- guiding the learners;
- learners’ view(s) on object technology education;
- development of the learner’s competence;

INTENDED AUDIENCE

This workshop will bring together educators, researchers, and
practitioners from academia and industry to share and discuss
experiences, ideas and resources to support the teaching and
learning of object-orientation. We also want to encourage
trainees or students to report experiences from the learners’
point of view.

People from other areas than computer science or educational
research in general are also welcome, but they should clearly
state how their work can be applied to the learning and
teaching of object technology.

Attendance to the workshop is limited. Participation will be
by invitation only, based on the organizing committee’s
evaluation of a position paper. The submission should be
accompanied by the author(s)’ main message and a desired topic
for working group discussions.

Contributions should not exceed 8 pages in length and be sent
to J=FCrgen B=F6rstler (jubo@cs.umu.se) no later than April 5. We
would prefer PDF format, but will also accept Postscript,
Word, or HTML files.

Each submission should be accompanied by (1) a short biography
of the author(s); (2) the author(s)’ main message/position;
and (3) a desired topic for working group discussions.

IMPORTANT DATES

Position paper due: April 5
Notification of acceptance: April 26
Deadline for early registration: May 7
Workshop: June 14 or 15

E-Mail from JXrgen BXrstler

New feature in Java 1.5, which has been released

February 25, 2004 - Categories: -Uncategorized

The new Scanner class provides the long awaited simplified keyboard
input! Finally no more need to rely on third-party classes or suffer
through painful declarations and conversions. Thanks to all of you who
have added your voice to those of us urging Sun to address this issue.
The Scanner class can parse input based on regular expressions as well.

E-Mail from John Lewis

Linked list lecture postponed to Tuesday, March 2

February 26, 2004 - Categories: -Uncategorized

I have CS161 finals for seniors from 1:30 to 3:30 today, so please use
class time to work on milestone 2.

This is:

Feel free to ask your classmates for help or help your classmates
figure things out. You can share tips, talk about bugs you
encountered, and even look at other people’s source code. However, you
are responsible for making sure that you understand the code in your
program. What you get out of an education is only as much as you put
in – if you just copy and paste, you’ll have a hard time later on! =)

Milestone 2: Networking

- 15 points: Two-player game
- 20 points: A server that can accept all the people who try to connect to it. The server should make it easier for people to find people to play with, and should automatically set up the game once the player chooses opponents.

These milestones are guidelines. If you miss them or do not implement
them exactly, I want you to send me detailed notes on what you _are_
doing. You are responsible for your results. If you miss the
milestones and do not complete your project, you may want to
reevaluate your priorities or learn how to manage your time wisely. =)

CS21B

Linux Installfest at Mapua IT Center

February 26, 2004 - Categories: -Uncategorized
When: March 4 to 5 (9 am to 6 pm)
Where: Ground floor, East Wing Hallway, Mapua IT Center Building
333 Sen. Gil Puyat Ave (cor. Reposo)
Makati City
Cost: Absolutely free! (Including software installation and services)
What to Bring: CPU, monitor, mouse, keyboard, power cords and other devices you may want configured. (We have spare monitors but they’re limited)
Inquiries: Email mitc-lug@linux.mapua.org or etxt “LUG TELL <your question>” to 2355 (Globe only)
Registration: Download the registration form from http://linux.mapua.org or get a copy from Ms. Jemma (MITc Faculty Room, 2nd Floor MITc building)

ERC bot enhancements

February 26, 2004 - Categories: -Uncategorized

I should add a hook that parses channel messages, extracts keywords,
runs them through my database and populates a circular queue of likely
“nick: canned answer” combinations.

Oooh, Emacs ubercoder status

February 26, 2004 - Categories: emacs
 sachac: want to take over emacs-wiki?
 sachac: damien handed it off to somebody else, but I think you would do a good job
 sachac: and then you'll control the package that planner.el sits on
 sachac: enable you to do more extensive mods.. :)
 johnw: can you offer any advice on using planner-diary.el? not having any luck getting diary entries to
           display in my planner.
 johnsu01: i've never even heard of planner-diary.el!!
 johnw: Mark Triggs is in charge of emacs-wiki now...
 johnw: I've got a couple of patches for it, and am waiting for him to merge the ones he likes.
 sachac: well, since nobody asked me, I am offering it to you
 johnsu01: Oh! That's Thomas Gehrlein's package, right?
 sachac: but if you two are working together already, then that's fine too
 johnw: Haven't heard much from him, but I'd love to help out. Thanks for the offer! =) I'll let him try it out
          first; if he's too busy to maintain it, then I'll offer to take over. emacs-wiki is way cool.
 sachac: awesome; i'd rather see it in your hands, because i know you and know the good work you've done with
        planner
 sachac: if you're doing planner and remember both, all the more reason to add emacs-wiki, schedule and timeclock
        to your list :)
 all i'm going to say is, it's really too bad you are so young and so far away; you are an awesome girl, sacha --
        and quite an uebercoder yourself!

Nifty ideas for PlannerMode

February 26, 2004 - Categories: emacs

- A list of all the notes related to a BBDB contact. I’d have to parse

out all the bbdb links, covert them into canonical names and match
them against the records, but it would be fun.

- General emacs-wiki hyperlinks.

- Recurring tasks.

- Ongoing projects and the next task in them. Upon task completion,

the next task in the project would be scheduled. Actually, this is
already handled by future tasks, but this flexibility might be fun.
Forces you to think of the next step.

- Monthly headlines in a calendar.

- Notes index by month, by year.

- timeclock integration into my Schedule.

Thoughts on planner-notes

February 26, 2004 - Categories: emacs

Actually, subcategories are already handled by separate plan pages, so
I don’t need subtopics any more. I would, however, like to see all the
note headlines, possibly bounded by certain dates. That would be fun.
In which case, I don’t need to merge anything in from planner-notes -
I can just work with the export functions I already have in
planner-experimental.

../../notebook/emacs/emacs-wiki/planner-notes.el

Brilliant idea!

February 26, 2004 - Categories: emacs

Global planner IDs should be hyperlinks in their own right. They are of the form

plan://id-number or
plan://id-number/page,page,page,page

But then how do we define anchors and references?

Reference: plan:///id-number or plan:///id-number/page,page,page,page (note: triple-slashes)

Or maybe plan:id-number[/page,page,page] for the anchor. Double-slashes will not be updated.

I want IDs because I’d like to e able to update notes in case of
typos.

Then this is no longer emacs-wiki-id, but really just planner-id.

Yikes, I will so break the existing planner-id support with
this… There must be a better way. At the very least, I should offer
a conversion function.

../../notebook/emacs/emacs-wiki/emacs-wiki-id.el

Umbrella.net: Ad hoc social networks

February 26, 2004 - Categories: -Uncategorized

http://www.corante.com/many/archives/2004/02/24/umbrellanet_ad_hoc_social_networks.php

E-Mail from Jason Banico

Printer details

February 27, 2004 - Categories: -Uncategorized

Deleted: Lost secret key

planner.el goodness

February 27, 2004 - Categories: emacs

Andrew Laing wrote:

I think the work you put into Planner et al is fantastic. I have spent
quite a bit of time over the past week poring over your web page and .el
files and just wanted to take a second to say thank you for all your
work. I have recently switched to Emacs as my text-editor and sincerely
appreciate sites like yours which help me understand it better. Thank
you!

Awwwwwwww! =)

E-Mail from Andrew Laing

Public key needed for XEmacs packages

February 27, 2004 - Categories: emacs

I was getting “Couldn’t check signature” errors on XEmacs. I
uncommented the mailto keyserver in my ~/.gnupg/gpg.conf and now things work.
The public key needed is here:

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: PGP Key Server 0.9.5

mQGiBD5bymERBADX0PmDpRvw9a7D1M7gE/KA6ofrYFuy1+r9SzJ9vpdYC8B8B1ip
QDaTNA3F2euz5BkNal2m3MF7TLXItoojd0QEoIMZjpka17qtXpE5WPhdTa+sgN10
1o/uffHIkRCnjudY/lMtPrDtAVnNZsD7Yxs4zltw7ZCiwnJYkY7wuW6XEwCg97NY
N1N3bw8n214at/a6J4tAQt0D/1TEDSlpEoKuS2YJW+seZB7IoDiTeG/6IQwN5N34
XFrRbT00ttWsQSKUlnhkec0HXJr06GAsSP8+ZxI5ULRmHWB6FDvhE5bllmQyQ1VZ
1GaPhIcQcNTC7dpM6SVpG2JjTZ0IHxLGPUby20maFBwAmFSGHoa8rS/fAA0XOW/r
wWrwBACG5igwGBSt6U/yGdvrXM0B9Kg6oYj8KZNI2WNV/CpH+7R+rAuasvEGtFJ+
+2YwHr5rnhvLnCCJbsbkhvG0fjdZNnr1OVljgnR99sjmY9B2rzHwOXcDyM4exRxB
p5neVEF7nGbCh0oVcxUNr50qY+kmBfGdI3+tI9YUbbmjgk2QerRBTm9yYmVydCBL
b2NoIChYRW1hY3MgcGFja2FnZS1yZWxlYXNlIG1hbmFnZXIpIDx2aXRlbm9AeGVt
YWNzLm9yZz6IXwQTEQIAHwUCPlvKYQUJA8JnAAQLBwMCAxUCAwMWAgECHgECF4AA
CgkQgu3ywdHdhM3qmACgqWqMvO9wBKi5vGVp/uGKrIVoQqoAninfPKIii17/LeWC
D5I3CeD48ct5uQENBD5bymUQBACnFB0BchSQEQeQvEdXs45hxKlW39YqmnTmFClP
P2XJM/f9kWOL4e01/B+2tP/o8yrkS3C7OR1p8llIHUGnZTGW0sKn3/OLdw1c0eFY
8dCVHnoRnvqn67ffQ4Lqk56Tm96OtK78sJpy9Vj+UhwUdtdDNyNQiWREtsJDE2Qd
MpK++wADBQP+P1Pz1vJQUMj7OqdojcLCRO3hosx5En21hC3ZL3h0Mnh54yuJxlNl
Q1zRoiufzG1HSgBZLUsnXxDZSiWSNKnf4gWidrbnq0dQlci4knxB5FfmY3hDYkvR
KA6+TQs+8vASXnRWArLXAthpl+kv5iMCFBhIF7aNY12/PGIhtu4At7CITAQYEQIA
DAUCPlvKZQUJA8JnAAAKCRCC7fLB0d2EzYrGAKDdVoyugIlwLzHl4hzxLKzBkWR1
7wCgp9uaH8pfFUr70S2bALwPDdy/fXs=
=1HP3
-----END PGP PUBLIC KEY BLOCK-----

The mailto server returned the key to me as an attachment. I pressed
pipe on the MIME part and passed it to gpg —import.

E-Mail from Server Administrator

Bah, unrelated repositories

February 27, 2004 - Categories: emacs
 * patching for this revision (mark@dishevelled.net--2003-mst/emacs-wiki--dev--1.0--patch-1)
 star-merge: unable to merge unrelated trees.

emacs-wiki and the example tag

February 27, 2004 - Categories: emacs

I firmly believe that stuff in example tags should not get marked up
on the page, and may have to fiddle around with the faces in order to
get that to happen. Actually, restoring it to the bottom makes
sense…

../../notebook/emacs/emacs-wiki/emacs-wiki.el

Better!

February 27, 2004 - Categories: emacs

Finally got emacs-wiki highlighting just the way I want it.
Apparently, it bypasses the normal font-lock thing. Changes: I made
the example tag remove all the properties from the bounded region.
Here’s the relevant snippet from my ../emacs/emacs-wiki-config.el:

(defun sacha/htmlfontify-insert-region (buffer begin end)
  "Insert into BUFFER the htmlified text between BEGIN and END."
  (save-excursion
    (let* ((hfy-optimisations (cons 'skip-refontification hfy-optimisations))
	   (input-text (buffer-substring begin end))
	   (temp-file (make-temp-file "html-input"))
	   output-buffer)
      (with-temp-buffer
	(insert input-text)
	(setq buffer-file-name temp-file)
	(save-excursion (setq output-buffer (htmlfontify-buffer nil nil)))
	(set-buffer-modified-p nil))
      (unwind-protect
	  (let (b e yanked-output)
	    (set-buffer output-buffer)
	    (goto-char (point-min))
	    (search-forward "
\n")
	    (setq b (line-beginning-position))
	    (goto-char (point-max))
	    (search-backward "

")
(forward-line -1)
(setq e (line-beginning-position))
(setq yanked-output (buffer-substring-no-properties b e))
(set-buffer buffer)
(insert yanked-output))
(set-buffer output-buffer)
(set-buffer-modified-p nil)
(delete-file temp-file)
(kill-buffer output-buffer)))))

(defun sacha/emacs-wiki-example-tag (beg end attrs highlight-p)
"Mark up text as an example with optional font-locking."
(if highlight-p
(progn
(remove-text-properties
beg end '(face nil font-lock-multiline nil
invisible nil intangible nil display nil
mouse-face nil keymap nil help-echo nil))
(goto-char end))
;; I don't know what would happen if you don't have
;; htmlfontify. I guess if you are installing this you
;; should have it...
(let ((end-marker (set-marker (make-marker) (1+ end))))
(save-restriction
(narrow-to-region beg end)
(let* ((mode (cdr (assoc "mode" attrs)))
(start (progn (forward-line) (point)))
(stop (progn (goto-char end) (beginning-of-line) (point)))
(text (buffer-substring-no-properties start stop))
(buffer (current-buffer)))
(delete-region beg end)
(with-temp-buffer
(insert text)
(when (and mode (and (stringp mode) (functionp (intern mode))))
(funcall (intern mode))
(font-lock-fontify-buffer))
(sacha/htmlfontify-insert-region buffer (point-min) (point-max)))
(goto-char (point-min))
(insert "

\n")
	  (goto-char (point-max))
	  (insert "

\n")
(add-text-properties (point-min) (point-max)
'(rear-nonsticky (read-only) read-only t))))
(goto-char end-marker))))

(add-hook 'emacs-wiki-mode-hook 'emacs-wiki-highlight-buffer t)

Ledger

February 27, 2004 - Categories: -Uncategorized

Depends: libxmltok1 libpcre3 libgmp3
Build-deps: libxmltok1-dev libpcre3-dev libgmp3-dev

Better font-locking in emacs-wiki

February 27, 2004 - Categories: emacs

If you’re having problems with emacs-wiki not highlighting the first
time you view a buffer, you’re probably set to use jit-lock or
lazy-lock. Don’t. Use (setq font-lock-support-mode nil) instead, so
full font-locking will always be performed. You may want to use the
list so that this is only done for planner-mode and emacs-wiki-mode. =)

Dudley’s dungeon

February 28, 2004 - Categories: -Uncategorized

http://dudley.nicolaas.net/

Dudley’s dungeon is a daily comic about NetHack and other important
things in life, set in the familiar surroundings of the Dungeons of
Doom.

E-Mail from Dion Nicolaas

Uh oh.

February 28, 2004 - Categories: -Uncategorized

My pet arch-lich (polytrap) just killed the Oracle. I have a feeling that wasn’t supposed to happen.

So far so good. New character has a couple of magic markers and a
bucket of holy water, but had to kill off non-aligned priest in
Minetown (thanks, pet mastodon) in order to convert the altar.

Have blessed lamp. Am tempted to rub it, but am doing fine so far.

RSS aggregator

February 28, 2004 - Categories: -Uncategorized

I’m looking for an RSS aggregator (web-based or command-line) that
will take a list of feeds and produce an RSS feed. If it’s web-based,
it should only refresh when I supply a password or use a cookie.

Videoke results

February 29, 2004 - Categories: -Uncategorized
Ranulf 70 Hammer time
Peppy 93 How am I supposed to live without you?
Jerome 100 Michelle
Sacha 83 Close to you
Peppy 94 Baby you’re all that I want
Jerome 98 Be my lady
Marcelle 96 Di na natuto
Jerome 99 I have a dream
Marcelle 95 Foolish heart
Peppy 100 Kokomo
Jerome 95 You’ve got a friend
Marcelle 98 Endless love (duet with himself)
Peppy 100 On bended knee
Eric 00 The impossible dream
Ranulf 92 If you really love a woman
All 87 Bohemian rhapsody
Eric 97 Staying Alive
All 89 We are the champions
Marcelle 100 Sana maulit muli
Jerome 92 High school
Eric 100 Englishman in New York
Peppy 76 Living la vida loca
Ranulf 94 Love of my life
Jerome 98 Moon river
Ranulf 95 Crazy little thing called love
Marcelle 97 darna
Eric and Jerome 85 Voltes V
Eric 94 Foolish heart
Peppy 94 It must have been love
Eric 100 La bamba
Jerome 80 Never been to me
Peppy 95 Right here waiting
Eric 100 Kahit kailan
Marcelle 100 Awit ng barkada
Jerome 99 Fernando
Sacha 81 Top of the world
Ranulf 95 Break it down
Eric 99 Eternal flame
Sacha 91 Tragedy

Nethack: getting out of trouble

February 29, 2004 - Categories: -Uncategorized

Have a look at the spoilers ‘Getting out of trouble’:
http://www.helsinki.fi/~vviitane/spoilers/trouble

E-Mail from bibe

WHEE!

February 29, 2004 - Categories: -Uncategorized

CS161 4th year grades are done. The people who failed the course
failed with scores far below the passing mark and have consistently
been performing badly anyway. Congrats to Wendilyn Ong on her B.

Oooh, aptitude

February 29, 2004 - Categories: -Uncategorized

aptitude has some nifty improvements! Nice break tracing.

Emacs chess

February 29, 2004 - Categories: emacs

I’ll need to look at chess-pgn-read-plies to get emacs-wiki support for chess stuff.

Action groups for Emacs

February 29, 2004 - Categories: emacs

Agroups (Action Groups) 2.3 for Emacs has been released and is available
for download at

http://www.interhack.net/projects/agroups

If you like to automate your day to day work-flow you might like Agroups.

Short Overview

Action Groups are groups of action entries that an Emacs user can
create, save, name and access quickly. In a general sense these actions
are any automation that a user can imagine to help with his activities.
The user instantiates these automations as action entries which are a
specific instances of some action from the current collection of
actions. Actions can be as simple as finding a commonly used file in a
buffer, to more complex like executing a previously defined keyboard
macro, to very complex like an unimaginable whopper defined by a user
created Action Template. Action Templates are an extensibility feature
of Action Groups and allows the user to easily create new actions,
Agroups supplies a useful predefined collection of actions created with
Action Templates.

A collection of action entries is called an action group. Typically
the user associates each action group with a concentrated activity such
as a project. Each entry of an action group is associated with a
specific instance of an action. A group itself is actually an entry
associated with a special action called `group’ so that a group entry
can be yet another group itself. This implies that groups can have
subgroups and subgroups can have subgroups and so on. This gives the
user structured organizational capabilities.

The Action Groups facility was designed to allow easy and fast
creation of groups and entries to help automate an Emacs user’s work.
At the same time it was designed to allow fast execution of the
entries. To this end a user can use the Emacs completion facility to
execute entries or key bindings or a combination of both.

E-Mail from William Paul Vrotney