Saturday, July 05, 2008

University Professor Web Pages

This evening I browsed through the personal web sites of full-time faculty at the California State University at Sacramento (CSUS) and the University of California at Davis (UC-Davis).

As a first impression, the personal faculty web sites at both campuses scared the hell out of me.

The winners of best web sites, in my opinion:
Notables:
Profs that care:
Fun:
Oddities:
What I liked: professional picture, clean layouts, pictures of the instructor with students

A point of irony: the CSUS department's 2006-2007 assessment report lists "Communication skills and interpersonal skills" as an essential skill on page two.

A second point of irony: UC-Davis has six people (other than Dr. Staadt and Dr. Ma) whose stated interests involve computer graphics, animation, or visualization: 1, 2, 3, 4, 5, 6--yet their web sites remain woefully primitive, in my opinion.

The serious takeaway: It's all-too-easy to mock people's weaknesses, and I hope this attempt at humor comes across as just that--these people are probably all outstanding in their fields (no pun intended), great people, and great instructors. Yet, if faculty fail to communicate clearly using the most widely available medium available to them, how can we inspire students to do so? This isn't a new phenomenon--the CS faculty web pages of my alma-mater haven't improved that much since I graduated in 2000 (even the resident computer animation expert).

CSUS Grad Courses Fall 2008

As a student taking graduate-level classes through the CSUS Open University program, I have these class options to choose from for Fall 2008 (assuming I can waive the prerequisite CSC 205 course--which requires fully classified status to take):
  1. CSC 239 (Chang W.). Advanced Operating Systems Principles and Design. (AVAILABLE FALL 2008; PRE: CSC-205)
  2. CSC 242 (Arad B.). Computer-Aided Systems Design and Verification. (AVAILABLE FALL 2008; PRE: CSC-205)
  3. CSC 255 (Ghansah I.). Computer Networks. (AVAILABLE FALL 2008; PRE: CSC-138)
  4. CSC 273 (Arad B.). Hierarchical Digital Design Methodology. (AVAILABLE FALL 2008; PRE: CSC-205)
The other graduate-level classes offered:
  1. CSC 201. Programming Language Principles.
  2. CSC 204. Data Models for Database Management Systems.
  3. CSC 205. Computer Systems Structure.
  4. CSC 206. Algorithms and Paradigms
  5. CSC 209. Research Methodology
  6. CSC 233. Advanced Software Engineering Project Management.
  7. CSC 234. Software Verification and Validation.
  8. CSC 235. Software Architecture.
  9. CSC 252. Cryptography Theory and Practice.
  10. CSC 254. Network Security.
  11. CSC 280. Advanced Computer Architecture.
require fully-classified graduate level status. CSUS might offer waivers--I'm not sure yet.

Two other classes that seem interesting:
  1. CSC 133. Computer Graphics
  2. CSC 165. Computer Game Architecture
On Rate My Professors, W. Chang he gets a 2.1--but only from undergrad-courses. The web site fails to list any other professors. Helpfully, his web site shows a Mac icon beating down a Windows icon. The web site fails to list anything about Arad or Ghansah.

PickAProf.com rocks--it lists the grades given by a prof. It doesn't seem as popular though, in terms of reviews, even though it started in 2000.

Teacher Ratings

How awful (I laughed, I cried):
"My will to study computer science has been completely destroyed."
This evening I'm reviewing CSUS prof ratings and deciding which class to take for the fall semester--this comment popped out.

GRE

Gearing up to take the GRE before the October 1st (88 days) Sac State application deadline so I can get in for the Spring 2009 semester. Hopefully by 2011 I'll have my Masters degree.

Amby provides a slew of links: http://amby.com/GRE/.

Steps to reach my goal:
  1. Meet with CSUS department representative and discuss whether I meet all outstanding requirements
  2. Achieve GRE scores of:
    600 on the Verbal Reasoning (85th percentile)
    750 on the Quantitative Reasoning (85th percentile)
    5 on the Analytical Writing Score (96th percentile)
  3. Complete and submit paperwork
I initially put up more aggressive targets, but then I realized that I'm not going to have as much time as I want to prepare for the GRE. The CS grad program at CSUS seems to use the GRE as a comparison benchmark against other applicants for the semester--they seem to care more that applicants have the proper foundation.

My thought at this point is: test early, test often to get a sense of where I'm at.

Hikes

The attendant at Smog Busters shared several locations for hikes involving waterfalls in the Northern California area:
  1. Bassi Falls (Pollock Pines, El Dorado National Forest, El Dorado County)
  2. Feather Falls (Oroville, Feather Falls Scenic Area, Plumas National Forest, Butte County)--"Outside of Yosemite, this is maybe the best waterfall in California."
He says Spring represents the best time to hike since the water flow reaches its peak. He also recommended http://waterfallswest.com as a resource.

I asked him if he had hiked the Stevens Trail and he said no.

The Waterfalls West web site looks like a ripe place to host a wiki (ala http://wikitravel.com).

2008 Sacramento Japanese Film Festival

We missed the 2008 Sacramento Japanese Film Festival event due to pressure from finals week.

The list of movies screened that I hope to view at home in the future:
  1. Always – Sunset on Third Street
  2. Hot Summer Winds
  3. The Slanted Screen
  4. Rashomon
We both enjoyed the 2007 Sacramento Japanese Film Festival event

Article in the Sacramento Bee: http://www.sacbee.com/121/story/939671.html

Friday, July 04, 2008

Radio Songs

Listening to KDVS 90.3 on my morning commute on Thursday, I heard this song at 7:30 AM:

Sri Lanka-based Fonseka's "Kapirigna" on the 1995 compilation album "The Secret Museum of Mankind, Volume One," on the Yazoo label. You can hear it around the 90-minute mark on the KDVS "Swamp Bass" stream here: http://www.kdvs.org/listen/m3u/show_id/446/date/2008-07-03. Reminds me of the Cajun/Zydeco exuberance.

Listening to KYDS 91.5 this evening I heard Kingston, NY-based Coheed and Cambria's "Delirium Trigger" from their 2002 album "The Second Stage Turbine Blade" on the Equal Vision and Defiance labels. Video.

Sunday, June 29, 2008

Supi Udupi

After the movie, we visited Udupi Indian Restaurant on Sunrise: http://www.vegguide.org/entry/3814. I ordered the deluxe dinner, which had a smattering of everything. Minimalistic interior, but outstanding staff and a wonderful feast.

Flight of the Red Balloon

I enjoyed the long takes of this film--some as long as eight minutes. All dialogue's improvised. So much of the movie takes place within Suzanne's (Juliette Binoche) apartment that by the end I felt very much at home there--it's a cozy, bohemian Parisian loft, with an abundance of books and scattered items. When Simon went to "have a go" on his Playstation, I wanted to know what game he played. The poster on the back of the door advertised "La Ballade de la Mister Punch", a tribute to the Punch and Judy puppet show. The movie seems as though it's from Song Fang's perspective--unjudging, attentive, thoughtful, cozy. Song adapts and becomes the calm in the middle of deteriorating relationships--Marc, the downstairs tenant, who hasn't paid rent in over a year; and Pierre, Simon and Louise's father who has abandoned his family to live in Montreal. The ending comes abruptly, amidst a teacher discussion in the Musée d’Orsay over Félix Vallotton’s 1899 painting of a child chasing a red ball, "Le Ballon." The movie fades away with the song "Tchin Tchin" (French for "cheers") by singer Camille. The movie also seems like it might document the view from Simon's perspective--adrift as he floats between school, home, the cafe where he plays pinball, and piano lessons. The home becomes a womb, but without Suzanne, it also seems somewhat empty. Suzanne comes and goes freely, in her words, "making everyone happy." The end of the film seems to document how much Simon's needs aren't getting met--Louise chooses to stay in Brussels to care for her great-grandfather, leaving Simon visibly upset (sleeping with his bear). Song, as the nanny, checks in to let him know she cares, but respects his grieving and lets him rest. Suzanne, slowly but successfully restoring order to the chaos left by Pierre's departure two years earlier, struggles to keep the threads of her family together. As I mentioned, the ending comes abruptly, leaving me wanting to see more--what happens next? The chemistry seems right for thsi family though--I suspect they turn out all right, between Suzanne's passion and Song's presence.

Even though we ate before watching this movie, I felt incredibly hungry watching it. Watching Song learn to make crepes, or Suzanne offer a biscuit, or Marc prepare vegetables, or a poured glass of wine--I couldn't wait to eat.

From left to right: ? (Chinese professor), Song Fang (Song), Louise Margolin (Louise), Juliette Binoche (Suzanne), Simon Iteanu (Simon), and Hippolyte Girardot (Marc).


New York Times review.
Village Voice review.

Below: I guess this is how they did it. I imagined elaborate wind machines, fishing line, and so forth.

Thursday, June 26, 2008

Fire

The sun looked like this on the way home:


(note: not my pic, and not a pic of Sacramento)

Living in California's Central Valley means smoke from fires flows down into the "bowl" where we live from the foothills to the east, west, and north.

A few years ago, the fires produced enough ash that it looked like a light snow dusting for 24 hours.

A co-worker told me yesterday that about eight years ago, she saw the wind creating billows of smoke.

I can't smell the smoke unless I drive with the window down.

Nothing threatening or scary--a relatively minor side-effect of living in one of the safest places on earth (no hurricanes, no tsunamis, no earthquakes, minor chance of floods, no tornadoes, no snowfalls, and so forth).

Sunday, June 22, 2008

Radio Songs

Heard:
Franklin, Tennessee-based Paramore's "Misery Business" from their 2007 album "Riot!" on the Fueled By Ramen label.

Garry Schyman's "Praan" from the "Where the Hell is Matt?" video: http://www.vimeo.com/1211060
I also have a new radio station that I'm listening to in tandem with KYDS (91.5): KDVS, 90.3, out of Davis, CA.

Friday, June 13, 2008

Festuca Idahoensis



Link: http://www.bluestem.ca/festuca-siskiyou-blue.htm

Picnics

Local parks:
  1. Arden Park (La Sierra Blvd)
  2. McKinley Park (Alhambra & H)
  3. William Land Park (Land Park Dr & Freeport Blvd)
  4. Maddox Park (Thor & Mission)
  5. Howe Park (Howe & Cottage)
  6. River Park (Carlson, across from Sac State)
  7. Arden Bar at the American River (End of Arden Way, East of Fair Oaks Blvd)

Sunday, June 08, 2008

Radio Songs

El Paso, TX-based Sparta's "Collapse" from their 2002 album "Wiretap Scars" on the Geffen Records label.

Lubbock, TX-native Joe Ely's "Slow You Down" from his 1993 album "Love and Danger" on the MCA Records label. From the May 31 recording of A Prairie Home Companion in Las Cruces, NM.

Homework, Sections 5.1 through 5.3

My solutions to the 2nd edition Dragon Book's Exercises for chapter five:

5.1.1 a, b, c: Investigating GraphViz as a solution to presenting trees

5.1.2: Extend the SDD of Fig. 5.4 to handle expressions as in Fig. 5.1:
  1. L -> E N
    1. L.val = E.syn
  2. E -> F E'
    1. E.syn = E'.syn
    2. E'.inh = F.val
  3. E' -> + T Esubone'
    1. Esubone'.inh = E'.inh + T.syn
    2. E'.syn = Esubone'.syn
  4. T -> F T'
    1. T'.inh = F.val
    2. T.syn = T'.syn
  5. T' -> * F Tsubone'
    1. Tsubone'.inh = T'.inh * F.val
    2. T'.syn = Tsubone'.syn
  6. T' -> epsilon
    1. T'.syn = T'.inh
  7. E' -> epsilon
    1. E'.syn = E'.inh
  8. F -> digit
    1. F.val = digit.lexval
  9. F -> ( E )
    1. F.val = E.syn
  10. E -> T
    1. E.syn = T.syn
5.1.3 a, b, c: Investigating GraphViz as a solution to presenting trees

5.2.1: What are all the topological sorts for the dependency graph of Fig. 5.7?
  1. 1, 2, 3, 4, 5, 6, 7, 8, 9
  2. 1, 2, 3, 5, 4, 6, 7, 8, 9
  3. 1, 2, 4, 3, 5, 6, 7, 8, 9
  4. 1, 3, 2, 4, 5, 6, 7, 8, 9
  5. 1, 3, 2, 5, 4, 6, 7, 8, 9
  6. 1, 3, 5, 2, 4, 6, 7, 8, 9
  7. 2, 1, 3, 4, 5, 6, 7, 8, 9
  8. 2, 1, 3, 5, 4, 6, 7, 8, 9
  9. 2, 1, 4, 3, 5, 6, 7, 8, 9
  10. 2, 4, 1, 3, 5, 6, 7, 8, 9
5.2.2 a, b: Investigating GraphViz as a solution to presenting trees

5.2.3: Suppose that we have a production A -> BCD. Each of the four nonterminals A, B, C, and D have two attributes: s is a synthesized attribute, and i is an inherited attribute. For each of the sets of rules below, tell whether (1) the rules are consistent with an S-attributed definition (2) the rules are consistent with an L-attributed definition, and (3) whether the rules are consistent with any evaluation order at all?

a) A.s = B.i + C.s
  1. No--contains inherited attribute
  2. Yes--"From above or from the left"
  3. Yes--L-attributed so no cycles
b) A.s = B.i + C.s and D.i = A.i + B.s
  1. No--contains inherited attributes
  2. Yes--"From above or from the left"
  3. Yes--L-attributed so no cycles
c) A.s = B.s + D.s
  1. Yes--all attributes synthesized
  2. Yes--all attributes synthesized
  3. Yes--S- and L-attributed, so no cycles
d)
  • A.s = D.i
  • B.i = A.s + C.s
  • C.i = B.s
  • D.i = B.i + C.i
  1. No--contains inherited attributes
  2. No--B.i uses A.s, which depends on D.i, which depends on B.i (cycle)
  3. No--Cycle implies no topological sorts (evaluation orders) using the rules
5.2.4: This grammar generates binary numbers with a "decimal" point:
  1. S -> L . L | L
  2. L -> L B | B
  3. B -> 0 | 1
Design an L-attributed SDD to compute S.val, the decimal-number value of an input string. For example, the translation of string 101.101 should be the decimal number 5.625. Hint: use an inherited attribute L.side that tells which side of the decimal point a bit is on.
  1. S -> L . Lsubone
    1. L.inh = 0
    2. Lsubone.inh = -1
    3. S.val = L.syn + Lsubone.syn
  2. S -> L
    1. L.inh = 0
    2. S.val = L.syn
  3. L -> Lsubone B
    1. Lsubone.inh = L.inh + 1
    2. B.inh = L.inh
    3. L.syn = Lsubone.syn * B.syn
  4. L -> B
    1. L.syn = B.syn * 2^L.inh
  5. B -> 0 | 1
    1. B.syn = digit.lexval
5.2.5: Design an S-attributed SDD for the grammar and translation described in 5.2.4.
  1. S -> L . Lsubone
    1. S.val = L.lhs + Lsubone.rhs
  2. S -> L
    1. S.val = L.lhs
  3. L -> Lsubone B
    1. L.lhs = Lsubone.lhs + (2^L.lhs_exponent * B.val)
    2. L.rhs = Lsubone.rhs + (2^L.rhs_exponent * B.val)
    3. L.lhs_exponent = Lsubone.lhs_exponent + 1
    4. L.rhs_exponent = Lsubone.rhs_exponent - 1
  4. L -> B
    1. L.lhs = 2^L.lhs_exponent * B.val
    2. L.rhs = 2^L.rhs_exponent * B.val
    3. L.lhs_exponent = 0
    4. L.rhs_exponent = -1
  5. B -> 0 | 1
    1. B.val = digit.lexval
5.2.6: Link: http://schultkl.blogspot.com/2008/05/solution-to-dragon-book-second-edition.html

5.3.1: Below is a grammar for expressions involving operator + and integer or floating-point operands. Floating-point numbers are distinguished by having a decimal point.
  1. E -> E + T | T
  2. T -> num . num | num
a) Give an SDD to determine the type of each term T and expression E.
  1. E -> Esubone + T
    1. E.type = if (E.type == float || T.type == float) { E.type = float } else { E.type = integer }
  2. E -> T
    1. E.type = T.type
  3. T -> numsubone . numsubtwo
    1. T.type = float
  4. T -> num
    1. T.type = integer
b) Extend your SDD of (a) to translate expressions into postfix notation. Use the binary operator intToFloat to turn an integer into an equivalent float. Note: I use character ',' to separate floating point numbers in the resulting postfix notation. Also, the symbol "||" implies concatenation.
  1. E -> Esubone + T
    1. E.val = Esubone.val || ',' || T.val || '+'
  2. E -> T
    1. E.val = T.val
  3. T -> numsubone . numsubtwo
    1. T.val = numsubone.val || '.' || numsubtwo.val
  4. T -> num
    1. T.val = intToFloat(num.val)
5.3.2 Give an SDD to translate infix expressions with + and * into equivalent expressions without redundant parenthesis. For example, since both operators associate from the left, and * takes precedence over +, ((a*(b+c))*(d)) translates into a*(b+c)*d. Note: symbol "||" implies concatenation.
  1. S -> E
    1. E.iop = nil
    2. S.equation = E.equation
  2. E -> Esubone + T
    1. Esubone.iop = E.iop
    2. T.iop = E.iop
    3. E.equation = Esubone.equation || '+' || T.equation
    4. E.sop = '+'
  3. E -> T
    1. T.iop = E.iop
    2. E.equation = T.equation
    3. E.sop = T.sop
  4. T -> Tsubone * F
    1. Tsubone.iop = '*'
    2. F.iop = '*'
    3. T.equation = Tsubone.equation || '*' || F.equation
    4. T.sop = '*'
  5. T -> F
    1. F.iop = T.iop
    2. T.equation = F.equation
    3. T.sop = F.sop
  6. F -> char
    1. F.equation = char.lexval
    2. F.sop = nil
  7. F -> ( E )
    1. if (F.iop == '*' && E.sop == '+') { F.equation = '(' || E.equation || ')' } else { F.equation = E.equation }
    2. F.sop = nil
5.3.3: Give an SDD to differentiate expressions such as x * (3*x + x * x) involving the operators + and *, the variable x, and constants. Assume that no simplification occurs, so that, for example, 3*x will be translated into 3*1 + 0*x. Note: symbol "||" implies concatenation. Also, differentiation(x*y) = (x * differentiation(y) + differentiation(x) * y) and differentiation(x+y) = differentiation(x) + differentiation(y).
  1. S -> E
    1. S.d = E.d
  2. E -> T
    1. E.d = T.d
    2. E.val = T.val
  3. T -> F
    1. T.d = F.d
    2. T.val = F.val
  4. T -> Tsubone * F
    1. T.d = '(' || Tsubone.val || ") * (" || F.d || ") + (" || Tsubone.d || ") * (" || F.val || ')'
    2. T.val = Tsubone.val || '*' || F.val
  5. E -> Esubone + T
    1. E.d = '(' || Esubone.d || ") + (" || T.d || ')'
    2. E.val = Esubone.val || '+' || T.val
  6. F -> ( E )
    1. F.d = E.d
    2. F.val = '(' || E.val || ')'
  7. F -> char
    1. F.d = 1
    2. F.val = char.lexval
  8. F -> constant
    1. F.d = 0
    2. F.val = constant.lexval

Monday, June 02, 2008

Tacos Are Good



For Dawn--seen on the light rail home this afternoon. Available at Hot Topic.

Sunday, June 01, 2008

Turning the Wrong Way

I thought the nut on the p-trap under our bathroom sink turned lefty-loosey but it turns out it turns righty-loosey. How easy it is to turn when one goes in the right direction.

In other news, I've determined that the ceiling fans in our duplex (A Hunter model #21416 and a KDK model #D13YU) lack a hole made for oiling. The new Hunter fan makes a rhythmic ticking noise after about a day or so of high-speed operation, while the older KDK fan makes the same rhythmic ticking noise more consistently. My first thought--oil the bearings, per: http://www.ceiling-fans-n-more.com/ceiling-fan-oiling.php. Unfortunately, the manufacturer did not intend for customers to oil these fans, so I'm going to need some creativity to do so. It might also be a balancing issue...so who knows if I'll have time to figure it out in the coming weeks.

Saturday, May 31, 2008

Myopia, Astigmatism


General image depicting normal eye and abnormal curvature of an astigmatic eye

Results of my test on Wednesday from the CostCo Citrus Heights Pharmacy:

SRX (Spectacle Prescription)
O.D. (Oculus Dexter, my right eye):
  1. SPH: +0.25
  2. CYL: -1.00
  3. AXIS: 0.90
  4. ADD: n/a
  5. PRISM/BASE: n/a
O.S. (Oculus Sinister, my left eye):
  1. SPH: -0.50
  2. CYL: DS
  3. AXIS: n/a
  4. ADD: n/a
  5. PRISM/BASE: n/a
All measurements represented in units of dioptres, a unit that represents focusing power. More dioptres mean more focusing power--so if the numbers get big, that means you need a "stronger" prescription to see clearly.

SPH means sphere--a positive number represents farsightedness and a negative number represents nearsightedness. Why? In a farsighted eye, the curve of the cornea is flatter than the curve of a normal cornea, so the correction involves "adding" to the farsighted eye to get it back to normal. In a nearsighted eye, the curve of the cornea extends farther than the curve of the normal cornea, so the correction involves "subtracting" from that curve to bring it back to a normal curvature. The point being to get the cornea back to focusing light on the retina like a normally curved cornea does. The larger the number (positive or negative) the larger the deviation from the normal curvature of the cornea, and the blurrier the vision.

CYL means cylinder, and represents the amount of power needed to correct a cornea with astigmatism (a cornea that's oval-shaped, which causes blurring (see the picture at the top), as opposed to a normal cornea that's symmetrically round like a basketball)--DS means no astigmatism. In my right eye, I need one dioptre of focusing power correction.

AXIS, for astigmatic eyes, represents a line passing through the middle of the oval-shaped cornea--in my case through the longer side. In my right eye, I need minus-one dioptre of correction along the 0-/180-degree axis (see the Wikipedia article for an explanation of why it's not "090" like the prescription says)--which means the longer side of the oval-shaped cornea in my cases lies on an imaginary line drawn between my two eyes (the 9 o'clock/3 o'clock positions). I believe reducing the focusing power of the longer part of the oval-shaped cornea helps the cornea focus in a more spherical manner.

20/20 vision means the ability to read a character 8.84 mm high at a distance of 20 feet.

Fushigi Yuugi



Dawn and I made a run through the 52 episode series over the past two months. Thoughts:
  1. Japanese voices > English voices
  2. After removing the intro song (~1:30m?), intro story recap (1m?), and outro (1:30m?), the shows seemed to average ~20 minutes.
  3. 52 episodes of watching Tamahome and Miaka push apart and come together: Tamahome rejects Miaka's declaration of love; Tamahome swallows Kotuko; Miaka can't become spoiled in her quest for the shinzaho; Nakago's assault of Miaka; Tamahome decides to cut off relations to lessen the pain later; Tamahome runs off when he learns he's a character in a book; Tamahome returns to the book; finally, reunited--whew.
  4. I appreciated Miaka's use of empathy to save Mitsukake's restless lover from the sickness demon--amazing to see it played out in an anime.
  5. Always, always, always, kill the bad guys when they're down and out. It cost them the life of Chiriko and the first shinzaho.
  6. "Here, I don't know how this item will help you, but I'm sure it will advance the plot in some unknown way in the near future." For example, Hotohori's holy sword.
  7. The show didn't pull many punches with taboos regarding sexuality, abuse, and violence.
  8. Tokyo really sucks at giant monster defense. It looked like they had planes in the air to dispatch nuclear warheads, but the show left that thought unresolved.
  9. Amiboshi's story arc casts an anti-war sentiment to the show, while Miaka's story arc casts a proactive peace through strength sentiment to the show. Sentiment winner in my opinion: Miaka; Amiboshi retreats into memory-less bliss while Miaka saves the day.
  10. Characters I wish the writers had included more in the action: Mitsukake, Chiriko--these two barely get screen time. It approaches parody watching Mitsukake continually fail to save those close to him, even though he can heal people to complete health "once per day." Chiriko, boy genius and mystical musician, wanders around with the team until he gets possessed--the writers allow him the glory of stabbing himself to death with a blunt top. *sigh*
  11. The handling of homosexuality in the show surprised me--Nuriko, after the shock wears off, becomes very endearing in the story, as she takes Miaka under her wing. Tatsuke's "I don't like girls" stance doesn't resonate so much, even though he sacrifices everything in hotheaded defense of Miaka.
Overall, I appreciated Miaka's personality and the show's attempt (however short) to show the Seiryu warriors as partial products of their environment: Nakago's single minded quest for revenge, Soi's desperation for recognition, Suboshi's unrequited devotion to Yui, the wolf-man's fearfulness and anger of pain. We learn nothing of Tomo or the other magician whom Chiriko dispatches. The random decision for spirits to return to save the day for Tamahome when he fights Suboshi seemed odd to me.

Worth a watch, in my opinion.

Friday, May 30, 2008

Flea Combing


Learning as we go along how to give our cats relief. Applied a fresh batch of Promeris and Fleabusters comes next Thursday.

Sunday, May 25, 2008

Happy Towel Day



In memory of Douglas Adams: http://en.wikipedia.org/wiki/Towel_Day

I want to hang one of the above near my work desk. Link: http://www.royal-plus.de/dna/indexE.html

UPDATE:

Email from the artist, 2024-10-05: "We are unfortunately sold out. And there will be no new production of the towels. We will close the shop soon. So long, and thanks for all the fish, Kind regards, DON'T PANIC Towel Shop Uli Schuster"

I had emailed in August 2020 to inquire about ordering one, but unfortunately, "Unfortunately the US have stopped the parcel traffic from oversea, due Corona.  So, I keep it on hold, and will let you know when shipping will be possible again. " Then I forgot. So only myself to blame! Will see if one becomes available second-hand.

CSUS Tea Ceremonies


We missed the last one due to finals week, but hopefully they'll have another one in the near future. Link: http://library.csus.edu/tearoom/. From the CSUS event release:
Japanese tea ceremony planned at Sacramento State

The next tea ceremonies for Sacramento State’s Sokiku Nakatani Tea Room and Garden are 10:30 a.m., 1 p.m. and 2:30 p.m., Wednesday, May 21; and 10 a.m. and 1 p.m., Thursday, May 22.

The Sokiku Nakatani Tea Room and Garden is located on the lower level of the University Library
Sacramento State is one of only a few campuses in the United States to have a tea room that allows students, faculty and members of the community the opportunity to experience the art of tea through traditional Japanese tea ceremonies. The Sokiku Nakatani Tea Room and Garden was made possible by a gift from an anonymous donor in honor of his mother.

“The practice of tea originated in China, was introduced to Japan in the 12th century by Zen monks and became a spiritual and aesthetic discipline that has had a profound impact on Japanese civilization,” says Sally Hitchcock, University Library outreach coordinator.

She says tea was used by the monks as a mild stimulant for clearing the mind during meditation and was valued for its medicinal qualities, then enjoyed by nobility for lavish functions. Eventually tea gatherings became common among all classes of people and thus the creation of rooms designed especially for such gatherings. Today the practice of tea is still a way for people to come together to find calmness and peace of mind.

“Since the room was dedicated in June 2007, we have held more than 20 tea ceremonies and have enjoyed hosting every age group from kindergarteners to retirees,” Hitchcock says.

For more information on tea room ceremonies, contact Hitchcock at (916) 278-5954. For media assistance, contact Sacramento State’s Public Affairs office at (916) 278-6156.

Saturday, May 17, 2008

L-Attributed, Top-Down-Parsable SDD Implementation of the McNaughton-Yamada-Thompson Algorithm

My solution to the 2nd edition Dragon Book's Exercise 5.2.6:

Implement the McNaughton-Yamada-Thompson algorithm, which converts a regular expression into a nondeterministic finite automaton (NFA), by an L-attributed SDD on a top-down parsable grammar. Assume that there is a token char representing any character, and that char.lexval is the character it represents. You may also assume the existence of a function new() that returns a new state, that is, a state never before returned by this function. Use any convenient notation to specify the transitions of the NFA.

Notes
:
  1. I use the characters '{' and '}' to delimit rules, and the rules end up taking the form "{ state-x -> symbol -> state-y } ... { ... }".
  2. The symbol "||" means concatenation.
  3. Concatenation ( T -> F Tsub1 ) represented a bit of confusion for me, since it "deletes" state Tsub1.Start from the automaton (the exercise doesn't allow for deletion). McNaughton-Yamada-Thompson write, "The accepting state of N(s) and the start state of N(t) are merged into a single state, with all the transitions in or out of either state."

    My initial attempt, setting F.EndTransitions = F.EndTransitions || Tsub1.StartTransitions seems reasonable. Since state Tsub1.Start continues to exist, references to it in Tsub1.StartTransitions, Tsub1.InnerTransitions, or Tsub1.EndTransitions do not require modification.

    Everything works because from F.End the automaton may remain in F, or transition to Tsub1. Once the automaton transitions to Tsub1, however, it never returns--no references in Tsub1 point to states in F. In practical terms, this means the automaton produced contains one extra state Tsub1.Start for every concatenation in the original regular expression.
  4. Adding epsilon transitions to Start or End states requires retaining the existing StartTransitions or EndTransitions, respectively.
  5. A PDF of this solution produced via LaTeX can be found here.
Proposed solution:

S -> E
  1. S.Start = E.Start
  2. S.End = E.End
  3. S.StartTransitions = E.StartTransitions
  4. S.EndTransitions = E.EndTransitions
  5. S.InnerTransitions = E.InnerTransitions
E -> T
  1. E.Start = T.Start
  2. E.End = T.End
  3. E.StartTransitions = T.StartTransitions
  4. E.EndTransitions = T.EndTransitions
  5. E.InnerTransitions = T.InnerTransitions
E -> T '|' Esub1
  1. E.Start = new()
  2. E.End = new()
  3. E.StartTransitions = "{ " || E.Start || " -> epsilon -> " || T.Start || " } { " || E.Start || " -> epsilon -> " || Esub1.Start || " }"
  4. E.EndTransitions = Nil
  5. T.EndTransitions = T.EndTransitions || "{ " || T.End || " -> epsilon -> " || E.End || " }
  6. Esub1.EndTransitions = Esub1.EndTransitions || "{ " || Esub1.End || " -> epsilon -> " || E.End || " }
  7. E.InnerTransitions = T.StartTransitions || T.InnerTransitions || T.EndTransitions || Esub1.StartTransitions || Esub1.InnerTransitions || Esub1.EndTransitions
T -> F
  1. T.Start = F.Start
  2. T.End = F.End
  3. T.StartTransitions = F.StartTransitions
  4. T.EndTransitions = F.EndTransitions
  5. T.InnerTransitions = F.InnerTransitions
T -> F Tsub1
  1. T.Start = F.Start
  2. T.End = Tsub1.End
  3. T.StartTransitions = F.StartTransitions
  4. T.EndTransitions = Tsub1.EndTransitions
  5. F.EndTransitions = F.EndTransitions || Tsub1.StartTransitions
  6. T.InnerTransitions = F.InnerTransitions || F.EndTransitions || Tsub1.InnerTransitions
F -> G
  1. F.Start = G.Start
  2. F.End = G.End
  3. F.StartTransitions = G.StartTransitions
  4. F.EndTransitions = G.EndTransitions
  5. F.InnerTransitions = .InnerTransitions
F -> G '*' Fsub1
  1. F.Start = new()
  2. F.End = Fsub1.End
  3. F.StartTransitions = "{ " || F.Start || " -> epsilon -> " || G.Start || " } { " || F.Start || " -> epsilon -> " || Fsub1.Start || " }"
  4. F.EndTransitions = Fsub1.EndTransitions
  5. G.EndTransitions = G.EndTransitions || "{ " || G.End || " -> epsilon -> " || G.Start || " } { " || G.End || " -> epsilon -> " || Fsub1.Start || " }"
  6. F.InnerTransitions = G.StartTransitions || G.InnerTransitions || G.EndTransitions || Fsub1.StartTransitions || Fsub1.InnerTransitions
G -> '(' E ')'
  1. G.Start = E.Start
  2. G.End = E.End
  3. G.StartTransitions = E.StartTransitions
  4. G.EndTransitions = E.EndTransitions
  5. G.InnerTransitions = E.InnerTransitions
G -> epsilon
  1. G.Start = Nil
  2. G.End = Nil
  3. G.StartTransitions = Nil
  4. G.EndTransitions = Nil
  5. G.InnerTransitions = Nil
G -> char
  1. G.Start = new()
  2. G.End = new()
  3. G.StartTransitions = "{ " || G.Start || " -> " || char.lexval || " -> " || G.End || " }"
  4. G.EndTransitions = Nil
  5. G.InnerTransitions = Nil
Comments, questions, concerns welcome.

Thursday, May 15, 2008

Upload Complete!!!


Laughed uncontrollably as I watched Jeff Goldblum in the movie Independence Day upload a virus into the alien mother ship's host--Jeff's PowerBook displays "Negotiating With Host", then "Online With Host" followed by the Apple beep, followed by tappity-tappity as he enters about ten lines of code in two seconds, then "Uploading Virus", then a cut to a cent-com operator reporting, "Sir, he's Uploading the Virus", then the cent-com commander reporting, "Eagle One, The Package Is Being Delivered", then cut back to Jeff's PowerBook reporting "Uploading...Upload Complete!!!", and finally Jeff turning to Will Smith and saying, "The Virus Is In."

High camp.

Video: http://youtube.com/watch?v=LQ2ILkiCORo

Monday, May 12, 2008

Child Names

  • Anthony Flea "Your life is more than just a read-through"
  • Ellie

Saturday, May 10, 2008

Our Popular Restaurants

A list:
  1. Sunflower Natural Food Restaurant (Vegetarian/Vegan)
  2. Lido's (American)
  3. Shar-E Punjab (Indian)
  4. Opa-Opa (Greek)
  5. Addis Ababa (Ethiopian)
  6. Thai Cottage (umm...)
  7. Danielle's Creperie (French)
  8. Fox and Goose (UK)
  9. Hamburger Mary's (American)
  10. Udupi Cafe (India)
  11. Zelda's Gourmet Pizza (American)
Potential others:
  1. La Boheme (French)
  2. Carmelita's (Mexican-American)
  3. Crepe Escape (French)
  4. Rubicon Brewery (American)
  5. Jack's Urban Eats (American)
  6. Scott's Seafoood and Steaks (American)
  7. Silver Sake
  8. Pangaea Cafe (next to Vic's Ice Cream)
UPDATE, 2011-07-21:

Radio Songs

Courtesy SomaFM.com:

Brooklyn-based Pete and J's "Sweet Cecilia" from their album "Dressed For Conversation", available online. This song reminds me of Simon and Garfunkle.

Austin, Texas-based Voxtrot's "Missing Pieces" from their 2005 EP "Raised by Wolves" on the Cult Hero Records label.

San Francisco-based Finest Dearest's "Serious" from their EP "Pacemaker" available online.

Melbourne, Australia-based Augie March's "One Crowded Hour" from their 2006 album "Moo, You Bloody Choir" on the Sony BMG Australia label.

Ergonomic Computer Environment

http://ergonomics.about.com/od/office/ss/computer_setup.htm

Friday, May 09, 2008

HelloWorld.tex

Experimenting with Donald Knuth's typesetting language TeX this evening.

Wednesday, May 07, 2008

Better World Club

I'm a member of one of AAA's most environmentally aware clubs, the Northern and Central California Automobile Club (the CSAA, not named NCAA for obvious reasons).

For most of the same services, including towing, rental discounts, and maps-on-demand, the Better World Club also support mass-transit and the Clean Air act.

I haven't switched yet, but they have successfully planted the seed of the idea.

Sunday, May 04, 2008

Young @ Heart

Great flick: http://www.foxsearchlight.com/youngatheart/

The description "comedic tearjerker" fits. A brief review from the Sacramento News and Review's Jim Lane:
"British filmmaker Stephen Walker documents the rehearsal and performance process of the Young@Heart Chorus, a group of 24 seniors (average age 80) who tour the world with a show made up of cover versions of songs by such groups as the Clash (“Should I Stay Or Should I Go?”), the Ramones (“I Wanna Be Sedated”), Coldplay, Talking Heads and others. At first there’s an uneasy sense that Walker may be patronizing these old folks, but no—he plainly loves the group and its patient director Bob Cilman, and by the time they’re all through with us, we do, too. The movie is joyous and brimming with life, but of course, given the subject, the shadow of the Grim Reaper is never far out of camera range, and Walker shows us how they handle that, as well as how they handle the music of Allen Toussaint or Sonic Youth."
At the end of the movie, the credits report that they want to include an emotional performance of U2's One but that they can't gotten permission from the band.

Errata


Hats off to Philippe Deschamp (merci) of the French National Institute for Research in Computer Science and Control and Igor Krassikov (Дякую) for their work on errata submissions to the latest Dragon Book.

I found an error with the book (page 528) and at first I thought the errata failed to list it--but it turns out I failed to see the link to the original errata list, which contains quite a few errors--mostly errors involving missing semi-colons, braces, extra parenthesis, and so forth.

It turns out that editions printed after Spring 2008 no longer contain the bugs on the first errata sheet--one reason that purchasing a new book might make sense, as it took me some time to go through and annotate my copy.

UPDATE: "Claudio on comp.compilers writes "But I would wait for a reprint. The first print of the 2nd edition has way too many mistakes." Yes.

UPDATE: Dr. Ullman, a co-author of the book, granted me credit for reporting an optimization error in Figure 9.9, page 594. Another student identified the error during class--I identified the photocopied handout as the figure from the book, verified the error failed to exist on the errata, and followed-up with Dr. Ullman. In fairness to the identifier, I'm attempting to figure out their name(s) so they might receive due credit.

Saturday, May 03, 2008

Agent Ribbons

Purchased Sacramento-based indie duo Agent Ribbons' first album, "On Time Travel and Romance" this afternoon from R5 Records (former site of Tower Records). Low-fi and creative, we both liked it.

Monday, April 28, 2008

svn commands

Rebuilding my repository tonight on KUbuntu. So I don't forget:

Porting the repository:
  1. svnadmin dump .subversion-repository > repo.dump
  2. cp repo.dump ~
  3. cd ~
  4. svnadmin create .subversion-repository
  5. svnadmin load .subversion-repository <>
To check out the project:
  1. cd ~/src
  2. svn co file:///home/schultkl/.subversion-repository/csc-251

Radio Songs

From somafm.com's Indip Pop Rocks!:
Romford, London-born Imogen Heap's "Closing In" from her 2005 album "Speak for Yourself" on the Megaphonic/RCA/Victor/Sony BMG labels.

New York City-based Asobi Seksu's "Mizu Asobi" from their 2005 album "Citrus" on the Friendly Fire label.

Now defunct Ruston, Louisiana-based Neutral Milk Hotel's "Holland, 1945" from their 1998 album In the "Aeroplane Over the Sea" on the Merge/Blue Rose labels. Great vocals.

OMG

Like, the original OMG?


Note: proper Valspeak ends with rising intonation.

Sunday, April 27, 2008

Tree Container Library and Wubi

Initial compile of the Tree Container Library (TCL, regrettably, for short) fails--I'm running a version of Debian via QEMU that's a bit behind the curve, with gcc 3.3.5.

I hosed my apt repository during a failed upgrade a few months ago (it wanted to upgrade the kernel, I canceled, corruption ensues). So I thought I'd upgrade--I'm testing out Wubi, an installer that works in a similar fashion to QEMU, in that it allocates a block of space for an Ubuntu install (about 7GB). The nice part is that you can dual-boot into either one, and uninstall it like an app if you want.

UPDATE: Never mind--while waiting for Wubi I discovered an alternate tree data class (thanks Kasper Peeters, I appreciate your contribution)--and it's GPL'd.

Saturday, April 26, 2008

Story Arcs

What might a movie about our lives look like?

The thought struck me yesterday as I walked from work to my light-rail station stop. At an intersection, I noticed a trio of teenagers on the opposite side of the street. In the late afternoon sun, one of them had a look of impatience on their face as they waited for the light to change. Perhaps I felt the same emotion--I suddenly felt curiosity about their life, where they came from, where they wanted to go, what lay in store for them in the future--their entire story arc.

The thought stayed with me after passing them and on the journey home--all of the people around me have stories to tell, and stories yet to tell.

I feel the same curiosity when I compare the experiences of my co-workers to my own--where we lived geographically, where we were in our lives. It reminds me of the time I overheard a high-school student wonder aloud where their as-yet-unmet future spouse was, and what he was doing. It's the same thing.

Stepping back from my own life and looking at the big picture helps me evaluate whether I'm where I want to be, and if not, the ability to think about how to get to where I want to be. Looking at others' lives in the same way helps me feel compassion for the burdens that everyone else shoulders.

Monday, April 21, 2008

Hai World

As much as I enjoy learning how to write a compiler for a subset of the Java language, I think I might enjoy writing a LOLCODE compiler more.

Ken Luttke Was Here

Some time ago, Ken Luttke inscribed the message "Ken Luttke was here" into a section of concrete sidewalk I step over on my daily commute. Today it remains, cracked and worn.

What childhood inscriptions might remain as markers of your youth?

Friday, April 18, 2008

Tuesday, April 08, 2008

Excel Saga



Dawn and I currently watch snippets of episodes of Excel Saga when we can--which as of late means during breakfast and maybe dinner.

The above picture depicts Menchi, the pet dog of the eponymous character--Menchi doubles as her emergency food supply (thankfully never yet used), which is why she's so happy to escape when she can.

Weird and silly, absurdist, full of corny drama and cartoon-physics, the theme songs have become a recurring theme in my head this week.

UPDATE, 2008-04-27: Finished it last night, including the "legendary" 26th episode. One of my favorite quotes from the series: "Sounds fishy!" as she interrupts Lord Ilpallazzo's evil half's monologue, then continues to pummel it.





And of course, the Japanese voices with subtitles for the win--no comparison, although the English voices come across acceptably.

Sphygmomanometer

Today's word is: sphygmomanometer.

I enjoyed learning how to use it--pump up to 180 mm Hg, then release pressure slowly until you hear the heart beat in the stethoscope (systolic pressure reading), then continue releasing slowly until you no longer hear the heartbeat (diastolic pressure reading).

Another mystery dispelled.

We're both healthy at ~120/80.

Sunday, April 06, 2008

Flex and Bison

Saturday afternoon and evening I read the 42 pages of the Flex manual.

Today all day I read 82 pages (of 142) of the Bison manual.

It's all making sense.

Tuesday, April 01, 2008

Earth Hour

NPR covered reactions to Earth Hour 2008 on Monday--the first exposure I received to it. We didn't participate this year, but hope to next year if we remember: http://en.wikipedia.org/wiki/Earth_Hour

It sounds pretty cool--Sacramento's not on the list of supporting cities, regrettably.

Monday, March 31, 2008

Healing Hands

Dry air kills my hands--scratches and cracks, and on top of that our cats love to inflict wounds with tooth and claw.

To combat this I discovered that adding moisturizer while my hands are wet works 10x better than adding it when they're dry, sealing in the moisture.

Sunday, March 30, 2008

Radio Songs

Courtesy SomaFM.com:

Saturday, March 29, 2008

Paul Mitchell Partner School

The Winter 2007 10th Anniversary issue of Cut & Dry, some issue of Power and Motor Yacht, and W magazine (fashion)--I found them all in the waiting area of the Sacramento Paul Mitchell Partner School today.

I read a story about a guy who's trying to care about global warming even though he's candid about the fact that he puts hundreds of gallons of fossil fuels into his yacht each year. Another story featured a guy who forgot to align his gears or something and he had to run down to the lower helm but he had forgot to take off the sunscreens from his windows so he couldn't see out and by the way he's adrift and the motor's not working and he's panicking that he's going to hit some Krogen super-yacht in the bay--but he doesn't, because he regains control and makes his way to the fuel dock. The amount of luxury in the yachts for sale blew me away--even though I imagine one might get the same experience retro-fitting a hard-shell camper with luxury gear and installing a hydraulic rocker to simulate the wave-motion. Some of the multiple deck boats had helicopter landing pads--looked pretty iffy to me, landing on a bit of deck the size of a driveway, to tell the truth. They also featured a new yacht-storage facility proposal called Hercules that seemed pretty cool--park your mega-yacht in a temperature and humidity-controlled dry-storage room. I guess if one has the $27 million to spend on a yacht that big, one has enough dough to demand the best storage too.

Most of the magazines featured ads on every facing page--fine by me given I had hours of time to kill. I think the funniest ad I saw was in the yacht mag, with two people sunbathing on the back of a rushing boat--my thought was, "Who's running the boat?"

The Cut & Dry magazine is the quarterly Paul Mitchell mag shipped to Partner Schools and afiliated salons around the world. John Paul DeJoria bills himself in the back as "model philanthropist and expert in the field of helping others." I liked that.

It also listed Linda Flowers' answer to the question, "What's on your iPod's Most Played List? John Legend, The Stranglers, Talking Heads, Maroon Five, Neil Diamond, Jack Johnson and Seals & Croft, to name a few." I wasn't familiar with a few of them so I thought I'd write them down.

The final bit I noted from Cut & Dry stated, "A wise man once said, 'You don't want to die with your secret.'"

What's your secret?

Saturday, March 22, 2008

Anime Runs


Dawn and I have undertaken a run through the anime series Chobits and Noir. The video store which supplied the first episodes in the series lacks the final volumes--so we have to decide whether we want to purchase the final volumes or not.

I like Noir's music--I discovered the series when a Linux installfest installer left a copy of the soundtrack on my PC. The series does suffer a bit from what I call the Airwolf-syndrome (for example, here)--that is, when the music swells, we know our heroes will face a battle and they'll eventually triumph. At least, so far.

Padding out shows happens in any enterprise, it seems--Noir handles it frequently by re-hashing scenes of Mireille's discovery of the murder of her parents. In Chobits, I haven't seen it so much--although the latest episode featured a pop single which padded out the cleaning scene.

Sunday, March 16, 2008

Six Tips For Converting Regular Expressions to Minimized Deterministic Finite Automatons

Here are a few tips to make converting a
  1. regular expression->
  2. non-deterministic finite automaton (NFA) with epsilon transitions->
  3. NFA without epsilon transitions->
  4. deterministic finite automaton (DFA)->
  5. minimized DFA
a bit easier:
  1. Back-transfer accepting states all the way back--don't overlook any epsilon transitions
  2. Verify the NFA works as intended at each step of the process--if something seems amiss, it probably is.
  3. Maintaining neatness and order for lines between states helps minimize confusion.
  4. Grid/graph paper helps with drawing straight lines and uniform circles.
  5. Remove states inaccessible from the Start state only after eliminating all epsilon transitions to and from them.
  6. Use a mechanical pencil and a slab eraser to correct the mistakes
I made every mistake in the book this evening working through the transformation of the regular expression (a+ba)*b* to a minimized DFA--but I don't mind, because my studies represent the time I want to make the mistakes--not during my upcoming midterm.

Hope this helps in some small way.

Friday, March 14, 2008

Radio Songs

Heard this afternoon driving north on a windy, light-dappled off of towering clouds sort of day:
Franklin, Tennessee-based Paramore's "Born for This" from their 2007 album Riot! on the Fueled by Ramen and Atlantic Records label.

Huntington Beach-based The Aquabats!' "Lobster Bucket" from their 1997 album "The Fury of the Aquabats!" on the Goldenvoice Recordings.

Thursday, March 06, 2008

Inter-Public Transit Google Maps

Google maps can't seem to string together public transit systems, regrettably. I keyed in a trip from downtown to IKEA to see what comes up and Google dumps me north of the Sacramento River and expects me to walk 53 minutes the rest of the way (across the river):

http://maps.google.com/maps?f=d&hl=en&geocode=&saddr=5th+%26+J+St,+Sacramento,+CA+95814&daddr=IKEA+west+sacramneto&date=3%2F6%2F08&time=9:59pm&ttype=dep&sll=38.603457,-121.520634&sspn=0.063051,0.10231&dirflg=r&ie=UTF8&ll=38.593529,-121.52441&spn=0.063059,0.10231&t=h&z=13&start=0

The thing is, both Sacramento Regional Transit and YOLOBUS post their transit data online:

http://iportal.sacrt.com/gtfs/

Without Google Transit I'd have never gotten onboard so readily with taking light rail and buses to and from school. I'm wondering who else out there (and how many) will also come to that realization. My car largely sits idle now.

The SacRT web site has a handy calculator that calculates rough costs savings. For Dawn and I, it's about $3,500 before parking fees. Including the $15/day parking, it comes out to about $7,000 in savings annually, including the cost of monthly RT passes.

Wednesday, March 05, 2008

Monday, March 03, 2008

VIM Color Schemes

As mentioned previously I set my Putty settings to a dark green background with light green foreground.

It's a personal preference sort of thing, but my favorite default VIM color scheme at present is Koehler. Unfortunately, stock Koehler uses darkblue, making text invisible against a dark green background.

To change this, edit file (as root or equivalent):
  • Backup the file: cp /usr/share/vim/vim63/colors/koehler.vim /usr/share/vim/vim63/colors/koehler.vim.bak
  • vim /usr/share/vim/vim63/colors/koehler.vim
  • Run vim command ":%sdarkblue/lightblue/g"
All's good.

Sunday, March 02, 2008

GRE

I'll be taking the GRE this summer to qualify for grad school next spring. As it so happens, Sac State doesn't set a minimum score requirement--they use it as a comparison to the average GRE score of all applicants to determine whether or not to accept the applicant.

Sunday, February 24, 2008

subversion propset automation via auto-props

Found it:

Link: http://svnbook.red-bean.com/en/1.1/ch07.html#svn-ch-7-sect-1.3.2

config on my host currently reads:
...
enable-auto-props = yes

### Section for configuring automatic properties.
### The format of the entries is:
### file-name-pattern = propname[=value][;propname[=value]...]
### The file-name-pattern can contain wildcards (such as '*' and
### '?'). All entries which match will be applied to the file.
### Note that auto-props functionality must be enabled, which
### is typically done by setting the 'enable-auto-props' option.
[auto-props]
*.c = svn:eol-style=native;svn:keywords=Id Date LastChangedDate HeadURL URL Author LastChangedBy Rev Revision
*.cpp = svn:eol-style=native;svn:keywords=Id Date LastChangedDate HeadURL URL Author LastChangedBy Rev Revision
*.h = svn:eol-style=native;svn:keywords=Id Date LastChangedDate HeadURL URL Author LastChangedBy Rev Revision
*.dsp = svn:eol-style=CRLF;svn:keywords=Id Date LastChangedDate HeadURL URL Author LastChangedBy Rev Revision
*.dsw = svn:eol-style=CRLF;svn:keywords=Id Date LastChangedDate HeadURL URL Author LastChangedBy Rev Revision
*.sh = svn:eol-style=native;svn:executable;svn:keywords=Id Date LastChangedDate HeadURL URL Author LastChangedBy Rev Revision
*.txt = svn:eol-style=native;svn:keywords=Id Date LastChangedDate HeadURL URL Author LastChangedBy Rev Revision
*.png = svn:mime-type=image/png
*.jpg = svn:mime-type=image/jpeg
Makefile = svn:eol-style=native;svn:keywords=Id Date LastChangedDate HeadURL URL Author LastChangedBy Rev Revision
Notes:
  • Quotes in file "config" prevented subversion from updating property Id in my test file. For example, this does not work:
    • *.cpp = svn:eol-style=native;svn:keywords="Id ..."
  • Whitespace confuses subversion propset application. For example:
    • This works:
      • $Id$
      • $Id:$
    • This does not work (note the whitespace):
      • $Id : $
  • Steps I applied to test:
    • Add this example header to a dummy file (new.cpp):
      /*******************************************************************************
      * #
      * # Author:
      author
      * #
      * # $Id: $
      * #
      * # *****************************************************************************/
    • svn add new.cpp
      • A new.cpp
    • svn proplist --verbose new.cpp
      • Properties on 'new.cpp':
        svn:keywords : Id Date LastChangedDate HeadURL URL Author LastChangedBy Rev Revision
        svn:eol-style : native
    • svn commit new.cpp -m "Initial revision"
      • Replacing new.cpp
        Transmitting file data .
        Committed revision 11.
    • cat new.cpp
      • /*******************************************************************************
        * #
        * # Author: author
        * #
        * # $Id: new.cpp 11 2008-02-24 19:26:30Z user $
        * #
        * # *****************************************************************************/
      • Italicized items above represent environment-specific text

Friday, February 15, 2008

Level 77


It gets exponentially longer with each level. The top PQ'ers are up to level 92.

This is the only computer game I "play" these days.

Link: http://progressquest.com

Friday Cat Blogging


Kernels once rolled here;
Unpopped, mesmerizing sounds;
Put them back in, please?

Hired

I started a new full-time job on Monday, Feb 4.

Today, I learned there's a form I need to fill out if I want to bring an electric fan into work. A fan! My high hopes for bringing in a new development rig and a compact fridge have met with similar violent ends.

I'm glad I didn't ask before swapping out the stock Cool White fluorescent tubes for Full Spectrum tubes.

On the up side, I'm helping low-income kids, and that feels good.

Shadows

Walking across campus from my compiler class on Thursday, I was struck by the number of shadows I cast as I walked--seven by my count, and perhaps more. I've never noticed before, but it's so obvious. As I walked, they changed direction and opaqueness, as the angle and distance from the light sources changed. It was quiet, save the occasional vehicle, and I felt peaceful.

Tuesday, February 12, 2008

Sealable Plastic Badge Holder

The past two jobs I've worked at require badges (save the jokes, please) for identification.

Stock plastic badge holders provided with the badge open at the top to allow the RFID card to slide in. The unsealable opening at the top eventually lets in dust, dirt, and liquids. The badge ends up looking beat up after a year or two. Replacing the plastic holder helps, but it's a hassle.

It turns out there's a simple solution--purchase a pack of sealable badge holders from an office-supply store. For example, Office Depot, or intuitively enough, badgeholder.com.

Sunday, February 10, 2008

Canon MP160 + Wireless Multifunction Print Server

Wireless multifunction print servers have a few pitfalls--here's what I've been through.

I own a Canon Pixma MP160 multifunction USB 2.0 printer. Originally, I connected it to my laptop's docking station using a GigaWare four-port USB 2.0 hub and shared it on the network from my laptop. The downsides of this configuration:
  • Undocking the laptop removes the printer from the network.
  • Once undocked, other laptops can still print, but they have to have a separate printer driver installed for local rather than remote printing, and they obviously have to hoof it over to the printer.
  • Desktops that rely on the shared printer are out-of-luck.
Obviously a non-optimal solution. A wireless print server, theoretically, would mean all wireless-enabled desktops and laptops can print from wherever they are in the house.

The seed of this idea has been in my head for several months. An opportunity to remedy the situation presented itself while I was shopping at a local tech store two weeks ago. On impulse (in hindsight, a regrettable decision) I purchased a Linksys Wireless G print server. Getting home, I discovered in my ignorance that print server manufacturers typically break down print servers into two sets--those that support multifunction printers and those that don't. The Linksys Wireless G print server doesn't support multifunction printers. Above and beyond that limitation, the installation and configuration process of the Linksys Wireless G proved frustrating:
  • The print server web server crashes if you begin navigating from the home page. To avoid this bug, one has to start navigating the print server's web server from http://*ip*/ps_stat.htm. That's scary quality control.
  • Without knowing this trick, even though you set the local wireless SSID security key, it doesn't take--so it's even worse from the user's point of view, since they think they did everything right.
After researching this on the internet, I decided that I wasn't happy with the bugs and the loss of multifunction printing support for the price, and returned it.

Before I did that, I decided to research wireless multifunction print servers further. My local tech store sells print servers from Hawking, D-Link, Linksys, AirLink, and TrendWare. I ignored the multifunction version from Linksys and decided after reading reviews online that the D-Link Rangebooster G Multifunction print server represented the best bet. I knew from reading their web site that the Canon MP160 wasn't listed as supported under the FAQ, but I decided to take a risk since they only had reviewed HP and Epson. This represented my second learning opportunity.

Last night I hooked it up, and after a quick call to tech support (it needed a static IP to work), got it working. D-Link tech support confirmed that it doesn't work with the MP160 multifunction printer, however. Other than it's failure to work with DHCP, the D-Link seemed like a quality product.

I finally got the idea to just call Canon and ask them point-blank what works with their printers. It turns out that they sell a model called the Silex C-6700WG that works with the Canon printers. Unfortunately, it's $100. *sigh* I guess this is what is meant by vendor lock-in. I haven't decided whether or not to buy it, since in the future I'm hoping to upgrade to a color laser printer

So why does it seem so hard to get printing right for multifunction printers? The answer seems to be (from TrendNet's now defunct page):
Printers that host multiple functions, such as faxing and scanning, use different communication standards to complete respective tasks. Traditional print servers are unable to interface with multi-function printers due to the use of different communication standards within one device. The result is that many multi-function printers are not currently linked to a home or office network.
So there you have it--multifunction print servers need to be fluent in fax, scanner, copier and printer standards--and apparently the communication pipeline of printer-driver<->print-server<->printer is pretty fragile.

Saturday, February 09, 2008

1,415

My spam folder currently contains 1,415 spam e-mails, all received in the last 30 days.

On average:
  • 354 per week
  • 47 per day
  • 2 per hour
To get silly:
  • 0.033 per minute
  • 0.00055 per second
I'm curious how typical this is....

Saturday, February 02, 2008

Friday, February 01, 2008

Radio Songs

Heard on the radio:
Vacaville, CA-based Papa Roach's "...To Be Loved" from their 2006 album The Paramour Sessions on the Geffen Records label. Video.

Chamorro Pride

Saw this phrase on a license-plate frame yesterday on the way to class.

Apparently, the Chamorro are the indigenous people of the Mariana Islands, which include the American territory of Guam and the United States Commonwealth of the Northern Mariana Islands in Micronesia.

Blog Archive