User:MikeMol

From Rosetta Code
Revision as of 15:26, 5 January 2011 by MikeMol (talk | contribs) (PIR)
My Favorite Languages
Language Proficiency
AutoIt Day job secondary
BASIC Very Very Rusty
Brainf*** Wrote a buggy interpreter
C Day job secondary
C++ Day Job primary
Java Rusted through
JavaScript Semi-Active
NSIS Proficient
Perl Quick scripts
Perl 6 Quick scripts
PHP Day job primary
PIR Trying it out
UNIX Shell Active
SQL Active
Visual Basic Rusty
Visual Basic .NET Rusty
J Interesting
Python Hacked at a couple things
Haskell I think I understand the model
Forth Desire to mess with

My name is Mike Mol. I founded Rosetta Code, contributed the first tasks and examples, went on a promotion drive, and now primarily provide guidance, administrative and hosting services and maybe a line of code here and there. Rosetta Code was an idea I'd had during a Christmas vacation, before I'd heard of other programming chrestomathy sites.

Parsleyfirefly is my fiancee.

Contact

If you specifically want to get my attention, this page's talk page is the best way to have a public conversation with me, inclusive of other RC folks. Another good approach is the IRC channel (which is at #rosettacode on Freenode).

Otherwise, you can email me at mikemol@rosettacode.org. I'm (kinda) on Twitter at @mikemol, but I don't interact much there...I'm more likely to interact from @rosettacode, if you want to communicate via Twitter.

XMPP and other IM mediums...Not the best way to talk to me; they're about as attention-consuming as phone calls, and you'll get as-good-or-better results hitting the IRC channel and asking me there.

Finally, if you need some other contact method, check the WHOIS record on rosettacode.org, and see if any of that works for you.

Voice

I've got a few blogs (totaling thousands of unique entries) in various places. I can't seem to find a single, good platform, though. I might wind up just using a wordpress.com or blogger.com blog.

Thoughts on Rosetta Code

(I need to rewrite most of this, I expect.)

Language scope

It's a given that not all of the languages will be able to accomplish all of the tasks; Just because two languages are turing-complete does not mean that all things possible in one language are possible in another; One language may have access to system and environment resources that another language doesn't. While it's certainly possible to transcode BrainFuck source to C source, you can't go in the other direction without providing language extensions. But before you dismiss that as a strawman, consider the same thing is true between C and Perl; Anything written in Perl can be transcoded to C, but the reverse isn't possible without providing native-code Perl modules for runtime. To borrow a term from the graphic design world, different programming languages have different gamuts; If you want two different languages to support all of the same features, it's highly likely you'll either have to prune one language's feature set or extend the other's.

My role

And, all of that said, I try to leave the decisions on these things to the CS professionals, academics and hackers that frequent the site. They'll get on a talk page here or there and argue about whether a task is poorly written, whether an implementation follows the goal of the task, or both. Actually, one argument usually leads to the other, and the two sides hash out their points until they come to a consensus. When a question of "whether this suits the purpose of Rosetta Code" comes up, I'll drop in, write a few words about my opinion, and let them continue towards a consensus. After a while, things settle down, and someone with the appropriate privileges applies the consensus.

In short, I just run the servers, try to keep things running smoothly, add whatever features I think of or that people ask for, if possible. I enable the process; I try not to control it. Heck, when I created the site, I wasn't even sure what the process was, or what it was going to be; It more or less developed out of the interactions of people interested in learning languages, people interested in advocating languages and people for whom language chrestomathy tickles their brain.

Experience

I've been a Linux geek since 1999-2000, so I've got a healthy respect for Perl, the Bourne Again SHell and C, but my day job since 2007 involves coding in Windows, which means I've lately been spending most of my time in C++.

RSS

I currently keep an eye on Rosetta Code by adding Special:Recentchanges to my Google Reader. I find it's a great way to stay apprised. Google Groups has an RSS feed for each group, with is another way to stay caught up on language discussions, even if groups like comp.lang.c++ move pretty quickly.

By the way, if anyone knows of an extension to add PubSubHubbub support to MediaWiki, I'm all ears.

Rosetta Code

Rosetta Code came from an idea I had during Christmas of 2006. I'd recently revisited Wikibooks' List of Hello World Programs, and didn't care for its limited scope. As I was President of the GRCC Computer Club at the time, I convinced the club to host a project called Goodbye World (shortly renamed to Rosetta Code). I chose MediaWiki because I felt it would let me get started more quickly than any other system. Once I had a few categories and tasks set up, I submitted the page to Slashdot.

Well, if you take Slashdot, a shared hosting account and an uncached MediaWiki setup, and throw them in a blender, you get a big mess. The kind folks at Geekalize noticed, and offered RC free hosting on their dedicated server. That carried RC through until the end of the arrangement in the fall of 2007. From Fall of 2007 until June of 2008, RC ran on my shared hosting account. From June-August of 2008, Rosetta Code sat on a Slicehost VPS account paid for by Qrush. In August 2008, Rosetta Code moved to a Slicehost VPS account paid for by me. In September 2009, I moved Rosetta Code to Linode. In March of 2010, Rosetta Code moved from Linode to prgmr.com.

What Rosetta Code Is

I've been trying to define what I see Rosetta Code as being for a long time, but I haven't been able to do much more than point at it as its own definition. I think I've finally managed to come up with a halfway-rigorous description.

All of education and learning depends on having a frame of reference. Without a frame of reference, one can't take something knew and stitch properly into his skill or knowledge set. As a programming chrestomathy, Rosetta Code allows a visitor to find a frame of reference and learn something new. At its simplest, Rosetta Code makes building a frame of reference for learning new languages easier by providing examples of problems known to users along with solutions which use languages they're familiar with, as well as solutions which use languages they aren't familiar with. However, that's not where Rosetta Code's model ends. The building of the frame of reference also works in reverse; users can learn to understand problems by seeing solutions to those problems written using languages they understand—I use Rosetta Code myself for this purpose a great deal of the time. Finally, Rosetta Code isn't limited to enhancing only languages and problems. A language is a tool, and, by extension, the frame of reference model Rosetta Code uses can be generalized to tools, and this is how I see Rosetta Code.
So, to go back and generalize an earlier statement: At its simplest, Rosetta Code makes building a frame of reference for learning tools easier by providing examples of problems known to users along with solutions which use tools they're familiar with, as well as solutions which use tools they aren't familiar with.

I see this as useful, because documentation and existing learning materials for problems and tools are often nonexistent, difficult to find or opaque. Take mathematics articles on Wikipedia; while I don't doubt they're largely technically accurate, I largely haven't been able to read and understand them. If I look at implementations of those articles' processes in source code, I often have a better understanding of the process. I know it's not just me; I have a friend who learned how the Hough transform works via the task on Rosetta Code.

Policy

(I'll have to find a better place for this eventually.)

I'm something of a benevolent dictator here on Rosetta Code. One thing I've discovered, though, is that other people are usually right. Hence, if you have a suggestion, let me know. However...

Language Promotion

I explicitly allow and endorse language promotion on RC, so long as it takes the form of code. I occasionally seek out language developers and enthusiasts to get regular contributors for new languages. Language comparison is the primary goal of Rosetta Code, and enthusiastic contributors help towards that. --Short Circuit 21:22, 11 December 2007 (MST)

My role

I try to leave the decisions on these things to the CS professionals, academics and hackers that frequent the site. They'll get on a talk page here or there and argue about whether a task is poorly written, whether an implementation follows the goal of the task, or both. Actually, one argument usually leads to the other, and the two sides hash out their points until they come to a consensus. When a question of "whether this suits the purpose of Rosetta Code" comes up, I'll drop in, write a few words about my opinion, and let them continue towards a consensus. After a while, things settle down, and someone with the appropriate privileges applies the consensus.

In short, I just run the servers, try to keep things running smoothly, add whatever features I think of or that people ask for, if possible. I enable the process; I try not to control it. Heck, when I created the site, I wasn't even sure what the process was, or what it was going to be; It more or less developed out of the interactions of people interested in learning languages, people interested in advocating languages and people for whom language chrestomathy tickles their brain.

Questions

If you have any questions, you can try leaving me a note (I can't guarantee I'll get back to you quickly.), asking on the Village Pump, or dropping by on IRC. If it's about RC organization, leave a note in the Village Pump or the relevant page's talk page; Interested parties will usually leave comments within a few hours.

Miscellany

Short Circuit

I find the task Short-circuit evaluation jarring, because "Short Circuit" has been my moniker online for twenty years, and on CBs prior to that.

Anything to do with the film? --Paddy3118 20:40, 29 July 2010 (UTC)
Yeah, actually. It was my favorite movie as a kid. I was also a bit of an electronics hobbyist, and the phrase "short circuit" aptly summed up my skill...

Language scope

(I should re-read and re-write this, most likely.)

It's a given that not all of the languages will be able to accomplish all of the tasks; Just because two languages are turing-complete does not mean that all things possible in one language are possible in another; One language may have access to system and environment resources that another language doesn't. While it's certainly possible to transcode BrainFuck source to C source, you can't go in the other direction without providing language extensions. But before you dismiss that as a strawman, consider the same thing is true between C and Perl; Anything written in Perl can be transcoded to C, but the reverse isn't possible without providing native-code Perl modules for runtime. To borrow a term from the graphic design world, different programming languages have different gamuts; If you want two different languages to support all of the same features, it's highly likely you'll either have to prune one language's feature set or extend the other's.