<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Dougma (dŭg·mə) n. &#187; python</title>
	<atom:link href="http://dougma.com/archives/category/python/feed" rel="self" type="application/rss+xml" />
	<link>http://dougma.com</link>
	<description>the truth according to Doug</description>
	<lastBuildDate>Mon, 03 Jan 2011 10:32:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Blogging a project &#8211; The big picture</title>
		<link>http://dougma.com/archives/197</link>
		<comments>http://dougma.com/archives/197#comments</comments>
		<pubDate>Sat, 01 Jan 2011 07:30:53 +0000</pubDate>
		<dc:creator>doug</dc:creator>
				<category><![CDATA[django]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://dougma.com/?p=197</guid>
		<description><![CDATA[&#160; A dive into needs and wants and whys. Also see: Introduction &#8211; Lets make a bug tracker! Background &#8211; It&#8217;s not really a bug tracker! Time to get to some use cases, requirements, needs, wants, and technology. As mentioned in the last post, I need something to replace the features we currently have in [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>A dive into needs and wants and whys.</p>
<p>Also see:</p>
<ul>
<li><a href="http://dougma.com/archives/183">Introduction</a> &#8211; Lets make a bug tracker!</li>
<li><a href="http://dougma.com/archives/186">Background</a> &#8211; It&#8217;s not really a bug tracker!</li>
</ul>
<p>Time to get to some use cases, requirements, needs, wants, and  technology. As mentioned in the last post, I need something to replace  the features we currently have in Lotus Notes. While this is a project inspired by issues at work, and I hope it will be used there, the actual needs and requirements are coming from me. Not everyone in my group would agree with what I am calling requirements. Some of my requirements are there because of specific pain points I am having, but which do not really bother others. But hey, it&#8217;s my project, so they don&#8217;t get a say.</p>
<p>With that, it is time for a</p>
<blockquote><p><strong>Disclaimer:</strong> The postings on this site are my own and don’t necessarily represent  my employer’s positions, strategies or opinions. Opinions and ideas  expressed here are mine and mine alone.</p></blockquote>
<h2><strong>Objectives</strong></h2>
<p>The pr1mary objectives are:</p>
<ul>
<li>Increase visibility with ease of access (web interfaces or simple app)</li>
<li>Integrate with other existing systems (Perforce, Plone, Active Directory, release processes)</li>
<li>Preserve and or migrate sixteen years of history (old bugs, api discussions, etc.)</li>
<li>Support existing workflows (fast ramp-up for users)</li>
<li>Minimal impact on schedules (get it up and running without anyone noticing until it is done&#8230; hi boss&#8230;.)</li>
</ul>
<p>That&#8217;s about it really.</p>
<h2><strong>High Level Functionality</strong></h2>
<p>Quick summaries of the functionality we will dive into.<strong><br />
</strong></p>
<ul>
<li><strong>Issue/Bug Management</strong> &#8211; Our needs are very simple, but specific. Multi-Project, RSS, large files, and read/unread markers being chief among them. The biggest issue here is how we manage the forks. Each bug/issue will have a status in multiple forks. There are multiple &#8216;active&#8217; forks which need to have their status set. As new forks are made, the system needs to know about them. Archived forks are not set on the bug. A bug is not fully closed until it is closed on all forks. Very few issue management systems do this out of the box, though many support similar work flows.</li>
<li><strong>API/Code Review </strong>- Nicely color coded diff of changes to the API with the ability to make comments on the changes, and have multiple versions of the multi-file changes. This is key for the API review. General code review is secondary. This need not be fully integrated into Perforce via  triggers. That option would be nice, but for the API  review, it would be better to submit a changeset via some script  (*cough* <a href="http://codereview.appspot.com/2635043/">upload.py</a>. gee&#8230; what ever system could I be thinking of for this&#8230;.) Essentially we need a way to review patches which are not checked in anywhere. It would be nice to review changes which are pending or already submitted as well, but that is a want, not a need; we have that functionality in another trigger system already.</li>
<li><strong>Discussion Threads</strong> &#8211; Similar to a bulletin board, but with thread and read/unread requirements. The key features from Lotus Notes are the overview listing with read/unread status. The &#8216;topic&#8217; can be changed and is modified over time with a change history. Underneath in the main list view are threaded responses. Everything has read/unread markers. Think of a threaded e-mail archive, where the initial e-mail can be edited with a change history. BBS systems come close but miss the mark on the key requirements.</li>
<li><strong>Static Release HTML Help/Docs</strong> &#8211; <em>(sideline work)</em> Technically not something that is in Notes and already exists internally, but we need to integrate with it cleanly so mentioning it. Adding an app to smartly serve up static files are set locations would be simple enough to add and would replace some fancy apache rewrite rules.</li>
<li><strong>Interview Management</strong> &#8211; <em>(bonus work) </em>special discussion system for managing resume&#8217;s, code problem solutions, etc. Has special permission requirements, and voting (+1, +0, 0, -0, -1)</li>
<li><strong>Machine Management </strong>- <em>(bonus work)</em> very very simple app for tracking who has what hardware specs on their machines. Not asset management. Just useful for when we have budget to get new hardware, or when a bug appears to be hardware specific.</li>
</ul>
<p>Some of this could be moved into Plone, or just abandoned. Much of the project management occurs in Plone and integrates across projects. Different projects use different tools, but everyone integrates at the Plone level. One restriction on the Plone side is, because many groups are using it, there is a very high barrier to adding new functionality or special customization. Also we do not have the option to go with a cloud hosted solution like some groups, due to our access to medical records. Just the access to such records means we can not risk it.</p>
<h3><strong>Issue/Bug Management</strong></h3>
<p><strong>Requirements:</strong></p>
<ul>
<li>Active Directory Integration</li>
<li>Perforce Integration (very minimal)</li>
<li>P4M Fork integration (one bug, many forks)</li>
<li>P4M Version integration (is the format valid)</li>
<li>RSS Feed (cheap Plone Integration)</li>
<li>Large file support</li>
<li>Milti-Project</li>
<li>Read/Unread Marking</li>
<li>Filters (open, closed, owned by, etc.)</li>
<li>Searchable</li>
</ul>
<p><strong>Nice to have:</strong></p>
<ul>
<li>Strong Perforce Integration, Checkin&#8217;s and Changesets (i.e. see the code from the issues)</li>
<li>Strong P4M Fork/Version integration (does a fork/version exist, active forks, etc.)</li>
<li>Smart links (turn @34245 into a link to the changeset, etc)</li>
<li>Colorized source code diffs</li>
<li>Nice WYSIWYG Editing instead of some wiki markup</li>
<li>Custom reports, queries.</li>
</ul>
<h3><strong>API/Code Review</strong></h3>
<p>There is a different between how we handle the API review than other code reviews. We have a requirements, and proposals. This is can be a many-to-many relationship, but usually is just one-to-one, or occasionally one requirement to many implementation proposals. Sometimes a bug will be referenced as it may require an API change to fix. Often it is a client which will submit a requirements document, which then gets refined.</p>
<p><strong>Requirements:</strong></p>
<ul>
<li>Active Directory Integration</li>
<li>Multi-file changesets</li>
<li>Colorized changes</li>
<li>Full and partial change context</li>
<li>Multiple revisions of a changeset (i.e. one proposal, multiple changesets)</li>
<li>Requirements document support w/ linkage to proposal</li>
<li>Change history on requirements document</li>
<li>Clear history on the changes to the item being reviewed</li>
<li>Good comment system (duh!)</li>
<li>Integration with bug/issue system (may just be a hand generated link)</li>
<li>RSS</li>
</ul>
<p><strong>Nice to have:</strong></p>
<ul>
<li>P4M Integration (submit a changeset from P4M)</li>
<li>Perforce Integration (Code review of already submitted changes)</li>
<li>Nice WYSIWYG Editing instead of some wiki markup</li>
<li>Custom reports, queries.</li>
<li>Read/Unread markers (this might be moved to a requirement)</li>
<li>Searchable</li>
</ul>
<h3><strong>Discussion Threads</strong></h3>
<p>Discussion threads are interesting in that they closely resemble the functionality in a BBS system, but with some very important differences. The initial topic post is edited with a change history, and then there are threaded comments below. The threaded comments are their own posts. The best way to think about it is your standard mailman archive thread view, but where the author of the initial e-mail can go back and edit their post, and the responses can have different titles. Each entry has it&#8217;s own read/unread state. This could be achieved in Plone with a single page with change history and threaded comments except that the comments are at the bottom of the post, do not have read/unread state, and can not be listed as part of an overview tree/list. So they are really nothing like that <img src='http://dougma.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  Which is why it is hard to find something which supports this mode of discussion we are so used to in Notes.<strong><br />
</strong></p>
<p><strong>Requirements:</strong></p>
<ul>
<li>Active Directory Integration (why do I keep listing this?)</li>
<li>Multiple &#8216;boards&#8217; or whatever (multiple databases in Noted language&#8230; just call it Multi-Project&#8230;)</li>
<li>Topic listing with responses all in one list, with thread indentation (needs a picture to describe)</li>
<li>Change history on Topic level posts</li>
<li>RSS</li>
<li>Read/Unread Marking</li>
<li>File Attachments</li>
<li>Filters (by date, person, etc)</li>
</ul>
<p><strong>Nice to have:</strong></p>
<ul>
<li>Smart links (turn @34245 into a link to the changeset, etc)</li>
<li>Colorized source code diffs</li>
<li>Nice WYSIWYG Editing instead of some wiki markup</li>
<li>Custom queries</li>
<li>Searchable</li>
</ul>
<h3><strong>Interview Management</strong></h3>
<p>This is a fun one. It is just a very simple Notes discussion database (actually all of these except the bug management is just a simple notes discussion database), with some extensions for voting. When a resume is approved via triage, an entry is added with it attached. We vote on resume&#8217;s with a comment. We decide who gets a phone call from these votes, and then people are assigned to make the calls. There is a &#8216;response&#8217; made to the resume with notes from the phone interview. If the phone interview goes well we send out a programming test. We wash and test the response program. It gets posted unwashed as a response to the resume. The washed version with comments and notes is posted as a response to the unwashed version. Then bring the person in for the real full group interview. Then we try to hire that person. Whenever we are done with the resume, it is &#8216;archived&#8217; with these notes where only the manager can see it. Very simple and a quick app to write. <strong><br />
</strong></p>
<p><strong>Requirements:</strong></p>
<ul>
<li>Active Directory Integration (blah blah blah&#8230;)</li>
<li>File attachments</li>
<li>Ability to &#8216;archive&#8217; entries to be seen only by manager</li>
<li>Voting by group members (+1, +0, 0 -0, -1) with comment.</li>
<li>Status (voting, needs phone interview, waiting for program, etc&#8230;)</li>
<li>Assign person to phone interview/code review</li>
<li>Read/Unread Marking (see a theme here?)</li>
<li>Filters (those which I have not voted on yet, needs votes, needs votes by person, a few others)</li>
</ul>
<p><strong>Nice to have:</strong></p>
<ul>
<li>Multiple repositories for different groups (call it Multi-Project)</li>
<li>Colorized source code?</li>
<li>Nice WYSIWYG Editing instead of some wiki markup</li>
<li>Searchable</li>
</ul>
<h3><strong>Machine Management</strong></h3>
<p>It&#8217;s just a simple table with change history!!! Bah, create a Plone page and be done with it! Why is this still in Notes?</p>
<h2>The Big Picture</h2>
<p>Really everything currently in Lotus Notes, sans the bug tracker, is based on the basic Notes discussion database. It is best to look at all of these existing pieces of functionality and see if the lines drawn between them are real or artificial. What I mean by that is, much of the code commentary need not be done in discussion threads, but instead as part of a generic code review application. The distinction between API review and code review is important due to who gets input and when, but not much beyond that. The discussion threads are a catch all for many different types of design resolution that do not fit in the API discussion, or the bug tracker. Plone is most likely the best place for much of what is currently in the discussion database, with the code, and file format stuff moving to a code review app. The machine management database is nothing but a poorly implemented Plone page with a table. The real things which are needed are a strong issue tracker, a powerful and configurable code review tool, and a very simple voting app for resume&#8217;s <em>(another voting app? *sigh*)</em>.</p>
<p>So next up is evaluating existing technologies to figure out which fit best, while taking into account both the background and the big picture. Just in time for me to go back to work in a few hours too&#8230; So much for getting it done over vacation. Failure #1 took long enough.  <img src='http://dougma.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>&nbsp;</p>
<p><strong> </strong></p>
]]></content:encoded>
			<wfw:commentRss>http://dougma.com/archives/197/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blogging a project &#8211; Background</title>
		<link>http://dougma.com/archives/186</link>
		<comments>http://dougma.com/archives/186#comments</comments>
		<pubDate>Tue, 28 Dec 2010 16:35:09 +0000</pubDate>
		<dc:creator>doug</dc:creator>
				<category><![CDATA[django]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://dougma.com/?p=186</guid>
		<description><![CDATA[In the introduction I covered the concept of blogging a new project from beginning to end. The reason for the vagueness of &#8216;project&#8217; and &#8216;experiment&#8217; is because I have not even decided on a name for the project yet. That is part of the entire &#8216;from concept to end result&#8217; thing. If I had a [...]]]></description>
			<content:encoded><![CDATA[<p>In the <a href="http://dougma.com/archives/183">introduction</a> I covered the concept of blogging a new project from beginning to end. The reason for the vagueness of &#8216;project&#8217; and &#8216;experiment&#8217; is because I have not even decided on a name for the project yet. That is part of the entire &#8216;from concept to end result&#8217; thing. If I had a name already it would not really be from the beginning now would it.</p>
<p>Now it is time to give the concrete context in which this project is being done. This could be considered the pre-requirements. It is important to know how your project is going to be used and the environment it is going to be used in. If you want your project to succeed, this information is crucial. this is where you find out what is really needed over what is requested; especially when the person declaring what is wanted is yourself.</p>
<p>This is going to be a very long post, but I will be touching on almost every sentence later on as this all needs to be taken into consideration. It is crucial to looking at these big picture issues when designing some tool or application which will be used in that context. To properly understand the why behind decisions I later make, I would rather dump it all here and refer back later. I hope it will be interesting to some at least.</p>
<p>As the background for this project is going to delve into the processes and development procedures at my day job, it is time for a,</p>
<p><strong>Disclaimer:</strong></p>
<p>The postings on this site are my own and don’t necessarily represent my employer’s positions, strategies or opinions. Opinions and ideas expressed here are mine and mine alone.</p>
<p><strong>Who we are</strong></p>
<p>My title is &#8216;Principal Research Engineer, MREC&#8217;. &#8220;MREC&#8221; is the modular speech recognizer project. We are a development group within research, in charge of productizing the algorithms and features needed by our extensive research teams, and deliver a core speech recognizer. We are a small team of 8 developers. There are many internal clients with technology  built on top, and we are not the only engine in the company. Everyone on the team wears many different hats. We are all developers, researchers, operations engineers, QA engineers, release engineers, technologists, and much more. Everyone works on everything, down to the build, release, deployment, and source code management tools. No one is irreplaceable.</p>
<p><strong>How we Work</strong></p>
<p>There has been a wave of &#8216;agile&#8217; going through the company which I personally find both invigorating and frustrating. At issue here is that we are really talking about &#8216;<a href="http://agilebut.com/">agile-but</a>&#8216; at best. What is frustrating is that our team has been agile sense before agile existed. We release often, and not all releases are used by all our clients. Some are only really used by our team. Most often releases are only used by our researchers, and never see a product. A release is made either because we would release on a date (irregardless of what is in the release) or because a feature or set of features were just completed. It has always been that way.</p>
<p>We do mainline development with continual integration. That is we have one single branch which all the work is done. When a major release occurs we fork the project, and the newly created fork is a maintenance fork which only has bug fixes. Any bug fixes are first implemented in the mainline and then back-ported to the forks which we determine need it. We try to only keep one or two forks live; which means sometimes forcing clients to upgrade to a newer version even when they only think they care about a single bug affecting them.</p>
<p>Notice I have not mentioned branches or branch development. We don&#8217;t do that. Check in, and check in often. Update with the mainline multiple times a day as needed. All tests must pass before checking in. Every bug is really two bugs, the bug and the missing test for it, both must be fixed to consider the issue resolved. This may sound like it slows down development, but just the opposite is true, and I would never work any other way now. We do have the ability to branch and work in isolation, but we prefer to keep that type of thing very short, and to be honest I can&#8217;t think of a time it has been needed. The point is not that you need to integrate with other people changes, but that you need to get your changes in to the mainline immediately so that everyone else can integrate with you.</p>
<p>There are code reviews. We only implement what is needed to solve the underlying problem or request. We do not implement what is requested, but what the requester needs, and rarely go beyond that. We do not implement features that are not used. We love to remove code and unused features. Over the past sixteen years we have removed three times more code than the current size of the project. We have competitions to see who removed the most code. That is the only code metric we look at with any seriousness. Our client facing API is reviewed by the entire team and all clients, and is approved before checked in. The documentation for the API is in the API headers. We bikeshed on the API endlessly; or at least it sometimes feels that way.</p>
<p>None of this should look surprising, revolutionary, or out of the norm. All the major open source projects I know of work this way; more or less.</p>
<p><strong>Communication is the Problem</strong></p>
<p>As I said, there has been this wave of &#8216;agile&#8217; in the company. Recently someone said to me, &#8220;I saw this months sprint document for MREC. It is great to see that MREC is going agile too!&#8221;; and I bite my tongue. I want to say, &#8220;You keep using those words. I do not think they mean what you think they mean.&#8221; When a term like &#8216;sprint&#8217; is used is does not have the meaning I expect it to have. Let me be clear here: the problem is me, not everyone else. The problem is not inherit in the systems, but in the communication. My communication and the communication between our group and the rest of the company.</p>
<p>Our group has been operating somewhat like a black box. Different clients would file requests and our manager would work with the clients and put together a general schedule for getting features in, and re-prioritize as needed. This is a group effort to figure out what needs to get done and in roughly what order. Our clients do not talk much to each other for prioritizing our work, as we do the prioritizing. The end result is, while we have advertised what we are working on, and what goes into a release, these things have been very hard for our clients to track. They know when a feature they need is in a release, but then they have to accept all the other features for all the other clients, which they have not been tracking. One could argue that this is not our groups fault, as we do make all this information available in one form or another; but that is not really fair and as we will see &#8216;one way or another&#8217; hides a multitude of sins.</p>
<p><strong>Communication is the Solution</strong></p>
<p>Much of this is old news and we have changed much in what it appears we  are doing. In truth we have not changed the way we develop at all. We  instead are exposing what we are doing and allowing our clients more  control over our priorities. The end result is that while there is no  real change in our priorities, our clients understand them much better  and feel like they can predict things better using agreed upon terms like &#8216;sprint&#8217;. In truth it is just a  change in perception; instead of not reading internal web pages and  e-mails with text attachments, they are not attending meetings, not  not reading different internal web pages, and not reading different  e-mails with excel attachments. But these are meetings, pages, and e-mails they asked for and we designed together, verses things our group dictated; which makes all the difference in the world. Yes, I am being hyperbolic.</p>
<p>Even with this added communication, which is real and effective, there are still problems. They center around our tools and environment. We are in the late parts of migrating to new systems, but all this has done is highlight the flaws and weaknesses in the systems we have yet to migrate.</p>
<p><strong>The Environment</strong></p>
<p>The different teams have different development styles which best fit their needs. Same goes for the tools used. The source code management we use is an in-house wrapper on Perforce called P4M. This is open sourced as part of the <a href="http://sourceforge.net/projects/devtools/">DevTools</a> project; which is woefully out of date and we will be releasing a new version of soon. We have multiple projects hosted on a single server. Our team has four projects including MREC, and other teams have projects as well. P4M enforces a directory layout including forking and branching. We choose Perforce over SVN or a DVCS for many reasons. We need to deal with huge files (&gt;2Gig) and a basic install takes up &gt;32Gig. The MREC tree alone has 300GB of history. We need to be very careful of permissions. Our engine is used in many medical transcription applications, so we must be very careful. We try never to check in unwashed data which might contain any <a href="http://en.wikipedia.org/wiki/Personally_identifiable_information">PII</a>. In the off chance that some does get through we need strict centrally controlled permissions. At any time we need to know who has what on which machines. For patent and litigation reasons we need everything centrally managed with strict backup rules. Perforce really is the only affordable system out there which can handle this. The entire 16 year history of the project is maintained and with proper dates and attribution.</p>
<p>Our project planning is managed external to the source code management, and the bug tracking and issue management. This at first might sound odd, but with so many internal clients, the priorities are often changing. In our issue management system, we have 3 severity levels (low, med, high), and a fourth level called &#8216;request&#8217;, for all features and improvements. Requests are automatically lower than any bugs. This has caused some friction with client, especially research. The problem is, the person filing the request really has no clue what the real priority is for a request. That is unless they are a project manager and have consulted all our other client product managers, and want to take on the task of updating the priority over time. As such the real priorities are managed in another system which links back. Known bugs on the other hand are always more important to fix than a new feature or improvement. This is a royal pain to try to communicate, and still results in heated discussions; we will get to this in a later post.</p>
<p>Releases are made to network directories which are accessible from the same path on all our grids. There is a &#8216;current&#8217; symlink for the latest supported version, the version is always increasing, and the directories are named with the version number. Each checkin to a codebase get&#8217;s its own unique increasing version number (managed by P4M). The release includes built static html documentation. This documentation is served up by an apache instance, or can just be accessed directly. We are migrating away from a hodge-podge of doxygen, pydoc, and other inhouse hacks over to a standardized sphinxdoc system. this includes taking the help from our API headers and generating sphinxdoc which is cross references with our Python interface. The overarching project planning, and release information is in a plone instance which is used by all of research and development. This is all magically cross linked and searchable; or will be once the sphinx stuff is done, some of which will be tackled by this hear project. Our sphinx extensions will be released as part of <a href="http://sourceforge.net/projects/devtools/">DevTools</a>, and some of the release exposure stuff will be dealt with this new project.</p>
<p><strong>Lotus Notes</strong></p>
<p>There are some pain points which have been hitting me over and over again now that the other parts are so much better and fully integrated. Specifically the way we review changes to our API, discuss architecture and format changes, and issue tracking. All three are managed in a 16 year old Lotus Notes system which has not changed much in 10 years. Very few groups in the company still use notes, and most can not be bothered to install the client. Most have other tools for these things which have web interfaces, or similarly, are causing communication problems. Requiring a tool like Lotus Notes does not sound like it would be much of an issue at first, especially as Perforce is required for code access. But when you realize that this includes a new e-mail address which is not integrated with your &#8216;real&#8217; exchange address, and you need help to set it up to make sense, and that we have no IT staff which know or understand Notes, nor a support contract; heck for all the nice things we have in it, I don&#8217;t want it. There is 0 chance of getting a web interface as well. In short it is an isolated island which plays well with it&#8217;s self, and can be linked to externally with some contortions (on windows only, with specific OLE/ActiveX plugins), but does not play well with others; and playing well with others is the point.</p>
<p>I do want to give a shout out to <a href="http://www.linkedin.com/profile/view?id=2393944">Eric Ochieng</a> who set up the Notes infrastructure years ago and which has been working flawlessly sense with no real support or maintenance.</p>
<p><strong>What this project really is</strong></p>
<p>This project really is not a bug tracker. What it really is, is something to replace all the functionality we currently have in Lotus Notes, with other things which integrate into all the other things we do. Part of that is indeed issue tracking, but focusing on just that would be a failure from the outset. We could go with something like CearCase+ClearQuest+Replication+Send-All-Our-Revenue-To-IBM, and spend months trying to get it all working, but that is just silly. There are a number of open source and pay for solutions which almost fill our needs. It is that &#8216;almost&#8217; which is the problem. There is nothing out there which does the things we need, let alone cover the things we want. This project is to dive down into what the real needs are verses the wants. Find the solutions out there which come closest while integrating together and with what we already have. the pieces which are still missing, I will create from whole cloth of some type. Python is not a requirement, but I will be leaning towards it, as I am the only person on our team which knows Ruby or Java well enough to support those languages; we are allergic to .NET for reasons I will go into later.</p>
<p><strong>Up next:</strong> The Big Picture &#8211; a dive into needs and wants and whys.</p>
]]></content:encoded>
			<wfw:commentRss>http://dougma.com/archives/186/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Grand Experiment</title>
		<link>http://dougma.com/archives/183</link>
		<comments>http://dougma.com/archives/183#comments</comments>
		<pubDate>Tue, 28 Dec 2010 08:51:42 +0000</pubDate>
		<dc:creator>doug</dc:creator>
				<category><![CDATA[django]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://dougma.com/?p=183</guid>
		<description><![CDATA[Ok, maybe &#8216;grand&#8217; is a bit much. For a long time now I have wanted to blog a project. That is blog the progress of working on a project from initial concept all the way through to the completed result. I wanted to do this for the old PyCon website, but the time pressures for [...]]]></description>
			<content:encoded><![CDATA[<p>Ok, maybe &#8216;grand&#8217; is a bit much. For a long time now I have wanted to blog a project. That is blog the progress of working on a project from initial concept all the way through to the completed result. I wanted to do this for the old PyCon website, but the time pressures for that work did not allow for it. I have yet to write one line of code, or create the code repository, or anything; though I have been doing continual research for the past eighteen months. To be honest I have no time for this new venture, and no way on earth do I have time to blog it. I will be spending twice the time blogging it as coding it. Thus this is doomed to failure. But that is part of the point.</p>
<p>The point is not to watch as some &#8216;master&#8217; weaves a new project and does things in the &#8216;best&#8217; way. It is not for me to impart some special wisdom. Oh, no&#8230; The point is for me to fall on my face. Hard. Repeatedly. In full view of everyone. When I see something done right I rarely learn anything from it. The most revolutionary concepts often go completely unnoticed because they just work. And no one remembers things that just work; until they don&#8217;t. So this &#8216;Grand Experiment&#8217;, I hope, will fail many times over.</p>
<p>Another reason why I have not done this before now, is that I have not really had a project which will work with this concept. Oh I have some small utility projects (django-app-plugins chief among them) which desperately need my attention, but I am not actively using them for anything. I have found that when you work on a project like that without an actual site using them, something driving the development, you end up having to envision how you would like to use it. Then when an actual use case comes up it does not quite fit what you thought you might use it for. So this is going to be driven by real use cases for a mission critical application which will be used by a small development team.</p>
<p><strong>How the blogging will work. </strong></p>
<p>There will be an introduction (i.e. this post), background post, big picture post, and then breakdown posts. the breakdown posts will cover the work as I do it. There will be no overarching organization beyond whatever I have had time to do and get checked in. The breakdowns will cover the work which was done in the interim commits, and or new use cases. Each use case will also include research done on options on implementation details. Things which do not work will be highlighted. Even things which do work will not work perfectly. The entire reason for this project in the first place is because nothing in existence works well enough.</p>
<p><strong>So why now? </strong></p>
<p>Good question self. Well there has been a pain point at work which keeps coming up. I have a mandate to specifically NOT work on this. I also am on vacation, and have not done any programming for me. But I have seven days, a wake, a funeral, games night, home owners association management company migration, PyCon issues, three parties, two kids, and a none to happy wife. Did I mention that I do not have time to do this?</p>
<p><strong>So why blog it at all? </strong></p>
<p>Another good question self. Because doing this in public will produce better code. At the last Django Meetup it was commented by someone unnamed that they produce much better code when it is open sourced than when it is done for work, or just to scratch that itch. Everyone present agreed that it was the case for themselves as well. And finally, by doing it this way, it is clear that while this project may end up being used at work, it is done by me, on my own machines, on my own time, and is completely tangent to technology my company cares about. It is related to another piece of software which my group at work is already open sourcing. Oh and the entire falling on my face thing&#8230; that is just too much fun to pass up.</p>
<p><strong>So what is it?</strong></p>
<p>It&#8217;s a bug tracker.</p>
<p>Wait WAIT!!! come back&#8230; don&#8217;t stop reading!</p>
<p>The background and overview posts will go into the research behind all the alternatives, and this project will be more about leveraging existing technology, extending existing projects, writing the few apps which are needed to fill in little bits, and more than anything else, gluing it all together. The emphasis will be on the use cases and work flows which our group uses and dealing with less than enjoyable requirements. I do not even know if this will be used by my group at work in the end, but that is not really the point after all. There is going to be <a href="http://sphinx.pocoo.org/">sphinx</a>, django, <a href="http://jqueryui.com/home">jquery UI</a>, <a href="http://code.google.com/p/rietveld/">rietveld</a>, <a href="http://www.perforce.com/">Perforce</a>, <a href="http://sourceforge.net/projects/devtools/">DevTools</a>, and much, much more. I was told specifically not to work on it; which has almost the same effect as telling me something is impossible.</p>
]]></content:encoded>
			<wfw:commentRss>http://dougma.com/archives/183/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Trademarks [by them selves] are NOT a Menace to Open Source</title>
		<link>http://dougma.com/archives/162</link>
		<comments>http://dougma.com/archives/162#comments</comments>
		<pubDate>Sun, 10 May 2009 07:06:45 +0000</pubDate>
		<dc:creator>doug</dc:creator>
				<category><![CDATA[python]]></category>
		<category><![CDATA[rant]]></category>

		<guid isPermaLink="false">http://www.dougma.com/?p=162</guid>
		<description><![CDATA[I should be asleep, but I accidentally came across this article calling Trademarks a hidden menace to Open Souce. At it&#8217;s heart I agree that Trademark law is not properly understood by the community at large and could be a major problem for some projects. Beyond that it&#8217;s is just a mess. The start of [...]]]></description>
			<content:encoded><![CDATA[<p>I should be asleep, but I accidentally came across this article calling <a href="http://www.pcworld.com/article/164633/trademarks_the_hidden_menace.html">Trademarks a hidden menace to Open Souce</a>. At it&#8217;s heart I agree that Trademark law is not properly understood by the community at large and could be a major problem for some projects. Beyond that it&#8217;s is just a mess.</p>
<p>The start of this polite rant was that he is the author of a commercial Unbuntu book, and he made a website to support the book. He was clear in the use of the trademark ownership, but did not get permission first from Unbuntu. During conversations with Connonical it was mentioned that he might have taken liberties, but that was just in passing. Instead of asking for permission (which we would most likely have been given) he removed the logo and the trademark in all places except where nominal use could be applied (i.e. the book title) and writes a blog post calling for the abolishment of the use of Trademarks in Open Source.  To me this is Trademark law working perfectly well for Open Source. If you are doing something commercial, the owner of the mark wants the ability to aprove it to make sure its not malicious. They are taking as light a hand a possible in it&#8217;s use in allowing non-commercial use freely without the need for seeking aproval (NOTE: you have to use it.. no really, read on)</p>
<p>There are a number of mental failings in that posting. First and foremost is that it forgets the lesson that the GPL and Open Source are reliant on the copyright system (and I would argue that even if there was not copyright that I would want it if only FOR the GPL which enforces the principals of giving back.) The argument is not to have any trademarks at all (as no other option is provided anywhere.) He calls out trademarks as being the antithesis of Open Source. You could literally replace &#8216;Trademark&#8217; with &#8216;Copyright&#8217; in his end section (with one minor exception.) But we need copyright law for the GPL to work; its better than the Public Domain. Just as with Copyright, it is the application which should be addressed, not the tool it&#8217;s self. Any &#8216;solution&#8217; should use the trademark system to support Open Source.</p>
<blockquote><p style="padding-left: 30px;">What tends to happen is that open source companies have to walk a tightrope, and slightly strange rules on trademark get put in place. For example, Ubuntu is cool with community remixes using the trademark, but if you intend to make money from Ubuntu and want to include the word in your business title, you&#8217;re going to need permission. It&#8217;s not quite clear here how the former won&#8217;t dilute the Ubuntu brand, while the latter possibly will. The &#8220;protecting brand identity&#8221; argument falls apart almost immediately upon examination.</p>
</blockquote>
<p>Um&#8230; then you do not have much experience in the real world. Would a company which called its self &#8216;The Unbuntu Corporation&#8221; and sell a product &#8216;Real Ubuntu&#8217; based on a very old release or containing problems on purpose dilute the name? What about the &#8216;Python Corporation&#8217;? What about someone selling &#8216;Django 2.0&#8242; (which turns out to be a fork based on 0.95). Would these things dilute those projects? I think they do. Allowing free use for non-commercialuse may have a risk of dilution, but as this is an Open Source project and crucial to the founding and flourishing of a community, more often than diluting, it helps build the brand. Those are the uses which you want to promote as being part of an Open Source community. These are real issues and real problems which we are facing today.</p>
<p>Here is the crux. If you choose not to use Trademark law to your benefit, others can use it as a weapon against you. If you do not actively protect your trademarks, you loose them, and you can be attacked. I actually am a little happy that there have been some recent issues with the use of the Python logo and trademark as it proved that they are important to have and protect.</p>
<blockquote><p style="padding-left: 30px;">The nature of Linux and open source in general is to encourage forking and splinter projects. That&#8217;s the basic freedom provided by the GNU Public License, and similar licenses. Some of the forks or splinter projects will be poor quality. Some will fail. But that&#8217;s just the way things work with Linux.</p>
</blockquote>
<p>Ah, and here&#8217;s the rub. If a project forks into 2, or say 4 different projects, do all those projects have the same name? What if all the different linux distributions were just called &#8216;Linux&#8217; without the qualifiers &#8216;RedHat&#8217;, &#8216;Fedora&#8217;, &#8216;Unbuntu&#8217;, etc. Branding is important. If you invent a better version of FireFox based off of the source code but with different options and behavior and code, then do you get to call it FireFox? Would you even want to? Would you want it to be confused with this &#8216;failed&#8217; version? Wouldn&#8217;t you want to rebrand it to call it out as being better? Maybe IceWeasel? Yea I know I am going to get flamed. I agree that debacle was stupid. But I can understand how the problem came about and I do not see malice or ill intent as the author does:</p>
<blockquote><p style="padding-left: 30px;">Mozilla is even worse. If I create a new Linux distro, and include my own compiled Firefox binary, it&#8217;s unlikely I would be able to call the browser &#8220;Firefox&#8221;, or use the familiar fox logo, without getting permission from Mozilla. This could put me at a competitive disadvantage compared to other versions of Linux because my users would be using what appears to be unfamiliar software. It&#8217;s worth mentioning that Mozilla&#8217;s trademark rules also indicate they&#8217;re not terribly happy about the unofficial redistribution of their binaries, either, and would prefer it if they were the exclusive source.</p>
</blockquote>
<p>But its not the same software, now is it? (well maybe not in this exact instance, but that is what the Trademark protection is supposed to be used for. To prevent a fork from being called the same &#8216;proper name&#8217; as it is a fork.) Once again it is the use of Trademark law, just like copyright, that matters.</p>
<blockquote><p style="padding-left: 30px;">Is this how open source is supposed to work? Redistricted redistribution? Tight control on who can compile software and still be able to call it by its proper name?</p>
</blockquote>
<p>Um.. yes and no. There is no restriction on the distrobution of the source code. Trademark has nothing to do with source code, it is just about the use of a word or words as an identifier. There is nothing stoping people from compiling software can calling it by its given name. It&#8217;s not about the &#8216;who&#8217; but about the &#8216;what&#8217;; or at least it should be that way. If I compile firefox exactly like the Mozilla Foundataion does, then I can call it FireFox. If I change what could is compiled and packaged, I can not call that package &#8216;FireFox&#8217;. I do not agree with this decision myself, but I do understand the slippery slope they are trying to protect against.</p>
<p>So lets recap:</p>
<ol>
<li>Trademark in and of it&#8217;s self is not the problem (the same way copyright is not), but how it&#8217;s applied.</li>
<li>If you do not use Trademark Law, it can and will be used against you (and can be usd to make you change your existing project from say &#8216;Phoenix&#8217; to say &#8216;Firefox&#8217; and pay fees for violation.)</li>
<li>Trademark law does not impact your ability to distrobute, change, fork or compile code.</li>
<li>Trademark law does impact what you can call something. It gives you the ability to say how a name can be used.</li>
<li>The improper use of Trademark Law could be a problem for Open Source, but the majority of the issues (and the one which started his rant) are actually good uses of Trademark Law for Open Source.</li>
<li>Preventing corporate and malicious use while promoting the non-corporate communities, and approved corporate use is good for Open Source.</li>
<li>Why not ASK if you can use the trademark on your website for your book promoting the project?</li>
</ol>
<p>There is a part of me which would love to take about 20K and start to go all evil with respect to trademarks, taking Open Source names and preventing projects from calling themselves things. Forking projects and trademarking them for my own purpose and calling them the &#8216;REAL&#8217; version. It is not about not Trademarking, but about comming up with good guidelines for its proper use in Open Source. It is a tight line one must walk, but walk it we must.</p>
]]></content:encoded>
			<wfw:commentRss>http://dougma.com/archives/162/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>PyCon 2009 Voting Raw Data</title>
		<link>http://dougma.com/archives/160</link>
		<comments>http://dougma.com/archives/160#comments</comments>
		<pubDate>Wed, 01 Apr 2009 05:00:15 +0000</pubDate>
		<dc:creator>doug</dc:creator>
				<category><![CDATA[pycon]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.dougma.com/?p=160</guid>
		<description><![CDATA[This year we tried something new to get feedback from attendees this year. After a talk you would put little plastic bingo chips into one of three buckets to vote. We also have a talk interest system on the schedule where we get a count on what talks people are selecting. I captured the data [...]]]></description>
			<content:encoded><![CDATA[<p>This year we tried something new to get feedback from attendees this year. After a talk you would put little plastic bingo chips into one of three buckets to vote. We also have a talk interest system on the schedule where we get a count on what talks people are selecting. I captured the data just before and after the conference along with other metrics. All this data I have compiled into a <a href="https://spreadsheets.google.com/ccc?key=pwtoiXb_rI-Jzns9fTkfTTg" target="_blank">massive raw data dump</a> on google docs. It&#8217;s a firehose of information, you have been warned. Check the second and third sheets for details on the data. I would like to boil this data down into something useful. More on that below.</p>
<p><strong>History</strong></p>
<p>It was started by a suggestion by Bruce Eckle a few days before the conference. He mentioned a system from another conference where attendees could put slips of colored paper into a basket at the end of the talk to indicate what they thought (red=bad, yellow=ok, green=good). Yarko suggested using marbles, and then Ted and I ordered had found and ordered 108 tubs of colored bingo chips (clearing out the supply). It was at this point that Yarko pointed out that 3 colored buckets and a scale would be simpler, faster, and much, much easier. It is taking me longer to type this than it took for all that to happen&#8230; In retrospect we moved a bit too fast on the idea.</p>
<p><strong>Boiling it Down</strong></p>
<p>There are a number of issues with the data. There were two occurances of ballat stuffing which are marked with comments on the spreadsheet. Ignoring those, and some cancellations. The biggest issue is that people vote with their feet at PyCon. If you dont like a talk, you go to a different talk. The IRC channel is filled with people more than willing to inform you of how the other talks are going. Some celebrity speakers can draw people from other talks. There is open space and plenty of other things to do. The raw data includes talk interest calculated before and after the conference from the schedule app. These correlate (@ about 97%) with actual attendance. How that works out is a post by its self as there are finer grained details.</p>
<p>I am thinking of finding corrilations within the data and then using that to compute weights to be used against the voting counts. Then using that to discount the green votes by the attendance and yellow and red votes. The end result will be quite noisy and most of the talks will fall within the delta error. Many of the talks will fall above the delta error and we can use those for determining which speakers to give invited talks and to influence the program commitee decisions next year. This information would also be valuable in conjunction with the online and printes survey information (to come later) for speakers.</p>
<p>If someone would like to help me with this I would be ever grateful. I love working on stuff like this but we need to start working on the 2010 stuff yesturday (actually some people have been working on PyCon 2010 Atlanta for months).</p>
]]></content:encoded>
			<wfw:commentRss>http://dougma.com/archives/160/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PyCon Progress Report</title>
		<link>http://dougma.com/archives/158</link>
		<comments>http://dougma.com/archives/158#comments</comments>
		<pubDate>Thu, 19 Mar 2009 13:52:49 +0000</pubDate>
		<dc:creator>doug</dc:creator>
				<category><![CDATA[pycon]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.dougma.com/?p=158</guid>
		<description><![CDATA[PyCon is less than a week away. Where has the time gone? Registration Online registration is closed. The full count is not determined yet (due to sponsor passes, financial aid, and a few minor issues) but attendance will be around 850, but could be as high as 900. We had 400 people in &#8217;06, 600 [...]]]></description>
			<content:encoded><![CDATA[<p>PyCon is less than a week away. Where has the time gone?</p>
<p><strong>Registration</strong></p>
<p>Online registration is closed. The full count is not determined yet (due to sponsor passes, financial aid, and a few minor issues) but attendance will be around 850, but could be as high as 900. We had 400 people in &#8217;06, 600 in &#8217;07, and bearly broke 1K in &#8217;08. With the dramatic downturn in the economy and corporations removing all travel and conference expenses, this is astounding! Initially we were planning on about 1200 (plan made back in April last year), and some believed halving that number would be a better estimate not long ago (well I made statements to that effect anyway).</p>
<p>The new registration system this year is fantastic (Granted anything would be better than last years mess). Massimo, Yarkot and Carl really out did them selves. A. M. K., Yarkot, Massimo, Carl, David, and Kurt have done an outstanding job managing all the issues and fielding attendee requests. Early on I was keeping track of issues which poped up on the reg list to make sure someone was taking care of them (but insanely thankful I was not doing it this year). I stopped after 3 weeks as I was just wasting my time. There were a few kinks here and there, but they were minor.</p>
<p><strong>The Schedule</strong></p>
<p>I never did a follow-up on the program committee work, mainly due to time and general program burnout. I think the schedule is fantastic. If you don&#8217;t like the way the talks are scheduled, you can blame me. I stole the job from the person whom was doing it and unilaterally put together the schedule you now see. It was a beast of a job. I tried to get the talks placed into tracks. A testing track, a core python track, etc. I also tried to make sure no two talks occuring at the same time would appeal to the same people. I also tried to balance the talk levels to ensure there was something for every level at a given time and that tracks progressed across the conference. That way you could go to a beginner talk on a subject on the morning and be ready for an intermediate talk on teh same subject in the evening or the next day. Against that backdrop there was also the requirement that anyone giving multiple talks would have those talks given on different days. Some speakers have 2 talks, none have more than that, and it is key to only give one core talk a day if you want the quality to be maintained. Also there was the problem of the talk lengths&#8230;.. My first draft has some glaring errors in it which thankfully other noticed.</p>
<p>Last night I actually made it to the Boston Python Meetup. There 3 PyCon presentations were given and they were&#8230; encredible! I am sooo glad I was able to make it. At first I went because I wanted to see the talks so I could see other talks at Pycon during those times. I will be attending <a href="http://us.pycon.org/2009/conference/schedule/event/69/">Jesse Noller&#8217;s talk</a> again at PyCon. I know I will learn more by seeing it a second time, and I learned quite a bit seeing it the first time. The other two talks have already spawned some changes to plans at PyCon which I will hold off on mentioning until I hear back from people.</p>
<p><strong>Audio Visual</strong></p>
<p>I did not mention this is the volunteer post because I did not want it to get lost there. This year Carl has put together an absolutely insane proposal for AV. He has a dedicated staff for managing the AV complete with capture systems (to capture the raw feed going to the projectors), camera operators, a mixer, and an editor doing real-time production!!! If we wanted to put in some extra effort (and a fair amount of cash) we could broadcast live! I would not expect TED level quality, but the samples produced so far are on par with google talks.</p>
<p><strong>Misc</strong></p>
<p>We gave out a mamoth amount in financial aid (don&#8217;t have the number from Ted yet). Open Space use is booming. Sprints are picking up speed and people quite fast. It is going to be a very enjoyable PyCon this year!</p>
<p><strong>Question</strong></p>
<p>The PyCon Lab: Solve This! is most likely going to be held as an Open Space this year. How much interest do people have in this? It has not been properly advertised yet. I am not running it this year, but I will try to poke my head in.</p>
]]></content:encoded>
			<wfw:commentRss>http://dougma.com/archives/158/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>HELP!!!!</title>
		<link>http://dougma.com/archives/155</link>
		<comments>http://dougma.com/archives/155#comments</comments>
		<pubDate>Thu, 19 Mar 2009 10:13:44 +0000</pubDate>
		<dc:creator>doug</dc:creator>
				<category><![CDATA[pycon]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.dougma.com/?p=155</guid>
		<description><![CDATA[Ok, I just put up a post on the PyCon blog asking for help, and I have to say I dropped the ball here. I could come up with a number of excuses, but the truth is I should have gotten out a call for volunteers months ago. So if you are going to PyCon [...]]]></description>
			<content:encoded><![CDATA[<p>Ok, I just put up a post on the <a href="http://pycon.blogspot.com/2009/03/pycon-needs-your-help.html">PyCon blog asking for help</a>, and I have to say I dropped the ball here. I could come up with a number of excuses, but the truth is I should have gotten out a call for volunteers months ago. So if you are going to PyCon please consider volunteering as a <a href="http://us.pycon.org/2009/helping/session_staff/">Session Runner</a>. Below is a rambling laundry list of changes at PyCon this year. These come directly from feedback from previous year attendees, speakers and volunteers. We can not make it happen without more help. Wether that help be as part of the Session Staff or as part of the general <a href="http://us.pycon.org/2009/helping/volunteers/">Volunteer Mob</a>, we need the community to step up to make it a much better experience for all.</p>
<p><strong>Session Runners<br />
</strong></p>
<p>We need Session Runners desperatly. The job is easy; much easier than being a Session Chair (which we also need). You volunteer for a set of 2-3 talks in a session, so it&#8217;s not for even a full day. You meet with presenters in the Green Room before thier talk. Help them test their laptop and get thier slides ready. Maybe you get a copy of the slides on a USB drive. You then go with them to the talk and help them hook the machine up if they need help. If there are people interested in an Open Space continuation from the previous talk, you help them get a room and get it posted on the board. If not, help the Session Chair move people out from the provious talk if needed. After that, you do whatever you want until 15min before the next talk. This means that you might miss the beginning or ending of a few talks, but beyond that you get to talk to cool presenters and keep things running smoothly.</p>
<p><strong>The Perks</strong></p>
<p>You get to have a cool radio with headset (either boom, or secret-service style). You get access to Green Room food (just the normal snacks but available durring non-break times). You get to meet and work with the speekers one-on-one. You get to help the conference run much more smoothly, allowing the talk time to be the talk, and not setup or breakdown. You get a ribbon for your badge (if you want it)! By helping out for one session, you are ensuring we have enough volunteers to cover the other sessions so that you are not having talk time wasted watching a presenter set up his laptop instead of presenting. That last one seems like reason enough to me.</p>
<p><strong>A Green Room/OPS for PyCon<br />
</strong></p>
<p>Here is the deal. In past years I have noticed a number of small problems which crop up at PyCon, each in and of themselves are not really a big deal. Together they amount to a fair amount of lost time and wasted effort. Much of that wasted effort is in trying to solve specific problems! This year I want to try an experiment to see if we can put in place a framework for dealing with problems in general. The number one way you can improve the ability to deal with a problem at a conference: <strong>communication</strong>. With that said I will still try to target some specific issues raised in the past.</p>
<p>Session Staff and many department heads will have radios with headsets. We will be able to communicate with key people very quickly and be able to get information out FAST. We could have prevented some rather public issues last year if we had this simple tool alone. These are not toys and we have a limited supply. They are public band FRS radios, so the world will hear us. I won&#8217;t bother with more &#8216;radio&#8217; details here, but the point is between the radios and onside &#8216;general volunteer mob&#8217; we should be able to get communication to and from key organizers solved.</p>
<p>The Green Room/OPS (behind the registration desk) will be a communication hub with white boards and a fixed radio. Session Chairs whom are stuck in a room will have a means of communicating and getting help at the push of a button. Knowledge of which speakers have arrived already and which are MIA will be known (without having to search stacks of badges). When a speaker, volunteer, or sponsor has a question, they will have a central place from which they can be directed to someone whom can answer thier question. We might not have the answer at OPS, but we will know who does. General attendee questions will be handled at the volunteer center next to registration, or at registration its self.</p>
<p>One of the main things I want to achieve with the Green Room is to give back to the speakers. Those who present at PyCon pay their own way, just like attendees, yet we historically have not treated them very well. These are people whom we are asking to come and present after a grueling review process. They often miss out on the break food. They have to bring their own equipment and set it up them selves (cutting into their presentation time). They are just expected to be where they are supposed to be with no real support or communication. On the other side the Session Chairs and organizers are also volunteers whom pay their own way. They have no clue where the speakers are, what problems are going to come up, and have little forewarning, if any, about special needs of presenters. In the end we have a mass of people at the podium after every talk, no clue if the next speaker is even in the building and the first 5min of every talk is watching the presenter hook up their laptop. In theatre, we call this a farce.</p>
<p><strong>Massive Laundry List O Changes</strong></p>
<p><em>See.. we do listen <img src='http://dougma.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </em></p>
<ul>
<li>Public Volunteer Center (next to registration)</li>
<li>Large board for people to post stuff (&#8216;Hey Bob, we are at Uno&#8217;s!&#8217;)</li>
<li>Tons more Lightning talk sessions (two a day!) all via signup sheet at the conference</li>
<li>Financial Aid forms are dropped off in Volunteer Center (Ted will collect, make checks, and distribute at a set time each day in the green room. Exact details will be sent to those whom received aid via e-mail)</li>
<li>Session Chairs are provided stop watches</li>
<li>Session Chairs are provided largeish signs on sticks with 15, 10, 5, and STOP for clearly alerting speakers</li>
<li>Session Staff are not all alone in a room, but can call on volunteers and will have help for the transitions</li>
<li>Radios for Session Staff and Dept Heads (mine can make a duck call!)</li>
<li>Speakers go to the Green Room after registration to check in and get a personalized handout</li>
<li>Speakers go to the Green Room before talks to get prepped so they are ready to go immediatly when their talk starts</li>
<li>Speakers and Session Staff are introduced to each other earlier whenever possible</li>
<li>Printers, a duplicate projection setup, and display adapters in the Green Room will allow problems and talks to be prepped BEFORE the podium</li>
<li>Speakers and Session Staff have access to snacks in the green room (nothing special, but just this small thing will have a huge impact)</li>
<li>If presenters or attendees wish to have an Open Space followup, Session Runners will have do the leg work to get the room assigned. Session Runners and Chairs can help prompt people and even make announcements. The Open Space need not occur immediately</li>
<li>Session Runners will have USB drives for getting the talk slides just before the talk, and get them up on the website for the presenters</li>
<li>Session Runners and Chairs will be able to edit talk descriptions on the website for adding links and other information promised during Q&amp;A</li>
<li>Most transitions between talks are now 10min instead of 5! (This will make a huge difference in the talk transitions and overages which always occur)</li>
<li>Badge Ribbons (for those who want them) The rainbow &#8216;VOLUNTEER&#8217; ribbon is pretty&#8230;. shiny&#8230;. you know you want one&#8230; you know what you must do to get one&#8230;. precious&#8230;.</li>
<li>A <strong>brief</strong> orientation for speakers and session staff on Friday evening to get everyone on the same page. Then anyone whom can not make that session will have plenty of people who can fill them in!</li>
<li>They key is to get as much information to as many people in a timely manner. If everyone is up to date on the information, then we can work together to solve the problems that arise instead of against each other due to lack of information and co-ordination.</li>
</ul>
<p>There is a bunch more minor things as well which may or may not occur depending. The Idea is to see what works and what doesn&#8217;t, try to only do the things which work, and share that knowledge with everyone else. If something in the above list is causing more problems than helping, then we will stop doing it. Simple as that.</p>
]]></content:encoded>
			<wfw:commentRss>http://dougma.com/archives/155/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Apologies to Ned Blatchard</title>
		<link>http://dougma.com/archives/153</link>
		<comments>http://dougma.com/archives/153#comments</comments>
		<pubDate>Thu, 19 Feb 2009 00:29:30 +0000</pubDate>
		<dc:creator>doug</dc:creator>
				<category><![CDATA[boston-pig]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[pycon]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.dougma.com/?p=153</guid>
		<description><![CDATA[Right now (as I am typing this) Ned Batchelder is giving his &#8220;A Whirlwind Excursion through C Extensions&#8221; talk at the Boston Python Meetup. This is a talk which he will be giving at PyCon; a talk I argued for as part of the program committee (with full conflict of interest information given). It is [...]]]></description>
			<content:encoded><![CDATA[<p>Right now <em>(as I am typing this)</em> <a href="http://nedbatchelder.com/blog/">Ned Batchelder</a> is giving his &#8220;<a href="http://us.pycon.org/2009/conference/schedule/event/35/"><span class="offsite">A Whirlwind Excursion through C Extensions</span></a>&#8221; talk at the <a href="http://python.meetup.com/181/calendar/9577198/">Boston Python Meetup</a>. This is a talk which he will be giving at <a href="http://us.pycon.org/2009/conference/schedule/">PyCon</a>; a talk I argued for as part of the program committee (with full conflict of interest information given). It is scheduled against some other very good talks (I know, I did the schedule, mores the fool me). I did want to have a chance to see this talk before PyCon in the small atmosphere that is Beta House, and have a chance to give feedback and ask more questions than I ever will later on. I feel like I am failing here. The snow was just the last straw on top of an already insane schedule.</p>
<p>Besides, why travel 30min to see and help a friend when we can both travel half a continent in a few weeks and not talk to each other there!</p>
<p>So here is a public apology of sorts to Ned. I hope we can connect at PyCon and have a chance to chat for more than 5min.</p>
<p>With luck the video of the presentation will be put up on <a href="http://www.ustream.tv/natea/videos">ustream</a> soon like the James Tauber Pinax one was (James is 15min away from me, same story).</p>
]]></content:encoded>
			<wfw:commentRss>http://dougma.com/archives/153/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>If its worth overdoing, its worth REALY overdoing</title>
		<link>http://dougma.com/archives/142</link>
		<comments>http://dougma.com/archives/142#comments</comments>
		<pubDate>Sat, 08 Nov 2008 04:22:15 +0000</pubDate>
		<dc:creator>doug</dc:creator>
				<category><![CDATA[pycon]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.dougma.com/?p=142</guid>
		<description><![CDATA[1 hour per frame, 24 frames per second, 1 second per day, 40 days. High res avi is here (14Meg).]]></description>
			<content:encoded><![CDATA[<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="350" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.youtube.com/v/F8qwxzQar2g" /><embed type="application/x-shockwave-flash" width="425" height="350" src="http://www.youtube.com/v/F8qwxzQar2g"></embed></object></p>
<p>1 hour per frame, 24 frames per second, 1 second per day, 40 days.</p>
<p><a href="http://www.dougma.com/wp-content/uploads/2008/11/pc1.avi">High res avi is here</a> (14Meg).</p>
]]></content:encoded>
			<wfw:commentRss>http://dougma.com/archives/142/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
<enclosure url="http://www.dougma.com/wp-content/uploads/2008/11/pc1.avi" length="0" type="video/x-msvideo" />
		</item>
		<item>
		<title>Thank you for your PyCon proposals!</title>
		<link>http://dougma.com/archives/140</link>
		<comments>http://dougma.com/archives/140#comments</comments>
		<pubDate>Thu, 06 Nov 2008 07:35:51 +0000</pubDate>
		<dc:creator>doug</dc:creator>
				<category><![CDATA[pycon]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.dougma.com/?p=140</guid>
		<description><![CDATA[Just wanted to give a status update to all those who are wondering what is going on with the PyCon US 2009 program committee. We have recieved 109 proposals. (NOTE: there is now a dynamic image URL so you can embed the above graph in your blog! You need to right click as it uses  [...]]]></description>
			<content:encoded><![CDATA[<p>Just wanted to give a status update to all those who are wondering what is going on with the PyCon US 2009 program committee.</p>
<p style="text-align: center;"><a href="http://us.pycon.org/2009/conference/proposals/stats/"><img class="aligncenter" src="http://us.pycon.org/2009/conference/proposals/stats_chart_url/" alt="" width="600" height="300" /></a></p>
<p>We have <a href="http://us.pycon.org/2009/conference/proposals/stats/">recieved 109 proposals</a>. <em>(NOTE: there is now a <a href="http://us.pycon.org/2009/conference/proposals/stats_chart_url/">dynamic image URL</a> so you can embed the above graph in your blog! You need to right click as it uses  redirect.)</em></p>
<p>This number is lower than last year, but that is to be expected. Why? Because:</p>
<ol>
<li>We did not advertise like last year (where we actually paid for professional help to get the call for proposals announced all over the place).</li>
<li>We did not announce it in popular IRC channels like in past years</li>
<li>We started collecting proposals later than last year</li>
<li>We had a much shorter submission period this year (even before last years extension)</li>
<li>We did not extend the submission period like we did last year</li>
<li>We did not put out regular announcements of the deadline approaching like we did last year</li>
<li>There have <a href="http://liwo.polsl.pl/pycon-pl">been</a> <a href="http://www.pyohio.org/">a</a> <a href="http://fr.pycon.org/">TON</a> <a href="http://www.python.com.ar/">of</a> <a href="http://pyworks.mtacon.com/">new</a> <a href="http://pycamp.python.org/Arkansas/HomePage">regional</a> <a href="http://www.pyconbrasil.com.br/">and</a> <a href="http://www.europython.org/">international</a> <a href="http://www.pyconuk.org/">python</a> <a href="http://www.pycon.it/">conferences</a> this year</li>
<li>The economy?</li>
</ol>
<p>Seriously, I am shocked that given all that, we still got the number of proposals we did. I am also ecstatic to say that we have <strong>39 reviewers</strong> from a broad cross section of the python community. We also have a number of invited speakers. These speakers were selected from the feedback forms from previous years and from general feedback from the greater community. The organizers and the Program Committee reviewed feedback from 08 (the surveys, blog posts, reddit, and mailing lists, IRC logs, etc) in an attempt to discover what things worked last year, the things which did not, and how to do better.</p>
<p><strong>So what is happening now?</strong></p>
<p>The program committee is activly commenting on and reviewing the proposals. At the time of my writting this, there have been <strong>170</strong> comments. We use comments to communicate with the authors for clarifications and to suggest changes. Authors can still edit their proposals and we are working towards reaching a critical mass. As of this post there are only 132 reviews written. That number will grow to well over 400 before we are done. That is a monumantal effort for the program committee, and it is just the tip of the iceburg.</p>
<p><strong>What happens after that?</strong></p>
<p>Once the comment period is over, the PC will will head into the home stretch for reviewing. The proposals will be made read only and the PC will make final review edits, and ensure that there are no proposals which are under reviewed. That is where the fun begins; if you consider trying to get 40 people to all agree on anything fun. I won&#8217;t bother rehashing how that happens without thing degrading into chaos except to say that should not given the processes used.</p>
<p><strong>What do you think so far?</strong></p>
<p>There has been quite a bit of discussion on the pycon-pc list on how reviews should be written, how best to communicate issues with the authors via comments, and how to manage the PC effort. Even though the core of the process is stable, every year it is different. One complaint last year was that there was not enough transparency with this process. I have tried to address some of this in blog posts, etc. and this is part of said effort. One missing element is early <strong>public</strong> discussion on the PC from submitters, reviewers, and the general community. So lets start some of that right now.</p>
<p>If you are so inclined please leave a comment on this post on your thoughts about the process thus far. Please mention if you are a reviewer or proposal author for this year, for a previous year, a past PyCon US attendee, or just someone in the general community.</p>
<p>There are some very strong opinions out there, so please do not get upset just because you don&#8217;t agree with someone elses opinion and please keep it civil.</p>
<p><strong>UPDATE:</strong> Yes the registration system had issues, we are talking about the program committee. No, authors were not hidden from the reviewers last year, that is a myth I have attempted to debunk time and again. Yes, we all know the sponsor lightning talks were a mistake, that horse is pulp; I will delete any comments brining that up. Same goes for any comments with profanity. <em>*sigh*</em></p>
]]></content:encoded>
			<wfw:commentRss>http://dougma.com/archives/140/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

