PySIG Notes, 23-Sept-2010, Bill Freeman and Django

Seven folks attended the September meeting of the Python Special Interest Group of the Greater New Hampshire Linux User Group held as usual on the 4th Thursday of the month at the Amoskeag Business Incubator in Manchester. Bill Sconce, PySIG’s organizer, supplied milk and Janet supplied (excellent!) chocolate chip cookies.

Bill Freeman was the presenter for the night, and spoke about Django. Django is a web framework written in Python. It supports the WSGI web server gateway interface specification which allows a standard way of connecting to web servers and provides facilities to “stack” additional WSGI-compliant applications to act as filters, caches, security modules, etc. between the web server and your application. Bill walked through the flow of data through the application’s architecture from http request, through parsing, views and the template language, processing in the ORM and out as the http response. There are hooks galore where you can add your own code, modifying the flow of data and responses. Django is a world-class web framework, with facilities to plug in additional “engines” — mini-applications — and add your own template tags, customize the automated generate of the data schema, and of course, write your own application logic. It’s Open Source, it’s Python, and the code is there for you to mess with. Django’s most popular add-on provdes an administrative function that provides developers (and, optionally, their customers) with simple add/edit/delete forms. Django seems to be a platform well worth considering if you’re interested in web apps in Python. Bill’s slides are available on the GNHLUG wiki.

Thanks to Bill Freeman for a great presentation, to Bill Sconce for organizing the meeting, to Janet for the awesome cookies, and to the Amoskeag Business Incubator for providing the fine facilities.

Notes from ManchLUG’s Launch Meeting

Twenty-seven people attended the first meeting of the Manchester Linux User Group, held on August 24, 2010 at Wings Your Way, Elm Street, in Manchester, NH. Congrats to organizers Kenta Koga and Chip Marshall for taking the initiative to start a group, finding a location and publicizing the meeting!

The meeting was primarily a meet-up, more focused on finding out if people would come out than running a training session. Kenta and Chip made a few announcements at the beginning of the meeting, including mentioning the GNHLUG calendar at http://gnhlug.org (on a Mac!), Leslie Poston’s efforts to bring together a lot of local tech and social media calendars on Google, activities happening at Float Left Labs and their Archimedes Space in Manchester, Jellies at Studio99 in Nashua.

Conversations were pretty local at that point, with a lot of people in a small space with good food and beers and apparently lots to say. What a joyous noise!

Thanks to Kenta and Chip for organizing the event, to Wings Your Way in Manchester for providing the space and to all who attended!

Notes from Ruby SIG, 16-Aug-2010

The New Hampshire Ruby/Rails group met as usual on the 3rd Monday of the month. We met at the New Hampshire Innovation Commercialization Center, a new space near the Pease airfield. Mark Galvin, NHICC’s Managing Director, was kind enough to offer the space for our meeting and tell us about the ICC. Eleven members attended the meeting.

As we often do, we started with a round of introductions. It’s always interesting to find out who’s there and what they’re up to. I mentioned the GNHLUG calendar and Nick plugged the upcoming Ruby Rampage. Near the end of the meeting, we plugged the NorthEast RailsCamp, coming up on it’s third meeting, this one in Stowe, VT. 5 alums from previous camps were there, and all loved it. There may still be a ticket or two left, even though the site says zero – you’d better hurry!

We were lucky enough to have two presentations tonight.

Brian Turnbull presented “Interfacing Ruby with C.” He explained he needed to do some automation with a “black box” his company was using, and their documentation consisted of a C API and a DLL. Rather than developing an entire application in C, he used Ruby to interface to the C API and then could develop an easy-to-modify Ruby app. That turned out to be a good idea, as the final product he delivered turned out to be very different from the initial request, and having the ability to rapidly re-develop in Ruby was a success. To show us how to use C to access Ruby and vice-versa, Brian used a simple example of a “leaky bucket stack,” a fixed-length stack that would lose the oldest item as the stack was pushed. It was a great example in that it had enough complex behavior to be useful, while simple enough to explain and translate into C without too much effort. First, we reviewed the pure Ruby implementation. Brian proceeded to build up the equivalent code in C, calling Ruby array functionality and data types where appropriate. He then showed how to configure the C extension from from Ruby, build, compile, debug and run from the ruby command line.

See the example code and slides (I’ll update the URL when available). Also http://github.com/bturnbull/padpaws for his more advanced C example.

Brian Cardarella, @bcardarella, http://bcardarella.com, presented his gem, client-side validation, which he developed while working on the “Raise Your Vote” site for the Democratic National Committee. The Raise Your Vote site is intended to assist in voter registration by collecting data online and generating matching PDFs of the voter application. Naturally, 50 states have fifty different forms, with different requirements. He wanted to avoid duplicating the server-side validations with hand-maintained client side code, as the regular changing of requirements and the difficulty of keeping business rules in synch across the two languages would doom the project. He wrote client-cisde_validations to use the declarative validations within the entity models to generate the equivalent Javascript code. Client-side_validations has remarkable depth and breadth, handling nearly all of the common and exceptional types of valiation (Brian notes the few difficult cases in his slides). You can find the code on GitHub (gem code, examples) and the slides here: client_side_validations.pdf

Thanks to Brian Cardarella for travelling all the way to Portsmouth and thanks to both Brians for their fine presentations. Thanks to Nick Plante and Brian Turnbull for organizing and promoting the meeting and the group. And thanks to Mark Galvin and the New Hampshire Innovation Commercialization Center for providing the fine facilities!

Notes from CentraLUG: Joseph Smith and the Coreboot project

Nine people attended the August meeting of the Central New Hampshire Linux User Group, held at the Hopkinton Town Library on August 2nd. We announce our meetings in advance on the GNHLUG-announce mailing list, a very low traffic list we encourage everyone to subscribe to. Joseph Smith presented some information on the Coreboot project, had some hardware to show off, and had a lot of insights into the workings not only of the machines but of the vendors in the space.

We had a couple of announcements, mentioning upcoming meetings on the gnhlug.org web site. We had a round of introductions. We then asked for questions, announcements, job searches or job postings, etc. One attendee had a problem with having Ubuntu insisting it was updating grub with newer kernels, but the kernels were never appearing in the menu. The group had several very good suggestions to follow up on, including the suggestion to join the -discuss mailing list for more help and support.

I mentioned that the CentraLUG is affiliated with several publishers who offer discounts on their books, and that InformIT/Pearson Education (Addison-Wesley, Cisco Press, IBM Press, Prentice-Hall, Que, Sams) sends out a newsletter and holds a monthly user group contest/raffle for good stuff on their web site.

Finally, Joseph Smith got to do his presentation. You can find his slides here. Joe is an AS400 Administrator for a local well-known retailer’s headquarters, but had always enjoyed tinkering with hardware. It was frustrating to find that set-top boxes and other devices were restricted in what they could do (or run) due to defective or proprietary locked-in BIOSes. He was delighted to find the coreboot project and has been contributing ever since. Joe attended NHTI to polish up his software skills and earn a certificate. He brought along several boxes to show us what he was working on. He talked about the sequence of events that occur within the BIOS and how coreboot can replace them. He demonstrated booting a machine with a serial console and minicom monitoring a fully-verbose debugging session. He talked about the issues with getting coreboot running on a new machine, how vendors cooperated and contributed to the project (or not!) and the problems with turning a BIOS chip into a brick and how to recover. It was a fun and interesting presentation.

Thanks to Joe for his presentation, to Bill Sconce for supplying the projector, and to the Hopkinton Town Library for use of the great facilities. Note that CentraLUG will not have a September meeting due to the Labor Day holiday (come on up and see the Hopkinton State Fair!) but plans to meet in October, November and December at the NHTI Library. Stay tuned for announcements.

Notes from New Hampshire Ruby/Rails Group, 19-July-2010: Redis, Resque, Vanity, Mogotest, Nick Plante

The July meeting of the New Hampshire Ruby/Rails group was held as usual on the third Monday of the month at RMC Research in Portsmouth. Nick Plante was the featured speaker, talking about Redis, the NOSQL database, Resque and Vanity. Brian Turnbull ran the meeting and brought pizzas — thanks, Brian and Nick!

We started off with a round of introductions and speaking a little bit about who we are, what we do, why we’re there. There’s an interesting assortment of backgrounds: a few folks with deep Ruby experience, a number of people transitioning from other languages (Java was mentioned more than once) and some web design folks looking to get a little deeper into the workings. Brian mentioned that the Ruby Rampage was coming up fast – October 16th – and that seats went quickly once registration for the event was open. Keep an eye out for future announcements.

Nick Plante talked about Redis, Resque and Vanity. You can view the slides here: http://www.scribd.com/doc/34712184/A-Quick-Introduction-to-Redis-NH-rb. Redis (http://github.com/antirez/redis) is a NOSQL (“Not Only SQL”) database that has a simpler API (put/get/list keys) than the complex SQL needed for a relational database. It is a “key-value” store that stores flat values (and/or documents, arrays, lists, etc.) with a great deal of speed, high-performance, reliability and scalability. It is ideal as the primary means of access for data on a demanding web site, acting as a cache for underlying relational data or transient data. Nick talked about how he and his partner used Redis and the Resque
Ruby library (http://github.com/defunkt/resque) to manage a job queue where the front-end servers posted jobs, many background workers processed the jobs, and the front end could display progress or completion. Nick also talked about A/B testing with Vanity, another package which uses Redis as its backend datastore. Vanity lets you present two different interfaces (hence the A/B) and monitor statistics on how the users react to the differences (do green buttons get better conversion than orange?). Nick wrapped up by showing us some of the code used in Mogotest and how they managed backend tasks.

As a bonus, we got the briefest of tours of what Mogotest can do: it will spider a web site, gathering the content, show you validation issues with the code (HTML and CSS), compare how the web pages look in a number of different browsers (side-by-side or a slick overlay). This can be really handy to include as part of testing a web site. Mogotest has just entered into public beta, during which you can test your site for free. Check it out!

Thanks to Nick for a very interesting presentation! Thanks to Brian for coordinating the event and getting pizza! Thanks to RMC for the great facilities.

Upgraded to WordPress 3.0

As seems to be the case with WordPress, I did another uneventful upgrade. Gotta love how smooth the devs have made upgrades! Let me know if you see anything out of the ordinary. Keep an eye out for some new WP 3.0 features

Beware FireFox security add-ons

Interesting account of how an add-on for FireFox claiming to be a
security test included a backdoor that captured usernames & passwords.
If you’ve recently download “Mozilla Sniffer” you’ll want to pay
particular attention to this article:

http://news.netcraft.com/archives/2010/07/15/firefox-security-test-add-on-was-backdoored.html

Notes for CentraLUG, 7-June-2010: Wikis

The topic of the month is Wikis. “Wiki Wiki!” is Hawaiian for “quick, quick!” and is a pattern of presenting a read-write web site. There are more variations and implementations than grains of sand in the universe. but we’ll look at a couple of them, specifically:

We’ll talk a little bit about the range of markup languages, the technology behind the wiki, the social and community aspects of how a wiki works (or doesn’t), and how Free/Open Source has played into the success of wikis.

Recommended Reading: “The Wiki Way, Quick Collaboration on the Web” by Ward Cunningham (inventor of the wiki) and Bo Leuf, Addison-Wesley, 2001, ISBN 0-201-71499-X and http://wiki.org/. We’ll have a copy there for your browsing.

Comments from other members suggest we might also want to look at:

MindTouch (http://sourceforge.net/projects/dekiwiki/)

Wekkid https://launchpad.net/wikkid

Wikipedia’s entry on Wikis: http://en.wikipedia.org/wiki/Wiki_software and

a list of software with comparisons: http://en.wikipedia.org/wiki/Comparison_of_wikis

and http://www.wikimatrix.org/

My most active Wiki experience: http://fox.wikis.com (Not open source, either in implementations nor base language).

Notes from Python SIG, 27 May 2010

The May meeting of the New Hampshire Python Special Interest Group was planned as an informal chat, and there was no dearth of topics! We met as usual (the fourth Thursday of the month) at the Amoskeag Business Incubator (http://www.abi-nh.com) in Manchester, from 7 – 9 PM. Seven people attended the meeting.

We had a demonstration of a prototype of a video bulletin board system to be used for the community TV channel in Pepperell, MA. It was using a Python script to drive displays including slides in OpenOffice.org Impress and videos played in VLC. Interesting libraries in use include shlex for parsing command lines and a graphics library whose name I missed to generate the “crawler” at the bottom of the screen.

We discussed the licensing issues with video and audo codecs and the solution that’s provided by Fluendo.

We looked at the new photography management application Shotwell included in the most recent Fedora and Ubuntu distributions. Shotwell is written in the new Vala language that “aims to bring modern programming language features to GNOME developers without imposing any additional runtime requirements and without using a different ABI compared to applications and libraries written in C” and Bill noted another derivative language, Genie, which has a style far more similar to Python. (You wondered what all this had to do with Python, didn’t you?)

We looked for some solutions for accessing the output of Java classes from within a Python application., citing pages like this and discussing the pros and cons of the solutions available. We’re looking forward to a future meeting where we get a report on how it comes up.

As always, a good time was had by all. Thanks to Janet for yummy chocolate chip cookes and frosted brownies. Thanks to the Amoskeag Business Incubator for the use of the facilities, to Bill for organizing and moderating the meeting. and thanks to all for attending participating.

HowTo notes: installing REE, Passenger, Ruby on Rails on CentOS5

Recently, I installed Redmine, the Rails-based project tracker,  on an existing virtual private server, running CentOS 5 Linux and an assortment of LAMP applications and web sites using Apache, PHP and MySQL. I chose Ruby Enterprise Edition (REE), an optimized and high-performance version of Ruby, and Passenger, an Apache module to connect to Ruby. Here are the steps I followed, as a reference and in hopes it might help others:

  1. Log onto the box via ssh. As a good practice, I run as an unprivileged user, and use sudo only when superuser rights are needed. So, download the files and un-tar them and read the READMEs and run the processes as a regular user, switching to root via sudo only when the rights are needed.
  2. Download and install Ruby Enterprise Edition. Today, that’s:
    wget http://rubyforge.org/frs/download.php/68719/ruby-enterprise-1.8.7-2010.01.tar.gz

    but follow the instructions you’ll find at http://www.rubyenterpriseedition.com/download.html for the latest. Those instructions will have you un-tar the file and then run the installer.

  3. Install the tools needed to build Ruby Enterprise Edition. If you run the installer, it will prompt you for missing tools. In my case, I needed to:
    sudo yum install gcc-c++ make patch zlib-devel openssl-devel readline-devel
  4. If you’ll be using mysql, you’ll need the native code to build the matching gem. REE attempts to build gems for MySQL, SQLite and PostgreSQL, so choose your flavor and issue the appropriate command like:
    sudo yum install mysql-devel
    

    or postgresql-devel or sqlite-devel as appropriate.

  5. Follow the instructions supplied by the REE installer. They did a nice job on that. To install Passenger when I was done, some additional source code files were required:
    sudo yum install httpd-devel apr-devel
    sudo /opt/ruby-enterprise-1.8.7-2010.01/bin/passenger-install-apache2-module
  6. Once again, follow the prompts to add the proper load module and path commands to your web server configuration, add a configuration file for your site, and you’re ready to start installing your site’s code.

NOTE: It wasn’t the case with my particular host, but you may need to adjust your SELinux settings, if you’ve got SELinux enabled. See the post at http://www.catapult-creative.com/2009/02/04/installing-rails-on-centos-5/ and look for “SELinux” for some ideas.

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.