Archive | Web Development

Technologies, techniques and neat stuff on the www

Notes from PySIG, 28-May-2009

It was a dark and stormy night. Nonetheless, six members made it to the May meeting of the Python Special Interest Group, held as usual on the fourth Thursday of the month at the Amoskeag Business Incubator in Manchester.

We had an Open Mike Night format, a round-table discussion where everyone shared what they were working on.

I plugged upcoming meetings, available as always at http://gnhlug.org — MonadLUG in particular, is to be praised for posting 4 months worth of meetings in advance.

Mark has a client who’s weaning off a proprietary OS and looking for a replacement document management system / word processing system, and is considering LyX, which is a  front end to LaTeX and has numerous utility scripts written in Python. Mark asked for suggestions for additional resources and the two Bills were able to come up with some ideas.

Arc talked about some wireless technologies he’s researching (neat stuff!). Arc also reported the Gaming SIG is coming along nicely: 5 people at the first meeting, 10 at the second. Details at gnhlug.org . Hoping to schedule a FPS (First Person Shooter) night soon. Coming up next Friday June 5th, the SIG will take a look at the awesome audio utility, Audacity, as it relates to gaming, and then engage in the Battle for Wesnoth.  Gaming SIG meets at the Brady Sullivan building in the DynInc offices on the fifth floor – see http://wiki.gnhlug.org/twiki2/bin/view/Www/GamingSIG.

Shawn O’Shea completed a course in Network Design and Planning at UMass Lowell (and got an ‘A’, congrats!) and showed us his lab work, written in Python! He very bravely showed us his code and we talked about some of his algorithms and looked at a couple of the modules he used, including optparse, netaddr and cmd.

Bill Freeman reported he’d been working in Plone and Python 2.4 and missed some of the features available in later versions. He created some code to address the worst of the deficiencies, and hopes to be able to release it freely soon. Stay tuned.

Thanks to Bill for organizing the meeting, to the Amoskeag Business Incubator for the fine facilities, to Arc for bailing us out with an extension cord, to Janet for the awesome (!) cookies, and to all for attending and participating!

CentraLUG Notes, 4-May-2009, Cole Tuininga on MySQL Optimization

Sixteen people attended the May meeting of the Central NH Linux User Group. Thanks to Larry Cook and Sybase for the use of their meeting room and projector!

Announcements:

  • David Marston, SwaNH Dinner, May 14th
  • Maddog: working with Koolu on Freerunner-based phone, running “Cupcake,” the version 1.5 of the Google Android phone OS. See http://www.engadgetmobile.com/tag/koolu/ and
  • Me: watch gnhlug.org for future meeting announcements

Cole works for Dyn Inc, the parent company to DynDNS and the other Dynamic companies. Cole Tuininga presented tips and tricks on optimizing the performance of MySQL in high-traffic, large-dataset situations. He talked about the selection process Dyn, Inc went through to select databases and the large scale processes they have automated at Dyn. You can find the slides on the GNHLUG site at http://wiki.gnhlug.org/twiki2/bin/view/Www/MySQLOptimization.

By the way, seven of us made it to Panera Bread before the meeting for a breaking of the bread. I hope to make this a regular extension to the regular meetings.

Thanks to Larry Cook and Sybase for providing the facilities, to Cole for the presentation, to all for participating!

June meeting *Might* be next week, or we may have to reschedule — securing a location has proven to be a problem. Stay tuned.

Notes from MonadLUG, 14-May-2009, Tim Wessels and Kablink

Five people attended the May meeting of the Monadnock Linux User Group. Thanks to Charlie for scrambling at the last minute to secure the Peterborough Town Library for the meeting, as our regular venue was unavailable. Charlie made the iniital announcements – Ed Lawson presents Scribus in June, Charlie will show OpenBSD in July, no August meeting, and Patrick Galbraith returns for another (not-to-be-missed) meeting on MySQL in September.

Tim Wessels did the main presentation of the evening. Kablink is the Open Source version of Novell’s Teaming product, bought from SiteScape, Inc., a company that started in Clock Tower Place in Maynard, MA. The Open Source version had been known as ICECore previously. Source code can be downloaded from http://www.kablink.org and sourceforge. Tim discussed some of the history of the project, where and how it is being used, possible ways to configure it for workgroup and corporate enterprise use. and reviewed some of the challenges and tricks to installation and configuration. If you’re looking for an Open Source competitor to Microsoft’s Sharepoint, with the ability to create portals, finely-control roles and access, and scale to thousands of documents, Kablink is worth investigating.

Thanks to Tim for the presentation, Charlie for running the meeting, and all for attending!

Notes from NH Ruby, 21-May-2009: Brian Turnbull on Monit, Tim, Nick and the other Nick Lightning Talks

The New Hampshire Ruby / Rails Group met on the 3rd Thursday of the month at RMC Research. (Third-Thursday is the new standard, but June’s meeting is likely to be on a different night; see below.) Ten people attended. Nick Plante started off the meeting, noting that David Berube had to back out due to emergency, but we’d fill in with ad-hoc Lightning talks.

Brian Turnbull talked about Monit [link updated – Ed.] (see his slides here), a small-memory and resource-consuming application for monitoring key performance metrics, and launch scripts and/or alerts when alarm levels are met. Brian talked about early days of managing Mongrel and the necessity to restart the services on failure. While that’s mostly been resolved with later versions (and new options like Passenger), this is still a handy utility for keeping services going, especially if you’re troubleshooting some balky applications. Brian included some clear examples in his slides. We talked about how this wasn’t a solution for remote monitoring (your network could be down, even if you’ve restarted Apache), there were solutions, like running Monit on a couple of machines “watching the watchers” and other solutions, but that Monit was a simple and relatively lightweight solution. Other tools, such as Nagios, are available for more complex problems and the need for customization. Excellent presentation!

Tim Golden, our host, announced he had finally gotten to “Hello World” (a long running joke within the group) and described some of the challenges of setting up a Ruby development environment in Windows. He used the Ruby one-click-installer, and installed many gems. He’s trying out NetBeans as his IDE, and sticking with SQLite as the development database.

Nick Quaranto spoke on his work with gemcutter, developing a new scheme for a gem repository with a simple and scriptable API and a more scaleable and responsive repository architecture. This could grow to be a worthy replacement to RubyForge.

Nick Plante showed off the cool stuff he’s developed at RDoc.info – a web site that displays Ruby documentation generated with Yard . Noting that GitHub hosts your web pages and repositories if you name your repo as yourname.github.com and provide an index.html, he and fellow troublemaker Jeff Rafter came up with the righteous hack of creating the user and repo of http://docs.github.com and hosting the documentation for the thousands of projects hosted at github, fashioning their Yard template to closely duplicate the GitHub interface. For all practical purposes, they added a new feature to GitHub. The GitHub owners were… disturbed. But we hope they’ll come around, as this is a pretty elegant solution.

Nick Quaranto took the podium again to show off the use of Metric-Fu at ThoughtBot for their public projects. Metric-Fu is a rake task that automates other metrics tools (like Flog and Flay) to generate a number of interesting statistics that will point out excessive churn or suspicious smells in a project. Nick showed off the Sinatra front end to the package. This could be another very interesting set of pages on any repository offering software, although Nick noted that it would be resource-intensive, as the test runs and coverage processing can be pretty extensive.

Nick Plante announced a possibility of getting a special speaker in June, although the meeting would need to be on an alternate night. All present agreed that shouldn’t be a problem. Stay tuned for the announcement.

An excellent meeting, well worth the cost of admission. And that’s not even counting the free pizza! Thanks to Nick Plante for organizing the meeting, to Brian, Tim and the two Nicks for their presentations, RMC Research for the great facilities, and all for attending and participating!

If it’s the third Thursday…

If it’s the third Thursday of the month, this must be Portsmouth, New Hampshire. Today’s the day for the (recently rescheduled) New Hampshire Ruby / Rails Group to meet. Tonight’s meeting will feature two presentations: David Berube (co-author, Practical Rails Plugins, former leader of GNHLUG and CentraLUG) talking about high-performance web sites using Ruby on Rails and MySQL, and also Brian Turnbull (contributor to Rails Rumble and Portsmouth Coworking founder) talking about Monit, the monitoring system. The full meeting announcement is here. Hope to see you there!

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 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 Python Special Interest Group, 17-December-2008

Six folks attended the December meeting of the Python Special Interest Group, held on the irregular third Wednesday in December to allow for the festivities next week. (We normally meet the fourth Thursday, same place, same time.)

There wasn’t a formal agenda, and discussion was first the ice storms of last week and everyone’s power status.

I talked with Bill about setting up my new Sansa player with Rockbox and using gPodder in Fedora10 to sync music. The gPodder Podcast client can sync with using the standard file-based method or by using the Media Transfer Protocol popular in many players. To run with gPodder, I needed to install libMTP and PyMTP (there’s a Python connection!) I also discovered while importing RSS feeds that there’s a bug in Fedora 10’s version of Mark Pilgrim’s awesome feedparser, fairly easy to patch, documented here. It’s an arguable bug; it may be that feedparser throws an error instead of behaving more gracefully when hander RSS that might not be fully valid, in this case apparently a bad Unicode character. Perhaps not fully following Postel’s Law, paraphrased “be conservative in what you do and liberal in what you accept.” Is ignoring malformed Unicode too liberal? A philosophical question, perhaps. I noted that the RSS feed that fails in gPodder and from the Python command line actually passes the http://feedvalidator.org tests. Hmm.

Arc had sent a link, “If Languages were Religions,” which included the suggestion, “Python would be Humanism: It’s simple, unrestrictive, and all you need to follow it is common sense. Many of the followers claim to feel relieved from all the burden imposed by other languages, and that they have rediscovered the joy of programming. There are some who say that it is a form of pseudo-code. ” Read the whole post; there are some good ones!

Bill Freeman had an idea he’d like to float for a project to avoid name contention issues, using a naming scheme similar to Java’s com.sun…. namespace for individual projects. Kent dug around in the comp.lang.python archives for some previous threads on the subject to review what had been said on the issue before.

Kent wanted to talk about Python 3.0! Shawn had sent a link to the list for Python porting resources, but wasn’t able to make the meeting. We discussed some of the issues with porting 2.x Python code to Python 3.0 and tested out the 2to3 program. Arc and Matt arrived and joined in the conversation. We first converted the canonical “hello world” program and worked up to Bill’s telephone list program, Arc suggested jinja, and an unpublished project that Kent had been working on involving recognizing human languages, each of which had gradually more and more complex issues. The 2to3 program won’t always make working code, but it does a fine first pass in making all of the well-known changes in converting a 2.x program to 3.0. In running the programs through 2to3 and examining the results, the group had a good discussion about some of the syntax and structural changes in 3.0

Thanks to Bill Sconce for organizing the meeting and bringing the milk, to Janet for the wonderful airplane cookies, to the Amoskeag Business Incubator for providing us with the great 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.