Weekly Goals

Goals complete and added

  • Life Maintenance
    • Buy tickets, take Highlander to a ball game
  • Academia
    • Go over at least one test for Qualifiers
    • Create and run an MPI program on Cheetah
  • House
    • Clean the Basement
    • Insulate the Basement
    • Design Basement Rooms
  • Professional
    • Finish software for re
    • Submit proposal for other software for re

End of the day

According to my log, I’ve worked for 9 hours today. 5 on a project that should be finished, 1 on this blog, .5 on a presentation that is due on tuesday, and 2.5 on organizing myself. That 2.5 is probably not entirely accurate.

So what to do? I guess I should jump into another project, but its almost 8PM and I’d like to go home, read a story to Highlander, grab a snack. I should work 12 hours, but it’s hard to log 12 productive hours when you have to switch projects. I do have a presentation I should be working on.

The presentation is supposed to be on using LaTeX as a presentation tool. Basically this should amount to demonstrating Beamer Mode and some of the things you can do with Beamer mode, culminating with Beamer + Tikz/Pgf. But what can I accomplish in twenty minutes?

And what are the things that I do the most in Beamer Mode?

Creating blocks. Creating Equations. Inserting Graphics.

And some of these students may not use LaTeX or be familiar with it, in which case I should really start there, with an explanation of what LaTeX is, or even what TeX is.

  1. What is TeX
  2. What can you use TeX for?
  3. How do you use TeX?
  4. Isn’t it easier to just…

I think that’s about 10-15 minutes right there, with demos and questions. I should also have the whole thing up on the web site, not as a PDF, but as a web based presentation.

Documentation Procrastination

My least favorite thing to do with any software project is write the documentation. Part of this is just because documenting software is hard. In order to document the software, I have to go back to the use cases that I may or may not have listed to start with, and iteratively develop a document that addresses each of those cases, at least implicitly.

The second issue is that I don’t have a method for writing documentation. I don’t have a nifty toolkit of preset TeX macros to create the appropriate diagrams. And since I do everything in TeX these days, that’s a real shortcoming. But more than the tool, there’s just the basic method. How to approach the document? What kind of document is it? What assumptions can be made about the deployment? What assumptions can be made about the end user?

Even in situations where I’ve controlled the deployment and personally known all the potential end users, I’ve written documentation that either wasn’t read or wasn’t understood. And that resulted in a lot of lost manpower, because tasks that should have been automated were instead being done by hand, with the inevitable mistakes.

I remember showing a guy an automation script that would take his document, create an optimized pdf from it, and save the pdf in the correct folder with the correct name. Granted, this would only save him about 2 minutes a document, about 8 or 9 clicks, and a certain number of mistakes, but it was one key press. I showed him the keypress. “Click F5″, I said. “That’s it?”

“What’s the difference between doing that and just saving the PDF?” He asked me.

That’s the biggest challenge to instituting any change, anywhere. “Just”. What’s the difference between learning a new keyboard shortcut and “just” clicking through at least two dialog boxes and navigating about 8 layers of file structure. The old way is always easy, is always “just”. You have to create a sense of excitement about the new thing, and that’s hard to do when it doesn’t really affect people directly. A guy in a chair in one department doesn’t understand how his mistakes might effect someone else in a another department, and he doesn’t care how they affect the bottom line overall.

Sure, you can demand that the new system be instituted. But now you’ve just created resentment, not excitement.

I’m not sure how this relates to the documentation problem. Maybe I’m not seeing the value in learning something that will help me document. Or maybe the documentation should excite people, and therefore I should be excited about writing it. Or maybe part of the problem with writing documentation is the sneaking suspicion that no one will ever read it.

Daily

Read a bunch. Started working on qualifiers, which I’ll be taking in September. At the moment it looks sort of grim, Parallel and Distributed is going to be very tough, and of course algorithms will be very tough. I guess I could consider the light reading I did today, section I of The Computational Beauty of Nature to be part of studying for Automata.

Still. 6 hours of clocked work in a twelve hour day is not a good ratio. I have to get better about tracking and planning with org-mode. There is no perfect tool, and there are no perfect people, so I’m going to have to just do the best I can with what I’ve got in front of me.

Had a good client moment, though, using ImageMagick to solve a problem and provide proof of concept for the program I want to build for them next. Very simple stuff, just using convert -composite to build an image. But useful, and even though the process wasn’t perfect, the client did get to see me solve a problem with a tool I’m not familiar with. I both hate and love that. On the one hand, I seem to be flailing. On the other, the client sees a sort of organic problem solving situation unfold, and hopefully realizes that I am a brain, not an expert system.

You don’t have to be a perfect machine to design a reasonable approximation of one.

Goals complete and added

  • Life Maintenance
    • Fix my car
    • Register my car
    • Buy ear protection for self and highlander
    • Buy tickets, take Highlander to a ball game
  • Academia
    • Finish my proposal for BSR paper
    • Go over at least one test for Qualifiers
  • House
    • Clean the Basement
    • Insulate the Basement
    • Design Basement Rooms
  • Professional
    • Finish software for re
    • Submit proposal for other software for re

Weekly Goals

Weekly Goals, next week

  • Life Maintenance
    • Fix my car
    • Register my car
    • Buy ear protection for self and highlander
  • Academia
    • Finish my proposal for BSR paper
    • Go over at least one test for Qualifiers
  • House
    • Clean the Basement
    • Insulate the Basement
    • Design Basement Rooms
  • Professional
    • Finish software for re
    • Submit proposal for other software for re

two weeks with org-mode

Learning curve = steep.

Brutally steep, actually, and a lot of the things that I need to have working in order to follow the excellent advices here are just not installed. Remember-mode, for example, is not quite up to snuff and the install appeared not to work entirely correctly. So.

But it has it’s sweet temptation, and that temptation is the possibility of never, ever leaving emacs to do anything ever again. For example, this blog is written in wordpress, using firefox as the terminal application. It would be much better to write the blog via emacs, but I’m not going through an extra step to save and upload to make that happen. Org-mode has publishing capabilities, and emacs is very customizable… so I should be able to write a post in org-mode and then publish it to the server. That sort of power possibility is intriguing.

And it has it’s uses. For example, I’m working a project write now writing some applescript automation (by the way, I’m working on a wiki-book chapter for Applescript) and it is nice to be able to clock my time, estimate projects, write notes, and so forth.

The real problem is that org-mode, like all things emacs, demands a lot out of you. Emacs software is the only stuff I use that makes me feel inadequate to the mere task of using it. “We’ve made you a god”, my collective .el files tell me, “And you’re using us to play Tetris.” Which is disheartening at times.

I’m going to say that on balance, I’m happy with org-mode and with the GTD methods that I’ve seen. And besides, if it’s good enough for Sacha Chua, it’s good enough for me.

tikzpicture

The presentation was about ad hoc networks, and I needed some diagrams. Typically I would use inkscape to make my diagrams. Inkscape is a great little program, and I do use it a lot to create logos and in web design.

But for a technical drawing, a graph, it just seemed like the wrong tool. Especially since I wanted to walk through a bunch of slides that had essentially the same picture but with highlights. I do that a lot. I’m interested in graph and network theory right now and so I tend to draw graphs and algorithms on graphs.

Enter pgf/tikz for LaTeX. Freaking amazing. Instead of making eight different pictures, using tikz and beamer, I wrote this:
\begin{tikzpicture}
\useasboundingbox (5,0) rectangle (5,0);
\node [vx](s) {$S$};
\node [vx](p) [below right=of s] {$P$};
\node [vx](a1) [above right=of s] {$a_1$};
\node <1-4,8->[vx](a2) [right=of a1] {$a_2$};
\node <1-4>[vx](a3) [right=of a2] {$a_3$};

\node <8>[vx](b5) [right=of b4, fill=green] {$b_5$};
\node <8>[vx](b6) [right=of b5, fill=orange] {$b_6$};
\node [vx](t) [right=of b6] {$T$};
edges
\draw <1>[BUP](s) — (b4) [cyan];
\draw <1>[BDN](s) — (b4) — (b5) [green];
\draw [bup](s) — (a1) — node[very near start, label=above:$S_{T_1}$] {} (a2) — (a3) to (t) [red];
\draw [bup](s) — node[midway, label=above:$S_{T_2}$] {} (a4) — (a5) — (a6) to (t) [red];

\draw <8> [MDN](b6) — (t) [orange];
labels
\node <1> [above=1cm] at (a3) {1$^{st}$ and $2^{nd}$ level subpaths of $S_{T_3}$};
\node <2> [above=1cm] at (a3) {$X_3 = \{ b_4, b_5, b_6\}$};
\node <3> [above=1cm] at (a3) {$Y_2 = \{ b_4, b_5, b_6\}$};
\node <4> [above=1cm] at (a3) {Effective Partition Nodes of $P_{T_2} = \{ b_4, b_5, b_6 \}$ };
\node <5> [above=1cm] at (a3) {$X_1 = \{ a_2, a_3\}$};
\node <6> [above=1cm] at (a3) {$Y_3 = \{ a_4, a_2, a_5, a_3\}$};
\node <7> [above=1cm] at (a3) {Effective Partition Nodes of $P_{T_3} = \{ a_3 \}$ };
\node <8> [above=1cm] at (a3) {Effective Residual Paths};
\end{tikzpicture}

Now, I know that looks like a lot. But it creates something pretty cool: a sequence of pictures that radically simplifies some fairly complex notation. In one beamer frame, in one picture environment, I’ve specified eight different pictures with labels, adding and removing lines, changing titles, changing colors.

At some point, I’m going to put together a full page on how that worked. The main point is that it was pretty cool.

too damn big

Working in Emacs org-mode in an attempt to get things done. What troubles me about this, as about most things emacs, is that the system is so large that it is hard to tell if it is working correctly, or if there is a bug or what.

And since it is open source, the documentation is completely ad hoc and may not be accurate for my system anyway. Aquamacs has it’s own peculiarities. Should I put the org-mode customizations in customization.el, or preferences.el, or what?

Hard to say. Perhaps in their own file entirely.

the ecb install hack

So I wanted to install the emacs code browser, because it got sort of frustrating not having a “map” to my code when I edit web sites in emacs. I haven’t tried this with CSS files yet, but I’m moderately hopeful, after seeing how easily it picked up simpleHoc’s files.

Anyway, after a couple of hours of frustration, I now have the following advice for anyone who wants to install ecb on Aquamacs Emacs.

  1. Download and install the JDEE plugin from aquamacs.
  2. Download the ecb files from sourceforge
  3. Unpack the ecb directory into “Library/Application Support/Aquamacs Emacs/”
  4. Add the following* to your “Library/Preferences/Aquamacs Emacs/Preferences.el” file:
    (add-to-list 'load-path "~/Library/Application\ Support/Aquamacs\ Emacs/JDEE/cedet/common")
    (add-to-list 'load-path "~/Library/Application\ Support/Aquamacs\ Emacs/ecb-2.32")
    (require 'cedet)
    (require 'ecb-autoloads)
  5. try it out with M-x ecb-activate

Worked for me.

* I actually tweaked the install of jdee to be in my ~/Library, rather than my /Library, so your code may vary slightly.