<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.xiph.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nickmudd</id>
	<title>XiphWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.xiph.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nickmudd"/>
	<link rel="alternate" type="text/html" href="https://wiki.xiph.org/Special:Contributions/Nickmudd"/>
	<updated>2026-04-28T09:00:50Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://wiki.xiph.org/index.php?title=Icebreaker::Worklog&amp;diff=7244</id>
		<title>Icebreaker::Worklog</title>
		<link rel="alternate" type="text/html" href="https://wiki.xiph.org/index.php?title=Icebreaker::Worklog&amp;diff=7244"/>
		<updated>2007-08-14T19:45:25Z</updated>

		<summary type="html">&lt;p&gt;Nickmudd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Week 1 May 28-June 4&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Spent time reading.&amp;lt;br&amp;gt;&lt;br /&gt;
Started Wiki, sent mail to Icecast-dev.&amp;lt;br&amp;gt;&lt;br /&gt;
Started learning TurboGears.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 5&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Changed MySQLdb to SQLObject in populate.py&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 6&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Added genre support to populate.py.&lt;br /&gt;
Committed populate.py and config.py to svn.&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 7-9&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Reading &#039;&#039;Producing Open Source Software&#039;&#039; and &#039;&#039;Rapid Web Applications with TurboGears.&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
I&#039;ve had a fever and sinus infection, and been away from the computer a lot.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 10-13&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
More reading. Pleased to report that my sinus infection is gone and I am much better.&amp;lt;br&amp;gt;&lt;br /&gt;
Started designing database, writing pseudocode to figure out how to switch playlists, etc.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 14-15&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Reading &#039;&#039;Rapid Web Applications with TurboGears&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 16-17&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
In Chicago for the Cubs game.&amp;lt;br&amp;gt;&lt;br /&gt;
Didn&#039;t read much, just at the hotel at night.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 18&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Even more reading in &#039;&#039;Rapid Web Applications with TurboGears&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
I&#039;m beginning to realize I repeat myself a lot.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 19&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Finally started working on TurboGears frontend.&amp;lt;br&amp;gt;&lt;br /&gt;
Planning on committing the project to svn this afternoon after I get a few things written in there, just so I can get SOMETHING in svn because I feel like a slacker.&amp;lt;br&amp;gt;&lt;br /&gt;
Committed initial project files to svn.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 20-24&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Added views to TurboGears app.&amp;lt;br&amp;gt;&lt;br /&gt;
Added sample metadata to database.&amp;lt;br&amp;gt;&lt;br /&gt;
Reading more in &#039;&#039;Rapid Web Applications with TurboGears&#039;&#039; to figure out how to get data from forms and stuff.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 25-27&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Some more reading and trying to figure out forms.&amp;lt;br&amp;gt;&lt;br /&gt;
I&#039;m looking at Select-Shuttle TurboGears widget for picking tracks from the database, but then i still have to make filtering the data work. Any suggestions?&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 28&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Select-shuttle isn&#039;t working, trying to find documentation, help on #turbogears.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 29&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Added README file.&amp;lt;br&amp;gt;&lt;br /&gt;
Did some work in controllers.py to see if that jump starts the form, it doesn&#039;t.&amp;lt;br&amp;gt;&lt;br /&gt;
Took a look in the toolbox and specifically Select-shuttle&#039;s widgets.py and found a few clues, updated controllers.py and create.kid.&amp;lt;br&amp;gt;&lt;br /&gt;
create.kid was all wrong, all it needed was a few lines of code. controllers.py needed the variables I supplied to be passed to a select-shuttle module and then assigned to a new object i called create.&amp;lt;br&amp;gt;&lt;br /&gt;
Putting that into controllers.py did not work, I got the error &amp;quot;name &#039;create&#039; is not defined.&amp;quot; I decided to define it in create.kid also, the form displayed but did not jump values. I am not sure what difference that made.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 30-July 1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
I searched online to find the cause of the values not switching lists, I decided it must be related to javascript, but since i know nothing of javascript i have no idea what the problem is.&amp;lt;br&amp;gt;&lt;br /&gt;
I still searched to figure out why create wont get defined in controllers.py. Google code search didnt get me any examples, and i found no tutorials and only an antiquated explanation of its function on a mailing list.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 2-3&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Sent an email to Conrad asking for some help. Asked around in #turbogears for help, got no response. Repeated search for documentation and the like.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 4&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Happy Independence Day, I celebrated by drinking a few pints of some tasty British ales. MMMMMMMMMMM Nothing like celebrating our independence from the British than drinking British beer.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 5&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
The usual searching, sent an email to the author of Select-Shuttle and as of 7-10 have no response.&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 6&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Decided to lay off searching for a while to get real work done, started the backend.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 7&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Read Chapter 12 &amp;quot;Time Operations&amp;quot; and Chapter 13 &amp;quot;Controlling Execution&amp;quot; in &#039;&#039;Python In a Nutshell&#039;&#039; to see how to handle the date/time stuff in the backend and see if i could find out how to make it a daemon.&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 8&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Heard back from Conrad.&amp;lt;br&amp;gt;&lt;br /&gt;
Made a few minor changes to create.kid&amp;lt;br&amp;gt;&lt;br /&gt;
Work on the backend.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 9-11&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Found a bit of code on how to daemonize. Cannibalizing it and my old script to make a new one.&amp;lt;br&amp;gt;&lt;br /&gt;
Added new variables to config.py.&amp;lt;br&amp;gt;&lt;br /&gt;
Removed python code block from create.kid, making it the correct way of handling things.&amp;lt;br&amp;gt;&lt;br /&gt;
If I cant get Select-shuttle going Im just gonna write my own forms by hand and use some ajax to do the job, its more code, but at least users wont have to download and install Select-shuttle as a dependency.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 12-13&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Realized that I didn&#039;t put support in icebreaker.py for stopping a playlist. For example, if I schedule a playlist to run from 7pm to 9pm it should switch off of the list onto shuffle mode or to another list.Doing a little re-working to get it the way it should work.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 14-15&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Edited icebreaker.py to make stop times work. Moved some stuff around, worked out some logical stuff on paper.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 16-17&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Worked on icebreaker.py, asked around on #turbogears for some help with forms. Power went out from 8am until after midnight so I got nothing done on the 17th.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 18&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Committed new version of icebreaker.py.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 19-24&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Fried computer, spent time reading and waiting on new computer to get here.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 25-29&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Installed Ubuntu on new computer, wrestled with TurboGears, gave up on TurboGears, moved on to the backend.&lt;br /&gt;
I also cracked the screen on my laptop, my BRAND NEW laptop, and had to send it in for repair. I&#039;ve invested in a nice laptop case for it and I hope for that to never happen again. I was off of the internet completely for almost 2.5 weeks. Luckily it was under warranty but I lost a lot of time.&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;August 14&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
I got the laptop back and started up work again. I want to switch from TurboGears to PyGTK. TurboGears sucks. I looked into Pylons and didnt feel like messing with that sort of thing again. If I want a Web interface at a later time, I will find a better way of doing it, probably writing my own self-contained program.&lt;/div&gt;</summary>
		<author><name>Nickmudd</name></author>
	</entry>
	<entry>
		<id>https://wiki.xiph.org/index.php?title=Icebreaker::Worklog&amp;diff=7243</id>
		<title>Icebreaker::Worklog</title>
		<link rel="alternate" type="text/html" href="https://wiki.xiph.org/index.php?title=Icebreaker::Worklog&amp;diff=7243"/>
		<updated>2007-08-14T19:41:25Z</updated>

		<summary type="html">&lt;p&gt;Nickmudd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Week 1 May 28-June 4&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Spent time reading.&amp;lt;br&amp;gt;&lt;br /&gt;
Started Wiki, sent mail to Icecast-dev.&amp;lt;br&amp;gt;&lt;br /&gt;
Started learning TurboGears.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 5&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Changed MySQLdb to SQLObject in populate.py&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 6&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Added genre support to populate.py.&lt;br /&gt;
Committed populate.py and config.py to svn.&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 7-9&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Reading &#039;&#039;Producing Open Source Software&#039;&#039; and &#039;&#039;Rapid Web Applications with TurboGears.&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
I&#039;ve had a fever and sinus infection, and been away from the computer a lot.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 10-13&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
More reading. Pleased to report that my sinus infection is gone and I am much better.&amp;lt;br&amp;gt;&lt;br /&gt;
Started designing database, writing pseudocode to figure out how to switch playlists, etc.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 14-15&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Reading &#039;&#039;Rapid Web Applications with TurboGears&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 16-17&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
In Chicago for the Cubs game.&amp;lt;br&amp;gt;&lt;br /&gt;
Didn&#039;t read much, just at the hotel at night.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 18&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Even more reading in &#039;&#039;Rapid Web Applications with TurboGears&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
I&#039;m beginning to realize I repeat myself a lot.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 19&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Finally started working on TurboGears frontend.&amp;lt;br&amp;gt;&lt;br /&gt;
Planning on committing the project to svn this afternoon after I get a few things written in there, just so I can get SOMETHING in svn because I feel like a slacker.&amp;lt;br&amp;gt;&lt;br /&gt;
Committed initial project files to svn.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 20-24&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Added views to TurboGears app.&amp;lt;br&amp;gt;&lt;br /&gt;
Added sample metadata to database.&amp;lt;br&amp;gt;&lt;br /&gt;
Reading more in &#039;&#039;Rapid Web Applications with TurboGears&#039;&#039; to figure out how to get data from forms and stuff.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 25-27&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Some more reading and trying to figure out forms.&amp;lt;br&amp;gt;&lt;br /&gt;
I&#039;m looking at Select-Shuttle TurboGears widget for picking tracks from the database, but then i still have to make filtering the data work. Any suggestions?&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 28&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Select-shuttle isn&#039;t working, trying to find documentation, help on #turbogears.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 29&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Added README file.&amp;lt;br&amp;gt;&lt;br /&gt;
Did some work in controllers.py to see if that jump starts the form, it doesn&#039;t.&amp;lt;br&amp;gt;&lt;br /&gt;
Took a look in the toolbox and specifically Select-shuttle&#039;s widgets.py and found a few clues, updated controllers.py and create.kid.&amp;lt;br&amp;gt;&lt;br /&gt;
create.kid was all wrong, all it needed was a few lines of code. controllers.py needed the variables I supplied to be passed to a select-shuttle module and then assigned to a new object i called create.&amp;lt;br&amp;gt;&lt;br /&gt;
Putting that into controllers.py did not work, I got the error &amp;quot;name &#039;create&#039; is not defined.&amp;quot; I decided to define it in create.kid also, the form displayed but did not jump values. I am not sure what difference that made.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 30-July 1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
I searched online to find the cause of the values not switching lists, I decided it must be related to javascript, but since i know nothing of javascript i have no idea what the problem is.&amp;lt;br&amp;gt;&lt;br /&gt;
I still searched to figure out why create wont get defined in controllers.py. Google code search didnt get me any examples, and i found no tutorials and only an antiquated explanation of its function on a mailing list.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 2-3&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Sent an email to Conrad asking for some help. Asked around in #turbogears for help, got no response. Repeated search for documentation and the like.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 4&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Happy Independence Day, I celebrated by drinking a few pints of some tasty British ales. MMMMMMMMMMM Nothing like celebrating our independence from the British than drinking British beer.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 5&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
The usual searching, sent an email to the author of Select-Shuttle and as of 7-10 have no response.&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 6&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Decided to lay off searching for a while to get real work done, started the backend.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 7&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Read Chapter 12 &amp;quot;Time Operations&amp;quot; and Chapter 13 &amp;quot;Controlling Execution&amp;quot; in &#039;&#039;Python In a Nutshell&#039;&#039; to see how to handle the date/time stuff in the backend and see if i could find out how to make it a daemon.&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 8&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Heard back from Conrad.&amp;lt;br&amp;gt;&lt;br /&gt;
Made a few minor changes to create.kid&amp;lt;br&amp;gt;&lt;br /&gt;
Work on the backend.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 9-11&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Found a bit of code on how to daemonize. Cannibalizing it and my old script to make a new one.&amp;lt;br&amp;gt;&lt;br /&gt;
Added new variables to config.py.&amp;lt;br&amp;gt;&lt;br /&gt;
Removed python code block from create.kid, making it the correct way of handling things.&amp;lt;br&amp;gt;&lt;br /&gt;
If I cant get Select-shuttle going Im just gonna write my own forms by hand and use some ajax to do the job, its more code, but at least users wont have to download and install Select-shuttle as a dependency.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 12-13&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Realized that I didn&#039;t put support in icebreaker.py for stopping a playlist. For example, if I schedule a playlist to run from 7pm to 9pm it should switch off of the list onto shuffle mode or to another list.Doing a little re-working to get it the way it should work.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 14-15&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Edited icebreaker.py to make stop times work. Moved some stuff around, worked out some logical stuff on paper.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 16-17&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Worked on icebreaker.py, asked around on #turbogears for some help with forms. Power went out from 8am until after midnight so I got nothing done on the 17th.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 18&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Committed new version of icebreaker.py.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 19-24&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Fried computer, spent time reading and waiting on new computer to get here.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 25-29&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Installed Ubuntu on new computer, wrestled with TurboGears, gave up on TurboGears, moved on to the backend.&lt;br /&gt;
I also cracked the screen on my laptop, my BRAND NEW laptop, and had to send it in for repair. I&#039;ve invested in a nice laptop case for it and I hope for that to never happen again. I was off of the internet completely for almost 2.5 weeks. Luckily it was under warranty but I lost a lot of time.&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Nickmudd</name></author>
	</entry>
	<entry>
		<id>https://wiki.xiph.org/index.php?title=Icebreaker::Worklog&amp;diff=7130</id>
		<title>Icebreaker::Worklog</title>
		<link rel="alternate" type="text/html" href="https://wiki.xiph.org/index.php?title=Icebreaker::Worklog&amp;diff=7130"/>
		<updated>2007-07-25T09:14:53Z</updated>

		<summary type="html">&lt;p&gt;Nickmudd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Week 1 May 28-June 4&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Spent time reading.&amp;lt;br&amp;gt;&lt;br /&gt;
Started Wiki, sent mail to Icecast-dev.&amp;lt;br&amp;gt;&lt;br /&gt;
Started learning TurboGears.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 5&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Changed MySQLdb to SQLObject in populate.py&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 6&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Added genre support to populate.py.&lt;br /&gt;
Committed populate.py and config.py to svn.&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 7-9&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Reading &#039;&#039;Producing Open Source Software&#039;&#039; and &#039;&#039;Rapid Web Applications with TurboGears.&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
I&#039;ve had a fever and sinus infection, and been away from the computer a lot.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 10-13&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
More reading. Pleased to report that my sinus infection is gone and I am much better.&amp;lt;br&amp;gt;&lt;br /&gt;
Started designing database, writing pseudocode to figure out how to switch playlists, etc.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 14-15&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Reading &#039;&#039;Rapid Web Applications with TurboGears&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 16-17&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
In Chicago for the Cubs game.&amp;lt;br&amp;gt;&lt;br /&gt;
Didn&#039;t read much, just at the hotel at night.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 18&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Even more reading in &#039;&#039;Rapid Web Applications with TurboGears&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
I&#039;m beginning to realize I repeat myself a lot.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 19&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Finally started working on TurboGears frontend.&amp;lt;br&amp;gt;&lt;br /&gt;
Planning on committing the project to svn this afternoon after I get a few things written in there, just so I can get SOMETHING in svn because I feel like a slacker.&amp;lt;br&amp;gt;&lt;br /&gt;
Committed initial project files to svn.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 20-24&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Added views to TurboGears app.&amp;lt;br&amp;gt;&lt;br /&gt;
Added sample metadata to database.&amp;lt;br&amp;gt;&lt;br /&gt;
Reading more in &#039;&#039;Rapid Web Applications with TurboGears&#039;&#039; to figure out how to get data from forms and stuff.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 25-27&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Some more reading and trying to figure out forms.&amp;lt;br&amp;gt;&lt;br /&gt;
I&#039;m looking at Select-Shuttle TurboGears widget for picking tracks from the database, but then i still have to make filtering the data work. Any suggestions?&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 28&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Select-shuttle isn&#039;t working, trying to find documentation, help on #turbogears.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 29&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Added README file.&amp;lt;br&amp;gt;&lt;br /&gt;
Did some work in controllers.py to see if that jump starts the form, it doesn&#039;t.&amp;lt;br&amp;gt;&lt;br /&gt;
Took a look in the toolbox and specifically Select-shuttle&#039;s widgets.py and found a few clues, updated controllers.py and create.kid.&amp;lt;br&amp;gt;&lt;br /&gt;
create.kid was all wrong, all it needed was a few lines of code. controllers.py needed the variables I supplied to be passed to a select-shuttle module and then assigned to a new object i called create.&amp;lt;br&amp;gt;&lt;br /&gt;
Putting that into controllers.py did not work, I got the error &amp;quot;name &#039;create&#039; is not defined.&amp;quot; I decided to define it in create.kid also, the form displayed but did not jump values. I am not sure what difference that made.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 30-July 1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
I searched online to find the cause of the values not switching lists, I decided it must be related to javascript, but since i know nothing of javascript i have no idea what the problem is.&amp;lt;br&amp;gt;&lt;br /&gt;
I still searched to figure out why create wont get defined in controllers.py. Google code search didnt get me any examples, and i found no tutorials and only an antiquated explanation of its function on a mailing list.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 2-3&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Sent an email to Conrad asking for some help. Asked around in #turbogears for help, got no response. Repeated search for documentation and the like.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 4&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Happy Independence Day, I celebrated by drinking a few pints of some tasty British ales. MMMMMMMMMMM Nothing like celebrating our independence from the British than drinking British beer.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 5&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
The usual searching, sent an email to the author of Select-Shuttle and as of 7-10 have no response.&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 6&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Decided to lay off searching for a while to get real work done, started the backend.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 7&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Read Chapter 12 &amp;quot;Time Operations&amp;quot; and Chapter 13 &amp;quot;Controlling Execution&amp;quot; in &#039;&#039;Python In a Nutshell&#039;&#039; to see how to handle the date/time stuff in the backend and see if i could find out how to make it a daemon.&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 8&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Heard back from Conrad.&amp;lt;br&amp;gt;&lt;br /&gt;
Made a few minor changes to create.kid&amp;lt;br&amp;gt;&lt;br /&gt;
Work on the backend.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 9-11&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Found a bit of code on how to daemonize. Cannibalizing it and my old script to make a new one.&amp;lt;br&amp;gt;&lt;br /&gt;
Added new variables to config.py.&amp;lt;br&amp;gt;&lt;br /&gt;
Removed python code block from create.kid, making it the correct way of handling things.&amp;lt;br&amp;gt;&lt;br /&gt;
If I cant get Select-shuttle going Im just gonna write my own forms by hand and use some ajax to do the job, its more code, but at least users wont have to download and install Select-shuttle as a dependency.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 12-13&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Realized that I didn&#039;t put support in icebreaker.py for stopping a playlist. For example, if I schedule a playlist to run from 7pm to 9pm it should switch off of the list onto shuffle mode or to another list.Doing a little re-working to get it the way it should work.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 14-15&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Edited icebreaker.py to make stop times work. Moved some stuff around, worked out some logical stuff on paper.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 16-17&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Worked on icebreaker.py, asked around on #turbogears for some help with forms. Power went out from 8am until after midnight so I got nothing done on the 17th.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 18&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Committed new version of icebreaker.py.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 19-24&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Fried computer, spent time reading and waiting on new computer to get here.&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nickmudd</name></author>
	</entry>
	<entry>
		<id>https://wiki.xiph.org/index.php?title=Icebreaker::Worklog&amp;diff=7105</id>
		<title>Icebreaker::Worklog</title>
		<link rel="alternate" type="text/html" href="https://wiki.xiph.org/index.php?title=Icebreaker::Worklog&amp;diff=7105"/>
		<updated>2007-07-18T15:42:49Z</updated>

		<summary type="html">&lt;p&gt;Nickmudd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Week 1 May 28-June 4&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Spent time reading.&amp;lt;br&amp;gt;&lt;br /&gt;
Started Wiki, sent mail to Icecast-dev.&amp;lt;br&amp;gt;&lt;br /&gt;
Started learning TurboGears.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 5&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Changed MySQLdb to SQLObject in populate.py&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 6&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Added genre support to populate.py.&lt;br /&gt;
Committed populate.py and config.py to svn.&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 7-9&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Reading &#039;&#039;Producing Open Source Software&#039;&#039; and &#039;&#039;Rapid Web Applications with TurboGears.&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
I&#039;ve had a fever and sinus infection, and been away from the computer a lot.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 10-13&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
More reading. Pleased to report that my sinus infection is gone and I am much better.&amp;lt;br&amp;gt;&lt;br /&gt;
Started designing database, writing pseudocode to figure out how to switch playlists, etc.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 14-15&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Reading &#039;&#039;Rapid Web Applications with TurboGears&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 16-17&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
In Chicago for the Cubs game.&amp;lt;br&amp;gt;&lt;br /&gt;
Didn&#039;t read much, just at the hotel at night.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 18&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Even more reading in &#039;&#039;Rapid Web Applications with TurboGears&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
I&#039;m beginning to realize I repeat myself a lot.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 19&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Finally started working on TurboGears frontend.&amp;lt;br&amp;gt;&lt;br /&gt;
Planning on committing the project to svn this afternoon after I get a few things written in there, just so I can get SOMETHING in svn because I feel like a slacker.&amp;lt;br&amp;gt;&lt;br /&gt;
Committed initial project files to svn.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 20-24&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Added views to TurboGears app.&amp;lt;br&amp;gt;&lt;br /&gt;
Added sample metadata to database.&amp;lt;br&amp;gt;&lt;br /&gt;
Reading more in &#039;&#039;Rapid Web Applications with TurboGears&#039;&#039; to figure out how to get data from forms and stuff.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 25-27&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Some more reading and trying to figure out forms.&amp;lt;br&amp;gt;&lt;br /&gt;
I&#039;m looking at Select-Shuttle TurboGears widget for picking tracks from the database, but then i still have to make filtering the data work. Any suggestions?&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 28&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Select-shuttle isn&#039;t working, trying to find documentation, help on #turbogears.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 29&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Added README file.&amp;lt;br&amp;gt;&lt;br /&gt;
Did some work in controllers.py to see if that jump starts the form, it doesn&#039;t.&amp;lt;br&amp;gt;&lt;br /&gt;
Took a look in the toolbox and specifically Select-shuttle&#039;s widgets.py and found a few clues, updated controllers.py and create.kid.&amp;lt;br&amp;gt;&lt;br /&gt;
create.kid was all wrong, all it needed was a few lines of code. controllers.py needed the variables I supplied to be passed to a select-shuttle module and then assigned to a new object i called create.&amp;lt;br&amp;gt;&lt;br /&gt;
Putting that into controllers.py did not work, I got the error &amp;quot;name &#039;create&#039; is not defined.&amp;quot; I decided to define it in create.kid also, the form displayed but did not jump values. I am not sure what difference that made.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 30-July 1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
I searched online to find the cause of the values not switching lists, I decided it must be related to javascript, but since i know nothing of javascript i have no idea what the problem is.&amp;lt;br&amp;gt;&lt;br /&gt;
I still searched to figure out why create wont get defined in controllers.py. Google code search didnt get me any examples, and i found no tutorials and only an antiquated explanation of its function on a mailing list.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 2-3&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Sent an email to Conrad asking for some help. Asked around in #turbogears for help, got no response. Repeated search for documentation and the like.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 4&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Happy Independence Day, I celebrated by drinking a few pints of some tasty British ales. MMMMMMMMMMM Nothing like celebrating our independence from the British than drinking British beer.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 5&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
The usual searching, sent an email to the author of Select-Shuttle and as of 7-10 have no response.&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 6&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Decided to lay off searching for a while to get real work done, started the backend.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 7&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Read Chapter 12 &amp;quot;Time Operations&amp;quot; and Chapter 13 &amp;quot;Controlling Execution&amp;quot; in &#039;&#039;Python In a Nutshell&#039;&#039; to see how to handle the date/time stuff in the backend and see if i could find out how to make it a daemon.&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 8&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Heard back from Conrad.&amp;lt;br&amp;gt;&lt;br /&gt;
Made a few minor changes to create.kid&amp;lt;br&amp;gt;&lt;br /&gt;
Work on the backend.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 9-11&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Found a bit of code on how to daemonize. Cannibalizing it and my old script to make a new one.&amp;lt;br&amp;gt;&lt;br /&gt;
Added new variables to config.py.&amp;lt;br&amp;gt;&lt;br /&gt;
Removed python code block from create.kid, making it the correct way of handling things.&amp;lt;br&amp;gt;&lt;br /&gt;
If I cant get Select-shuttle going Im just gonna write my own forms by hand and use some ajax to do the job, its more code, but at least users wont have to download and install Select-shuttle as a dependency.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 12-13&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Realized that I didn&#039;t put support in icebreaker.py for stopping a playlist. For example, if I schedule a playlist to run from 7pm to 9pm it should switch off of the list onto shuffle mode or to another list.Doing a little re-working to get it the way it should work.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 14-15&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Edited icebreaker.py to make stop times work. Moved some stuff around, worked out some logical stuff on paper.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 16-17&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Worked on icebreaker.py, asked around on #turbogears for some help with forms. Power went out from 8am until after midnight so I got nothing done on the 17th.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 18&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Committed new version of icebreaker.py.&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nickmudd</name></author>
	</entry>
	<entry>
		<id>https://wiki.xiph.org/index.php?title=Icebreaker::Worklog&amp;diff=7104</id>
		<title>Icebreaker::Worklog</title>
		<link rel="alternate" type="text/html" href="https://wiki.xiph.org/index.php?title=Icebreaker::Worklog&amp;diff=7104"/>
		<updated>2007-07-18T15:41:38Z</updated>

		<summary type="html">&lt;p&gt;Nickmudd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Week 1 May 28-June 4&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Spent time reading.&amp;lt;br&amp;gt;&lt;br /&gt;
Started Wiki, sent mail to Icecast-dev.&amp;lt;br&amp;gt;&lt;br /&gt;
Started learning TurboGears.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 5&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Changed MySQLdb to SQLObject in populate.py&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 6&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Added genre support to populate.py.&lt;br /&gt;
Committed populate.py and config.py to svn.&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 7-9&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Reading &#039;&#039;Producing Open Source Software&#039;&#039; and &#039;&#039;Rapid Web Applications with TurboGears.&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
I&#039;ve had a fever and sinus infection, and been away from the computer a lot.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 10-13&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
More reading. Pleased to report that my sinus infection is gone and I am much better.&amp;lt;br&amp;gt;&lt;br /&gt;
Started designing database, writing pseudocode to figure out how to switch playlists, etc.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 14-15&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Reading &#039;&#039;Rapid Web Applications with TurboGears&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 16-17&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
In Chicago for the Cubs game.&amp;lt;br&amp;gt;&lt;br /&gt;
Didn&#039;t read much, just at the hotel at night.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 18&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Even more reading in &#039;&#039;Rapid Web Applications with TurboGears&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
I&#039;m beginning to realize I repeat myself a lot.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 19&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Finally started working on TurboGears frontend.&amp;lt;br&amp;gt;&lt;br /&gt;
Planning on committing the project to svn this afternoon after I get a few things written in there, just so I can get SOMETHING in svn because I feel like a slacker.&amp;lt;br&amp;gt;&lt;br /&gt;
Committed initial project files to svn.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 20-24&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Added views to TurboGears app.&amp;lt;br&amp;gt;&lt;br /&gt;
Added sample metadata to database.&amp;lt;br&amp;gt;&lt;br /&gt;
Reading more in &#039;&#039;Rapid Web Applications with TurboGears&#039;&#039; to figure out how to get data from forms and stuff.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 25-27&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Some more reading and trying to figure out forms.&amp;lt;br&amp;gt;&lt;br /&gt;
I&#039;m looking at Select-Shuttle TurboGears widget for picking tracks from the database, but then i still have to make filtering the data work. Any suggestions?&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 28&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Select-shuttle isn&#039;t working, trying to find documentation, help on #turbogears.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 29&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Added README file.&amp;lt;br&amp;gt;&lt;br /&gt;
Did some work in controllers.py to see if that jump starts the form, it doesn&#039;t.&amp;lt;br&amp;gt;&lt;br /&gt;
Took a look in the toolbox and specifically Select-shuttle&#039;s widgets.py and found a few clues, updated controllers.py and create.kid.&amp;lt;br&amp;gt;&lt;br /&gt;
create.kid was all wrong, all it needed was a few lines of code. controllers.py needed the variables I supplied to be passed to a select-shuttle module and then assigned to a new object i called create.&amp;lt;br&amp;gt;&lt;br /&gt;
Putting that into controllers.py did not work, I got the error &amp;quot;name &#039;create&#039; is not defined.&amp;quot; I decided to define it in create.kid also, the form displayed but did not jump values. I am not sure what difference that made.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 30-July 1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
I searched online to find the cause of the values not switching lists, I decided it must be related to javascript, but since i know nothing of javascript i have no idea what the problem is.&amp;lt;br&amp;gt;&lt;br /&gt;
I still searched to figure out why create wont get defined in controllers.py. Google code search didnt get me any examples, and i found no tutorials and only an antiquated explanation of its function on a mailing list.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 2-3&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Sent an email to Conrad asking for some help. Asked around in #turbogears for help, got no response. Repeated search for documentation and the like.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 4&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Happy Independence Day, I celebrated by drinking a few pints of some tasty British ales. MMMMMMMMMMM Nothing like celebrating our independence from the British than drinking British beer.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 5&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
The usual searching, sent an email to the author of Select-Shuttle and as of 7-10 have no response.&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 6&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Decided to lay off searching for a while to get real work done, started the backend.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 7&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Read Chapter 12 &amp;quot;Time Operations&amp;quot; and Chapter 13 &amp;quot;Controlling Execution&amp;quot; in &#039;&#039;Python In a Nutshell&#039;&#039; to see how to handle the date/time stuff in the backend and see if i could find out how to make it a daemon.&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 8&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Heard back from Conrad.&amp;lt;br&amp;gt;&lt;br /&gt;
Made a few minor changes to create.kid&amp;lt;br&amp;gt;&lt;br /&gt;
Work on the backend.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 9-11&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Found a bit of code on how to daemonize. Cannibalizing it and my old script to make a new one.&amp;lt;br&amp;gt;&lt;br /&gt;
Added new variables to config.py.&amp;lt;br&amp;gt;&lt;br /&gt;
Removed python code block from create.kid, making it the correct way of handling things.&amp;lt;br&amp;gt;&lt;br /&gt;
If I cant get Select-shuttle going Im just gonna write my own forms by hand and use some ajax to do the job, its more code, but at least users wont have to download and install Select-shuttle as a dependency.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 12-13&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Realized that I didn&#039;t put support in icebreaker.py for stopping a playlist. For example, if I schedule a playlist to run from 7pm to 9pm it should switch off of the list onto shuffle mode or to another list.Doing a little re-working to get it the way it should work.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 14-15&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Edited icebreaker.py to make stop times work. Moved some stuff around, worked out some logical stuff on paper.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 16-17&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Worked on icebreaker.py, asked around on #turbogears for some help with forms. Power went out from 8am until after midnight so I got nothing done on the 17th.&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nickmudd</name></author>
	</entry>
	<entry>
		<id>https://wiki.xiph.org/index.php?title=Icebreaker::Worklog&amp;diff=7102</id>
		<title>Icebreaker::Worklog</title>
		<link rel="alternate" type="text/html" href="https://wiki.xiph.org/index.php?title=Icebreaker::Worklog&amp;diff=7102"/>
		<updated>2007-07-16T01:08:31Z</updated>

		<summary type="html">&lt;p&gt;Nickmudd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Week 1 May 28-June 4&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Spent time reading.&amp;lt;br&amp;gt;&lt;br /&gt;
Started Wiki, sent mail to Icecast-dev.&amp;lt;br&amp;gt;&lt;br /&gt;
Started learning TurboGears.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 5&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Changed MySQLdb to SQLObject in populate.py&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 6&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Added genre support to populate.py.&lt;br /&gt;
Committed populate.py and config.py to svn.&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 7-9&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Reading &#039;&#039;Producing Open Source Software&#039;&#039; and &#039;&#039;Rapid Web Applications with TurboGears.&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
I&#039;ve had a fever and sinus infection, and been away from the computer a lot.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 10-13&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
More reading. Pleased to report that my sinus infection is gone and I am much better.&amp;lt;br&amp;gt;&lt;br /&gt;
Started designing database, writing pseudocode to figure out how to switch playlists, etc.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 14-15&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Reading &#039;&#039;Rapid Web Applications with TurboGears&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 16-17&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
In Chicago for the Cubs game.&amp;lt;br&amp;gt;&lt;br /&gt;
Didn&#039;t read much, just at the hotel at night.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 18&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Even more reading in &#039;&#039;Rapid Web Applications with TurboGears&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
I&#039;m beginning to realize I repeat myself a lot.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 19&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Finally started working on TurboGears frontend.&amp;lt;br&amp;gt;&lt;br /&gt;
Planning on committing the project to svn this afternoon after I get a few things written in there, just so I can get SOMETHING in svn because I feel like a slacker.&amp;lt;br&amp;gt;&lt;br /&gt;
Committed initial project files to svn.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 20-24&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Added views to TurboGears app.&amp;lt;br&amp;gt;&lt;br /&gt;
Added sample metadata to database.&amp;lt;br&amp;gt;&lt;br /&gt;
Reading more in &#039;&#039;Rapid Web Applications with TurboGears&#039;&#039; to figure out how to get data from forms and stuff.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 25-27&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Some more reading and trying to figure out forms.&amp;lt;br&amp;gt;&lt;br /&gt;
I&#039;m looking at Select-Shuttle TurboGears widget for picking tracks from the database, but then i still have to make filtering the data work. Any suggestions?&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 28&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Select-shuttle isn&#039;t working, trying to find documentation, help on #turbogears.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 29&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Added README file.&amp;lt;br&amp;gt;&lt;br /&gt;
Did some work in controllers.py to see if that jump starts the form, it doesn&#039;t.&amp;lt;br&amp;gt;&lt;br /&gt;
Took a look in the toolbox and specifically Select-shuttle&#039;s widgets.py and found a few clues, updated controllers.py and create.kid.&amp;lt;br&amp;gt;&lt;br /&gt;
create.kid was all wrong, all it needed was a few lines of code. controllers.py needed the variables I supplied to be passed to a select-shuttle module and then assigned to a new object i called create.&amp;lt;br&amp;gt;&lt;br /&gt;
Putting that into controllers.py did not work, I got the error &amp;quot;name &#039;create&#039; is not defined.&amp;quot; I decided to define it in create.kid also, the form displayed but did not jump values. I am not sure what difference that made.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 30-July 1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
I searched online to find the cause of the values not switching lists, I decided it must be related to javascript, but since i know nothing of javascript i have no idea what the problem is.&amp;lt;br&amp;gt;&lt;br /&gt;
I still searched to figure out why create wont get defined in controllers.py. Google code search didnt get me any examples, and i found no tutorials and only an antiquated explanation of its function on a mailing list.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 2-3&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Sent an email to Conrad asking for some help. Asked around in #turbogears for help, got no response. Repeated search for documentation and the like.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 4&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Happy Independence Day, I celebrated by drinking a few pints of some tasty British ales. MMMMMMMMMMM Nothing like celebrating our independence from the British than drinking British beer.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 5&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
The usual searching, sent an email to the author of Select-Shuttle and as of 7-10 have no response.&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 6&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Decided to lay off searching for a while to get real work done, started the backend.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 7&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Read Chapter 12 &amp;quot;Time Operations&amp;quot; and Chapter 13 &amp;quot;Controlling Execution&amp;quot; in &#039;&#039;Python In a Nutshell&#039;&#039; to see how to handle the date/time stuff in the backend and see if i could find out how to make it a daemon.&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 8&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Heard back from Conrad.&amp;lt;br&amp;gt;&lt;br /&gt;
Made a few minor changes to create.kid&amp;lt;br&amp;gt;&lt;br /&gt;
Work on the backend.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 9-11&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Found a bit of code on how to daemonize. Cannibalizing it and my old script to make a new one.&amp;lt;br&amp;gt;&lt;br /&gt;
Added new variables to config.py.&amp;lt;br&amp;gt;&lt;br /&gt;
Removed python code block from create.kid, making it the correct way of handling things.&amp;lt;br&amp;gt;&lt;br /&gt;
If I cant get Select-shuttle going Im just gonna write my own forms by hand and use some ajax to do the job, its more code, but at least users wont have to download and install Select-shuttle as a dependency.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 12-13&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Realized that I didn&#039;t put support in icebreaker.py for stopping a playlist. For example, if I schedule a playlist to run from 7pm to 9pm it should switch off of the list onto shuffle mode or to another list.Doing a little re-working to get it the way it should work.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 14-15&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Edited icebreaker.py to make stop times work. Moved some stuff around, worked out some logical stuff on paper.&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nickmudd</name></author>
	</entry>
	<entry>
		<id>https://wiki.xiph.org/index.php?title=Icebreaker::UserWantedFeatures&amp;diff=7100</id>
		<title>Icebreaker::UserWantedFeatures</title>
		<link rel="alternate" type="text/html" href="https://wiki.xiph.org/index.php?title=Icebreaker::UserWantedFeatures&amp;diff=7100"/>
		<updated>2007-07-14T09:30:50Z</updated>

		<summary type="html">&lt;p&gt;Nickmudd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== List of features requested by Users ==&lt;br /&gt;
&lt;br /&gt;
=== GUI ===&lt;br /&gt;
&lt;br /&gt;
I think an interesting alternative for a GUI would be a XUL interface.&lt;br /&gt;
I once saw a XUL interface for the Amarok music collection, and it was very neat.&lt;br /&gt;
&lt;br /&gt;
=== Compatibility ===&lt;br /&gt;
&lt;br /&gt;
I don&#039;t know a lot about the internals from icecast and the like, but it would be&lt;br /&gt;
really cool if it would be possible to use your software with StreamTranscoder.&lt;br /&gt;
(have a look at this: http://www.oddsock.org/tools/streamTranscoderV3/)&lt;br /&gt;
I think it&#039;s important to be able to split up streams, f.ex. to offer users&lt;br /&gt;
with a low bandwidth a resampled stream with a lower quality.&lt;br /&gt;
Though, the problem is, if you want to be compatible you propably will have to&lt;br /&gt;
abandon any direct interaction with the actual streaming server, and i don&#039;t know if&lt;br /&gt;
that is in your interest.&lt;br /&gt;
&lt;br /&gt;
=== I/O ===&lt;br /&gt;
&lt;br /&gt;
 - XSPF playlist output format by default&lt;br /&gt;
 - Amarok (http://amarok.kde.org) compatibility =&amp;gt; XSPF as input format&lt;br /&gt;
&lt;br /&gt;
 - generation of xml config file for Ices&lt;br /&gt;
&lt;br /&gt;
=== Scheduling ===&lt;br /&gt;
&lt;br /&gt;
 - hourly news / logo / commercial support&lt;br /&gt;
 - scheduling differents playlists at different timeboxes (e.g. dub from 8-10, rock from 10-12, ...)&lt;/div&gt;</summary>
		<author><name>Nickmudd</name></author>
	</entry>
	<entry>
		<id>https://wiki.xiph.org/index.php?title=Icebreaker::Design&amp;diff=7099</id>
		<title>Icebreaker::Design</title>
		<link rel="alternate" type="text/html" href="https://wiki.xiph.org/index.php?title=Icebreaker::Design&amp;diff=7099"/>
		<updated>2007-07-14T09:30:17Z</updated>

		<summary type="html">&lt;p&gt;Nickmudd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Design =&lt;br /&gt;
I&#039;ve put a few things that I&#039;ve been thinking about on this wiki page.&amp;lt;br&amp;gt;&lt;br /&gt;
If you would like to comment, please make a note.&amp;lt;br&amp;gt;&lt;br /&gt;
== Database ==&lt;br /&gt;
Here is a simple structure with explanations.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Database: On a server or sqlite, doesnt matter.&amp;lt;br&amp;gt;&lt;br /&gt;
:data- table; houses file data.&amp;lt;br&amp;gt;&lt;br /&gt;
::path- path of file on the file system.&amp;lt;br&amp;gt;&lt;br /&gt;
::genre- genre example: Rock&amp;lt;br&amp;gt;&lt;br /&gt;
::artist- artist example: Misfits&amp;lt;br&amp;gt;&lt;br /&gt;
::title- title example: Hybrid Moments&amp;lt;br&amp;gt;&lt;br /&gt;
::album- album example: Static Age&amp;lt;br&amp;gt;&lt;br /&gt;
:playlists- table; definition on databases, scheduling, defined in web-app.&amp;lt;br&amp;gt;&lt;br /&gt;
::name- playlist name.&amp;lt;br&amp;gt;&lt;br /&gt;
::description- description of playlist&amp;lt;br&amp;gt;&lt;br /&gt;
::position- position in playlist, so that play is not started over from beginning. Incremented when track begins.&amp;lt;br&amp;gt;&lt;br /&gt;
::day- scheduling, a string of days to play??? numbers 1-7.&amp;lt;br&amp;gt;&lt;br /&gt;
::time- scheduling, a dictionary of times to play based with day (1-7) as key.&amp;lt;br&amp;gt;&lt;br /&gt;
::current- designates the currently running playlist, value is 1 or 0.&amp;lt;br&amp;gt;&lt;br /&gt;
:playlist- table, name of table is playlist? maybe incorporated in playlists table?&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nickmudd</name></author>
	</entry>
	<entry>
		<id>https://wiki.xiph.org/index.php?title=Icebreaker::Worklog&amp;diff=7098</id>
		<title>Icebreaker::Worklog</title>
		<link rel="alternate" type="text/html" href="https://wiki.xiph.org/index.php?title=Icebreaker::Worklog&amp;diff=7098"/>
		<updated>2007-07-14T09:18:18Z</updated>

		<summary type="html">&lt;p&gt;Nickmudd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Week 1 May 28-June 4&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Spent time reading.&amp;lt;br&amp;gt;&lt;br /&gt;
Started Wiki, sent mail to Icecast-dev.&amp;lt;br&amp;gt;&lt;br /&gt;
Started learning TurboGears.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 5&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Changed MySQLdb to SQLObject in populate.py&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 6&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Added genre support to populate.py.&lt;br /&gt;
Committed populate.py and config.py to svn.&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 7-9&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Reading &#039;&#039;Producing Open Source Software&#039;&#039; and &#039;&#039;Rapid Web Applications with TurboGears.&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
I&#039;ve had a fever and sinus infection, and been away from the computer a lot.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 10-13&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
More reading. Pleased to report that my sinus infection is gone and I am much better.&amp;lt;br&amp;gt;&lt;br /&gt;
Started designing database, writing pseudocode to figure out how to switch playlists, etc.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 14-15&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Reading &#039;&#039;Rapid Web Applications with TurboGears&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 16-17&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
In Chicago for the Cubs game.&amp;lt;br&amp;gt;&lt;br /&gt;
Didn&#039;t read much, just at the hotel at night.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 18&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Even more reading in &#039;&#039;Rapid Web Applications with TurboGears&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
I&#039;m beginning to realize I repeat myself a lot.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 19&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Finally started working on TurboGears frontend.&amp;lt;br&amp;gt;&lt;br /&gt;
Planning on committing the project to svn this afternoon after I get a few things written in there, just so I can get SOMETHING in svn because I feel like a slacker.&amp;lt;br&amp;gt;&lt;br /&gt;
Committed initial project files to svn.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 20-24&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Added views to TurboGears app.&amp;lt;br&amp;gt;&lt;br /&gt;
Added sample metadata to database.&amp;lt;br&amp;gt;&lt;br /&gt;
Reading more in &#039;&#039;Rapid Web Applications with Turbogears&#039;&#039; to figure out how to get data from forms and stuff.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 25-27&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Some more reading and trying to figure out forms.&amp;lt;br&amp;gt;&lt;br /&gt;
I&#039;m looking at Select-Shuttle TurboGears widget for picking tracks from the database, but then i still have to make filtering the data work. Any suggestions?&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 28&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Select-shuttle isnt working, trying to find documentation, help on #turbogears.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 29&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Added README file.&amp;lt;br&amp;gt;&lt;br /&gt;
Did some work in controllers.py to see if that jump starts the form, it doesnt.&amp;lt;br&amp;gt;&lt;br /&gt;
Took a look in the toolbox and specicifically Select-shuttle&#039;s widgets.py and found a few clues, updated controllers.py and create.kid.&amp;lt;br&amp;gt;&lt;br /&gt;
create.kid was all wrong, all it needed was a few lines of code. controllers.py needed the variables I supplied to be passed to a select-shuttle module and then assigned to a new object i called create.&amp;lt;br&amp;gt;&lt;br /&gt;
Putting that into controllers.py did not work, I got the error &amp;quot;name &#039;create&#039; is not defined.&amp;quot; I decided to define it in create.kid also, the form displayed but did not jump values. I am not sure what difference that made.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 30-July 1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
I searched online to find the cause of the values not switching lists, I decided it must be related to javascript, but since i know nothing of javascript i have no idea what the problem is.&amp;lt;br&amp;gt;&lt;br /&gt;
I still searched to figure out why create wont get defined in controllers.py. Google code search didnt get me any examples, and i found no tutorials and only an antiquated explanation of its function on a mailing list.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 2-3&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Sent an email to Conrad asking for some help. Asked around in #turbogears for help, got no response. Repeated search for documentation and the like.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 4&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Happy Independence Day, I celebrated by drinking a few pints of some tasty British ales. MMMMMMMMMMM Nothing like cepebrating our independence from the British than drinking British beer.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 5&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
The usual searching, sent an email to the author of Select-Shuttle and as of 7-10 have no response.&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 6&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Decided to lay off searching for a while to get real work done, started the backend.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 7&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Read Chapter 12 &amp;quot;Time Operations&amp;quot; and Chapter 13 &amp;quot;Controlling Execution&amp;quot; in &#039;&#039;Python In a Nutshell&#039;&#039; to see how to handle the date/time stuff in the backend and see if i could find out how to make it a daemon.&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 8&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Heard back from Conrad.&amp;lt;br&amp;gt;&lt;br /&gt;
Made a few minor changes to create.kid&amp;lt;br&amp;gt;&lt;br /&gt;
Work on the backend.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 9-11&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Found a bit of code on how to daemonize. Cannibalizing it and my old script to make a new one.&amp;lt;br&amp;gt;&lt;br /&gt;
Added new variables to config.py.&amp;lt;br&amp;gt;&lt;br /&gt;
Removed python code block from create.kid, making it the correct way of handling things.&amp;lt;br&amp;gt;&lt;br /&gt;
If I cant get Select-shuttle going Im just gonna write my own forms by hand and use some ajax to do the job, its more code, but at least users wont have to download and install Select-shuttle as a dependency.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 12-13&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Realized that I didnt put support in icebreaker.py for stopping a playlist. For example, if I schedule a playlist to run from 7pm to 9pm it should swithc off of the list onto shuffle mode or to another list.Doing a little re-working to get it the way it should work.&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nickmudd</name></author>
	</entry>
	<entry>
		<id>https://wiki.xiph.org/index.php?title=Icebreaker::Worklog&amp;diff=7085</id>
		<title>Icebreaker::Worklog</title>
		<link rel="alternate" type="text/html" href="https://wiki.xiph.org/index.php?title=Icebreaker::Worklog&amp;diff=7085"/>
		<updated>2007-07-10T12:25:46Z</updated>

		<summary type="html">&lt;p&gt;Nickmudd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Week 1 May 28-June 4&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Spent time reading.&amp;lt;br&amp;gt;&lt;br /&gt;
Started Wiki, sent mail to Icecast-dev.&amp;lt;br&amp;gt;&lt;br /&gt;
Started learning TurboGears.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 5&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Changed MySQLdb to SQLObject in populate.py&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 6&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Added genre support to populate.py.&lt;br /&gt;
Committed populate.py and config.py to svn.&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 7-9&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Reading &#039;&#039;Producing Open Source Software&#039;&#039; and &#039;&#039;Rapid Web Applications with TurboGears.&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
I&#039;ve had a fever and sinus infection, and been away from the computer a lot.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 10-13&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
More reading. Pleased to report that my sinus infection is gone and I am much better.&amp;lt;br&amp;gt;&lt;br /&gt;
Started designing database, writing pseudocode to figure out how to switch playlists, etc.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 14-15&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Reading &#039;&#039;Rapid Web Applications with TurboGears&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 16-17&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
In Chicago for the Cubs game.&amp;lt;br&amp;gt;&lt;br /&gt;
Didn&#039;t read much, just at the hotel at night.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 18&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Even more reading in &#039;&#039;Rapid Web Applications with TurboGears&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
I&#039;m beginning to realize I repeat myself a lot.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 19&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Finally started working on TurboGears frontend.&amp;lt;br&amp;gt;&lt;br /&gt;
Planning on committing the project to svn this afternoon after I get a few things written in there, just so I can get SOMETHING in svn because I feel like a slacker.&amp;lt;br&amp;gt;&lt;br /&gt;
Committed initial project files to svn.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 20-24&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Added views to TurboGears app.&amp;lt;br&amp;gt;&lt;br /&gt;
Added sample metadata to database.&amp;lt;br&amp;gt;&lt;br /&gt;
Reading more in &#039;&#039;Rapid Web Applications with Turbogears&#039;&#039; to figure out how to get data from forms and stuff.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 25-27&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Some more reading and trying to figure out forms.&amp;lt;br&amp;gt;&lt;br /&gt;
I&#039;m looking at Select-Shuttle TurboGears widget for picking tracks from the database, but then i still have to make filtering the data work. Any suggestions?&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 28&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Select-shuttle isnt working, trying to find documentation, help on #turbogears.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 29&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Added README file.&amp;lt;br&amp;gt;&lt;br /&gt;
Did some work in controllers.py to see if that jump starts the form, it doesnt.&amp;lt;br&amp;gt;&lt;br /&gt;
Took a look in the toolbox and specicifically Select-shuttle&#039;s widgets.py and found a few clues, updated controllers.py and create.kid.&amp;lt;br&amp;gt;&lt;br /&gt;
create.kid was all wrong, all it needed was a few lines of code. controllers.py needed the variables I supplied to be passed to a select-shuttle module and then assigned to a new object i called create.&amp;lt;br&amp;gt;&lt;br /&gt;
Putting that into controllers.py did not work, I got the error &amp;quot;name &#039;create&#039; is not defined.&amp;quot; I decided to define it in create.kid also, the form displayed but did not jump values. I am not sure what difference that made.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 30-July 1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
I searched online to find the cause of the values not switching lists, I decided it must be related to javascript, but since i know nothing of javascript i have no idea what the problem is.&amp;lt;br&amp;gt;&lt;br /&gt;
I still searched to figure out why create wont get defined in controllers.py. Google code search didnt get me any examples, and i found no tutorials and only an antiquated explanation of its function on a mailing list.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 2-3&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Sent an email to Conrad asking for some help. Asked around in #turbogears for help, got no response. Repeated search for documentation and the like.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 4&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Happy Independence Day, I celebrated by drinking a few pints of some tasty British ales. MMMMMMMMMMM Nothing like cepebrating our independence from the British than drinking British beer.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 5&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
The usual searching, sent an email to the author of Select-Shuttle and as of 7-10 have no response.&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 6&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Decided to lay off searching for a while to get real work done, started the backend.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 7&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Read Chapter 12 &amp;quot;Time Operations&amp;quot; and Chapter 13 &amp;quot;Controlling Execution&amp;quot; in &#039;&#039;Python In a Nutshell&#039;&#039; to see how to handle the date/time stuff in the backend and see if i could find out how to make it a daemon.&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 8&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Heard back from Conrad.&amp;lt;br&amp;gt;&lt;br /&gt;
Made a few minor changes to create.kid&amp;lt;br&amp;gt;&lt;br /&gt;
Work on the backend.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;July 9-10&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Found a bit of code on how to daemonize. Cannibalizing it and my old script to make a new one.&amp;lt;br&amp;gt;&lt;br /&gt;
Added new variables to config.py.&amp;lt;br&amp;gt;&lt;br /&gt;
Removed python code block from create.kid, making it the correct way of handling things.&amp;lt;br&amp;gt;&lt;br /&gt;
If I cant get Select-shuttle going Im just gonna write my own forms by hand and use some ajax to do the job, its more code, but at least users wont have to download and install Select-shuttle as a dependency.&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nickmudd</name></author>
	</entry>
	<entry>
		<id>https://wiki.xiph.org/index.php?title=Icebreaker&amp;diff=7060</id>
		<title>Icebreaker</title>
		<link rel="alternate" type="text/html" href="https://wiki.xiph.org/index.php?title=Icebreaker&amp;diff=7060"/>
		<updated>2007-06-29T06:56:58Z</updated>

		<summary type="html">&lt;p&gt;Nickmudd: /* Subversion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Icebreaker is a playlist authoring/scheduling system for Icecast. It uses a database to store playlists and scheduling data. Icebreaker&#039;s main objective is to be easy to use, so that writing playlists by hand can be avoided. Icebreaker is being designed to use a web-based interface through TurboGears. Icebreaker is _NOT_ a web-based streamer or a client.&lt;br /&gt;
&lt;br /&gt;
== Subversion ==&lt;br /&gt;
https://trac.xiph.org/browser/trunk/icebreaker&lt;br /&gt;
&lt;br /&gt;
== Plans ==&lt;br /&gt;
&lt;br /&gt;
My plans are as follows:&lt;br /&gt;
&lt;br /&gt;
# Written in Python.&lt;br /&gt;
# Metadata in database.&lt;br /&gt;
# Playlists stored in database.&lt;br /&gt;
# Playlist scheduling.&lt;br /&gt;
# Backend/frontend design, possibly multible frontends.&lt;br /&gt;
# No web server needed, interface comes from TurboGears.&lt;br /&gt;
# Minimal configuration, after all thats why I started the project.&lt;br /&gt;
# SQLObject will be used to work with any database.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
see [[Icebreaker::Design]]&lt;br /&gt;
&lt;br /&gt;
== User Wanted Features == &lt;br /&gt;
&lt;br /&gt;
see [[Icebreaker::UserWantedFeatures]]&lt;br /&gt;
&lt;br /&gt;
== Worklog ==&lt;br /&gt;
&lt;br /&gt;
see [[Icebreaker::Worklog]]&lt;br /&gt;
&lt;br /&gt;
== Application ==&lt;br /&gt;
&lt;br /&gt;
I run a Icecast stream for the use of myself and my friends, and while making playlists for it, I was very overcome by the enormity of the task. I have a modest Vorbis collection by some standards, 2500 tracks. I pity anyone that has ever tried to make playlists for a large streaming site with who knows how many tracks. What&#039;s more, I can&#039;t be bothered to switch playlists out all the time. So the natural progression seemed to be a simple drag-and-drop interface to create and schedule playlists.&lt;br /&gt;
&lt;br /&gt;
I plan to use a separate backend from the web interface, so that a X-based frontend could be added eventually, or support could be added in an existing media application. SQLObject will be used to provide support for multiple databases with one set of code. I will try to minimize configuration to media path, and database connections, and password for the interface.&lt;br /&gt;
&lt;br /&gt;
I have some code written, a script that populates a database, and a script that will be called by Ices and Icecast that provides the next track to play. I wish to include searching/adding media to a playlist based on metadata, as the populate.py script parses Ogg tags and adds them to the database.&lt;br /&gt;
&lt;br /&gt;
The frontend will be based off of TurboGears (http://www.turbogears.org) and could be packaged as a python egg, separately or included with the source for the backend. In the event that no playlist is scheduled, there will be a random playlist that will be automatically generated. Future plans are to integrate with Google Calendar, to display to any users which playlists will be scheduled. Another of my plans is to research integration with Icecast, to add support for controlling it. I&#039;ve been thinking about this project and planning it since December, and I am extremely excited.&lt;br /&gt;
&lt;br /&gt;
The main focus of this project is ease, and I will facilitate use in these ways:&lt;br /&gt;
&lt;br /&gt;
1. Simple Interface, very self-explanatory.&amp;lt;br&amp;gt;&lt;br /&gt;
2. Minimal configuration. No web server needed, no PHP, extremely easy to get up and running. (Possibly) a few Python Libraries to install. One short configuration file. However, Ices will need to be configured to accept input from a script.&amp;lt;br&amp;gt;&lt;br /&gt;
3. Database agnostic. If no database server is installed, SQLite will work perfectly in it&#039;s stead.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
My goals in this project are not overly ambitious, and will contribute greatly to media enthusiasts like myself. I have set up a project page on Google Code (http://code.google.com/p/icebreaker/). I have not released any code because the code is not usable by anyone other than myself for the initial development. Soon I will add the code I have completed to the project page after adding database support to the Ices-callable script. I realize this description is very short in comparison to the 7500 character limit, but a few details are currently &amp;quot;up in the air&amp;quot;. Namely, how I will handle scheduling and whether or not I will daemonize the backend. I have several ideas on how to handle the internals, but it&#039;s too early to tell how it will work. Very soon I plan on doing a few flowcharts to illustrate the architecture of the project, and the various ways it may manifest.&lt;br /&gt;
&lt;br /&gt;
I plan on having this application feature complete about 75% through the summer, as I am already greatly obsessed with it and am only abstaining from the project to focus on my schoolwork. I have the entire summer to work on this project if it is accepted and will spend at least 30 hours a week on it. Almost everything I code is media-oriented. I usually write converter scripts in python or bash to manipulate files. I am most comfortable in Python and I have done a little work in C. I also took a course in VB.net and hated every minute of it. I dont think of myself as a programmer, but I greatly enjoy making things and enjoying the outcome of my labor.&lt;br /&gt;
&lt;br /&gt;
Though I wont contribute specifically to any one of your projects in code, I feel that my project will enhance other xiph projects.&lt;/div&gt;</summary>
		<author><name>Nickmudd</name></author>
	</entry>
	<entry>
		<id>https://wiki.xiph.org/index.php?title=Icebreaker&amp;diff=7059</id>
		<title>Icebreaker</title>
		<link rel="alternate" type="text/html" href="https://wiki.xiph.org/index.php?title=Icebreaker&amp;diff=7059"/>
		<updated>2007-06-29T06:34:20Z</updated>

		<summary type="html">&lt;p&gt;Nickmudd: /* Application */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Icebreaker is a playlist authoring/scheduling system for Icecast. It uses a database to store playlists and scheduling data. Icebreaker&#039;s main objective is to be easy to use, so that writing playlists by hand can be avoided. Icebreaker is being designed to use a web-based interface through TurboGears. Icebreaker is _NOT_ a web-based streamer or a client.&lt;br /&gt;
&lt;br /&gt;
== Subversion ==&lt;br /&gt;
https://svn.xiph.org/trunk/icebreaker/&lt;br /&gt;
== Plans ==&lt;br /&gt;
&lt;br /&gt;
My plans are as follows:&lt;br /&gt;
&lt;br /&gt;
# Written in Python.&lt;br /&gt;
# Metadata in database.&lt;br /&gt;
# Playlists stored in database.&lt;br /&gt;
# Playlist scheduling.&lt;br /&gt;
# Backend/frontend design, possibly multible frontends.&lt;br /&gt;
# No web server needed, interface comes from TurboGears.&lt;br /&gt;
# Minimal configuration, after all thats why I started the project.&lt;br /&gt;
# SQLObject will be used to work with any database.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
see [[Icebreaker::Design]]&lt;br /&gt;
&lt;br /&gt;
== User Wanted Features == &lt;br /&gt;
&lt;br /&gt;
see [[Icebreaker::UserWantedFeatures]]&lt;br /&gt;
&lt;br /&gt;
== Worklog ==&lt;br /&gt;
&lt;br /&gt;
see [[Icebreaker::Worklog]]&lt;br /&gt;
&lt;br /&gt;
== Application ==&lt;br /&gt;
&lt;br /&gt;
I run a Icecast stream for the use of myself and my friends, and while making playlists for it, I was very overcome by the enormity of the task. I have a modest Vorbis collection by some standards, 2500 tracks. I pity anyone that has ever tried to make playlists for a large streaming site with who knows how many tracks. What&#039;s more, I can&#039;t be bothered to switch playlists out all the time. So the natural progression seemed to be a simple drag-and-drop interface to create and schedule playlists.&lt;br /&gt;
&lt;br /&gt;
I plan to use a separate backend from the web interface, so that a X-based frontend could be added eventually, or support could be added in an existing media application. SQLObject will be used to provide support for multiple databases with one set of code. I will try to minimize configuration to media path, and database connections, and password for the interface.&lt;br /&gt;
&lt;br /&gt;
I have some code written, a script that populates a database, and a script that will be called by Ices and Icecast that provides the next track to play. I wish to include searching/adding media to a playlist based on metadata, as the populate.py script parses Ogg tags and adds them to the database.&lt;br /&gt;
&lt;br /&gt;
The frontend will be based off of TurboGears (http://www.turbogears.org) and could be packaged as a python egg, separately or included with the source for the backend. In the event that no playlist is scheduled, there will be a random playlist that will be automatically generated. Future plans are to integrate with Google Calendar, to display to any users which playlists will be scheduled. Another of my plans is to research integration with Icecast, to add support for controlling it. I&#039;ve been thinking about this project and planning it since December, and I am extremely excited.&lt;br /&gt;
&lt;br /&gt;
The main focus of this project is ease, and I will facilitate use in these ways:&lt;br /&gt;
&lt;br /&gt;
1. Simple Interface, very self-explanatory.&amp;lt;br&amp;gt;&lt;br /&gt;
2. Minimal configuration. No web server needed, no PHP, extremely easy to get up and running. (Possibly) a few Python Libraries to install. One short configuration file. However, Ices will need to be configured to accept input from a script.&amp;lt;br&amp;gt;&lt;br /&gt;
3. Database agnostic. If no database server is installed, SQLite will work perfectly in it&#039;s stead.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
My goals in this project are not overly ambitious, and will contribute greatly to media enthusiasts like myself. I have set up a project page on Google Code (http://code.google.com/p/icebreaker/). I have not released any code because the code is not usable by anyone other than myself for the initial development. Soon I will add the code I have completed to the project page after adding database support to the Ices-callable script. I realize this description is very short in comparison to the 7500 character limit, but a few details are currently &amp;quot;up in the air&amp;quot;. Namely, how I will handle scheduling and whether or not I will daemonize the backend. I have several ideas on how to handle the internals, but it&#039;s too early to tell how it will work. Very soon I plan on doing a few flowcharts to illustrate the architecture of the project, and the various ways it may manifest.&lt;br /&gt;
&lt;br /&gt;
I plan on having this application feature complete about 75% through the summer, as I am already greatly obsessed with it and am only abstaining from the project to focus on my schoolwork. I have the entire summer to work on this project if it is accepted and will spend at least 30 hours a week on it. Almost everything I code is media-oriented. I usually write converter scripts in python or bash to manipulate files. I am most comfortable in Python and I have done a little work in C. I also took a course in VB.net and hated every minute of it. I dont think of myself as a programmer, but I greatly enjoy making things and enjoying the outcome of my labor.&lt;br /&gt;
&lt;br /&gt;
Though I wont contribute specifically to any one of your projects in code, I feel that my project will enhance other xiph projects.&lt;/div&gt;</summary>
		<author><name>Nickmudd</name></author>
	</entry>
	<entry>
		<id>https://wiki.xiph.org/index.php?title=Icebreaker::Worklog&amp;diff=7054</id>
		<title>Icebreaker::Worklog</title>
		<link rel="alternate" type="text/html" href="https://wiki.xiph.org/index.php?title=Icebreaker::Worklog&amp;diff=7054"/>
		<updated>2007-06-28T00:02:34Z</updated>

		<summary type="html">&lt;p&gt;Nickmudd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Week 1 May 28-June 4&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Spent time reading.&amp;lt;br&amp;gt;&lt;br /&gt;
Started Wiki, sent mail to Icecast-dev.&amp;lt;br&amp;gt;&lt;br /&gt;
Started learning TurboGears.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 5&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Changed MySQLdb to SQLObject in populate.py&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 6&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Added genre support to populate.py.&lt;br /&gt;
Committed populate.py and config.py to svn.&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 7-9&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Reading &#039;&#039;Producing Open Source Software&#039;&#039; and &#039;&#039;Rapid Web Applications with TurboGears.&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
I&#039;ve had a fever and sinus infection, and been away from the computer a lot.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 10-13&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
More reading. Pleased to report that my sinus infection is gone and I am much better.&amp;lt;br&amp;gt;&lt;br /&gt;
Started designing database, writing pseudocode to figure out how to switch playlists, etc.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 14-15&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Reading &#039;&#039;Rapid Web Applications with TurboGears&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 16-17&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
In Chicago for the Cubs game.&amp;lt;br&amp;gt;&lt;br /&gt;
Didn&#039;t read much, just at the hotel at night.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 18&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Even more reading in &#039;&#039;Rapid Web Applications with TurboGears&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
I&#039;m beginning to realize I repeat myself a lot.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 19&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Finally started working on TurboGears frontend.&amp;lt;br&amp;gt;&lt;br /&gt;
Planning on committing the project to svn this afternoon after I get a few things written in there, just so I can get SOMETHING in svn because I feel like a slacker.&amp;lt;br&amp;gt;&lt;br /&gt;
Committed initial project files to svn.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 20-24&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Added views to TurboGears app.&amp;lt;br&amp;gt;&lt;br /&gt;
Added sample metadata to database.&amp;lt;br&amp;gt;&lt;br /&gt;
Reading more in &#039;&#039;Rapid Web Applications with Turbogears&#039;&#039; to figure out how to get data from forms and stuff.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 25-27&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Some more reading and trying to figure out forms.&amp;lt;br&amp;gt;&lt;br /&gt;
I&#039;m looking at Select-Shuttle TurboGears widget for picking tracks from the database, but then i still have to make filtering the data work. Any suggestions?&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nickmudd</name></author>
	</entry>
	<entry>
		<id>https://wiki.xiph.org/index.php?title=Icebreaker::Worklog&amp;diff=7021</id>
		<title>Icebreaker::Worklog</title>
		<link rel="alternate" type="text/html" href="https://wiki.xiph.org/index.php?title=Icebreaker::Worklog&amp;diff=7021"/>
		<updated>2007-06-25T23:26:12Z</updated>

		<summary type="html">&lt;p&gt;Nickmudd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Week 1 May 28-June 4&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Spent time reading.&amp;lt;br&amp;gt;&lt;br /&gt;
Started Wiki, sent mail to Icecast-dev.&amp;lt;br&amp;gt;&lt;br /&gt;
Started learning TurboGears.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 5&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Changed MySQLdb to SQLObject in populate.py&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 6&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Added genre support to populate.py.&lt;br /&gt;
Committed populate.py and config.py to svn.&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 7-9&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Reading &#039;&#039;Producing Open Source Software&#039;&#039; and &#039;&#039;Rapid Web Applications with TurboGears.&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
I&#039;ve had a fever and sinus infection, and been away from the computer a lot.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 10-13&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
More reading. Pleased to report that my sinus infection is gone and I am much better.&amp;lt;br&amp;gt;&lt;br /&gt;
Started designing database, writing pseudocode to figure out how to switch playlists, etc.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 14-15&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Reading &#039;&#039;Rapid Web Applications with TurboGears&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 16-17&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
In Chicago for the Cubs game.&amp;lt;br&amp;gt;&lt;br /&gt;
Didn&#039;t read much, just at the hotel at night.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 18&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Even more reading in &#039;&#039;Rapid Web Applications with TurboGears&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
I&#039;m beginning to realize I repeat myself a lot.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 19&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Finally started working on TurboGears frontend.&amp;lt;br&amp;gt;&lt;br /&gt;
Planning on committing the project to svn this afternoon after I get a few things written in there, just so I can get SOMETHING in svn because I feel like a slacker.&amp;lt;br&amp;gt;&lt;br /&gt;
Committed initial project files to svn.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 20-24&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Added views to TurboGears app.&amp;lt;br&amp;gt;&lt;br /&gt;
Added sample metadata to database.&amp;lt;br&amp;gt;&lt;br /&gt;
Reading more in &#039;&#039;Rapid Web Applications with Turbogears&#039;&#039; to figure out how to get data from forms and stuff.&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nickmudd</name></author>
	</entry>
	<entry>
		<id>https://wiki.xiph.org/index.php?title=Icebreaker::Worklog&amp;diff=6989</id>
		<title>Icebreaker::Worklog</title>
		<link rel="alternate" type="text/html" href="https://wiki.xiph.org/index.php?title=Icebreaker::Worklog&amp;diff=6989"/>
		<updated>2007-06-19T22:21:41Z</updated>

		<summary type="html">&lt;p&gt;Nickmudd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Week 1 May 28-June 4&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Spent time reading.&amp;lt;br&amp;gt;&lt;br /&gt;
Started Wiki, sent mail to Icecast-dev.&amp;lt;br&amp;gt;&lt;br /&gt;
Started learning TurboGears.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 5&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Changed MySQLdb to SQLObject in populate.py&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 6&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Added genre support to populate.py.&lt;br /&gt;
Committed populate.py and config.py to svn.&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 7-9&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Reading &#039;&#039;Producing Open Source Software&#039;&#039; and &#039;&#039;Rapid Web Applications with TurboGears.&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
I&#039;ve had a fever and sinus infection, and been away from the computer a lot.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 10-13&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
More reading. Pleased to report that my sinus infection is gone and I am much better.&amp;lt;br&amp;gt;&lt;br /&gt;
Started designing database, writing pseudocode to figure out how to switch playlists, etc.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 14-15&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Reading &#039;&#039;Rapid Web Applications with TurboGears&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 16-17&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
In Chicago for the Cubs game.&amp;lt;br&amp;gt;&lt;br /&gt;
Didn&#039;t read much, just at the hotel at night.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 18&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Even more reading in &#039;&#039;Rapid Web Applications with TurboGears&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
I&#039;m beginning to realize I repeat myself a lot.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 19&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Finally started working on TurboGears frontend.&amp;lt;br&amp;gt;&lt;br /&gt;
Planning on committing the project to svn this afternoon after I get a few things written in there, just so I can get SOMETHING in svn because I feel like a slacker.&amp;lt;br&amp;gt;&lt;br /&gt;
Committed initial project files to svn.&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nickmudd</name></author>
	</entry>
	<entry>
		<id>https://wiki.xiph.org/index.php?title=Icebreaker::Design&amp;diff=6987</id>
		<title>Icebreaker::Design</title>
		<link rel="alternate" type="text/html" href="https://wiki.xiph.org/index.php?title=Icebreaker::Design&amp;diff=6987"/>
		<updated>2007-06-19T13:03:35Z</updated>

		<summary type="html">&lt;p&gt;Nickmudd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Design =&lt;br /&gt;
I&#039;ve put a few things that I&#039;ve been thinking about on this wiki page.&amp;lt;br&amp;gt;&lt;br /&gt;
If you would like to comment, please make a note.&amp;lt;br&amp;gt;&lt;br /&gt;
== Database ==&lt;br /&gt;
Here is a simple structure with explanations.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Database: On a server or sqlite, doesnt matter.&amp;lt;br&amp;gt;&lt;br /&gt;
:data- table; houses file data.&amp;lt;br&amp;gt;&lt;br /&gt;
::path- path of file on the file system.&amp;lt;br&amp;gt;&lt;br /&gt;
::genre- genre example: Rock&amp;lt;br&amp;gt;&lt;br /&gt;
::artist- artist example: Misfits&amp;lt;br&amp;gt;&lt;br /&gt;
::title- title example: Hybrid Moments&amp;lt;br&amp;gt;&lt;br /&gt;
::album- album example: Static Age&amp;lt;br&amp;gt;&lt;br /&gt;
:playlists- table; definition on databases, scheduling, defined in web-app.&amp;lt;br&amp;gt;&lt;br /&gt;
::name- playlist name.&amp;lt;br&amp;gt;&lt;br /&gt;
::description- description of playlist&amp;lt;br&amp;gt;&lt;br /&gt;
::position- position in playlist, so that play is not started over from beginning. Incremented when track begins.&amp;lt;br&amp;gt;&lt;br /&gt;
::day- scheduling, a string of days to play??? numbers 1-7.&amp;lt;br&amp;gt;&lt;br /&gt;
::time- scheduling, a dictionary of times to play based with day (1-7) as key.&amp;lt;br&amp;gt;&lt;br /&gt;
::current- designates the currently running playlist, value is 1 or 0.&amp;lt;br&amp;gt;&lt;br /&gt;
:playlist- table, name of table is playlist? maybe incorporated in playlists table?&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pseudocode ==&lt;br /&gt;
coming soon&lt;/div&gt;</summary>
		<author><name>Nickmudd</name></author>
	</entry>
	<entry>
		<id>https://wiki.xiph.org/index.php?title=Icebreaker::Worklog&amp;diff=6986</id>
		<title>Icebreaker::Worklog</title>
		<link rel="alternate" type="text/html" href="https://wiki.xiph.org/index.php?title=Icebreaker::Worklog&amp;diff=6986"/>
		<updated>2007-06-19T12:08:08Z</updated>

		<summary type="html">&lt;p&gt;Nickmudd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Week 1 May 28-June 4&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Spent time reading.&amp;lt;br&amp;gt;&lt;br /&gt;
Started Wiki, sent mail to Icecast-dev.&amp;lt;br&amp;gt;&lt;br /&gt;
Started learning TurboGears.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 5&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Changed MySQLdb to SQLObject in populate.py&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 6&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Added genre support to populate.py.&lt;br /&gt;
Committed populate.py and config.py to svn.&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 7-9&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Reading &#039;&#039;Producing Open Source Software&#039;&#039; and &#039;&#039;Rapid Web Applications with TurboGears.&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
I&#039;ve had a fever and sinus infection, and been away from the computer a lot.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 10-13&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
More reading. Pleased to report that my sinus infection is gone and I am much better.&amp;lt;br&amp;gt;&lt;br /&gt;
Started designing database, writing pseudocode to figure out how to switch playlists, etc.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 14-15&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Reading &#039;&#039;Rapid Web Applications with TurboGears&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 16-17&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
In Chicago for the Cubs game.&amp;lt;br&amp;gt;&lt;br /&gt;
Didn&#039;t read much, just at the hotel at night.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 18&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Even more reading in &#039;&#039;Rapid Web Applications with TurboGears&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
I&#039;m beginning to realize I repeat myself a lot.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 19&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Finally started working on TurboGears frontend.&amp;lt;br&amp;gt;&lt;br /&gt;
Planning on committing the project to svn this afternoon after I get a few things written in there, just so I can get SOMETHING in svn because I feel like a slacker.&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nickmudd</name></author>
	</entry>
	<entry>
		<id>https://wiki.xiph.org/index.php?title=Icebreaker::Worklog&amp;diff=6985</id>
		<title>Icebreaker::Worklog</title>
		<link rel="alternate" type="text/html" href="https://wiki.xiph.org/index.php?title=Icebreaker::Worklog&amp;diff=6985"/>
		<updated>2007-06-19T12:07:14Z</updated>

		<summary type="html">&lt;p&gt;Nickmudd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Week 1 May 28-June 4&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Spent time reading.&amp;lt;br&amp;gt;&lt;br /&gt;
Started Wiki, sent mail to Icecast-dev.&amp;lt;br&amp;gt;&lt;br /&gt;
Started learning TurboGears.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 5&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Changed MySQLdb to SQLObject in populate.py&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 6&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Added genre support to populate.py.&lt;br /&gt;
Committed populate.py and config.py to svn.&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 7-9&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Reading &#039;&#039;Producing Open Source Software&#039;&#039; and &#039;&#039;Rapid Web Applications with TurboGears.&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
I&#039;ve had a fever and sinus infection, and been away from the computer a lot.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 10-13&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
More reading. Pleased to report that my sinus infection is gone and I am much better.&amp;lt;br&amp;gt;&lt;br /&gt;
Started designing database, writing pseudocode to figure out how to switch playlists, etc.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 14-15&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Reading &#039;&#039;Rapid Web Applications with TurboGears&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 16-17&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
In Chicago for the Cubs game.&amp;lt;br&amp;gt;&lt;br /&gt;
Didn&#039;t read much, just at the hotel at night.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 18&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Even more reading in &#039;&#039;Rapid Web Applications with TurboGears&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
I&#039;m beginning to realize I repeat myself a lot.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 19&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Finally started working on TurboGears frontend.&amp;lt;br&amp;gt;&lt;br /&gt;
Planning on committing the project to svn after I get a few things written in there, just so I can get SOMETHING in svn because I feel like a slacker.&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nickmudd</name></author>
	</entry>
	<entry>
		<id>https://wiki.xiph.org/index.php?title=Icebreaker&amp;diff=6930</id>
		<title>Icebreaker</title>
		<link rel="alternate" type="text/html" href="https://wiki.xiph.org/index.php?title=Icebreaker&amp;diff=6930"/>
		<updated>2007-06-14T07:23:34Z</updated>

		<summary type="html">&lt;p&gt;Nickmudd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Icebreaker is a playlist authoring/scheduling system for Icecast. It uses a database to store playlists and scheduling data. Icebreaker&#039;s main objective is to be easy to use, so that writing playlists by hand can be avoided. Icebreaker is being designed to use a web-based interface through TurboGears. Icebreaker is _NOT_ a web-based streamer or a client.&lt;br /&gt;
&lt;br /&gt;
== Subversion ==&lt;br /&gt;
https://svn.xiph.org/trunk/icebreaker/&lt;br /&gt;
== Plans ==&lt;br /&gt;
&lt;br /&gt;
My plans are as follows:&lt;br /&gt;
&lt;br /&gt;
# Written in Python.&lt;br /&gt;
# Metadata in database.&lt;br /&gt;
# Playlists stored in database.&lt;br /&gt;
# Playlist scheduling.&lt;br /&gt;
# Backend/frontend design, possibly multible frontends.&lt;br /&gt;
# No web server needed, interface comes from TurboGears.&lt;br /&gt;
# Minimal configuration, after all thats why I started the project.&lt;br /&gt;
# SQLObject will be used to work with any database.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
see [[Icebreaker::Design]]&lt;br /&gt;
&lt;br /&gt;
== User Wanted Features == &lt;br /&gt;
&lt;br /&gt;
see [[Icebreaker::UserWantedFeatures]]&lt;br /&gt;
&lt;br /&gt;
== Worklog ==&lt;br /&gt;
&lt;br /&gt;
see [[Icebreaker::Worklog]]&lt;br /&gt;
&lt;br /&gt;
== Application ==&lt;br /&gt;
&lt;br /&gt;
I run a Icecast stream for the use of myself and my friends, and while making playlists for it, I was very overcome by the enormity of the task. I have a modest Vorbis collection by some standards, 2500 tracks. I pity anyone that has ever tried to make playlists for a large streaming site with who knows how many tracks. What&#039;s more, I can&#039;t be bothered to switch playlists out all the time. So the natural progression seemed to be a simple drag-and-drop interface to create and schedule playlists.&lt;br /&gt;
&lt;br /&gt;
I plan to use a separate backend from the web interface, so that a X-based frontend could be added eventually, or support could be added in an existing media application. SQLObject will be used to provide support for multiple databases with one set of code. I will try to minimize configuration to media path, and database connections, and password for the interface.&lt;br /&gt;
&lt;br /&gt;
I have some code written, a script that populates a database, and a script that will be called by Ices and Icecast that provides the next track to play. I wish to include searching/adding media to a playlist based on metadata, as the populate.py script parses Ogg tags and adds them to the database.&lt;br /&gt;
&lt;br /&gt;
The frontend will be based off of TurboGears (http://www.turbogears.org) and could be packaged as a python egg, separately or included with the source for the backend. In the event that no playlist is scheduled, there will be a random playlist that will be automatically generated. Future plans are to integrate with Google Calendar, to display to any users which playlists will be scheduled. Another of my plans is to research integration with Icecast, to add support for controlling it. I&#039;ve been thinking about this project and planning it since December, and I am extremely excited.&lt;br /&gt;
&lt;br /&gt;
The main focus of this project is ease, and I will facilitate use in these ways:&lt;br /&gt;
&lt;br /&gt;
1. Simple Interface, very self-explanatory.&lt;br /&gt;
2. Minimal configuration. No web server needed, no PHP, extremely easy to get up and running. (Possibly) a few Python Libraries to install. One short configuration file. However, Ices will need to be configured to accept input from a script.&lt;br /&gt;
3. Database agnostic. If no database server is installed, SQLite will work perfectly in it&#039;s stead.&lt;br /&gt;
&lt;br /&gt;
My goals in this project are not overly ambitious, and will contribute greatly to media enthusiasts like myself. I have set up a project page on Google Code (http://code.google.com/p/icebreaker/). I have not released any code because the code is not usable by anyone other than myself for the initial development. Soon I will add the code I have completed to the project page after adding database support to the Ices-callable script. I realize this description is very short in comparison to the 7500 character limit, but a few details are currently &amp;quot;up in the air&amp;quot;. Namely, how I will handle scheduling and whether or not I will daemonize the backend. I have several ideas on how to handle the internals, but it&#039;s too early to tell how it will work. Very soon I plan on doing a few flowcharts to illustrate the architecture of the project, and the various ways it may manifest.&lt;br /&gt;
&lt;br /&gt;
I plan on having this application feature complete about 75% through the summer, as I am already greatly obsessed with it and am only abstaining from the project to focus on my schoolwork. I have the entire summer to work on this project if it is accepted and will spend at least 30 hours a week on it. Almost everything I code is media-oriented. I usually write converter scripts in python or bash to manipulate files. I am most comfortable in Python and I have done a little work in C. I also took a course in VB.net and hated every minute of it. I dont think of myself as a programmer, but I greatly enjoy making things and enjoying the outcome of my labor.&lt;br /&gt;
&lt;br /&gt;
Though I wont contribute specifically to any one of your projects in code, I feel that my project will enhance other xiph projects.&lt;/div&gt;</summary>
		<author><name>Nickmudd</name></author>
	</entry>
	<entry>
		<id>https://wiki.xiph.org/index.php?title=Icebreaker&amp;diff=6929</id>
		<title>Icebreaker</title>
		<link rel="alternate" type="text/html" href="https://wiki.xiph.org/index.php?title=Icebreaker&amp;diff=6929"/>
		<updated>2007-06-14T07:11:26Z</updated>

		<summary type="html">&lt;p&gt;Nickmudd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Icebreaker is a playlist authoring/scheduling system for Icecast. It uses a database to store playlists and scheduling data. Icebreaker&#039;s main objective is to be easy to use, so that writing playlists by hand can be avoided. Icebreaker is being designed to use a web-based interface through TurboGears. Icebreaker is _NOT_ a web-based streamer or a client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Plans ==&lt;br /&gt;
&lt;br /&gt;
My plans are as follows:&lt;br /&gt;
&lt;br /&gt;
# Written in Python.&lt;br /&gt;
# Metadata in database.&lt;br /&gt;
# Playlists stored in database.&lt;br /&gt;
# Playlist scheduling.&lt;br /&gt;
# Backend/frontend design, possibly multible frontends.&lt;br /&gt;
# No web server needed, interface comes from TurboGears.&lt;br /&gt;
# Minimal configuration, after all thats why I started the project.&lt;br /&gt;
# SQLObject will be used to work with any database.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
see [[Icebreaker::Design]]&lt;br /&gt;
&lt;br /&gt;
== User Wanted Features == &lt;br /&gt;
&lt;br /&gt;
see [[Icebreaker::UserWantedFeatures]]&lt;br /&gt;
&lt;br /&gt;
== Worklog ==&lt;br /&gt;
&lt;br /&gt;
see [[Icebreaker::Worklog]]&lt;br /&gt;
&lt;br /&gt;
== Application ==&lt;br /&gt;
&lt;br /&gt;
I run a Icecast stream for the use of myself and my friends, and while making playlists for it, I was very overcome by the enormity of the task. I have a modest Vorbis collection by some standards, 2500 tracks. I pity anyone that has ever tried to make playlists for a large streaming site with who knows how many tracks. What&#039;s more, I can&#039;t be bothered to switch playlists out all the time. So the natural progression seemed to be a simple drag-and-drop interface to create and schedule playlists.&lt;br /&gt;
&lt;br /&gt;
I plan to use a separate backend from the web interface, so that a X-based frontend could be added eventually, or support could be added in an existing media application. SQLObject will be used to provide support for multiple databases with one set of code. I will try to minimize configuration to media path, and database connections, and password for the interface.&lt;br /&gt;
&lt;br /&gt;
I have some code written, a script that populates a database, and a script that will be called by Ices and Icecast that provides the next track to play. I wish to include searching/adding media to a playlist based on metadata, as the populate.py script parses Ogg tags and adds them to the database.&lt;br /&gt;
&lt;br /&gt;
The frontend will be based off of TurboGears (http://www.turbogears.org) and could be packaged as a python egg, separately or included with the source for the backend. In the event that no playlist is scheduled, there will be a random playlist that will be automatically generated. Future plans are to integrate with Google Calendar, to display to any users which playlists will be scheduled. Another of my plans is to research integration with Icecast, to add support for controlling it. I&#039;ve been thinking about this project and planning it since December, and I am extremely excited.&lt;br /&gt;
&lt;br /&gt;
The main focus of this project is ease, and I will facilitate use in these ways:&lt;br /&gt;
&lt;br /&gt;
1. Simple Interface, very self-explanatory.&lt;br /&gt;
2. Minimal configuration. No web server needed, no PHP, extremely easy to get up and running. (Possibly) a few Python Libraries to install. One short configuration file. However, Ices will need to be configured to accept input from a script.&lt;br /&gt;
3. Database agnostic. If no database server is installed, SQLite will work perfectly in it&#039;s stead.&lt;br /&gt;
&lt;br /&gt;
My goals in this project are not overly ambitious, and will contribute greatly to media enthusiasts like myself. I have set up a project page on Google Code (http://code.google.com/p/icebreaker/). I have not released any code because the code is not usable by anyone other than myself for the initial development. Soon I will add the code I have completed to the project page after adding database support to the Ices-callable script. I realize this description is very short in comparison to the 7500 character limit, but a few details are currently &amp;quot;up in the air&amp;quot;. Namely, how I will handle scheduling and whether or not I will daemonize the backend. I have several ideas on how to handle the internals, but it&#039;s too early to tell how it will work. Very soon I plan on doing a few flowcharts to illustrate the architecture of the project, and the various ways it may manifest.&lt;br /&gt;
&lt;br /&gt;
I plan on having this application feature complete about 75% through the summer, as I am already greatly obsessed with it and am only abstaining from the project to focus on my schoolwork. I have the entire summer to work on this project if it is accepted and will spend at least 30 hours a week on it. Almost everything I code is media-oriented. I usually write converter scripts in python or bash to manipulate files. I am most comfortable in Python and I have done a little work in C. I also took a course in VB.net and hated every minute of it. I dont think of myself as a programmer, but I greatly enjoy making things and enjoying the outcome of my labor.&lt;br /&gt;
&lt;br /&gt;
Though I wont contribute specifically to any one of your projects in code, I feel that my project will enhance other xiph projects.&lt;/div&gt;</summary>
		<author><name>Nickmudd</name></author>
	</entry>
	<entry>
		<id>https://wiki.xiph.org/index.php?title=Icebreaker::Design&amp;diff=6928</id>
		<title>Icebreaker::Design</title>
		<link rel="alternate" type="text/html" href="https://wiki.xiph.org/index.php?title=Icebreaker::Design&amp;diff=6928"/>
		<updated>2007-06-14T07:08:45Z</updated>

		<summary type="html">&lt;p&gt;Nickmudd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Design =&lt;br /&gt;
I&#039;ve put a few things that I&#039;ve been thinking about on this wiki page.&amp;lt;br&amp;gt;&lt;br /&gt;
If you would like to comment, please make a note.&amp;lt;br&amp;gt;&lt;br /&gt;
== Database ==&lt;br /&gt;
Here is a simple structure with explanations.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Database: On a server or sqlite, doesnt matter.&amp;lt;br&amp;gt;&lt;br /&gt;
:data- table; houses file data.&amp;lt;br&amp;gt;&lt;br /&gt;
::path- path of file on the file system.&amp;lt;br&amp;gt;&lt;br /&gt;
::genre- genre example: Rock&amp;lt;br&amp;gt;&lt;br /&gt;
::artist- artist example: Misfits&amp;lt;br&amp;gt;&lt;br /&gt;
::title- title example: Hybrid Moments&amp;lt;br&amp;gt;&lt;br /&gt;
::album- album example: Static Age&amp;lt;br&amp;gt;&lt;br /&gt;
:playlists- table; definition on databases, scheduling, defined in web-app.&amp;lt;br&amp;gt;&lt;br /&gt;
::name- playlist name.&amp;lt;br&amp;gt;&lt;br /&gt;
::description- description of playlist&amp;lt;br&amp;gt;&lt;br /&gt;
::position- position in playlist, so that play is not started over from beginning. Incremented when track begins.&amp;lt;br&amp;gt;&lt;br /&gt;
::date/time- scheduling, a tuple of times to play, idk really. any suggestions?&amp;lt;br&amp;gt;&lt;br /&gt;
::current- designates the currently running playlist, value is 1 or 0.&amp;lt;br&amp;gt;&lt;br /&gt;
:playlist- table, name of table is playlist? maybe incorporated in playlists table?&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pseudocode ==&lt;br /&gt;
coming soon&lt;/div&gt;</summary>
		<author><name>Nickmudd</name></author>
	</entry>
	<entry>
		<id>https://wiki.xiph.org/index.php?title=Icebreaker::Worklog&amp;diff=6927</id>
		<title>Icebreaker::Worklog</title>
		<link rel="alternate" type="text/html" href="https://wiki.xiph.org/index.php?title=Icebreaker::Worklog&amp;diff=6927"/>
		<updated>2007-06-14T06:09:52Z</updated>

		<summary type="html">&lt;p&gt;Nickmudd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Week 1 May 28-June 4&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Spent time reading.&amp;lt;br&amp;gt;&lt;br /&gt;
Started Wiki, sent mail to Icecast-dev.&amp;lt;br&amp;gt;&lt;br /&gt;
Started learning TurboGears.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 5&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Changed MySQLdb to SQLObject in populate.py&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 6&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Added genre support to populate.py.&lt;br /&gt;
Committed populate.py and config.py to svn.&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 7-9&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Reading &#039;&#039;Producing Open Source Software&#039;&#039; and &#039;&#039;Rapid Web Applications with TurboGears.&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
I&#039;ve had a fever and sinus infection, and been away from the computer a lot.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 10-13&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
More reading. Pleased to report that my sinus infection is gone and I am much better.&amp;lt;br&amp;gt;&lt;br /&gt;
Started designing database, writing pseudocode to figure out how to switch playlists, etc.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Nickmudd</name></author>
	</entry>
	<entry>
		<id>https://wiki.xiph.org/index.php?title=Icebreaker::Worklog&amp;diff=6920</id>
		<title>Icebreaker::Worklog</title>
		<link rel="alternate" type="text/html" href="https://wiki.xiph.org/index.php?title=Icebreaker::Worklog&amp;diff=6920"/>
		<updated>2007-06-14T05:43:13Z</updated>

		<summary type="html">&lt;p&gt;Nickmudd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Week 1 May 28-June 4&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Spent time reading.&amp;lt;br&amp;gt;&lt;br /&gt;
Started Wiki, sent mail to Icecast-dev.&amp;lt;br&amp;gt;&lt;br /&gt;
Started learning TurboGears.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 5&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Changed MySQLdb to SQLObject in populate.py&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 6&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Added genre support to populate.py.&lt;br /&gt;
Committed populate.py and config.py to svn.&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 7-9&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Reading &#039;&#039;Producing Open Source Software&#039;&#039; and &#039;&#039;Rapid Web Applications with TurboGears.&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
I&#039;ve had a fever and sinus infection, and been away from the computer a lot.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Nickmudd</name></author>
	</entry>
	<entry>
		<id>https://wiki.xiph.org/index.php?title=Icebreaker::Worklog&amp;diff=6890</id>
		<title>Icebreaker::Worklog</title>
		<link rel="alternate" type="text/html" href="https://wiki.xiph.org/index.php?title=Icebreaker::Worklog&amp;diff=6890"/>
		<updated>2007-06-09T09:51:24Z</updated>

		<summary type="html">&lt;p&gt;Nickmudd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Week 1 May 28-June 4&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Spent time reading.&amp;lt;br&amp;gt;&lt;br /&gt;
Started Wiki, sent mail to Icecast-dev.&amp;lt;br&amp;gt;&lt;br /&gt;
Started learning TurboGears.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 5&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Changed MySQLdb to SQLObject in populate.py&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 6&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Added genre support to populate.py.&lt;br /&gt;
Committed populate.py and config.py to svn.&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 7-9&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Reading /Producing Open Source Software/ and /Rapid Web Applications with TurboGears./&amp;lt;br&amp;gt;&lt;br /&gt;
I&#039;ve had a fever and sinus infection, and been away from the computer a lot.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Nickmudd</name></author>
	</entry>
	<entry>
		<id>https://wiki.xiph.org/index.php?title=Icebreaker::Worklog&amp;diff=6857</id>
		<title>Icebreaker::Worklog</title>
		<link rel="alternate" type="text/html" href="https://wiki.xiph.org/index.php?title=Icebreaker::Worklog&amp;diff=6857"/>
		<updated>2007-06-07T05:26:07Z</updated>

		<summary type="html">&lt;p&gt;Nickmudd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Week 1 May 28-June 4&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Spent time reading.&amp;lt;br&amp;gt;&lt;br /&gt;
Started Wiki, sent mail to Icecast-dev.&amp;lt;br&amp;gt;&lt;br /&gt;
Started learning TurboGears.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 5&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Changed MySQLdb to SQLObject in populate.py&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;June 6&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Added genre support to populate.py.&lt;br /&gt;
Committed populate.py and config.py to svn.&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Nickmudd</name></author>
	</entry>
	<entry>
		<id>https://wiki.xiph.org/index.php?title=Icebreaker::Worklog&amp;diff=6847</id>
		<title>Icebreaker::Worklog</title>
		<link rel="alternate" type="text/html" href="https://wiki.xiph.org/index.php?title=Icebreaker::Worklog&amp;diff=6847"/>
		<updated>2007-06-05T02:38:12Z</updated>

		<summary type="html">&lt;p&gt;Nickmudd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Week 1 May 28-June 4&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Spent time reading.&amp;lt;br&amp;gt;&lt;br /&gt;
Started Wiki, sent mail to Icecast-dev.&amp;lt;br&amp;gt;&lt;br /&gt;
Started learning TurboGears.&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Nickmudd</name></author>
	</entry>
	<entry>
		<id>https://wiki.xiph.org/index.php?title=Icebreaker&amp;diff=6846</id>
		<title>Icebreaker</title>
		<link rel="alternate" type="text/html" href="https://wiki.xiph.org/index.php?title=Icebreaker&amp;diff=6846"/>
		<updated>2007-06-04T23:16:35Z</updated>

		<summary type="html">&lt;p&gt;Nickmudd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Icebreaker is a playlist authoring/scheduling system for Icecast. It uses a database to store playlists and scheduling data. Icebreaker&#039;s main objective is to be easy to use, so that writing playlists by hand can be avoided. Icebreaker is being designed to use a web-based interface through TurboGears. Icebreaker is _NOT_ a web-based streamer or a client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Plans ==&lt;br /&gt;
&lt;br /&gt;
My plans are as follows:&lt;br /&gt;
&lt;br /&gt;
# Written in Python.&lt;br /&gt;
# Metadata in database.&lt;br /&gt;
# Playlists stored in database.&lt;br /&gt;
# Playlist scheduling.&lt;br /&gt;
# Backend/frontend design, possibly multible frontends.&lt;br /&gt;
# No web server needed, interface comes from TurboGears.&lt;br /&gt;
# Minimal configuration, after all thats why I started the project.&lt;br /&gt;
# SQLObject will be used to work with any database.&lt;br /&gt;
--[[User:Nickmudd|Nickmudd]] 18:54, 30 May 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
== User Wanted Features == &lt;br /&gt;
&lt;br /&gt;
see [[Icebreaker::UserWantedFeatures]]&lt;br /&gt;
&lt;br /&gt;
== Worklog ==&lt;br /&gt;
&lt;br /&gt;
see [[Icebreaker::Worklog]]&lt;br /&gt;
&lt;br /&gt;
== Application ==&lt;br /&gt;
&lt;br /&gt;
I run a Icecast stream for the use of myself and my friends, and while making playlists for it, I was very overcome by the enormity of the task. I have a modest Vorbis collection by some standards, 2500 tracks. I pity anyone that has ever tried to make playlists for a large streaming site with who knows how many tracks. What&#039;s more, I can&#039;t be bothered to switch playlists out all the time. So the natural progression seemed to be a simple drag-and-drop interface to create and schedule playlists.&lt;br /&gt;
&lt;br /&gt;
I plan to use a separate backend from the web interface, so that a X-based frontend could be added eventually, or support could be added in an existing media application. SQLObject will be used to provide support for multiple databases with one set of code. I will try to minimize configuration to media path, and database connections, and password for the interface.&lt;br /&gt;
&lt;br /&gt;
I have some code written, a script that populates a database, and a script that will be called by Ices and Icecast that provides the next track to play. I wish to include searching/adding media to a playlist based on metadata, as the populate.py script parses Ogg tags and adds them to the database.&lt;br /&gt;
&lt;br /&gt;
The frontend will be based off of TurboGears (http://www.turbogears.org) and could be packaged as a python egg, separately or included with the source for the backend. In the event that no playlist is scheduled, there will be a random playlist that will be automatically generated. Future plans are to integrate with Google Calendar, to display to any users which playlists will be scheduled. Another of my plans is to research integration with Icecast, to add support for controlling it. I&#039;ve been thinking about this project and planning it since December, and I am extremely excited.&lt;br /&gt;
&lt;br /&gt;
The main focus of this project is ease, and I will facilitate use in these ways:&lt;br /&gt;
&lt;br /&gt;
1. Simple Interface, very self-explanatory.&lt;br /&gt;
2. Minimal configuration. No web server needed, no PHP, extremely easy to get up and running. (Possibly) a few Python Libraries to install. One short configuration file. However, Ices will need to be configured to accept input from a script.&lt;br /&gt;
3. Database agnostic. If no database server is installed, SQLite will work perfectly in it&#039;s stead.&lt;br /&gt;
&lt;br /&gt;
My goals in this project are not overly ambitious, and will contribute greatly to media enthusiasts like myself. I have set up a project page on Google Code (http://code.google.com/p/icebreaker/). I have not released any code because the code is not usable by anyone other than myself for the initial development. Soon I will add the code I have completed to the project page after adding database support to the Ices-callable script. I realize this description is very short in comparison to the 7500 character limit, but a few details are currently &amp;quot;up in the air&amp;quot;. Namely, how I will handle scheduling and whether or not I will daemonize the backend. I have several ideas on how to handle the internals, but it&#039;s too early to tell how it will work. Very soon I plan on doing a few flowcharts to illustrate the architecture of the project, and the various ways it may manifest.&lt;br /&gt;
&lt;br /&gt;
I plan on having this application feature complete about 75% through the summer, as I am already greatly obsessed with it and am only abstaining from the project to focus on my schoolwork. I have the entire summer to work on this project if it is accepted and will spend at least 30 hours a week on it. Almost everything I code is media-oriented. I usually write converter scripts in python or bash to manipulate files. I am most comfortable in Python and I have done a little work in C. I also took a course in VB.net and hated every minute of it. I dont think of myself as a programmer, but I greatly enjoy making things and enjoying the outcome of my labor.&lt;br /&gt;
&lt;br /&gt;
Though I wont contribute specifically to any one of your projects in code, I feel that my project will enhance other xiph projects.&lt;/div&gt;</summary>
		<author><name>Nickmudd</name></author>
	</entry>
	<entry>
		<id>https://wiki.xiph.org/index.php?title=Icebreaker&amp;diff=6823</id>
		<title>Icebreaker</title>
		<link rel="alternate" type="text/html" href="https://wiki.xiph.org/index.php?title=Icebreaker&amp;diff=6823"/>
		<updated>2007-06-01T05:01:03Z</updated>

		<summary type="html">&lt;p&gt;Nickmudd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Icebreaker is a playlist authoring/scheduling system for Icecast. It uses a database to store playlists and scheduling data. Icebreaker&#039;s main objective is to be easy to use, so that writing playlists by hand can be avoided. Icebreaker is being designed to use a web-based interface through TurboGears. Icebreaker is _NOT_ a web-based streamer or a client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Plans ==&lt;br /&gt;
&lt;br /&gt;
My plans are as follows:&lt;br /&gt;
&lt;br /&gt;
# Written in Python.&lt;br /&gt;
# Metadata in database.&lt;br /&gt;
# Playlists stored in database.&lt;br /&gt;
# Playlist scheduling.&lt;br /&gt;
# Backend/frontend design, possibly multible frontends.&lt;br /&gt;
# No web server needed, interface comes from TurboGears.&lt;br /&gt;
# Minimal configuration, after all thats why I started the project.&lt;br /&gt;
# SQLObject will be used to work with any database.&lt;br /&gt;
--[[User:Nickmudd|Nickmudd]] 18:54, 30 May 2007 (PDT)&lt;br /&gt;
&lt;br /&gt;
== User Wanted Features == &lt;br /&gt;
&lt;br /&gt;
see [[Icebreaker::UserWantedFeatures]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Application ==&lt;br /&gt;
&lt;br /&gt;
I run a Icecast stream for the use of myself and my friends, and while making playlists for it, I was very overcome by the enormity of the task. I have a modest OGG collection by some standards, 2500 tracks. I pity anyone that has ever tried to make playlists for a large streaming site with who knows how many tracks. What&#039;s more, I can&#039;t be bothered to switch playlists out all the time. So the natural progression seemed to be a simple drag-and-drop interface to create and schedule playlists.&lt;br /&gt;
&lt;br /&gt;
I plan to use a separate backend from the web interface, so that a X-based frontend could be added eventually, or support could be added in an existing media application. SQLObject will be used to provide support for multiple databases with one set of code. I will try to minimize configuration to media path, and database connections, and password for the interface.&lt;br /&gt;
&lt;br /&gt;
I have some code written, a script that populates a database, and a script that will be called by Ices and Icecast that provides the next track to play. I wish to include searching/adding media to a playlist based on metadata, as the populate.py script parses OGG tags and adds them to the database.&lt;br /&gt;
&lt;br /&gt;
The frontend will be based off of TurboGears (http://www.turbogears.org) and could be packaged as a python egg, separately or included with the source for the backend. In the event that no playlist is scheduled, there will be a random playlist that will be automatically generated. Future plans are to integrate with Google Calendar, to display to any users which playlists will be scheduled. Another of my plans is to research integration with Icecast, to add support for controlling it. I&#039;ve been thinking about this project and planning it since December, and I am extremely excited.&lt;br /&gt;
&lt;br /&gt;
The main focus of this project is ease, and I will facilitate use in these ways:&lt;br /&gt;
&lt;br /&gt;
1. Simple Interface, very self-explanatory.&lt;br /&gt;
2. Minimal configuration. No web server needed, no PHP, extremely easy to get up and running. (Possibly) a few Python Libraries to install. One short configuration file. However, Ices will need to be configured to accept input from a script.&lt;br /&gt;
3. Database agnostic. If no database server is installed, SQLite will work perfectly in it&#039;s stead.&lt;br /&gt;
&lt;br /&gt;
My goals in this project are not overly ambitious, and will contribute greatly to media enthusiasts like myself. I have set up a project page on Google Code (http://code.google.com/p/icebreaker/). I have not released any code because the code is not usable by anyone other than myself for the initial development. Soon I will add the code I have completed to the project page after adding database support to the Ices-callable script. I realize this description is very short in comparison to the 7500 character limit, but a few details are currently &amp;quot;up in the air&amp;quot;. Namely, how I will handle scheduling and whether or not I will daemonize the backend. I have several ideas on how to handle the internals, but it&#039;s too early to tell how it will work. Very soon I plan on doing a few flowcharts to illustrate the architecture of the project, and the various ways it may manifest.&lt;br /&gt;
&lt;br /&gt;
I plan on having this application feature complete about 75% through the summer, as I am already greatly obsessed with it and am only abstaining from the project to focus on my schoolwork. I have the entire summer to work on this project if it is accepted and will spend at least 30 hours a week on it. Almost everything I code is media-oriented. I usually write converter scripts in python or bash to manipulate files. I am most comfortable in Python and I have done a little work in C. I also took a course in VB.net and hated every minute of it. I dont think of myself as a programmer, but I greatly enjoy making things and enjoying the outcome of my labor.&lt;br /&gt;
&lt;br /&gt;
Though I wont contribute specifically to any one of your projects in code, I feel that my project will enhance other xiph projects.&lt;/div&gt;</summary>
		<author><name>Nickmudd</name></author>
	</entry>
	<entry>
		<id>https://wiki.xiph.org/index.php?title=Icebreaker&amp;diff=6804</id>
		<title>Icebreaker</title>
		<link rel="alternate" type="text/html" href="https://wiki.xiph.org/index.php?title=Icebreaker&amp;diff=6804"/>
		<updated>2007-05-31T01:56:57Z</updated>

		<summary type="html">&lt;p&gt;Nickmudd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Icebreaker is a playlist authoring/scheduling system for Icecast. It uses a database to store playlists and scheduling data. Icebreaker&#039;s main objective is to be easy to use, so that writing playlists by hand can be avoided. Icebreaker is being designed to use a web-based interface through TurboGears. Icebreaker is _NOT_ a web-based streamer or a client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Plans ==&lt;br /&gt;
&lt;br /&gt;
My plans are as follows:&lt;br /&gt;
&lt;br /&gt;
# Written in Python.&lt;br /&gt;
# Metadata in database.&lt;br /&gt;
# Playlists stored in database.&lt;br /&gt;
# Playlist scheduling.&lt;br /&gt;
# Backend/frontend design, possibly multible frontends.&lt;br /&gt;
# No web server needed, interface comes from TurboGears.&lt;br /&gt;
# Minimal configuration, after all thats why I started the project.&lt;br /&gt;
# SQLObject will be used to work with any database.&lt;br /&gt;
--[[User:Nickmudd|Nickmudd]] 18:54, 30 May 2007 (PDT)&lt;/div&gt;</summary>
		<author><name>Nickmudd</name></author>
	</entry>
	<entry>
		<id>https://wiki.xiph.org/index.php?title=Icebreaker&amp;diff=6803</id>
		<title>Icebreaker</title>
		<link rel="alternate" type="text/html" href="https://wiki.xiph.org/index.php?title=Icebreaker&amp;diff=6803"/>
		<updated>2007-05-31T01:54:54Z</updated>

		<summary type="html">&lt;p&gt;Nickmudd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Icebreaker is a playlist authoring/scheduling system for Icecast. It uses a database to store playlists and scheduling data. Icebreaker&#039;s main objective is to be easy to use, so that writing playlists by hand can be avoided. Icebreaker is being designed to use a web-based interface through TurboGears. Icebreaker is _NOT_ a web-based streamer or a client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Plans ==&lt;br /&gt;
&lt;br /&gt;
My plans are as follows:&lt;br /&gt;
&lt;br /&gt;
1. Written in Python.&amp;lt;br&amp;gt;&lt;br /&gt;
2. Metadata in database.&amp;lt;br&amp;gt;&lt;br /&gt;
3. Playlists stored in database.&amp;lt;br&amp;gt;&lt;br /&gt;
4. Playlist scheduling.&amp;lt;br&amp;gt;&lt;br /&gt;
5. Backend/frontend design, possibly multible frontends.&amp;lt;br&amp;gt;&lt;br /&gt;
6. No web server needed, interface comes from TurboGears.&amp;lt;br&amp;gt;&lt;br /&gt;
7. Minimal configuration, after all thats why I started the project.&amp;lt;br&amp;gt;&lt;br /&gt;
8. SQLObject will be used to work with any database.&amp;lt;br&amp;gt;&lt;br /&gt;
--[[User:Nickmudd|Nickmudd]] 18:54, 30 May 2007 (PDT)&lt;/div&gt;</summary>
		<author><name>Nickmudd</name></author>
	</entry>
	<entry>
		<id>https://wiki.xiph.org/index.php?title=Icebreaker&amp;diff=6802</id>
		<title>Icebreaker</title>
		<link rel="alternate" type="text/html" href="https://wiki.xiph.org/index.php?title=Icebreaker&amp;diff=6802"/>
		<updated>2007-05-31T01:46:12Z</updated>

		<summary type="html">&lt;p&gt;Nickmudd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Icebreaker is a playlist authoring/scheduling system for Icecast. It uses a database to store playlists and scheduling data. Icebreaker&#039;s main objective is to be easy to use, so that writing playlists by hand can be avoided. Icebreaker is being designed to use a web-based interface through TurboGears. Icebreaker is _NOT_ a web-based streamer or a client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Plans ==&lt;br /&gt;
&lt;br /&gt;
My plans are as follows:&lt;br /&gt;
&lt;br /&gt;
1. Written in Python.&amp;lt;br&amp;gt;&lt;br /&gt;
2. Metadata in database.&amp;lt;br&amp;gt;&lt;br /&gt;
3. Playlists stored in database.&amp;lt;br&amp;gt;&lt;br /&gt;
4. Playlist scheduling.&amp;lt;br&amp;gt;&lt;br /&gt;
5. Backend/frontend design, possibly multible frontends.&amp;lt;br&amp;gt;&lt;br /&gt;
6. No web server needed, interface comes from TurboGears.&amp;lt;br&amp;gt;&lt;br /&gt;
7. Minimal configuration, after all thats why I started the project.&amp;lt;br&amp;gt;&lt;br /&gt;
8. SQLObject will be used to work with any database.&amp;lt;br&amp;gt;&lt;br /&gt;
--[[User:Nickmudd|Nickmudd]] 18:46, 30 May 2007 (PDT)&lt;/div&gt;</summary>
		<author><name>Nickmudd</name></author>
	</entry>
	<entry>
		<id>https://wiki.xiph.org/index.php?title=Icebreaker&amp;diff=6801</id>
		<title>Icebreaker</title>
		<link rel="alternate" type="text/html" href="https://wiki.xiph.org/index.php?title=Icebreaker&amp;diff=6801"/>
		<updated>2007-05-31T01:45:40Z</updated>

		<summary type="html">&lt;p&gt;Nickmudd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Icebreaker is a playlist authoring/scheduling system for Icecast. It uses a database to store playlists and scheduling data. Icebreaker&#039;s main objective is to be easy to use, so that writing playlists by hand can be avoided. Icebreaker is being designed to use a web-based interface through TurboGears. Icebreaker is _NOT_ a web-based streamer or a client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Plans ==&lt;br /&gt;
&lt;br /&gt;
My plans are as follows:&lt;br /&gt;
&lt;br /&gt;
1. Written in Python.&amp;lt;br&amp;gt;&lt;br /&gt;
2. Metadata in database.&amp;lt;br&amp;gt;&lt;br /&gt;
3. Playlists stored in database.&amp;lt;br&amp;gt;&lt;br /&gt;
4. Playlist scheduling.&amp;lt;br&amp;gt;&lt;br /&gt;
5. Backend/frontend design, possibly multible frontends.&amp;lt;br&amp;gt;&lt;br /&gt;
6. No web server needed, interface comes from TurboGears.&amp;lt;br&amp;gt;&lt;br /&gt;
7. Minimal configuration, after all thats why I started the project.&amp;lt;br&amp;gt;&lt;br /&gt;
8. SQLObject will be used to work with any database.&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nickmudd</name></author>
	</entry>
	<entry>
		<id>https://wiki.xiph.org/index.php?title=Icebreaker&amp;diff=6800</id>
		<title>Icebreaker</title>
		<link rel="alternate" type="text/html" href="https://wiki.xiph.org/index.php?title=Icebreaker&amp;diff=6800"/>
		<updated>2007-05-31T00:28:32Z</updated>

		<summary type="html">&lt;p&gt;Nickmudd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Icebreaker is a playlist authoring/scheduling system for Icecast. It uses a database to store playlists and scheduling data. Icebreaker&#039;s main objective is to be easy to use, so that writing playlists by hand can be avoided. Icebreaker is being designed to use a web-based interface through TurboGears. Icebreaker is _NOT_ a web-based streamer or a client.&lt;/div&gt;</summary>
		<author><name>Nickmudd</name></author>
	</entry>
</feed>