User:Short Circuit

From Rosetta Code
Jump to: navigation, search
My Favorite Languages
Language Proficiency
BASIC Intermediate
C Expert
C++ Expert
NSIS Intermediate
PHP Expert
AutoIt Beginner
JavaScript Beginner
Perl Intermediate
Perl 6 Beginner
Python Expert
UNIX Shell Intermediate
Java Beginner (Outdated)
Visual Basic Expert
Short Circuit Avatar.jpg
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. I program for fun and profit. My native locale is en-us.

Contents

[edit] Looking for Work

I'm currently unemployed. Feel free to contact me with opportunities. Or simply visit my [linkedin.com/in/mikemol LinkedIn profile].

[edit] 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 [email protected] 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.

[edit] 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.

[edit] Thoughts on Rosetta Code

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

[edit] 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.

[edit] 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.

[edit] 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++.

[edit] 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.

[edit] 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.

[edit] 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.

[edit] 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...

[edit] 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)

[edit] 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.

[edit] 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.

[edit] Miscellany

[edit] 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...

[edit] 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.

[edit] Reading List

(Things I read which I find interesting and worth noting. This is by no means exhaustive.)

[edit] Thoughts

(These aren't dictums, just what I've been thinking. Writing them here to let others see them and ponder them as well. Replies ought to go in a talk page somewhere.)

[edit] Task differentiation

I understand that:

  • It's difficult for prolific code writers on RC to keep up with large numbers of tasks
  • That small differentiation between large numbers of tasks would lead to a large number of tedious examples to write, when there is only a small difference between each task.
  • Tasks with small differentiation in the task requirements are generally going to have 'trivial' differences between language A's example for each.

However:

  • Sometimes, in order to show something that people genuinely want to do (such as counting in Octal--just an example. Don't run too far with it), it will be found that there are little or no idiomatic differences demonstrated.
  • These small differences are where many language features (in the area of builtins more than idiom and semantics) lay.

[edit] Task creation difficulties

Not knowing the terminology behind the problem, it's difficult for me to write a task in order to get an illustration of it. Not knowing how to do it in the first place, it's vastly more difficult to write a task; I can't write any seed examples, and I can't explain what I'm looking for. In fact, this is now the chief reason I don't write tasks any more. Anything I want to do, but don't know how, I don't know how to ask.

As it turns out, from my own experience and from watching successful and unsuccessful attempts by others, the solution appears to be "create the task, and work in good faith with the people attempting to get clarification so they can implement it properly." --Michael Mol 15:24, 22 August 2011 (UTC)

[edit] Entry-level

Rosetta Code has a significant problem, right now, in things not being easy to find or learn coming from a limited knowledge base. I wanted to learn about generators late last week, and wanted to use a comparison of Python and Perl 6 in order to understand the core concept--and I didn't know how to find them on RC. I had to ask in the IRC channel in order to find what I was looking for. Now, I'm not a newbie to programming, but I'm certainly a novice in a large number of language idioms.

[edit] Maintenance

Maintenance is a PITA. I'll get things updated, upgraded, fixed, tweaked, implemented, etc...I'm blocked on not enough time, and I haven't been able to obtain additional VMs from prgmr.com for a few months. (Needed because prgmr has better rates than any other VPS provider I've seen, and because I want to get multiple nodes on the same VPS host for a network throughput advantage)

[edit] Task ideas

I want to go through and implement each of Luminance-HDR's tonemapping operators as tasks. Someday, I'll get around to rewriting them to use OpenCL. It seems like most of the CPU time spent is performing operations on matrices. --Michael Mol 15:28, 22 August 2011 (UTC)

Personal tools
Namespaces

Variants
Actions
Community
Explore
Misc
Toolbox