Greetings from Garance


#1

I’ve been quiet on gitter and github-issues lately, but I am still following the progress of crystal as I have the time to. I’m pulled in too many different directions!

So let’s see if I did this right…


#2

I see other people have written real introductions, so here’s a little bit about me.

I started programming many years ago as a college student on an IBM mainframe. I ended up doing systems-level programming, and was hired by the college I had attended (Rensselaer Polytechnic Institute in Troy, New York, USA). Eventually our mainframe replaced by Unix workstations, and later by Windows-based PC’s and Macs. The majority of our faculty, staff, and students have used Windows for the last 20 years. However I’ve done almost nothing on Windows.

Programming-wise, I did have a few days of programming in Basic in high school. Literally just a few days, during the last month of my senior year. In college I worked with IBM 370 assembler, Fortran, Algol, Snobol, Spitbol, LISP, PL/1, XPL, and even APL. Possibly a few more. I started full-time work as a systems programmer, and we had our own operating system (we did not use VM/CMS or MVS from IBM, even though we always had IBM mainframes). Most of that work was in 370-assembler, although we also had our own custom language called *Plus. It was designed to be a systems-programming language like C, except that it was geared towards IBM architectures, and looked a lot more like Algol or Pascal than C. We also had some other languages that I’m sure no one here has ever heard of. One interesting thing about *Plus was that it was the first serious language I worked in which was so committed to structured programming that it had no ‘goto’ command. Pretty boring now, but kinda daring at the time.

So I’ve been pretty fascinated by programming languages right from the time I started programming. However, I have no experience writing anything close to a compiler or language-interpreter. That’s too much work!

Unix workstations replaced our mainframe. Campus was sun (solaris), ibm (aix), and sgi (irix) workstations. So of course I ended up as the official support person for NeXT workstations, which were sold at our campus store. I was also the official support person for MacOS, starting in the early 90’s and continuing after Apple bought out NeXT.

I’ve dabbled in a lot of open-source projects. I’m one of the official committers to the FreeBSD operating system (gad@FreeBSD.org), where I contributed a fair amount in the early 2000’s. Not so much in the last 10 years. I’ve also contributed small bug fixes to things like bash or OpenSSH. And for a really obscure thing to brag about, the ‘-J’ option of the ‘xargs’ command in FreeBSD and MacOS came about due to me (although that was before I was a committer, so my name isn’t on those commits). Most of my work is done on “systems-y” components, but not at the level of kernel programming. So in FreeBSD I’ve done a lot of work on things like lpr/lpd, newsyslog, and the ‘ps’ command. Probably some other stuff. I tend to lose track of all the projects I’m juggling.

As a side-project I also run a chat system called ‘lily’, which is implemented in LambdaMOO. Very small user base (mainly alumni from RPI), but our lily chat system has been running for something like 25 years now. RPI also had one of the first IRC servers, although I wasn’t connected to that. We gave up on running IRC servers in the mid-1990’s though, when they started to get hit by DoS attacks.

I’ve never done much of anything in the world of web programming.

Getting back to languages, I obviously picked up on Brad Cox’s Objective-C due to NeXTSTEP. I read about half of one book on C++ programming for MacOS (the early MacOS, not OSX), and I made sure to avoid C++ after that. I came across python in the late 90’s but didn’t really feel like diving into it. Nothing against what I saw in it, but it wasn’t quite attractive enough to draw me into it. I came across ruby right around 2001, I think. It was back when all the official books about ruby were written in Japanese. And no, I can’t read Japanese. (In high school I was pretty good in Spanish, but by now I’ve forgotten about 99% of that). I think the only reference available in English was a “reference booklet” of the language. I was fascinated by the idea that a language was so committed to object-oriented programming that everything was an object.

However, the fact that ruby is an interpreted language has some downsides, especially when it comes to writing systems-level programs. So I was very interested in crystal when I found out about it. I expect I don’t have to explain crystal to anyone reading this forum!

There are a few other languages I’m still interested in, but I haven’t had the time to do much with. I’d like to try to rewrite our chat server in elixir, but I doubt I’ll ever have the time. Besides, one of other long-time programmers on our chat server has recently started rewriting it in python, and he’s an excellent python programmer. I’m also interested in rust and clojure. I doubt I’ll ever actually do anything in clojure, because right now I’m most interested in languages I can compile. (I do a lot of ruby programming and some perl programming, but I’m not interested in learning any new interpreted languages). But I really did enjoy LISP programming in college, and I do enjoy listening to presentations that Rich Hickey has done for clojure. I also think there’s a lot to be said to use functional programming ideas as much as possible, even if you’re not using a language which is obsessed about functional programming.


#3

I also have a huge music collection, going back into some artists from the 1960’s. These days I tend to focus on electronic (but not dance) music, and progressive rock. But I do like music from many other genres. My music collection has grown larger than I can really keep track of (I even have a database in 4th-dimension which is supposed to track it…).

One of my side projects is to separate my more-favorite music from the music I’ll almost certainly never play again, and reduce the size of the collection to something more manageable.


#4

So I have been programming for a few decades now, and remain fascinated by it. Writing programs are like solving a wide variety of puzzles. And I do get to work on a wide variety of things, because RPI doesn’t have anywhere near enough computer staff to handle everything that RPI wants to do with computers!

And I consider programming languages the most interesting puzzle of all, because a programming language is trying to solve the puzzle of what’s the best way to think about programming. A meta-puzzle.


#5

And when it comes to computer games, I like to play StarCraft and StarCraft 2, and WarCraft3. I’m not good enough at any of these to compete with the more serious players, but I enjoy playing against computer opponents. I used to play in teams of human players, only to find that some human players take the games way too seriously and get way too upset when something goes bad for their chances of winning. I play just for the fun of it.


#6

No Diablo 2?! J/k, SC is great too =]

Blizzard is definitely not what it used to be though… my lord


#7

Yeah, well, I happened to play a game of StarCraft this morning — and I’d have to admit that I’m not the player that I used to be! :slightly_smiling_face: