Notice this issue, and its tags. It is listed as a blocking defect that needs to be resolved before Prawn 1.0.
Here is an example of a helpful comment against this issue:
And here is how I responded to it:
On the whole, this is what a good interchange on a bug tracker should look like. If the ticket already exists, a commenter might provide some additional information worth investigating, and the maintainers of the project ought to provide prompt feedback about that information, so that more actions can be taken. These are the sorts of comments that move our projects forward.
But there is a whole other type of comment that we get, as well. Here's an example of one that does NOT move the project forward:
And here is how I responded to it:
Far from friendly, my response has sort of a douchebag tone to it here. But without snipping rudeness and unhelpfulness in the bud, projects fall into a cycle into which more rudeness forms, which causes the maintainers to ignore requests because they can't suss out the helpful comments from the unhelpful. The alternative causes you to alienate some users who would be helpful and productive members of your community because they watched you act like a jerk to some less helpful person, so neither solution is good.
I'll be the first to admit, some projects handle these relations better than I do. But I also want to help solve the root problem, so that project maintainers no longer need to deal with these problems. I propose these few simple rules when discussing open source.
RULE 1: If the issue is unknown, come up with a minimal example that reproduces it that can easily be run by others, and then post that issue to wherever project defects are tracked. Then if you need a solution, work on a fix yourself, asking for help as needed. You can also wait for someone else to fix it, but unless you've paid someone to look into it, don't expect a particular timeline. In some cases, your issue will never be fixed.
The above may not seem like a great deal for the end user who is reporting a bug, but there are three good reasons why filing a proper bug report is a good idea:
IT MIGHT BE USER ERROR: Often times, it is discovered that given a defect doesn't actually exist, and instead, involves some misuse of a library. When this is the case, maintainers will get back to you letting you know how to avoid your problem, which is a bit like getting an immediate fix.
IT MIGHT GET FIXED: If you write up your bug report in a helpful way with sufficient detail, there is a good chance someone will fix it, even if you don't have the time or domain knowledge to do it.
IT WILL HELP ADVANCE THE PROJECT: If you take the time to fix your defect, it'll almost certainly cost you less time than it did for the maintainers of the project to give you the free tool you're using. While most free software producers don't set expectations on their users to contribute back, it does help balance things out a little. That said, a well written reproduction of a defect is a contribution in itself, so don't underestimate how much it helps producers of OSS when you create one.
But suppose you're looking at an existing issue, and you don't have anything valuable to add...
RULE 2: If the issue is known, and you don't have any new information to help with its resolution, and you can't/won't fix it yourself, and you can't/won't pay for someone else to fix it, you only have one reasonable course of action: SHUT THE FUCK UP AND BE PATIENT.
We've all been in the situation where we curse the name of some project or person because of a bug that got in our way. In private, I think this is the natural release of frustration about a problem that we don't have an immediate solution to. In public, it becomes something else entirely, and directly affects real people who work hard to put something out there for free and then get constantly criticized.
So please, if you can't be part of the solution, we'll understand. But don't be part of the problem.
Written by Andrés Freyría, one of the inaugural RMU participants. Andrés has volunteered to do periodic updates about the inner workings of RMU from the student perspective.
Ruby Mendicant University has not officially started. And yet, it has.
So, for the benefit of those who have recently joined, and for those curious about what's going on, here's the first RMU-insider announcement!
The response from the RMU students has been overwhelming. This is no hyperbole — I barely got any work done on friday just keeping up with the mailing list (alright, alright, there was the world cup also). Everybody is enthusiastic about the program and all the options that are shaping up already. Which options? Glad you asked...
#rmu-general @ freenode.net: Greg started the channel "half expecting it to be a ghost town". Not so! However, we could use more people. Don't let the fact that it's IRC scare you, as it's the official real-time communication channel. There's already been some interesting conversations about RubySpec, Rubinius, MongoDB, and fluffy pets, so don't miss out! The IRC channels now feature transcripts, courtesy of locks, who hacked it together with the guidance of Volundr.
For those who are not students, but wish to know more about RMU (or just hang out), please join us at #rmu-public.
RMU's Class Administration App: Want to contribute to open source, but don't know where to start? Help us build the app that RMU (read: you) will use. This is a great opportunity to experiment with Rails 3, and to erase the fears and anxiety of the first-timers. Greg will be posting the features for the application next week, hopefully, but in the meanwhile please add your ideas here.
Focus Groups: Anybody who's interested in a particular topic is free to start a thread in the mailing list (please check Greg's original post, though). So far we have healthy discussions on metaprogramming, how to write better tests, and remote pair programming. Which, speaking of it, brings me to...
Remote Pair Programming: If you haven't had the chance to do pair programming, or wish to pair with fellow RMUers, this is for you. Anita Kuno has been an awesome host, and she's already organized the first pairings! Please check the thread if you wish to jump in — everybody is welcome, independent of previous experience or ruby skill.
Time for some general announcements:
Applications for RMU are now closed. The final student count is 87. All who submitted a completed solution passed.
10 brave souls will go through a pilot RMU session in August. Thanks for volunteering!
Newcomers, please introduce yourselves in the appropriate thread
There is so much going on with Ruby Mendicant University that it's hard to keep up with it all. But since I feel a key responsibility of mine is to keep folks informed of our progress, I'll do a quick brain dump on some of the interesting happenings so far.
Selections
At the time of writing, 69 students have been accepted into RMU. A small number of submissions were initally declined, but upon recieving feedback, those students worked hard and resubmitted, earning them an invitation. That means that at least so far, anyone who took the time to write code and think about the problem has been accepted! There are four submissions currently in my "to review" queue, though I expect that number to grow because we started open requests to take the exam this morning. The submission deadline is June 20th at 00:00 UTC, or when we reach 120 accepted students, whichever comes first.
Once exam submissions are closed, I will begin to assign people to sessions. The priority order is relatively straightforward: First I will place people with hardships in their desired sessions. Then I will process everyone else's preferences by a first-come first-serve basis using the timestamp from when ther acceptance form was submitted. I may do some rejiggering of the ordering as I see fit, especially if it means avoiding any scheduling conflicts for people, but for the most part, I'll try to use this fair measure.
Pilot Program
While the program still officially starts in September, we are going to do a dress rehearsal in August by running a full length session using my experimental schedule and materials. Here's the email I sent out that sketched out a rough outline of how RMU might run:
I'm thinking the general structure of RMU will be three projects, each running a week (but with some overlap), a final exam similar in size and structure to the entrance exam, and an individual or group project that I approve for each participant.
**In order to gain alumni status, participants are expected to satisfactorily complete any two of the three assigned projects, the final exam, and make some headway on their individual project.**The individual project is really open ended, it can be anything you are interested in that is Ruby related. But it must have some measureable results, and you are strongly encouraged to keep me updated throughout the course of the session about the issues you're running into. This is where we'll spend a lot of our 1-1 time, during the office hours.As far as actual group sessions, we'll have tightly time boxed meetings in the "least damaging" time slot we can find across time zones. Not everyone will be able to make it to all the meetings, and that's okay. I will reserve a large chunk of time for office hours during the off days, so that those who missed a session can get caught up and ask me any questions they may have. We can also keep in touch asynchronously throughout the program via mailing list.So, attendance to sessions is not mandatory, but sharing your progress is. We'll do the best we can to work this out so that RMU fits into participants schedules, and does not dominate their available free time.Here is a sample schedule that I'm playing with, let me know what you think:== Project Dates:Project 1 (August 1st -> August 8th) Project 2 (August 6th -> August 13th) Project 3 (August 8th -> August 15th) Final Exam (August 15th -> August 22nd) Individual/Group Project (August 6th -> August 22nd)== Overall ScheduleAugust 1st: Commencement (Review entrance exam, project 1 start) August 6th: Meeting 1 (project 2 start, individual project acceptance) August 7th: Office Hours August 8th: Meeting 2 (project 1 review, project 3 start) August 13th: Meeting 3 (project 2 review) August 14th: Office Hours August 15th: Meeting 4 / Exam released (project 3 review) August 20th: Q&A with an Expert Rubyist August 21st: Office Hours August 22nd: Final Exam Due August 29th: Alumni Meeting + Retrospective.
This schedule may change completely before September, but the students seem generally enthusiatic about the structure so far. I've even lined up our first guest host for Q&A, to be announced in a few weeks.
Community
I created a mailing list and IRC channel for accepted students, half expecting it to be a ghost town. Boy was I wrong. The mailing list has been abuzz with the creation of ad-hoc focus groups, plans to hack on open source projects, introductions from people literally all over the world, and lots of other great stuff.
This is no longer just a training program, it's an intentional community that's shaping up to be a wonderful environment for Ruby learning. We really feel like we're building a completely new approach to online education and studying. More on that later, but so far, the enthusiasm and the followthrough on turning that energy into something productive has been amazing.
While most of the discussion is being done through our semi-private channels as people get to know each other a bit, there is also #rmu-public on irc.freenode.net for those who have questions or suggestions about RMU. Please do stop by if you get a chance!
Donations
A good number of folks have been emailing me asking if they can donate to RMU, even though I closed the donation drive. Since my initial funding request was just to cover the initial content creation, and because I don't know how much time or effort it'll be to run the course itself, I am not accepting donations currently. The good news is that the pilot program will give us earlier insight into that, and I should be able to open up donations again around September 1, 2010. If you want to be notified of when the donation drive goes live, you can give me your email address and I'll contact you. Don't worry, I won't spam you beyond a single message with a link to where you can donate.
I am overwhelmed by the community's generosity. Thanks to all those who donated, and all who have offered since the funding drive closed.
---
That's all for now. It's now time for me to participate in an in-person training program, The Compleat Rubyist with David and Jeremy. You can follow us on twitter to get some live updates from the event. Otherwise, expect to see some more RMU news soon.
So far, by all measures, Ruby Mendicant University is on a fast track to success: With the funding drive for initial content creation fulfilled in a 10 day period, and 63 participants already passing the entrance exam with a few days to spare, I'm not worried about the level of interest or the feasibility of getting our first session off the ground. However, we've been making up the philosophy as we go along, and I think it's time to start hammering out some of the details of what role RMU should play in the community at large.
Public Products, Private Sessions
Because I accepted community funding, and because I'm a firm believer in open content in general, RMU is endebted to provide at least some public material throughout the course of its operation. You'll see the first of that in just a few days, when I release the entrance exam writeup. By the time the first session goes live, with the help of a number of participants, you'll also see some open source Rails code for doing online classroom administration tasks. Throughout the sessions, I can see where more and more opportunities to share things with the community will crop up. On top of all of that, as I retire problems and exercises from our program, they will absolutely be released under some sort of open content license.
However, with regards to actual sessions, I had mentioned that I was considering doing some publicly open sessions, and I think I want to step back from that a little. I feel like the manageable number of people that have been accepted into RMU so far makes it much more likely that we'll develop deeper and more meaningful connections together in a semi-closed setting. I want to grow our internal community slowly, and use the sessions as a means to get everyone up to a level playing field so that they can begin focusing on the projects they really want to get involved in.
In this way, RMU participants will actively engage in the community at large. We might have assignments to do code reviews of projects they're interested in. We might work together in groups to help come up with patches to bugs or wanted features in open source code. I will try to occasionally get us set up with guest appearances from notable open source hackers to do Q&A sessions with our students. We could do things like post transcripts of select meetings, and otherwise document our experiences and put them out there for anyone to use and learn from. But at the end of the day, RMU students will have a private and supportive environment to practice their skills in, alongside other likeminded folks.
An Intentional Community
While some folks will certainly do their three week session and move on, others are bound to want to stick around and keep ties with the folks they've met along the way. Currently, I'm actively encouraging students to make use of some general discussion channels to do ad-hoc study groups, set up projects, and otherwise connect with people in similar shoes as their own. I am hoping that our Alumni stick around after completing their sessions, so that they can help make new members feel at home, and share their experiences with others.
As the total number of people who have been through an RMU session grow, I can see us forming an intentional community centered on improving our craft. Only time will tell, but I can see potential that spans far beyond my initial humble goals for this project. So far, the level of enthuiasm among recently accepted students has been through the roof, and we're still months away from our first session. That tells me that we're on to something here.
The Dangers of Wild Success
It is important that we try to ensure that we don't become an exclusive or elitist group in any way. No one in the group has that attitude so far, but I'm afraid that the greater strides we make, the greater the risk we run of losing sight of our initial goals. I will say though that at least as it stands now, the entrance exam is not meant to be a rigorous test of skill. In fact, while I did ask a few people to make revisions, everyone who has submitted so far has passed. By having an entrance exam and selection process, I am only trying to weed out those who wish to lurk only, as RMU is a participants-only program. I also do need to know that all participants have at least a baseline understanding of Ruby, so that I don't spend several weeks flying over half of our participants heads.
Similarly, the final exam for sessions will in no way be a "certification" process. Instead, it'll be meant to recognize those who put in the necessary effort over the course to improve themselves to the point where they be productive, helpful members of the Ruby community. This is going to mean something different to everyone, and is highly subjective. I just want to recognize those that I feel have learned something from the program, as a very small token of appreciation for their hard work.
So, all of this is a long way of saying that if anyone ever shows you bias based on your inclusion / exclusion from the RMU program, you have my permission to punch them in the genitals. RMU is primarily about individual development, and only our students will know how much progress they've made.
Transparency
Despite my decision to keep our sessions closed to the public, I will be keeping my notes on our policies and overall progress public, so that I can benefit from community input, and from the next set of potential students who might wish to join us. I've already set up an #rmu-public channel on irc.freenode.net to interact with those who aren't yet actively participating in the program. Should it seem like a good idea down the line, I'll probably set up a public mailing list as well so that folks can ask whatever questions they want or give us suggestions for things that could be fun to do.
My hope is to make this program bend and shift significantly to meet the needs of our students, while keeping a few core values intact throughout. But like most everything else I do, this is all a giant experiment. Feedback is much needed, and greatly appreciated. If you've got a question or comment, just let me know.
What follows is a conversation I had with a developer and entrepreneur named Johnny who sparked the initial ideas for Ruby Mendicant University.
He was originally looking for personal mentorship, something I've historically done for free as a volunteer effort but these days have to charge for or downright decline due to a lack of available time. Fortunately, as I continued my conversation with him, I realized that there might be a way that I could go back to my roots. The idea for RMU was born in an instant, and Johnny's initial questions helped me form some basic ideas about my overall goals for the program.
But for now, let's get on with Johnny's questions.
On 6/3/10 12:38 PM, Johnny wrote:
> Some questions: > > 1. Are the sessions "solid" blocks of time? How long? What does it look > like through the eyes of a student? I think what it will be is something in which people would be expected to spend a good deal of time on independent learning (this lets them get out of the program what they want). But then a couple days a week, there would be interactive sessions, some structured, others unstructured in nature. I'm thinking basically two event nights per a week + one unstructured QA session where I'm sitting in a channel waiting for people to drop by, or watching a mailing list. This would be continued across roughly a three week period. > 2. Lets talk niches. > > a. Heavy Duty. There are several rails shops and similar organizations > that'll help people coming from other languages learn Ruby over a > multi-day session. Lay $500-$1500 on the table and get group time with > famous Rubyists + cookies. Yes, active, intense learning is a market that was at one point saturated at at least at this point abundant. I have taught some of these sessions and I think they're awesome (Doing one in Chicago in a few weeks, as I mention in the post). But they are not for the faint of heart, and usually not accessible to hobbyists due to their cost and travel requirements. > b. Light Weight. Buy books, download PDFs, read the ruby and rails > source docs, find that your install is different even if you purchase a > brand new mac so even if you read it you won't get the reward, read > forum posts to fix it, try stackoverflow, beg in IRC, attend Ruby groups > but realize that they are for developers more than help sessions and you > don't want to hijack it. Yep, sooner or later, this gets frustrating as hell, and these folks tend to become permanent newbs hating their job OR disappear entirely. Sad situation. Some people make it to the far side of this and come to understand just how much work documentation and helping others is. It's a shame that more don't fill in the cracks here. > c. Mid-Strength. Underwear + ??? = Ruby Knowledge. Meaning, there's > bloody nothing in the middle range. I'm thrilled to run through sets of > learning instructions if I can get a human on the other side when the > thing I need is simple but it'll take me the rest of the day to figure > out that there's a gem list, or that I can hit cmd + r to run my script > right from TextMate, or that TextMate EXISTS! > > Do you agree that there's little in the way of mid-strength tutorial > solutions and that there's a need here? If so, can you hit this sweet spot? That's definitely the market I'm aiming for. There are a lot of people who have gone through the initial gauntlet only to plateau and find that while they can play by ear, they can't quite read the music. I want to help motivated people find the resources they need to be productive people who can work on interesting problems :) > 3. Demand. Yes there are waves of Ruby newbies running around and > banging into walls. Will they pay in large numbers for the help you want > to give? How often do people like me pitch you on getting mentored? > After 2 minutes of thought....I dunno. I will, but I'm probably weird. Not weird at all. I get a request for mentorship at least once a month, sometimes more frequently than that. I have had some long term relations with people, others stuck around for a bit and then either dropped out or went on to accomplish great things. But now that I have a wife and a house, my available free time has dwindled and I don't generally accept mentorship requests unless they can pay my going consulting rate. Unfortunate, really, because my mentor (James Edward Gray II) gave me tons of his time for free. But I imagine that those were different times for JEG2 as well, as it was over 6 years ago. So I'm hoping that with this class, I can create a program that streamlines my ability to help people out, helps defray some of my costs, and adds a bit of structure to the thing so I can fit it into my life. If it works out, students will be able to participate for free or very cheap, and I can get back on the mentoring horse. Of all the things I've done in my life, helping people learn has been the most satisfying.
I have to admit, I have avoided RailsConf over the years because it didn't seem to be my kind of thing. While I work day to day in Rails, most of my coding is on backend and infrastructure work, so I'm able to get by with only a working knowledge of the whole stack. But this year, thanks to the B'More on Rails crew, there is a beautiful oasis for even the most old-fashioned Ruby purists to thrive in. It's called BohConf, it's completely free and it's fucking awesome.
The morning was an endless cycle of momentary flurries of collaboration followed by deafening silence that appears when hackers are busy honing their craft. The organizers had set up a "Community Code Drive" in which open source authors could meet with users and potential contributors and hack on things a bit. I was happy to be one of the folks to run one of these sessions this morning.
Community Code Drive
I was hosting a session on Prawn, which let me finally meet in person quite a few folks I've had conversations with online. We fixed some bugs, shared ideas and code, and some folks were even kind enough to indulge me by checking out some of my latest experiments with our overall architection. I'm planning to do it all again tomorrow, so for those who are interested in Prawn, you know where to find me. You can check out Wednesday's schedule to see some of the other folks who will be around. If none of these projects seem like your kind of thing, you should still come down with your own project hack on if you're looking for a great place to hang out.
Programming Contest
This afternoon, the organizers announced a programming contest that'll run until 2pm tomorrow. It's an interesting data visualization problem that has to do with coming up with an interesting picture of Baltimore's recent crime data. The cool thing is that it's super open ended, so folks can hack on anything that might be fun to play with. I'm really looking forward to seeing what people share tomorrow, and I plan to work on this tonight with Jia, Jordan and Chenoa and see what crazy ideas we can come up with. For those motivated by shiny things, there are also some cash and books to be won.
Code Retreat
In the afternoon, the folks here at BohConf ran their own variant of Corey Haines's code retreats. Folks worked in pairs repeatedly trying to build a fresh implementation of Conway's Game of Life in tightly scheduled 45 minute sessions. After each session, there was a bit of retrospective and then people swapped partners. The emphasis was on trying different things, explicitly doing things a little differently than day to day work. Listening in on the conversations, it seems like this approach works great, and reminds me of some of the trainings I've done. It's amazing what sort of great ideas and discoveries come out of just working on an interesting problem and discussing what you find.
While Jordan and I didn't swap out partners throughout the session, we did attempt to write a Game of Life implementation in Clojure. It turned out that it was sufficiently different from our day to day work for us to get nowhere near completion in a 3 hour period. But nonetheless, it was fun to try out a completely new language, and just loosen the shackles of the daily grind a bit.
Hands Down, Best Ruby Conference Ever
I've spoken at a ton of conferences, and have a lot of friends that I've learned a lot from by hearing them speak. I've even helped organized conferences myself. But for me, the best thing about conferences is, and always has been, the hallway track. Interacting with other hackers, taking some time to really sit down and hack without worrying about regular responsibilities, and being in a very supportive environment is where it's at for me.
So when you take the hallway track and give it first class status, and you set up a group of organizers who are super laid back and nice, you get a feel that reminds me of Ruby conferences over five years ago, in which everyone hacked, and everyone shared. No matter whether your conference is large or small, if you're an organizer, get in touch with the B'More on Rails guys and talk with them about what they did here. It's full of win, and is something we really need more of in the Ruby world.
Don't believe me? Come see for yourself!
There's another full day of BohConf running from 9am to 5pm tomorrow. Among other things, tomorrow includes a BarCamp style unconference in which anyone can put together something to talk about and share. If today is any measure of how tomorrow will be, we're in store for another great day.
Hope to see you tomorrow. Please do stop by and say hi if you've read any of my stuff or are interested in my projects. I'm happy to discuss anything you'd like about those things, or check out some of the neat stuff you've been doing.
When I bought this neat looking lamp from Walmart, I had no idea that it'd help me discover the worst website on the entire internet. But sure enough, my simple search for attractive, low cost lighting ended in horrors that are simply too chilling to go away without a mention.
The lamp itself is actually only a minor character in this story, the thing that set the ball rolling. What really is to blame is the fact that I've been coworking with two of my friends here in New Haven for the last year or so. A couple weeks ago, I moved into my new house and set up a nice office for the three of us, and this lamp was purchased in the process.
The Double Edged Sword
Usually, coworking in the same physical space as a few other folks is awesome for productivity. The three of us do a good deal of contracting work for Madriska Media Group, and when we're working on a project together, we've reaped huge benefits from the direct interaction that can happen when everyone is together in the same room. And since Jordan and I also happen to be working on bootstrapping a product company together, there is no shortage of things to talk about that are best done face to face.
But as we've come to find out, coworking is really just a force-multiplier for whatever we choose to focus our energies on. On a particularly warm and lazy day, this cheap-ass Walmart lamp became our object of attention. It somehow entered our head that we wanted to experiment with automating it so that we could tie it to a continuous integration system and have it start blinking ominously when someone broke the build.
This is of course, something that has been done before, and we talked a bit about how we might approach it. The general consensus is that we could probably set up an Arduino to do it, but with none of us having the necessary experience, we figured hooking a microcontroller up to the house main power supply was probably a bad idea. As we went back to work, I fully expected the idea to disappear into that place where "sounds like fun, but too scary" projects go to die.
Crazy Ideas Never Die, They Just Go To Sleep
Thanks to my house, the "blinking cheap-ass lamp" project idea came back with a vengeance today. Although it's "my new house", that only means it's new to me, and being built in 1946, it's got its share of exciting problems. My Dad being retired now means that I've been spending my weekends in "How to be a MAN" school, and learning all those things about home repair that I never learned when I was growing up. And to be honest, I really feel lucky to be finally learning this stuff, because after renting for a while, I started to hate having to rely on others to fix stuff for me. A house is a system, and it can be hacked just like anything else.
Our main project today was trying to figure out how to wire up some Rube Goldberg machine to my garage door so that we can actually open and close it without having to do all sorts of acrobatics with the locking and unlocking of various doors. We failed at that, but in the process, I found a fresh source of inspiration for my blinkenlights. My garage door opener was controlled by a remote, and plugged into an ordinary AC outlet. An RF remote doesn't require a lot of power, so I could safely tinker with programming something that controlled it without setting my house on fire or killing myself.
The Optimism of a True n00b
You can guess how I spent the rest of my afternoon. Starting with Arduino because I thought it might be fun to play with, I stumbled across this neat thing called a CM17A which is basically a controller for wireless outlets and lightbulb sockets.
There is actually a pretty good article on this, which includes some sample code. But manually wiring up an Arduino to this seemed way overkill for what was essentially just sending an on/off command, so I went in search of something similar that I could operate via the command line and possibly plug in via USB. Turns out that there is a USB device (CM19A) that does pretty much the same thing, and has a Linux kernel module that you can just send raw commands to. While I really do want to study Arduino at some point, this seemed more appropriate for such a simple project, and I was basically sold.
I did some searching around to learn more about how these things work, and read up a little bit on the X10 industry standard, which actually uses the house wiring to send commands to these units that actually control the on/off switch on the outlets. Pretty interesting stuff, overall. One peculiar thing though is that every forum post and blog I saw about these devices recommended buying them off of Ebay, but searching for the model numbers on Google all pretty much led to one place: x10.com
Finally, the Horrors.
If you just google by the numbers, you end up on these hideous looking pages, such as this one for the CM19A:
But the fun doesn't stop there. Should you actually be able to find the "Add to Cart" button and click it, you are treated to this dizzying array of awesomeness:
Left wondering what the fuck a Mystery PC Fun Bag is and why you can add it to your cart but not see its price, it becomes obvious that there is no way to simply continue shopping, so the only reasonable thing to do is go straight to the x10.com front page manually.
Unfortunately for x10.com, this is the point in which I just threw my hands up in the air and headed over to Ebay with part numbers in hand. It is amazing to me that after this experience, I will trust complete strangers over what is supposedly a company that builds seriously cool shit. Sadly, I am now left with serious doubt about that, simply because the experience was so downright rotten.
But hey, for about 20 bucks, I can get the parts I need on Ebay to at least try to get my lamp blinking like mad in my office. On the bright side, if the parts I'm ordering are as well-crafted as this company's website, I might not even need to hook them up to a computer to make sure that happens!
After this whole ordeal, I don't know whether to laugh or cry about the experience. But I'd at least like to say thank you to Walmart for indirectly providing me with such a transcendent experience. While I usually am busy talking about how evil you are and how you're the source of all that's wrong in the world, one your products now serves as a constant reminder of something far more ugly than you are.
Within two days time, the requests for copies of the RMU entrance exam have skyrocketed to 143 people. This probably isn't close to the number of people who will submit a completed exam, but it's still a bit overwhelming. The challenge now is to come up with a reasonable way of accepting students into the program that doesn't force the vast majority to re-take test after test in hopes of getting in.
A key aspect of Ruby Mendicant University is that I want to make sure that it is accessible to a wide audience. I don't want to turn the entrance exam into a stressful experience in which only the fastest and most skilled get in. I also absolutely don't want to remove the 20 student per session limit, because I feel like the 1-1 time and small group activities are an essential part of my overall vision. With these thoughts in mind, I've come up with a plan I think will work.
The Selection Process
Rather than selecting just the participants for the initial class, I will attempt to fill five sessions (September, October, November, January, February). I will go down the list of those who were accepted into the program and ask which class they would like to attend, until all 5 sessions have 20 people in them. If I receive less than 100 acceptable submissions, I'll reduce the number of sessions accordingly. If I receive more than 100, I will place up to 20 people on a wait list to be on call for unexpected openings.
Deadlines
I will keep the request form open for the entrance exam until June 12th. The exam will be emailed to applicants on June 13th. The submission deadline will be 00:00 UTC June 20th, but may be closed early if I can fill all 120 slots. There is an advantage to getting your submission early, as you will be invited earlier, increasing your chance of getting the session you want.
Hardship Considerations
In my original plans for RMU, I had mentioned that I'd like to make some sort of special consideration for those that would uniquely benefit from this opportunity. I have had a lot of trouble coming up with a fair way to do this, and have decided that there is no way that I can give preferential treatment as to whether or not someone gets accepted into the program because of a hardship.
I think I have a compromise though: I can review the submissions blind, and then request those accepted participants who have a hardship to step forward AFTER I have made my selections. I will review each case (working primarily on the honor system and gut reactions, because verification is next to impossible), and those that seem to be genuine will be given first picks on which session they want to attend. All I ask is that people use this opportunity responsibly, so that others don't feel like they are being unfairly treated.
I am hoping this seems reasonable to the community at large. If people get out the pitchforks, I'll need to abandon the idea.
Acceptance Criteria
To be considered for RMU, your performance on the exam does not need to show complete mastery of advanced Ruby concepts. Instead, I am mainly looking to see that your ability to work on and think about problems is sufficient for the sort of material I'm planning. To a great extent, I will be using the exam to judge what sort of content I should be teaching. This means it will be important to make sure your submission is your own work. The problem will be open ended and somewhat accessible across different skill levels.
When it is released, spend a bit of time on it (a couple hours at the most), give it your best shot, and then just relax. The worst thing that can happen is that I may recommend that you study a bit more and try again next time. Results will be kept completely confidential, so there is no harm in trying your luck and seeing how things go.
Caveats
Assuming that we reach our funding goal for building the initial content, I am committing to teaching the September session regardless of whether donations end up covering my expenses. However, the same does not necessarily hold true for later sessions.
ASIDE:
As a complete guess, I think that I could take the necessary time away from my consulting to run the class for about $1500 per session. I will have a much better sense of this by mid-September, and will post an updated estimate along with an explanation for it at that time. I will then open up a new pledgie for the total cost of the 5 sessions. At $1500 a session, that'd be about $7500. It's likely that if this funding drive went well, I would leave it open as an open fund to support the ongoing operations of the school.
I want to make it possible for students to donate after they complete the course, rather than ahead of time. I also want to make it possible for students to not contribute any money if they are financially limited or didn't find value in the session. However, I just want to make it clear early on that I can't let this project become a financial burden to me, and if it doesn't go as well as expected, I may cancel it before we make our way through all five sessions.
But here's hoping for the best. I'd love to make the school an ongoing thing and even see it grow over time. But for the more cautious, if you want to be sure you get your chance to attend RMU, select the September session if you get a shot :)
Things you can do right now:
Make a donation if you like this program and want to support it.
Its purpose is not to select the "best solutions", but instead, to gauge how I should select a group that will work well together and benefit the most from the content I produce.
Donations do not affect my decision on who gets accepted to the program.
I'm pretty sure that'd be illegal, anyway. But please only donate to support me in executing this idea, not because you expect anything in particular in return.
Most exercises and meetings will be optional.
But every student joining the program should commit to the full 3 weeks and attempt to stay involved with what's going on in the course. I hope that everyone who joins the session gets "Alumni" status, but it's going to take more than lurking to get it. :)
There WILL be a final exam, which must be submitted to gain "Alumni" status.
Like the entrance exam, this is not an objective measure of skill as much as it is a way to gauge your individual progress and ensure a decent understanding of the fundamentals.
I will not be posting a course syllabus
This is because much of what I teach will be dynamic in nature and focus on problem solving rather than a bullet list of topics. We will take advantage of the small group setting to do 1-1 coaching and peer review. Upon submitting the entrance exam, you will have an opportunity to list the topics in particular that interest you, and I'll let you know whether I plan to cover them before you need to commit to the course.
This course will be conversational, light-hearted, and pragmatic in nature.
I'm not looking to create an academic experience here, nor am I trying to act as a "judge" of your Ruby skills. The goal is to create an open-ended learning experience that will take you closer to mastering your craft, but at the end of the day, the course will be what you make of it.
Some events will be open to the public
While a key part of this program is creating a comfortable and private environment to study in, some of our exercises and events will be done out in the open. This will be perhaps 20% of the overall material, so the truly shy may still apply and skip these events, but community interaction is part of what it takes to become a masterful Rubyist.
Still on board? Then, you'll want to know about these dates as well:
June 13th: Entrance Exam sent to those who pre-registered
June 20th (00:00 UTC): Deadline for Entrance Exam submissions
June 20-27th: Invites to accepted students will be sent.
June 28th: Inaugeral Class List is announced. (Students have the option of remaining anonymous)
July 1st: If we have reached our funding goal, then the sessionwill go on as scheduled.
September 1st-22nd: Session 1!
Things you can do right now:
Make a donation if you like this program and want to support it.
After years of segmenting my writing into various silos, I'm going to attempt to bring all the strands back together again.
At first, it seems that posting to topic specific sites has a huge benefit to the reader. If they like one post, there is a good chance that they'll like them all. However, I'm beginning to believe that this approach is death to creativity for producers, over the long haul. And a writer who feels like his creativity is being exhausted is of no good use to readers. It's true that constraints can help the creative process, but only temporarily. After a while, having to label an idea and file it in the right cabinet *before* releasing it to the world becomes cumbersome, and feels a bit like a straight jacket. I say, fuck that shit, I'm done. These are the things I'm interested in: - Software Development (especially in Ruby) - Math - Urban Speculation - Creative Writing - Business Management / Productivity - DIY of any variety - Sustainability (Ecological / Economic / ...) - Buddhism - Poetry - And probably lots of other things These are the projects I am currently working on: - Trying to get Prawn to a 1.0 release - Trying to start "Ruby Mendicant University" - Loosely planning to start up the New Haven Ruby group again - Launching a product company with my friend Jordan Byron - Hacking on stuff and helping run a team of developers as a consultant for Madriska Media Group - Trying to battle ants that made their way into my house without killing them - Doing exercises from "Seeking the Heart of Wisdom", a Buddhist book - And probably, plenty of other stuff I'll be talking about all of those things here, as they come to mind. I'll try to tag accordingly to help those who prefer the silo approach. But for those who have been jumping from island to island trying to piece together my fragments, welcome to the whole.
Hello, my name is Gregory Brown. I am the founder of Mendicant University, a free online school for software developers.
I am passionate about community service, education, and the free software movement. If you're interested in getting to know me a bit better, feel free to send me an email: gregory.t.brown@gmail.com