Initial meeting, group project, Rosetta Stone
NYC J-Users Group Meeting Report
A group of us met for the first New York City J-Users Group meeting two weeks ago, on Tuesday, January 11. The four of us who showed up were: me (Devon), Jim Korn, Harteg Wariyar, and Dan Bron. We ranged in J experience from rank novice to expert.
We quickly agreed that the group would be called NYC JUG. This was especially appropriate given that our first meeting was in a brewery. We'll have to work on a logo.
Regular Meetings: When and Where
We decided to make the 2nd Tuesday of the month our regular meeting date and to continue to meet at the same place: the Heartland Brewing Company in the Empire State Building (34th and 5th): the next meeting will be on February 8th.
We did not finish dealing with one of our major agenda items, what to do for a group project, though we discussed a number of possibilities. There was general agreement that there should be an on-going, parallel project to add to the J documentation. The language is so rich that it's often difficult to find code to re-use or to look at as an example of how to do something.
Jim gave an example of a standard utility library he discovered when searching for a way to read in a text file as a vector of vectors: '~system/main/stdlib.ijs'. The function he was looking for turned out to be "cutopen". How would someone be able to guess that this would be the name to look for?
Dan mentioned the "edit" function: if you do know the name of a function, you can enter, e.g. edit 'cutopen', in your J session to bring up the function definition.
See Project Suggestions for ideas we had on possible projects.
One suggestion to help some newbies was to come up with an APL-J "Rosetta Stone": a listing of approximate equivalences for those familiar with APL. If we do this, we shouldn't worry about 1:1 mappings since there are many fundamental differences between the languages. It would be useful to narrow down one's search to approximately correct areas. Maybe concepts could be grouped by conceptual areas?
Perhaps we need to research what words people do use to describe common operations and come up with a more general "Rosetta Stone". We might use our own group coding project to give us examples of questions people have.
We might also compile a list of helpful working practices: ways of working or conventions that experienced J coders find useful. Dan mentioned a couple things relevant to our "finding things" discussion: Ctl-shift-f brings up a window for searching the J code directories; also, how nl_z_ (used in "names") can use wildcards for looking through lists of function names. I mentioned how useful I find having defined F2 to be: 0!:101 wdclipread '' This allows me to run the contents of my clipboard in a session.
Group Project Suggestions
Among the coding projects suggested were:
1) an interface for an easy-to-use backup utility. I've already written the core of a daily backup utility I use to save my most recent work every day but it only has a command-line interface. Designing a GUI for this could let us develop some generally useful utilties and give us practice with window-building. Along these lines, I mentioned that a useful GUI-utility would be some kind of general way to preserve previously-entered information in an arbitrary window. Dan mentioned something he's done for name-value pairs that might be useful for this.
2) something with openGL: Harteg asked if anyone had experience with openGL2. Jim and I have been talking for quite some time about something he'd like to help him use his milling machine: what the CAD 3D people call "boolean" operations or joining arbitrary shapes together. I've also been thinking about some kind of visual, multi-dimensional, data explorer using OpenGL.
3) something with MIDI or other music-related software: someone mentioned Henry Rich's "J for C Programmers" online documentation has something about using J with MIDI files. It might be interesting to have a few simple utilities for combining .WAV files.
4) a utility to aid tracking, mass-naming, and cataloging collections of files like MP3s or digital photos. I've done a little work on this, especially for digital photos.
5) a utility to backtrack through a session, gathering completed fragments of code, to include everything necessary for defining a complete function. Dan mentioned how handy this would be when you've been developing something line-by-line and need to bring it all together to define a function. He may go ahead and do something on this on his own.
Dan also talked about something for wildcarding for directories and paths - perhaps in relation to the backup-shell project proposal. My notes aren't too clear on this.
Perhaps we will narrow down this list at our next meeting which should be on February 8th. Is 6:30 pm a good time for people? I'll send out a reminder a day or so before the meeting.