Archive | OpenSource

Open Source means that users have the freedom to see how software works, adapt it for the own needs, fix bugs and limitations and contribute back to the community.

Notes from NH Ruby presentation, 30-April-2009

Fourteen attendees made it to the NH Ruby / Rails group meeting on Thursday, April 30th. We met on the 5th Thursday of the month, unlike our regular third Thursday (note that the next meeting is on May 21st, our regular night) at RMC Research in Portsmouth, thanks to host Tim Golden.

We did the usual round of introductions. NH Ruby attracts a great mix of people: beginners, experts, professionals, hobbyists, computer people, engineers. We had two presentations — Russ Jones on state machines, and Nick Quaranto on Git — as well as pizza provided by organizer Nick Plante and announcements and discussions from all.

Russ Jones is an independent contractor (as “codeofficer“) and has been working in Rails for some time. His presentation was on state machines. Russ has presented before, speaking on Design Patterns in Portland for the Maine Ruby User Group. Russ admits he was a more of a skript kiddie in PHP, getting code to work, but is taking a more serious engineering angle to his work on Ruby. See Russ’s slides here. We reviewed the definition of state machine from wikipedia, formal and correct, but Russ prefers a simpler one: a machine serves as a container for states, and supports the events and transitions between states. Typically implemented as the supporting structure for a single attribute of an object, ex: states could be “draft,” “reviewed,” “approved,” published,” “destroyed.” Attributes are most often a string. Events are often exposed as methods and have “guards” that could be used to validate and/or nullify an event, log it, or trigger afterwards. Two most common implementations are State Machine and Acts As State Machine — the first is a Ruby plugin, the second originally Rails code, migrated into a gem. Russ showed us an example code of a class “Light” that has a state machine to store “intensity” and an event “switch.” Showed another example from the State Machine docs of an auto transmission.

Russ switched to Safari and TextMate at this point, and showed us a hand-coded CMS used for publishing items to the web. The Admin module has the ability to change the state (submitted, reviewed, approved, published, rejected, spam) of submitted articles. Digging into the code, he shows us he was using two Listable and Statusable mixins as separate modules as his primary posting entities – Jobs, Events, Classifieds, etc. — share these behaviors, but not all their attributes. State Machine also includes a link into graphviz that generates diagrams of state transitions, great for documentation. His final example was a command-line driven simulation of the states of his motorcyle, from off to idle to 1st, 2nd, 3rd, crash and repair states! An excellent presentation with clear examples!

Nick Quaranto is in a 5-year Software Engineering program at RIT and is interning this semester at Boston-based Thoughtbot. He blogs at http://litanyagainstfear.com and can be found on twitter and github as qrush. Nick’s slides can be viewed and download at drop.io/gitstarted. While Nick’s presentation was all-slides, it wasn’t fluff: he packed a lot of heavy concepts and pushed through a lot of material pretty quickly and clearly. I think Nick made a fair assumption that most of the people in the room should have the basic concepts of source code control down, and dove right into the material. So, we got a brief introduction to the basics followed by some intensive work on forking, branches and rebasing. I found this to be a very useful presentation and took lots of great notes for future reference. Also, note there is a “Learn More” slide near the end of Nick’s presentation with a couple of very useful links.

Thanks to Russ and Nick for great presentations, to (the other) Nick for organizing and publicizing the meeting, to Tim and RMC Research for hosting and to all for attending and participating. Next meeting is scheduled for May 21st, same location, topic TBA. Hope to see you there!

Notes from DLSLUG, 2-April-2009: Nifties!

“Nifties!” are the name for the Dartmouth-Lake Sunapee Linux User Group meeting nights when a featured speaker can’t be found: the Users of the Group make short presentations to each other, hopefully eliciting the “Nifty!” response.

I spoke on my work with Nick Plante and Brian Turnbull starting a business to host a coworking site in Portsmouth, NH with several of the folks there before the meeting started. We had some insightful discussions on the terminology of commercial space leasing, and the intricacies and politics of finding the right spot to start a business.

Rich Brown of Dartware talked about Dojo, the javascript library, and a book he borrowed from the DLSLUG library. (see below for more)

Lloyd Kvam presented his book report on the Google Apps books. Google Apps allows a small business or group to buy a domain, register it with Google Apps. We shared experiences of setting up domains in Google Apps.

Then we realized the meeting was actually next door in L02 rather than L01, not the first time we’ve gotten the wrong room, so we moved over and caught the end of a presentation. Then Bill McGonigle showed how ejabberd was set up with Red Hat – family user accounts (Pluggable Authentication Module – PAM) to which he contributed some code.

Richard Brittain (http://www.dartmouth.edu/~richard) showed a ksh script to kill a subprocess after a specified timout and another script that would check a path (checkpath.ksh) and remove all the cruft that builds up as software is added and removed, machines appear and disappear, etc.

Rich Brown of Dartware presented his Dojo report again. Rich needed a simple web page that would let his clients enter in several key pieces of information in a form and from that data generate a configuration file in a specific format. Eventually, he realized a prebuilt library of JavaScript could do a better job, he worked with Dojo and realized he needed a reference. He borrowed the Dojo book from the DLSLUG library. While there were a few frustrations, overall he was pleased with the content of the book, it’s organization, clean examples and good indexing. The book didn’t have a good description of how the CDN supplied JS libraries can be downloaded over the web quicker and in the correct forms and versions; he ran into a race condition that took a while to debug. The Dojo book covers 1.1 while he was working with 1.2, may even be up to 1.3 by now, always a problem with letting the ink dry.

Parker (I didn’t catch his last name) posted a Madebyparker.com blog entry that was spurred on by trying to make a copy of document, but the machine was eating dollars, so scanned to his email address and sent it to himself: nine pdfs in nine pages. The Dartmouth facilities wisely try to minimize the waste of paper with something called “GreenPrint” but the implementation leaves something to be desired, especially for folks running Linux. He searched around and found a command line to concatenate the documents together into one PDF for faster printing and management.

Ten folks made it to the meeting, and I have no doubt everyone learned something; a great result!

Notes from NH Ruby/Rails Group, 19-February-2009: Josh Nichols, Jeweler, Brian Turnbull, Rails 2.3

The New Hampshire Ruby / Rails group met as usual at the RMC Research offices in Portsmouth. Thirteen people attended the meeting, a suspicious number of them from Maine. We started, as we often do, with a round of introductions.

Josh Nichols presented RubyGems and You. A former Java developer, started working with Ruby about two years ago, got a “real” Ruby job about 6 months ago, laid off 2 months ago, currently “employment independent.” Josh presented an excellent overview of how gems work, how they fit into the logic of Rails apps, how they are distinguished from plugins, and how gems can be created. He went on to talk about the two primary repositories, RubyForge and GitHub, and talked about the benifits and liabilities of each. This was all pretty much background for his presentation of Jeweler, a set of scripts that can generate the framework needed to build a gem, with support for pushing it directly up onto GitHub, automating the bumping of version numbers (patch, minor and major versions). Josh made a very clear presentation of the skeletal files that were created and touched on issues with RSpec testing, rake scripts, how to tie in library paths, vendor-izing your gems. Whew! A great amount of material covered quickly and well. Thanks, Josh!

Brian Turnbull did a presentation on the new features of Rails 2.3: Engines, nested transactions, nested forms, nested attributes, dynamic and default scope, other changes (multiple conditions for callbacks, HTTP digest authentication, lazy loaded sessions, localized views, and more!)

Brian then did a short presentation on Rails Metal. Metal runs on top of Rack, and is a tool you turn to when the full Rails stack is too complex or too slow. There was some interesting discussion on how Metal can fit into the calling stack, short-circuiting calls that didn’t need the full Rails process.

Demo version: http://github.com/bturnbull/bturnbull-metal-demo

You can view their slides via SlideShare and also view a WebEx video of the event (see the post’s comments) at http://nhruby.org/2009/2/20/ruby-gems-jeweler-and-a-rails-2-3-preview

Thanks to Josh for the trip up from Boston and the great presentation. Thanks to Brian for two cool presentations. Thanks to Tim Golden and our hosts at RMC Research for the great facilities and for broadcasting the presentation via WebEx this month. Thanks to Nick for herding the cats and ordering the pizza and making the announcements and giving away a couple of cool O’Reilly books. Thanks to all for attending and participating!

Next month: Ted Roche presents an introduction to Cascading Style Sheets, Nick Plante presents Sinatra. Hope to see you there!

Notes from CentraLUG, 2-Feb-2009: Open Source Business Models

Fourteen people attended the February meeting of the Central New Hampshire Linux User Group, a chapter of the Greater New Hampshire Linux User Group. We held our meeting at the usual place and time: the first Monday of the month at the New Hampshire Technical Institute Library, Room 146. Formal meeting starts at 7 PM. Gathering and networking often starts a half-hour earlier.

A few of us met at Panera Bread in Concord before the meeting for dinner and geek talk. We’ll try to make this a regular thing, if people want to.

Before the main meeting, maddog showed off a video he had created, inspired by some recent demonstrations of Open Source software he had seen. Using nothing buy Open Source software, including Inkscape and Kino. maddog emphasized that he’s not an experienced cinematographer, nor had he much experience with the other packages, but that making the video was simple and straight-forward. And the results quite amusing. Look forward to a future post with a link to the video!

We were fortunate to have a variety of attendees to discuss the topic of “Open Source Business Models.” After a brief introduction of what the LUG was about and where to learn more, I opened the floor to the attendees for discussions, and discuss they did!

We talked about the Brazilian music scene, Microsoft EULAs, the difference between Free Software and Open Source software, some great Open Source success stories, like the Project.Net software. There were questions on the fine points of licensing, comments on the openness of the Java Development Kit and runtimes, and much good discussion.

At the end of the evening, two lucky attendees got to pick from the assortment of books we’d been provided by generous publishers. Using the formula of:

(14*rand()).to_int

in interactive ruby and counting off around the room (I started with zero and we went clockwise around the room, a surprisingly difficult process with cats). Mark and Bill each won a book, congratulations! The next CentraLUG meeting will be the 2nd of March. Stay tuned for an announcement of details. Thanks all for attending and vigorously participating. Thanks to Bill for bringing the projector, though we didn’t need it.

Notes from NH Ruby Group, 15-Jan-2009: Jonathan Linowes

Jonathan Linowes was kind enough to drive from “the other side of the Notch” all the way down to the seacoast to present to the New Hampshire Ruby Group on the 15th of January (note that the NH Ruby group has moved their regularly scheduled meetings to the third Thursday of the month). Fourteen members attended the meeting, which started with a round of introductions. Pizza, soda and T-shirts were provided courtesy of EngineYard — thanks!

A typical scene at a Linux user group meeting for the first ten minutes of a meeting to be consumed with the speaker struggling to get his X windows display to sync up with the projector. I’m beginning to suspect that the Ruby group equivalent is for the speaker to discover he’s packed the wrong DVI-mini-DVI-HDMI-Video-VGA adapter and no one else has the right video adaptor for his MacBook despite a half-dozen machines present. I wonder if Apple made a mistake by changing this adaptor in every model.
ReviewRamp is Jonathan’s project – a SaaS web site for a group to bring in documents, route them through their own defined process, and approve/disapprove/select documents. Jonathan offered examples such as business plan reviews, marketing plans and job applications. Designed to look as much like a desktop application as possible, ReviewRamp has a simple GUI, with templates and wizards to make it a couple of clicks to process. Under the hood, Jonathan talked about the architecture, which includes RESTful protocols, and a design intended to scale to thousands of projects, hundreds of submissions and a handful of reviewers per project. Unlike many JavaScript-only sites, RevewRamp works well with JavaScript disabled; sweetened with JavaScript enabled. ReviewRamp is publicly in beta. Jonathan presented some slides of the models: reviewers, projects, pages, subpages, fieldsets. This last was a segue into the 3rd presentation: fields are generated via metadata for each project, but the database tables don’t change for each project, so each project has virtual tables vis Jonathan’s DynamicTable design.

Next, Jonathan had a presentation on “Cucumber: How I Slice It” Jonathan had worked PHP and other languages before, was very attracted by Ruby as a new language and the philosophy of testing, testing and more testing. Unit-testing, test-driven-design, behaviour-driven-design. Jonathan also pointed us to Brandon Keepers presentation as an excellent starting point.

Jonathan showed us some of his Cucumber scripts, which include a lot of pretty cool extensions to the base, like {show me} to actually end a test by launching a browser so he could visually verify a result. It was apparent that Jonathan really took to the testing regime, adding extensions like “He” or “She” instead of always including “The current logged in user” or “the current project”

Should you use RSpec or Cucumber? Both, according to Jonathan: each has strengths and weaknesses. RSpec is more tuned to unit-test individual functions where Cucumber is more tuned to describing behavior and outcomes.
Check out

cap deploy:features

to run Cucumber on the deployed app (typically, you’d do this on a staging server, not a production server)
Shows some example Cucumber scripts. They describe in English the point of the test, and use keywords (“GIVEN” “WHEN” “{actorname}”), an action and an expected result. This is actually parsable Ruby code that defines fixtures and features and processes defined within the story runner. It’s not just a requirement, it’s actually the test as well!

Finally, running out of time, Jonathan jumped into his DynamicRecord presentation, where he had developed a method that was ActiveRecord compatible so that it could be integrated in the rest of a standard rails app, but actually queried against virtual tables that were created on the fly rather than actual tables on disk. Interesting stuff, and I’m looking forward to seeing this code pushed into OpenSource, Jonathan’s eventual goal.

Thanks to Jonathan for the great presentations, to Nick for running the presentation, to Tim for hosting the facilities and attempting to webcast the presentation, to Engine Yard for the pizza and T-shirts, and to all the members who made it to the meeting!

You can download the 3 presentations from the NHRuby site here: ReviewRamp, Cucumber, DynamicRecord, or view them online (Flash/JavaScript required) here.

Notes from October Python SIG: Unit testing and Sphinx

An even dozen (or maybe an odd dozen…) folks attended the October Python Special Interest Group meeting, held as usual on the fourth Thursday of the month at the Amoskeag Business Incubator.

It was a busy and exciting meeting. Vigorous conversations filled the first half hour, as we welcomed a few new members, a few members not seen in a long time, caught up on news and what’s new in the Python world, and made a round of introductions.

Kent S. Johnson presented a new episode of Kent’s Korner, talking about the unit testing facilities available in Python. Python has a couple of options, including a xUnit-clone version and a more Python system in nose. We got into a great discussion on the philosophy of unit-tests, the test-first-fail-code-test cycle, test-driven development, and so forth. It was quite enlightening.

Arc Riley made the second presentation on the Sphinx documentation generator for Python. Arc talked about the history of Python documentation, with docstrings and EPyDoc and ReStructuredText (not to be confused with ReST, Representational State Transfer!). Sphinx seems to be a popular project name these days, as I heard about a different project by the same codename both at the RubySIG and maintainer Patrick Galbraith’s presentation at MonadLUG).

Arc provided us with the slides to his presentation, available on the gnhlug site here.

Links and notes from this meeting and past meetings can be found at Shawn O’Shea’s blog at http://eth0.net/ — thanks, Shawn!

NOTE that the next meeting of PySIG will take place on Wednesday December 17th at the Amoskeag Business Incubator across the hall from our usual meeting room. Hope to see you there!

Thanks to Arc and Kent for great presentations, to Bill and Alex for organizing and running the meetings, to Janet for the incredible cookies, to the Amoskeag Business Incubator for the great facilities, and to all who attended and participated.

Voices That Matter, Professional Ruby Conference 08

Warning: Draft nonsense, needs spell-check, grammar and thought completion.

Voices That Matter, Professional Ruby Conference 08, Sheraton Boston, November 17-20, 2008. Beautiful facilities, good good. This is a brand-new conference, version 1.0, and Obie Fernandez was the lead at designing the technical content and format, rather radical schedule: 3-30 minute sessions with 10 minute breaks, long break, 2-30 minute sessions, lunch, 5-30 minute sessions. This means the sessions are tight: experts brain-dumping for 30 minutes

Pre-Conference Sessions

AM, Pat Maddox, RSpec and Behavior-Driven Development: excellent overview of BDD, leaped into RSpec with an expectation that users were familiar with Ruby and TDD, which might not be appropriate for a crowd at a pre-conference. Excellent use of a pre-cooked set of examples (coding a blackjack app) with the tests already written so devs only need to fill in code one test at a time to satisfy the requirements, “Red, Green, Refactor” Worthwhile session. Around two dozen attendees.

PM, Hal Fulton, Ruby Basics. Co-Author of “The Ruby Way” an excellent introduction to the language for folks not familiar with it. A few less attendees, as there was a parallel session by Russ Olsen, “Fluent in Ruby” Hal knows his stuff, was comfortable and receptive to questions. We did some ad-hoc coding. He had an excellent, and again, simple, example that let us concentrate on the code and not get stuck in the business problem: reading a table of text into a set of records, manipulating and sorting them. An incremental set of examples introduced a couple new challenges to each example, and then a couple of new ways to use Ruby, new commands or techniques, to solve those problems. Very clear. A very helpful session for getting comfortable with Ruby.

Day One: attendees 80
Keynote: Obie Fernandez: (http://blog.obiefernandez.com/) war stories of success at Hash Rocket. Pair programming with pairs of keyboards and mice. 14 people total. Keep small (14, boutique). No interviews (week work on site), Guest Star program. References: Agile Manifesto, 37 Signal’s “Get Real,” Rails Rumble 2007. Small Releases often. “Working software over comprehensive documentation ” from Agile Manifesto. “Visual Design First:” vs. Jakob Neilson recent blog complaining that agile was a threat to usability. Obie’s Orject mgmt: concepts and requirements, initial design, Phase one implementation (2-3 weeks), user acceptance, interation, release.

Stoires are Units of work, “storycarding” (SCRUM) estimate level of effort in points system, 1 -4 points (max a day or two), 15- 25 points per week for a team of 2-4 developers, summarize stories,

Master Services Agreement: general contract: billings, liabilities, copyright, trademarks ownership – this has to do with what?

Pivotal Tracker: free. tracks backlog and current iteration.

Standup meetings. for smaller projects. “Pivotal” standup for larger groups: what did you do yesterday? What did you do today? What…

Ben Koski, NYT Riding the Rails case study… bkoski@nytimes.com
Election feeds. AP supplied 153 text files, colon-separated, clomposite-key difficult to parse, used LOAD DATA INFILE, INSERT – REPLACE, survived onslaught by page aching, activeController page integration to generate all possible pages, they “baked it out” and lobbed files via ftp to the actual NYT web servers.

End game analysis: strengths: rapid start, tweak-friendly, activeRecord SQL customizations, web code works on command line, self-contained deploys. Weaknesses: rails vs. nytimes,com infrastructure (SUN), Solution: host on EC2! (eight instances!) , deployments, admin interfaces (vs. Django!),

Thomas Enebo, Sun Microsystems
You don’t have to be a Java programmer to use JRuby: It’s just Ruby! (maybe a tm!). Very, very compatible with 1.8.6, using Rubinius, continueing integration. Fixed 1500+ bugs last year. JRuby 1.1.5 released two weeks ago. improved caching, better performance. Downsides: native-threaded, arguably not a bug but a feature. No native ‘C’ extensions, started with porting popular libraries ported to native Java. No continuations (does anyone use them?) Foreign Function Inteface (FFI) portable across implementations, unlike extensions, most extensions just wrap a library. Started in Rubinius, then joint API discussions, supported in 1.1.4. Example. JRuby 1.8 bigger libraries done. M17N – multinationalizations. Why Java???!!!?!?! Tuned over a decade, generational, super-optimization, native on every platform. native threads, tools, libraries. java is Everwhere, Less political resistance (“JRuby is just another Jar file”), wider database suspport, Java-style deployment, bundle into WAR file, or Glassfish Gem – entire app server in a 4 Mb gem, Ruby-style deployment to GF Application server: gem install glassfish, glassfish . {Lame text” for an example: thread-safe JRuby on Glassfish v2

Mongrel, Matt Pelletier Partner/CTO EastMedia, web-mobile development shop, NYC, funded Mongrel dev for OpenID. Wrote Mongrel book. Zed Shaw, SCGI railsrunner, limited support, webrick slow. Translation (cgi) slow. Full HTTP server, play well with others. Design Goals: Security: Most security holes are due to human oversight, kludgy hand-written parses, gaping holes left in conditionals, HTTP spec does not limit sizes. Resources: site, mailing list, book. Using Mongrel: gem install. Use monit to monitor processes, restart/start new mongresls. How many? Serve static content from web server not mongrel.

Coby Randquist, The many facets of Ruby at YellowPages.com, now “AT&T Interactive”
Partner in Confreaks.com, founding member of LA Rubyl
Lots of small teams. 3-5 people plus functional manager for “socialization” can be a challenge to get things through the pipleline. Teams: HTML/CSS, development, sys admin, sys architecture, UI – user interaction,

Architecture 8415 LOC, 20 servers per data senter, 16 mongresl per server. almost no active record, All static content via CDN. Service tier: ~10kLOC, 8 servers, 30 mongresl/server, memcached running on each server, ruby wrapper to their FAST search engine, Oracle client for communication with Oracle clusters — user registration and personalization. Future changes: from rails to Merb. New code they are open sourcing:

“waves” – resource-oriented open source framework,
funtors – patterned-based dispatch for Ruby,
kablame – easily summarize who has done how much work on your code base,
crufty – find unused code,
hoshi – a library for creating real first-class htmlxml views, a DSL for creating HTML rather than Yet Another Template language www.debu.gs , live-console: a truby gem for providing irb over channels other than stdio
Waves uses bacon as its testing framework
They (R&D) are working on a ton of stuff: bacon for testing, rack handler for jetty, developing branded iPhone apps:
Speak 4 It – directory
Need 2 Pee – geo-location when you gotta go. No, really.
For sale at the iPhone App store. Hope you can pay in a hurry.

Lunch – Consulting table

Nick Plante, Demystifying Ruby Plugins, http://blog.zerosum.org/2008/11/18/demystifying-rails-plugin-development
Bravo to Nick for posting his slides on his website just before presenting! Nick squeezed a lot of information into the very small half-hour he was given: why write a plugin, what’s involved, how to do it, a case study, tools to use to do it, how to publish it, how to package a plugin as a gem (I didn’t know you could do that!) and where to find the tools to do it! Whew!

Ezra Zygmuntowicz, Four years of Ruby Development
Ezra runs the venerable and respected EngineYard shop and talked about the ten configurations of Rails-serving servers he’s wrestled with over the past four years with the pros and cons of each one. The recommendation du jour, with the caveat that the race is still on, is Mongrel for ruby dynamic content, nGinX for static content, but YMMV. The Ezra talked about using an AMQP service using RabbitMQ to create Nanites, a self-organizing set of Ruby applets. Rack is running over Nanite. Ezra announced “EYAAS” – Engine Yard As A Service, “Clouds are too low level for average humans” – use a dashboard to describe your application, what engines, plugins, gems and underlying OS services it needs. The EYAAS stores a JSON config file that can be used to fill in their set of recipes they use to generate S3 and AWS resources. Now, you no longer log in and make one-time changes to a server that get lost if the server is lost, but rather re-configure the recipe to upgrade components, etc. Very, very cool way to automate deployment.

Matt Jankowski , thoughtbot, Nature Network “Agile in the Enterprise”
Boston-based, 10 devs, coupla business people, distributed: NYC, Philly, etc.
Nature Network, publishers of the famous “Nature” journal
Nature Network, social networking for scientists, somewhat more formal than Facebook
Team: 28 people who worked for at least a month over two years
What is Enterprise? Dictionary Definition. Also, a bunch of meetings, weird spec documents, continuous re-organizations. Bureaucracy and internal politics, people who “just” want a job. Compared the impedence mismatch between the enterprise society and the RAD, cool, XP, scrumming agile Rubyists. Funny. Images hysterical.

Shane Harvie, Refactoring Domains in Ruby and Rails
Inheritance v. Delegation; Is Inheritance an “Is-a” relation
Ruby doesn’t allow you to “unmix” an included module, so if you started with delegration by mixing in a module, you’re stuck if then try to subclass the original object and don’t want the mixed in behavior.
Slide fonts are too small. Bummer. On the bright side, it lets me focus on what the speaker is saying and not get lost in the weeds o fthe code…

Notes from Python SIG, 23-Oct-2008: unittest and Sphinx

An even dozen (or maybe an odd dozen…) folks attended the October Python Special Interest Group meeting, held as usual on the fourth Thursday of the month at the Amoskeag Business Incubator.

It was a busy and exciting meeting. Vigorous conversations filled the first half hour, as we welcomed a few new members, a few members not seen in a long time, caught up on news and what’s new in the Python world, and made a round of introductions.

Kent S. Johnson presented a new episode of Kent’s Korner, talking about the unit testing facilities available in Python. Python has a couple of options, including a xUnit-clone version and a more Python system in nose. We got into a great discussion on the philosophy of unit-tests, the test-first-fail-code-test cycle, test-driven development, and so forth. It was quite enlightening.

Arc Riley made the second presentation on the Sphinx documentation generator for Python. Arc talked about the history of Python documentation, with docstrings and EPyDoc and ReStructuredText (not to be confused with ReST, Representational State Transfer!). Sphinx seems to be a popular project name these days, as I heard about a different project by the same codename both at the RubySIG and maintainer Patrick Galbraith’s presentation at MonadLUG).

Arc provided us with the slides to his presentation, available on the gnhlug site here: [TBD real soon now, once we get the site restarted]

Links and notes from this meeting and past meetings can be found at Shawn O’Shea’s blog at http://eth0.net/ — thanks, Shawn!

Thanks to Arc and Kent for great presentations, to Bill and Alex for organizing and running the meetings, to Janet for the incredible cookies, to the Amoskeag Business Incubator for the great facilities, and to all who attended and participated.

Notes from MonadLUG, 9-Oct-2008: Patrick Galbraith, MySQL Replication

Twelve attendees made it to the monthly meeting of the Monadnock Region Linux User Group, MonadLUG, at the SAU #1 offices in Peterborough. Our host, Ken, did a great job of finding us an alternate conference room within the building when another group bumped us from our usual spot.

Charlie Farinella called the meeting to order at 7 PM and we had a round of announcements and introductions. There were several new members as well as a few who hadn’t been seen in a while. Charlie announce that Philip Sbrogna had stepped forward to help Charlie run the meetings. Welcome aboard, Philip, and good wishes!

Our main presentation was from Patrick Galbraith. Patrick maintains a web site at http://patg.net , blogs at http://capttofu.livejournal.com/, is currently employed as a Principal Engineer at Lycos, Inc., and has some great stories to tell from past employment with Grazr, MySQL, VA/Linux, OSDN, Slashdot and others. He’s involved with a number of Open Source projects, including as maintainer of DBD::mysqld and libmemcached and others.

Patrick started with slides from a presentation he recently gave at the O’Reilly MySQL 2008 Conference, to establish some basic definitions and terms. He discussed the various models of replication and the pros and cons of each, comparing replication to clustering. He highlighted the files and scripts which needed to be invoked for replication, and the means of running multiple instances of MySQL on a single machine.

Patrick then switched to a terminal window and we began reviewing the configurations of the MySQL instances on his machine. Using a sample database, he established a master-master-slave configuration. Due to the fact that his machine is in constant use as part of his job (and a book he is writing!), the databases were in an inconsistent state. This, imo, is the best part of the meeting, seeing a practitioner use his tools to troubleshoot a system, diagnose the state, and use sometimes obscure commands to return it to a consistent state. Patrick ran a non-stop commentary while debugging his three instances and pointing out metrics of interest and the significance of various debugging commands. When completed, he inserted records into each master and showed how they appeared correctly in each slave and showed off the binary logs used to make the transactions. Excellent illustrations of replication!

There were lots of related discussions and side conversations, too. An intriguing thread involved “blackhole” data storage engines, where the data actually never is written to disk, but the engine exists purely for posting log entries, which can then be replicated. Wow.

Patrick also took a few minutes to tell us about Sphinx, an independent project thats created an extremely fast and powerful full-text search data engine that’s compatible with MySQL. Very impressive. Patrick also mentioned (and customer Philip endorsed) his wireless ISP business, but I missed the name.

Thanks to Patrick for a great presentation, to Charlie and Philip for running the meeting, to Ken and the SAU#1 for the facilities and last minute Mac video cables and to all members for attending and participating!

Notes from CentraLUG, 6-October-2008

Eight people attended our October meeting of the Central New Hampshire Linux User Group, held as usual on the first Monday of the month, at the New Hampshire Technical Institute‘s Library, Room 146, at 7 PM.

We had the usual round of announcements. I had a ‘hot off the presses’ set of Apress Fall/Winter 2008 catalogs to pass around, including the half-page feature of the GNHLUG group as the highlighted user group. I mentioned the many discounts UG members can get through the various publishers, especially Apress, O’Reilly and Pearson. As usual, I plugged the gnhlug.org web site as the place to get the event calendar, and we reviewed some of the upcoming events, like the SwaNH infoeXchange and MonadLUG’s MySQL meeting tomorrow, the NEAR-Fest the following two days, and some of the interesting upcoming meetings. Keep an eye on the calendar and subscribe to the announcement list for future meetings.

Arc Riley was the main presenter. A newcomer to New Hampshire, Arc was previously active in a FOSS group in Ithaca, NY, and is an active contributor to several Open Source projects, including PySoy (which he demoed a few months ago at PySIG). He’s also an active member of the New Hampshire Ubuntu Local Community organization (“Loco”), which is working its way to formal approval as a Loco with the Ubuntu organization. Activities such as the Software Freedom Day activism last month and presentations at the LUG count towards this recognition.

Arc had a presentation on the upcoming version of Ubuntu, 8.10 (Year.Month) due out at the end of the month, code-named Intrepid Ibex. A list of new features can be seen on the web site and Arc reviewed them briefly (slides) and then demonstrated several of them, including: Gnome 2.2.4., X.org 7.4, Guest session, Network Manager 0.7, and more.

We also got to break it a bit, perhaps, by testing to see if a USB device plugged in when the Guest user was active would be readable, and whether there would be any security implications to that. The USB subsystem seemed a bit unresponsive, and poking in the logs revealed that some of the other devices on the bus, like the webcam, weren’t natively recognized (Arc hadn’t added drivers yet) so it was possible the subsystem was unavailable. Did we mention it was a beta? Beta test reports are welcomed by the Ubuntu team, as they hope to release a final product at the end of the month.

We got to talk a bit about Ubuntu and the community behind it, the philosophy surround the distribution, and the activities of the Loco, including pictures from SFD 2008, which included a Wookie, balloons, a penguin, Ben Scott and lots of geeks promoting Linux. Ben was heckled in absentia at the CentraLUG meeting. The next meeting of CentraLUG will be on Monday, November 3rd, the day before what may be the most important election of our time (vote early, vote often!) with a topic TBD, but at the same place and time. Stay tuned for announcements and updates! Thanks to Arc for presenting, to Bill for the projector, to Nikki for the transportation, to the New Hampshire Technical Institute Library for the facilities and to all for attending and participating!

Powered by WordPress. Designed by Woo Themes

This work by Ted Roche is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 United States.