Archive for January, 2008

Power in programming, and another research idea I’ll never have time to get into

I have friends who code. Some of my most favorite friends code. We talk about coding, and since I don’t really do it (not yet, anyway) I let them talk at me and over years I’ve started to develop some understanding of the experience.

One thing that has regularly popped out at me in these conversations is when they talk about power and things in coding-land that are powerful. I think, “What does powerful mean? Code can’t move itself, can’t move at all. It doesn’t generate or expend energy. It can’t punch me out. What is power in computer science?” So I started asking these questions out loud and got what I can only describe as fuzzy answers (which indicated I was on to something). And I think I’ve finally developed a working definition of what power means in the coding/computer science context.

My hypothesis: when something is described as powerful, it means that that thing realizes some higher objectives particularly well. For instance, if one objective is expressivity (apparently this is a word only in biology), something is powerful if it allows for a high degree of expressivity. But there are I think two issues here: 1) power is only really used when multiple objectives are realized with minimal mutual sacrifice, and 2) to some extent, people disagree on which objectives are important.

I look forward to teasing this out, particularly that last issue, in my own informal grounded theory way.

(And seriously, are linguists looking at the extent and degree of metaphor used in computer science terminology? They really ought to be.)

And my random research idea stems from this post over at The Shifted Librarian, which is a reference to another post altogether regarding using tag cloud mechanisms for “pattern recognition.” I want to call it text analysis, or coding as it is often done in qualitative research studies. In any case, my idea is to conduct some kind of study on qualitative research(ers), with a control group doing traditional coding of interviews, and an experimental group using this automation hack, and see if conclusions differ. I wonder if there’s any way to test the influence of the display, since that’s what many find so evocative of tag clouds.

Yet another thing I will do in my copious spare time with my massive resources. Indeed.


Scheming again, this time with spinach

I’ve decided to take some notes, since there are a couple things I keep forgetting when I go back to the scheme stuff.

So, when I’m defining functions that I know will be nested in other functions, this is what I want to do: once (define (spinach vitamins)) is defined, I just want that to be called spinach. When I want to use the definition for spinach I’ve created, I want to be able to say something to the effect of

(define (nutrition veggies-consumed)
(+ spinach ...))

I can’t do this yet. I still have to articulate the terms under which spinach is considered. Out loud. In writing.

(define (nutrition veggies-consumed)
(+ (spinach vitamins) ...))

I’ve now written spinach so much it doesn’t look like a word anymore.

Also, the functionality options for massaging the content of a post in this WYSIWYG editor is flippin’ ridiculous. I’m more frustrated by this than by figuring out scheme syntax.

Is Lubetzky awesome? Yes, yes he is.

Despite the fact that reading one of his papers is giving me major snoozles, I really like him. I hope one day to be just like him. Actually, I hope I already like him in fundamentals, and only lacking in experience.

(that’s actually a joke, but still true)

Today’s project work status

I wrote functions. It was hard, but I eventually got them down in a concise way and it worked! My book doesn’t have a solutions sheet so I really am on my own, which is both good and bad, but I suppose mostly good at this point.

Also, while looking up today’s dollar-euro exchange rate to write a function for that, I noticed this chart showing the value of the dollar to the euro over the past year. Against the euro, the dollar lost ten cents of its value in a year (and if I misread that, let me know). One year is all it took for that something to become nothing. Damn.

I think the the most unexpected revelation today is that writing expressions makes solving word problems really fun. I used to hate word problems, but now it’s really nice. My expressions can be reused for other values, not just the one in the question. I guess programming goes green.

I also took a short jog today but it started fully raining when I was halfway out on my route. I got a soaking. Hopefully I don’t get sick.

Other projects today

I did a couple more things today:

I drew up a short list of things I’m interested in investigating and possibly seeing through for this quarter at least, with some notes for how to go about doing them.

I started trying out some self-directed programming education via How to Design Programs, which was suggested to me as a good way for beginners to start learning. So far I have done some addition, subtraction, multiplication, division, square root, sine, max, and min, but it’s still fun to watch it happen the way I intended.

Also, I made a soup broth. It’s cooling now. It might actually be killer.

Pac-Txt: Pac-Man meets Zork

Pac-Txt: Pac-Man meets Zork [via]

Yep, that’s what I’ve spent some of my 20% time on. It’s fun, and maybe if I take the time to think through my steps I’ll build up some spatial reasoning skills (right now it’s probably at about two dots).

Told ya!

Long silence. Last quarter got so hard. Resulted in a needed reevaluation of my priorities, in which I decided to quit my job (which wasn’t really info pro related) so I could pursue my own projects in a self-directed way. Also resulted in some long overdue me time. I did whatever I wanted this break, and it was so great. I mostly read, watched various smartypants tv shows at my parents house (they have satellite tv, but I just watched Discovery, History, History International, and Smithsonian), got a little craftsy, and slept. I had forgotten what happiness was, but I remember now.

In any case, I have instituted for myself “20% time.” Mondays are my days to work on my own projects, and I’m very excited about this. I still don’t have a solid plan for what I want to look into, so I made a List of 100. Here it is:

List of 100 20% time project ideas

  1. Learn a programming language
  2. learn scheme
  3. learn python
  4. review PIM apps
  5. UI study
  6. perfect my soup broth
  7. put together fortunes art
  8. work on portfolio
  9. make a recipe wiki
  10. review techs
  11. jog
  12. celebrate
  13. work on website design
  14. make videos
  15. study japanese
  16. write japanese
  17. review various applications with UI in mind
  18. generate some UI oriented interviews with friends
  19. learn javascript
  20. camp by the moonlight
  21. draw pictures
  22. bake bread
  23. exercise
  24. write wikipedia articles
  25. edit wikipedia articles
  26. read some professional literature
  27. evaluate some professional literature
  28. make cookies
  29. make a podcast
  30. build a taxonomy of games
  31. sew a book bag
  32. draw
  33. develop a better understanding of what an API is
  34. understand the RSS model
  35. get a solid understanding of what is meant by “data model”
  36. finish Dreaming in Code
  37. work on website design/layout
  38. study general design principles
  39. analyze music services
  40. learn to play the piano
  41. make amvs
  42. learn about more environmentally friendly house cleaning practices
  43. draw on my casual pants
  44. practice/reinforce logical thinking habits
  45. study rituals
  46. write Hello World
  47. think about ways software devs communicate professionally
  48. explore KM tools for devs/engineers
  49. buff up my search/reference skills
  50. play DDR
  51. Go outside sometimes
  52. keep up with Naruto manga
  53. read about games
  54. finish Raph Koster’s book
  55. test run other text editors
  56. get familiar with Vista
  57. get really familiar with MS Office 2007 (the ribbon)
  58. play a little Civ (no, don’t)
  59. take pictures (need camera first)
  60. make a kitty blog for Zane’s kittens
  61. meditate
  62. find a way to display my google calendar the way I want it, with each of my calendars displayed on my desktop or as a widget.
  63. look up/review other metadata schemes/-as
  64. dance a bit
  65. really dig in to remember the milk
  66. do some reference work for friends
  67. design my portfolio layout
  68. get a sense of programming language frameworks
  69. watch/review new anime
  70. play my trombone
  71. fiddle with apps
  72. become a quicksilver master, prophet
  73. Read the knowing-doing gap
  74. draw pictures of a memex, other stuff from As We May Think
  75. write silly stories about Katamari Damacy
  76. dig deep deep deep into the art and architecture thesaurus
  77. write code for a simple game
  78. investigate design in different disciplines
  79. search for employers in the northeast
  80. try to figure out how to anticipate what’s coming rather than analyze what’s present
  81. contribute more to other fora/lists/blogs
  82. look for paths to more activity in professional organizations
  83. learn more about metadata practices in pub/gov and corp libraries
  84. read that consulting book
  85. read fun books too
  86. collect something and document it
  87. learn some basic music theory
  88. finish ambient findability
  89. make up songs and write them down
  90. explore hype machine a bit more
  91. try to design a game (rudimentary)
  92. test something, try to break it
  93. emphasize building up over tearing down in analysis/reviews
  94. work on ways to explain in lay terms all the info geekery I’m into
  95. ask more questions of people
  96. work on networking/conversational skills
  97. see if other people do 20% time, what they do
  98. still want to poke around in various systems
  99. look at repositories
  100. keyword penny arcade comics for easier search

Making a list of 100 is kind of hard, but in the end it feels really good to have done so. (I wonder if it’s feasible to do this in a collaborative setting.) The themes in my list are:

  • Developing technical expertise and creative capacity at the same time
  • I’ll have to incorporate some portfolio time so I don’t stress out too much about it
  • 20% time should be regenerative to some extent, which means it doesn’t all have to be professionally oriented or specifically goal-driven
  • Games are a little more interesting to me than I had originally realized
  • School gets in the way of my finishing a bunch of books
  • Clearly, I want to develop my analysis/reviewing skills
  • My project ideas are largely solitary initiatives

This stuff sounds fun. I’m really happy I decided to do this.

Classes this quarter:

Ecological Information Systems

Catalogs, Cataloging, and Classification

Management of Information Organizations

To be perfectly honest, I’m a little conflicted about my course lineup this quarter. I had a hard time finding classes I wanted to take that didn’t conflict with classes I needed to take, so I’m a little less enthused than usual. I’m sure it’ll be fine, worthwhile, thought-expanding, etc. I just don’t see it very strongly right now.

Even though I don’t really plan on working in a traditional library setting, I’m kind of excited about my Cataloging class. I had almost developed a plan to start reading AACR2 over break, but then I realized I’d be doing it for class anyway so I held off.

Look forward to more posts on class content and whatever 20% time projects I’m working on!