Wow, this is the first time on r/webdev where I have to disagree with every single comment so far. But:
DO NOT USE A DATABASE AS A MESSENGING QUEUE
There are many reasons why this is a bad idea, most obvious of which is the significant number of queries that you will be receiving for just a single connection, or even one person broadcasting a single message to an entire room. Using a database in this way is a well known anti-pattern, and generally considered to be very bad practice.
Instead, you should be using a dedicated message queue, like RabbitMQ, or just send the data via sockets, as some others have suggested. Databases are just not meant to be used in the method that you're describing, they are meant for storing persistent data.
Jina Bolton wrote 2 nice articles (that I know of) about this topic:
http://www.engineyard.com/blog/2011/front-end-maintainability-with-sass-and-style-guides/
http://www.alistapart.com/articles/writingainterfacestyleguide/
Many of these may or may not fit your concept of a beginner level talk, so take anything you like. I'm just throwing out ideas that I would've appreciated hearing about. I'm definitely in favor of the topics you've already listed in the OP.
If you cover any of the gem skeleton tools like Jeweler, please be sure to point out the caveats, and if possible, cover simpler alternatives like bundle gem
or simply doing it by hand.
One topic that tripped me up early on was the concept of load paths and require
. Perhaps touching on that would be helpful, and mention 1.9.2's require_relative
while you're at it.
Brief mention of 1.9.2-only code in general as it relates to gem publishing might also be a good topic. How to specify that your gem requires 1.9.2 in the .gemspec, for example.
RVM and/or Bundler for simplifying gem development/testing. Using RVM to test against multiple ruby versions, for example, or Bundler (and maybe gemsets) to allow collaborators to get up to speed on your gem quickly and easily.
The recently unveiled Gem Testers service from EngineYard. [Announcement blog post]
The (spooky hands) eviiiiiiils of monkey-patching and alias_method_chain
, clarifying when they're appropriate and when they're a symptom of code smell or programmer laziness. I realize this topic may be a bit beyond the basics of gem development, but they're very important considerations for sharing re-usable code, imho.
Install and update Xcode (the mac osx development and unix tools) from your install disk. Then install Homebrew (it ports a lot of Linux/Unix packages to OSX) then install/run Cmatrix from the command line.
I don't have time to explain homebrew and other cool OSX tips right now, but here is a good blog post on how to use homebrew. http://www.engineyard.com/blog/2010/homebrew-os-xs-missing-package-manager/
If you would like i could make a more in depth guide on how to customize/get the most out of OSX (maybe some of you other OSX users can help me?)
EDIT: the terminal i use is called iTerm2 its far more useful the the standard osx terminal (split screen, Tabs, Easy color management ect)
Well I might be inclined to help on something like this, but I do have limited time. I can, however, conceive of a starting point on how to actually build this:
You're going to need a Database driven server-side development framework. My personal favorite is Ruby on Rails, but there are others. Google around. I really wouldn't recommend anything like Wordpress or Drupal, though you could conceivably hack those to make it work. (From here on out I'm going to detail how I would build this if working in Ruby on Rails, since that's what I'm used to.)
You would need a couple models. The obvious one would be something like an "Answer" model, and then you'd need a "Tag" model and a "Taxonomy" model. The "Answer" table would hold entries for the tried and true answers to the most common arguments from theists that we constantly regurgitate here on r/atheism. The "Tag" table would hold entries for common arguments for theism: irreducible complexity, morality, big bang, etc. The "Taxonomy" table would be a relational table that would link the two together.
After this point the form would work much like a search engine, digging though whatever the theist has input and finding the entry with the most taxonomical matches and post that.
To get some open source support, you'd probably want to get the codebase on something like Github.
To host something like a Rails project, you'd probably want to use something like EngineYard or Heroku.
That's probably how I would go about doing it, based on the general premise you've provided.
a guy from engineyard came in to talk to our major and said something pretty notable: your resume should tell a story. When anyone looks at it, they should be both impressed by the sound of what you did and also want to know more about it because what you've done before getting in front of them or being on the phone with them should be intriguing. Im sure i can write hello world in 100 different languages, but that means little if i can't properly tell why i did it and what resources i used to do it.
On top of agreeing with everything that was suggested, and drawing from an operations perspective, having the ability to spin up/down workers is highly desirable, being either for load or for debugging specific cases. Having all of them on a single file will mean that having to restart/reload all jobs when something needs change.
Disclaimer: I work for EngineYard the company that offers PaaS for Ruby on Rails
On top of agreeing with everything that was suggested, from a operational perspective, having the ability to spin up/down workers is highly desirable, being either for load or for debugging specific cases. Having all of them on a single file will mean that having to restart/reload all jobs when something needs change.
The link to tuning ruby 1.9.2 on engine yard's blog explains how to do it. You basically just set environment variables.
> RVM's command line help text is (a) bloated with useless verbiage that makes it scroll off any reasonably sized terminal
Addressed in a release yesterday: http://www.engineyard.com/blog/2012/rvm-stable-and-more/
> Significant changes to the output formatting of RVM should be noted—especially the installation and get / notes actions. RVM now displays less information and more readable output when it is installed and updated.
and > wrong
I'm sure they'd love a bug report.