From ecogrrl24 at gmail.com Fri Feb 8 01:39:56 2013 From: ecogrrl24 at gmail.com (Aimee Fahey) Date: Thu, 7 Feb 2013 16:39:56 -0800 Subject: [portland] {JOB} Glider is hiring a Python Engineer! Message-ID: <2ED82821-4F08-439C-BE39-FAB9B2C4D5B2@gmail.com> Hi everyone!! I?m working with Glider, a growing Portland startup, to hire a Senior Engineer with solid Python skills to join their dev team. We?re a small team looking for a strong generalist who is comfortable coding across the stack. On any given day you could be deploying servers on AWS, coding on the frontend, or writing application code. There will be opportunities to work with clients, give input on product direction, and help shape Glider?s future! Glider tames the contract management process, bringing clarity and workflow, and helping teams work together to get their deals done. We?re working to change the way people interact with documents (and each other). We're a small team backed by True Ventures and TechStars and are looking for passionate, energetic individuals to join us. Interested in learning more, or know someone you can recommend? Please check out the job posting at http://bit.ly/YNPqy7 then drop me a line or go ahead and apply and I?ll respond ASAP!! Thanks! Aimee Fahey Recruiting Consultant aimee at glider.com www.linkedin.com/in/aimeefahey -------------- next part -------------- An HTML attachment was scrubbed... URL: From mickmcd01 at yahoo.com Tue Feb 12 20:22:24 2013 From: mickmcd01 at yahoo.com (Mick) Date: Tue, 12 Feb 2013 11:22:24 -0800 (PST) Subject: [portland] Employment opportunity at Smarsh Message-ID: <1360696944.81775.YahooMailNeo@web163003.mail.bf1.yahoo.com> Smarsh is looking for a web developer with Python experience. If you or someone you know is interested, details are here: http://www.jobscore.com/jobs/smarsh/web-developer/cao_auCAmr4QZueJe4egig Thanks, Mick McDonnal -------------- next part -------------- An HTML attachment was scrubbed... URL: From rsteff at comcast.net Mon Feb 18 22:31:20 2013 From: rsteff at comcast.net (Richard C. Steffens) Date: Mon, 18 Feb 2013 13:31:20 -0800 Subject: [portland] "Hello World" Recommendations? Message-ID: <51229DA8.7040201@comcast.net> Is there a recommended "Hello World" sample for PyGL? I've been using a couple of Python programs on Ubuntu 10.04 for about a year. These programs are no longer available through Ubuntu, but I haven't found anything current that does what they do, so I want to figure out how to update them so they can work on Ubuntu 12.04. I have the source code for each. One is called Transcribe and appears to use gstreamer for the meat of what it does, which is to play an audio file. What makes it a bit unique is that it includes a built in "backspace" of about 2 seconds when pause is invoked. This is useful for a transcriptionist who must pause and resume the playback often during the process of transcribing something, like an interview. The other is a program called footpedal which provides an interface to a USB foot pedal that lets it control pause, rewind, fast forward. The program footpedal was written with a more general purpose in mind and includes several other options for what the three pedals can do besides those needed to control the playing of an audio file. There hasn't been any recent activity on the web sites of these programs. Plus, I'd like to combine the features of footpedal with the features of Transcribe. Thus, I'm looking at how to work with Python. As I say that I realize that Python is only one of the things I need to learn to work with. I took a look at: https://wiki.ubuntu.com/Novacut/GStreamer1.0 and discovered that I need to know about PyGL instead of PyGST, and that I should be using GStreamer1.0 instead of GStreamer0.10. I had a look at the sample code and sort of followed it, too. What would help would be a recommendation on where to find the equivalent of "Hello World" for PyGL, or any other ideas on where I should start. Thanks. -- Regards, Dick Steffens From keturn at keturn.net Tue Feb 19 00:14:41 2013 From: keturn at keturn.net (Kevin Turner) Date: Mon, 18 Feb 2013 15:14:41 -0800 Subject: [portland] "Hello World" Recommendations? In-Reply-To: <51229DA8.7040201@comcast.net> References: <51229DA8.7040201@comcast.net> Message-ID: <1361229281.31850.140661193408425.37CF151F@webmail.messagingengine.com> On Mon, Feb 18, 2013, at 01:31 PM, Richard C. Steffens wrote: > I took a look at: > > https://wiki.ubuntu.com/Novacut/GStreamer1.0 > > and discovered that I need to know about PyGL instead of PyGST, and that > I should be using GStreamer1.0 instead of GStreamer0.10. That page doesn't say anything about PyGL, but does mention PyGI (GObject-Introspection). According to https://live.gnome.org/PyGI , that's been merged into PyGObject. This has a "Hello World" for PyGI: https://live.gnome.org/PyGObject/IntrospectionPorting#How_does_PyGI_work.3F ...looks like things have changed since I last did any work with Python and Gtk+. From rsteff at comcast.net Tue Feb 19 00:52:45 2013 From: rsteff at comcast.net (Richard C. Steffens) Date: Mon, 18 Feb 2013 15:52:45 -0800 Subject: [portland] "Hello World" Recommendations? In-Reply-To: <1361229281.31850.140661193408425.37CF151F@webmail.messagingengine.com> References: <51229DA8.7040201@comcast.net> <1361229281.31850.140661193408425.37CF151F@webmail.messagingengine.com> Message-ID: <5122BECD.3000007@comcast.net> On 02/18/2013 03:14 PM, Kevin Turner wrote: > On Mon, Feb 18, 2013, at 01:31 PM, Richard C. Steffens wrote: >> I took a look at: >> >> https://wiki.ubuntu.com/Novacut/GStreamer1.0 >> >> and discovered that I need to know about PyGL instead of PyGST, and that >> I should be using GStreamer1.0 instead of GStreamer0.10. > That page doesn't say anything about PyGL, but does mention PyGI > (GObject-Introspection). Ah, the disadvantages of sans serif fonts. Thanks for pointing that out. > According to https://live.gnome.org/PyGI , > that's been merged into PyGObject. > > This has a "Hello World" for PyGI: > > https://live.gnome.org/PyGObject/IntrospectionPorting#How_does_PyGI_work.3F Thanks. That looks quite instructive. > ...looks like things have changed since I last did any work with Python > and Gtk+. The last OO programming I did was over 10 years ago. This will be an interesting refresher. Thanks, again. -- Regards, Dick Steffens From micah at quixotix.com Tue Feb 19 04:34:35 2013 From: micah at quixotix.com (Micah Carrick) Date: Mon, 18 Feb 2013 19:34:35 -0800 Subject: [portland] "Hello World" Recommendations? In-Reply-To: <5122BECD.3000007@comcast.net> References: <51229DA8.7040201@comcast.net> <1361229281.31850.140661193408425.37CF151F@webmail.messagingengine.com> <5122BECD.3000007@comcast.net> Message-ID: I'm a big fanboy of GTK+ and Python and all this GI stuff is right up my alley. The GI stands for "Gobject Introspection". C programmers writing various libraries based on GObject (such as GStreamer) adhere to a set of conventions and annotations within the comments that, during the build process, create a special file describing the API in an XML format. Any language (like Python) can then use that XML file to dynamically call any of those API libraries installed on the system without the need for a separately maintained "language binding". In a nutshell, you're calling C functions from Python through a dynamically introspected wrapper. The 'gi.repository' package is that dynamic namespace. from gi.repository import Gst So that 'Gst' module is only going to be available in 'gi.repository' if you have the GStreamer C libraries installed on your system. A lot of other projects are also available from 'gi.repository'--anything based on GObject. from gi.repository import GObject, GLib, Gio, Gedit, Gtk, Pango Since these are all C libraries underneath the hood, the C documentation is usually the best source. Don't worry, it's not too hard. See my answer on stack overflow for an explanation on that: http://stackoverflow.com/questions/11586396/pygobject-gtk-3-documentation/11589779#11589779 So you'll be working GStreamer. The C docs at http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/ should give you what you need. The naming convention should be easy to pick up... Python C --------------------------------------------------------- Gst.init() gst_init() Gst.Buffer GstBuffer Gst.Buffer() gst_buffer_new() Gst.Buffer().get_size() gst_buffer_get_size() Gst.BufferFlags.DECODE_ONLY GST_BUFFER_FLAG_DECODE_ONLY So, as for a "Hello World" for PyGI (may be referred to as PyGObject or GObject Introspection)--it doesn't quite apply since it's not a library per say, but a way of accessing C libraries. So if your application is command-line, then you just need to start using the Gst library. But if it's a GUI application using GTK+, you can start with the tutorial at http://python-gtk-3-tutorial.readthedocs.org/en/latest/ Then this GTK+/Gst video player may be of use: http://bazaar.launchpad.net/~jderose/+junk/gst-examples/view/head:/video-player-1.0 Cheers, - Micah On Mon, Feb 18, 2013 at 3:52 PM, Richard C. Steffens wrote: > On 02/18/2013 03:14 PM, Kevin Turner wrote: > >> On Mon, Feb 18, 2013, at 01:31 PM, Richard C. Steffens wrote: >> >>> I took a look at: >>> >>> https://wiki.ubuntu.com/**Novacut/GStreamer1.0 >>> >>> and discovered that I need to know about PyGL instead of PyGST, and that >>> I should be using GStreamer1.0 instead of GStreamer0.10. >>> >> That page doesn't say anything about PyGL, but does mention PyGI >> (GObject-Introspection). >> > > Ah, the disadvantages of sans serif fonts. Thanks for pointing that out. > > > According to https://live.gnome.org/PyGI , >> that's been merged into PyGObject. >> >> This has a "Hello World" for PyGI: >> >> https://live.gnome.org/**PyGObject/**IntrospectionPorting#How_does_** >> PyGI_work.3F >> > > Thanks. That looks quite instructive. > > > ...looks like things have changed since I last did any work with Python >> and Gtk+. >> > > The last OO programming I did was over 10 years ago. This will be an > interesting refresher. > > Thanks, again. > > -- > Regards, > > Dick Steffens > > > ______________________________**_________________ > Portland mailing list > Portland at python.org > http://mail.python.org/**mailman/listinfo/portland > -- - Micah Carrick Software Developer *Quixotix LLC* * *Portland, OR http://quixotix.com -------------- next part -------------- An HTML attachment was scrubbed... URL: From rsteff at comcast.net Tue Feb 19 06:18:43 2013 From: rsteff at comcast.net (Richard C. Steffens) Date: Mon, 18 Feb 2013 21:18:43 -0800 Subject: [portland] "Hello World" Recommendations? In-Reply-To: References: <51229DA8.7040201@comcast.net> <1361229281.31850.140661193408425.37CF151F@webmail.messagingengine.com> <5122BECD.3000007@comcast.net> Message-ID: <51230B33.3050707@comcast.net> On 02/18/2013 07:34 PM, Micah Carrick wrote: > I'm a big fanboy of GTK+ and Python and all this GI stuff is right up > my alley. > > The GI stands for "Gobject Introspection". C programmers writing > various libraries based on GObject <...> > Since these are all C libraries underneath the hood, the C > documentation is usually the best source. Don't worry, it's not too > hard. See my answer on stack overflow for an explanation on that: > http://stackoverflow.com/questions/11586396/pygobject-gtk-3-documentation/11589779#11589779 > > So you'll be working GStreamer. The C docs at > http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/ should > give you what you need. The naming convention should be easy to pick up... <...> > So, as for a "Hello World" for PyGI (may be referred to as PyGObject > or GObject Introspection)--it doesn't quite apply since it's not a > library per say, but a way of accessing C libraries. > > So if your application is command-line, then you just need to start > using the Gst library. But if it's a GUI application using GTK+, you > can start with the tutorial at > http://python-gtk-3-tutorial.readthedocs.org/en/latest/ > > Then this GTK+/Gst video player may be of use: > http://bazaar.launchpad.net/~jderose/+junk/gst-examples/view/head:/video-player-1.0 > This is perfect. You successfully figured out what question I was supposed to be asking. It may take me some time to work through all of it, but now I know where to start looking. Thank you very much. -- Regards, Dick Steffens From teknotus at gmail.com Tue Feb 26 00:58:12 2013 From: teknotus at gmail.com (Daniel Johnson) Date: Mon, 25 Feb 2013 15:58:12 -0800 Subject: [portland] Hack night Tuesday Message-ID: Tuesday, February 26, 2013 6:00 PM Urban Airship 334 NW 11th Ave, Portland, OR (map) https://maps.google.com/maps?q=334+NW+11th+Ave,+Portland,+OR Let's get together and build cool stuff. Bring your computer and your Python projects and come hack with us from 6-9pm on fourth Tuesdays!Never written Python before? No problem. There will be Pythonistas at the ready to mentor beginners. Anyone at any level of Python experience is welcome and invited to join us! This month we'll also be trying out a coding exercise known as the randori, which involves learning from your fellow Pythonistas via pair programming and frequent rotation. **Note: Please RSVP if you're planning to come so we can set up the right number of tables and chairs. :) -------------- next part -------------- A non-text attachment was scrubbed... Name: Monthly+Hack+Night.ics Type: application/octet-stream Size: 1479 bytes Desc: not available URL: From tony at itmotives.com Tue Feb 26 21:20:19 2013 From: tony at itmotives.com (Tony Seminary) Date: Tue, 26 Feb 2013 20:20:19 +0000 Subject: [portland] Python Software Developer position in Portland, OR Message-ID: <6A32DDEC1ED2F649B619871EBDCA58C6486A94D6@BL2PRD0710MB361.namprd07.prod.outlook.com> Hello All, We are looking for a Python Software Developer http://www.itmotives.com/general/1128-python-software-developer.htm and if you're interested in this very cool opportunity for a company in Portland, I would love to talk with you about it. Thanks very much! Tony Seminary Chief Executive Officer IT Motives, www.itmotives.com Native American Owned Business 503.706.2970 tony at itmotives.com www.linkedin.com/in/tonyseminary Twitter: tonyseminary Skype: wuhcage_tony -------------- next part -------------- An HTML attachment was scrubbed... URL: From keturn at keturn.net Thu Feb 28 02:49:36 2013 From: keturn at keturn.net (Kevin Turner) Date: Wed, 27 Feb 2013 17:49:36 -0800 Subject: [portland] report from our first randori Message-ID: <1362016176.13245.140661197956305.6FD70444@webmail.messagingengine.com> Thanks again to everyone who participated! Feel free to reply with your thoughts. I've also posted this on the agilepdx list , which you may be interested in if you want to learn more about test-driven development. They've got a meeting on test-driven database development coming up shortly. For those that missed my pitch, "randori" is a phrase borrowed from martial arts, where two students practice sparring in a ring. In a coding dojo randori, the sparring is between a pair of coders versus a programming problem. Here's one description of the the "coding dojo" and "randori" concepts: http://web.cs.wpi.edu/~gpollice/Dojo.html Last night I organized the first coding dojo randori at the Portland Python User Group. There were five participants (plus myself as facilitator) with a wide range of experience with Python, although all had at least *some* knowledge of the language and basic programming concepts.[1] We settled on Madlibs[2] as the kata of the evening, which was the least complex of the options I had prepared. Good thing too, as we didn't find it lacking for difficulty. I gave an introduction to the randori's ground rules for the evening[3], an even briefer introduction to unittest, and then we spent a little under two hours working in five-minute rotations in circular order[4]. At the end we took about fifteen minutes for retrospection. There are some notes from the retrospective below, but as facilitator I felt like the biggest thing for me to work on will be figuring out how and when to engage. I was almost entirely hands-off for most of the exercise, and I'm thrilled that it was as successful as it was in that form, but there were a number of things I'd love to resolve: - Some of the writing about this I've seen said to "not let anyone fall off the sled." I failed to implement that, and we got ourselves stuck when one navigator started something that their successor could not follow. Since the audience wasn't encouraged to talk much when they weren't in the pair, we didn't have a good mechanism for catching this. Give everyone the permission to pull the breaks at any time? More explicit checks for understanding? Have the facilitator watch for confused faces? Do you stop the rotation timer when this happens? - What to do when the navigator starts writing untested code? Given that I pitched the randori as an exercise in TDD, participants were generally willing to overcome their habitual reluctance to writing tests, but I didn't have a productive response when they objected with "I don't know how to test!" I wasn't sure how to lead them to understanding without pulling them out of the navigator chair. So we let some untested code in, but I think without exception that code ended up abandoned or deleted by the pairs that followed. ("Untested code is hard for your successors to pick up" would have been a brilliant conclusion for the group to draw in the debrief, but I don't know if any of us got that insight at the time. I didn't hear it voiced.) - Most everyone wasn't well-versed in Red, Green, Refactor. Very little refactoring happened. Not the worst thing in the world, but maybe a missed opportunity, especially if that's one of the skills we're here to practice. - Should the facilitator participate in the rotation? I didn't, which may be the right call if there are enough things that need facilitator-attention to keep that hat on consistently through the event. But I felt I was missing out (in both giving and receiving) by not pairing. Notes from the retrospective: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Things that worked: ------------------- Everyone participated, stuck around to the end, and agreed they had learned something. One participant said that TDD on greenfield development challenged them to think about tests in a way they don't usually do (and reported this as a positive :) Having to code out loud made one participant more aware of the up-front decisions they made while working on a problem. We took some time midway through to whiteboard inputs and outputs of not-yet-implemented functions, which provided something for people to refer to when they got lost. Things that didn't work so well: -------------------------------- The development environment I provided came with a broken "run tests" button and broken keyboard shortcuts for the 80% of the participants who don't type Dvorak. I had both the laptop (17") display and big external display enabled. The cursor was easy to lose between displays, and while it was occasionally useful to have the second little display, the audience couldn't see it. (Mirror the displays, or disable the smaller display entirely.) We had some periods where an entire round or two was spent thrashing. Some thrash is probably expected, but this felt like too much. (See above concerns about "falling off the sled.") While people did talk while pairing, I was less successful in getting people to speak up in the small group (including the retrospective). Suggested additions: -------------------- Cover "Yes, And" in the ground rules. Spend some time planning as a group before the first pair dives in. Start with at least a skeleton file for the tests, for those less familiar with xunit and python unittest invocation. Maybe get one of those utilities that makes it easier to see the mouse cursor when you lose it. Tinker with the pairing rotation to reduce occurrence of "blind leading the blind" feeling. (Random? Popcorn? Planned interleaving of inexperienced participants between experienced ones?) Be more explicit about the start time. At hack people tend to drift in throughout the course of the evening, so it took a while before we had what I felt was critical mass. Footnotes: 1: I chickened out and did not encourage the person who had not yet done their first "hello world" to join us. 2: Madlibs as described by Ruby Quiz #28 http://rubyquiz.com/quiz28.html 3: Ground Rules: * A pair of navigator and driver. The navigator decides where to go and tells the driver. The driver shall not get ahead of the navigator?s instructions. * Rotation period: 5 minutes. * At the bell, the navigator becomes the driver, the driver goes to the end of the queue, and the new navigator comes from the front of the queue. * Everyone takes a turn. * The randori computer is the only computer. Even when not part of the pair, your attention should be on the activity happening there. (Possible exception to this for reference documentation.) * Test first. * Those not in the pair should keep the comments and background chatter to a minimum. * When the tests are GREEN (passing), the navigator may solicit advice for next steps or refactorings. 4: I was going to say "round-robin" here, but a round-robin tournament (all-play-all) is actually quite different than round-robin scheduling, so that could be ambiguous. From keturn at keturn.net Thu Feb 28 03:12:41 2013 From: keturn at keturn.net (Kevin Turner) Date: Wed, 27 Feb 2013 18:12:41 -0800 Subject: [portland] exercises to use at code dojos In-Reply-To: <1362016176.13245.140661197956305.6FD70444@webmail.messagingengine.com> References: <1362016176.13245.140661197956305.6FD70444@webmail.messagingengine.com> Message-ID: <1362017561.19432.140661197963333.15956CD3@webmail.messagingengine.com> At our meeting earlier this month, when I pitched the randori idea Amjith asked if there was a list of problems one could draw from to practice at these sorts of things. I found some! The people who use words like "dojo" and "randori" refer to these as "kata", the sort of wax-on, wax-off exercise you perform over and over again. Although the dojo is a collaborative environment, I've also included some links to resources used in competitions. http://codingdojo.org/cgi-bin/wiki.pl?KataCatalogue http://codekata.pragprog.com/ - A series by Dave Thomas, who created the ?Code Kata? phrase. http://brendan.enrick.com/post/Coding-Katas-and-Exercises.aspx http://rubyquiz.com/ - An excellent series of exercises posted to Ruby Talk over the years. ?The problems themselves are not language-specific. http://content.codersdojo.org/code-kata-catalogue/ https://sites.google.com/site/tddproblems/all-problems-1 - Test-Driven Development problems http://cyber-dojo.com/ - I don?t entirely understand what this is yet, but presents problems in a variety of languages and seems to run the code online. http://www.programming-challenges.com and http://uva.onlinejudge.org/ - collections of code challenges, with an online auto-judge for selected languages. ?Used for competition. http://www.spoj.com/problems/tutorial/ - another set of coding problems, maybe competition-oriented That's a bunch of links! And there's a bunch of duplication among the resources above. I quite like the format used here, specified in terms of a series of user stories: http://codingdojo.org/cgi-bin/wiki.pl?KataBankOCR so you can introduce complexity as needed without putting in all the details up front. However, as we found out last night, when given a team that's never worked together before and you have no more than two hours, there's not much need to make the problem harder at all. :)