<?xml version="1.0"?>
<rss version="2.0">

<channel>
	<title>Blogs</title>
	<link>http://foss.rit.edu/planet/blogs/</link>
	<language>en</language>
	<description>Blogs - http://foss.rit.edu/planet/blogs/</description>

<item>
	<title>CIVX: CIVX - Qalthos: Recent Projects: Knowledge</title>
	<guid>tag:qalthos.github.io/blog,2012-08-07:recent-projects-knowledge.html</guid>
	<link>http://qalthos.github.io/blog/recent-projects-knowledge.html</link>
	<description>&lt;p&gt;One of the cool features of CIVX that really caught my interest when I
first started working on it was the &lt;a class=&quot;reference external&quot; href=&quot;https://github.com/FOSSRIT/knowledge&quot;&gt;Knowledge DB&lt;/a&gt;. Using the magic of
Python, Knowledge is a vertical, polymorphic database for storing
knowledge about things, which means very little to anyone, even me.&lt;/p&gt;
&lt;p&gt;What Knowledge does is it allows you to store anything (or anything
Python can pickle, at least), as arbitrary collections of Entities and
Facts.&lt;/p&gt;</description>
	<pubDate>Wed, 08 Aug 2012 03:39:00 +0000</pubDate>
</item>
<item>
	<title>OVC: Open Video Chat - trose: Catching up</title>
	<guid>tag:blogger.com,1999:blog-2352882732091660162.post-2354039240691746754</guid>
	<link>http://trosehfoss.blogspot.com/2012/05/catching-up.html</link>
	<description>Wow, I haven't posted in a long time. Shortly after my last post I had the flu for a week, then I had a job opportunity come up and I spent half a week flying around for interviews. For two weeks after that I was writing docs and doing more research for OVC and I forgot to blog...&lt;br /&gt;&lt;br /&gt;So I have some docs up for OVC now explaining how the code works (. I also added to the readme and made additional comments in the code. Hopefully my additions will help the next team that can pick up OVC.&lt;br /&gt;&lt;br /&gt;This week and next I hope to add some unit tests to OVC. I'd like to be able to test to make sure the gstreamer interface is working correctly and that the network connection is working. First thing I need to do is figure out how to launch a sugar activity through a unit testing environment. From there it should be easy enough to mock another activity and have it send fake connections.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I had a conversation with Cerlyn from OLPC about unit testing. It seems like this will be more difficult than I thought...&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&amp;lt;trose&amp;gt; can anyone point me to a good reference or example for unit testing sugar activities? specifically testing video and network interfaces?&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;lt;Cerlyn&amp;gt; trose: As far as Sugar goes, there is no activity specific testing framework I am aware of; I've been begging for one to be made.&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;lt;Cerlyn&amp;gt; Sascha Silbe has been working on unit tests for the core Sugar environment on occasion, but as far as I know progress on that front has been going slow&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;lt;trose&amp;gt; I'd like for just some way to start up an activity and then send it fake signals like another activity is trying to connect. Then I could make sure the activity responds correctly&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;lt;Cerlyn&amp;gt; many tests Silbe's been working on require user involvement to report pass/fail as well :/&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;lt;trose&amp;gt; Cerlyn, well that is frustrating...&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;lt;trose&amp;gt; how exactly does sugar start up an activity? is there a way to emulate that?&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;lt;trose&amp;gt; or is there a way to say like sugar.startActivity() and get a pointer back?&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;lt;Cerlyn&amp;gt; You can start an activity within sugar by running &quot;sugar-launch {fully qualified name of activity here; like org.person.trose.myActivity}&quot;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;lt;trose&amp;gt; Cerlyn, okay&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;lt;Cerlyn&amp;gt; That probably wraps a DBUS interface to do it&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;lt;trose&amp;gt; but that's cmd right? can i get a handle to inspect the activity?&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;lt;Cerlyn&amp;gt; Historically having one activity directly launch another is something that hasn't been done; I do not recall the reasons offhand (not a developer; rather QA)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;lt;trose&amp;gt; Cerlyn, hmm&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;lt;trose&amp;gt; i could see how that would cause problems&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;lt;trose&amp;gt; this would be a training script though&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;lt;trose&amp;gt; *testing&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;lt;Cerlyn&amp;gt; trose: In theory, being GTK3 based, GTK-supporting test frameworks should work&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;lt;Cerlyn&amp;gt; but graphical testing is obviously not unit level&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;So there isn't a good way to start up a sugar activity and maintain a handle on it. I may be able to hack around this somehow though. Stay tuned...</description>
	<pubDate>Thu, 03 May 2012 18:40:00 +0000</pubDate>
	<author>noreply@blogger.com (T_Rose)</author>
</item>
<item>
	<title>OVC: Open Video Chat - trose: Measure Twice Cut Once</title>
	<guid>tag:blogger.com,1999:blog-2352882732091660162.post-6279730016948310262</guid>
	<link>http://trosehfoss.blogspot.com/2012/03/measure-twice-cut-once.html</link>
	<description>More research today. I've been mucking around with some of Collabora's code. They are releasing &lt;a href=&quot;http://www.freedesktop.org/wiki/Software/Farstream&quot;&gt;Farstream&lt;/a&gt; on Fedora 17 soon. I also found out that there will be a version of Sugar on F17 released in July. Farstream comes with python bindings by default and supports a lot of useful things by default including, RTP and ICE. ICE will be useful as it allows the program to navigate around firewalls and NATs. This should be a valid approach so long as I can get a hold of the development build of Sugar. I don't think I'll have any problems with that though.&lt;br /&gt;&lt;br /&gt;If that isn't possible I should be able to continue with current Sugar builds by using telepathy-farsight. This should be very similar to farstream except I'll need to manually pull in the ICE library and perhaps a few other things.&lt;br /&gt;&lt;br /&gt;Overall I feel like I'm getting a firm grasp of what needs to happen to get everything working properly. Next week I'm going to start hacking on the OVC code to figure out how I can integrate these new libraries.</description>
	<pubDate>Thu, 29 Mar 2012 23:17:00 +0000</pubDate>
	<author>noreply@blogger.com (T_Rose)</author>
</item>
<item>
	<title>OVC: Open Video Chat - trose: OVC Research</title>
	<guid>tag:blogger.com,1999:blog-2352882732091660162.post-3091536685601138177</guid>
	<link>http://trosehfoss.blogspot.com/2012/03/ovc-research.html</link>
	<description>I dove into the pyGst docs today to try and wrap my head around what exactly is going on. I found the &lt;a href=&quot;http://pygstdocs.berlios.de/pygst-reference/index.html&quot;&gt;docs&lt;/a&gt; to be really confusing at first. Luckily there was an accompanying &lt;a href=&quot;http://pygstdocs.berlios.de/pygst-tutorial/index.html&quot;&gt;tutorial&lt;/a&gt; that explained things very nicely.&lt;br /&gt;&lt;br /&gt;Unfortunately, the tutorial only outlined how to do local streaming. I searched around a little more and discovered that OLPC has a page about gstreamer on the XO's specifically. &lt;a href=&quot;http://wiki.laptop.org/go/GStreamer#Doing_live_streaming_video_from_an_xo&quot;&gt;This&lt;/a&gt; page has a lot of information on it. According to that, I need to use a udpsink with an IP to send video to another XO.&lt;br /&gt;&lt;br /&gt;At this point I started picking through the code to figure out where the problems might be. I know that somewhere along the way the connection isn't being set up correctly. Either the XO's are failing to get each other's IP's or the video connection isn't establishing.&lt;br /&gt;&lt;br /&gt;The part of the code in &lt;a href=&quot;https://github.com/OpenVideoChat/Open-Video-chat/blob/master/OpenVideoChat.activity/tube_speak.py&quot;&gt;tube_speak.py&lt;/a&gt; that deals with IP's is as such:&lt;br /&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;@signal(dbus_interface=IFACE, signature='s')&lt;br /&gt;def announce_ip(self, ip):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.ip = ip&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;def announce_ip_cb(self, ip, sender=None):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if sender != self.tube.get_unique_name():&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.cb('ip', ip)&lt;/blockquote&gt;This is most likely where the problem is occurring. Basically, the XO's are just spitting out their IP and hoping the other one gets it. If this is the root of the problem, I should be able to solve it with a home spun TCP-like interface where it listens for a return signal.&lt;br /&gt;&lt;br /&gt;The other part of the code I've been looking at is here in &lt;a href=&quot;https://github.com/OpenVideoChat/Open-Video-chat/blob/master/OpenVideoChat.activity/gst_stack.py&quot;&gt;gst_stack.py&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Add udpsink&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; udp_sink = gst.element_factory_make(&quot;udpsink&quot;)&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; udp_sink.set_property(&quot;host&quot;, ip)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; self._out_pipeline.add(udp_sink)&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; video_enc.link(udp_sink)&lt;br /&gt;&lt;br /&gt;It may be the case that I need to find an alternative to udpsink. Maybe there is something like rtpsink? I'm not sure at this point. Next I think I will start picking at the code to try and determine exactly where it's failing to make the connection.</description>
	<pubDate>Wed, 28 Mar 2012 01:37:00 +0000</pubDate>
	<author>noreply@blogger.com (T_Rose)</author>
</item>
<item>
	<title>OVC: Open Video Chat - trose: Migrating OVC</title>
	<guid>tag:blogger.com,1999:blog-2352882732091660162.post-677690738301324550</guid>
	<link>http://trosehfoss.blogspot.com/2012/03/migrating-ovc.html</link>
	<description>Well I haven't talked about Open Video Chat lately. The project has been pretty stagnant for a while. I'm picking it up again this quarter as part of an independent study. Expect weekly updates about the project.&lt;br /&gt;&lt;br /&gt;The first order of business is to migrate the project to github. Fedora Hosted was nice but it simply doesn't compare to github for community involvement and collaboration tools. The new repo can be found here: &lt;a href=&quot;https://github.com/OpenVideoChat/Open-Video-chat&quot;&gt;https://github.com/OpenVideoChat/Open-Video-chat&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This quarter I would like to get OVC working with RTP. The current system uses UDP steaming 100% of the time. This means that more often than not the connection packets are dropped since the XO's have horrible connection reliability. RTP fixes this by using a hybrid of TCP and UDP. It uses TCP to ensure the connection is made, then UDP for fast media streaming.&lt;br /&gt;&lt;br /&gt;After I complete the RTP conversion I want to focus on getting some more documentation and unit tests for OVC. Right now there is absolutely nothing. When I graduate in May there will no longer be any of the original collaborators at RIT. Providing docs and unit tests will make it easier for other students to pick this up when I'm gone.</description>
	<pubDate>Mon, 26 Mar 2012 01:41:00 +0000</pubDate>
	<author>noreply@blogger.com (T_Rose)</author>
</item>
<item>
	<title>OVC: Open Video Chat - trose: POSSE Hackfest '11</title>
	<guid>tag:blogger.com,1999:blog-2352882732091660162.post-4678432373393967930</guid>
	<link>http://trosehfoss.blogspot.com/2011/08/posse-hackfest-11.html</link>
	<description>I'm currently hanging out with the Foss Box and some professors from various local schools. We're trying to teach them about all things open source. I've been playing with Open Video Chat again to see if it works on the newest Sugar build. Sugar 0.92.2 is now running on Fedora 14. Hopefully this means it either has the version of Telepathy we need or we can install it. I was able to get OVC running on two XO's and connected them. When it tried to connect the pipes I got an error though. Seems to be a break at a file open :/ I'll have to look at this more.&lt;br /&gt;&lt;br /&gt;Side Note: The XO's automagically start an adhoc network and connect to eachother again! WOOOOO!</description>
	<pubDate>Wed, 10 Aug 2011 20:16:00 +0000</pubDate>
	<author>noreply@blogger.com (T_Rose)</author>
</item>
<item>
	<title>CIVX: CIVX - Qalthos: Multiprocessing the PolyScraper</title>
	<guid>tag:qalthos.github.io/blog,2011-06-29:multiprocessing-the-polyscraper.html</guid>
	<link>http://qalthos.github.io/blog/multiprocessing-the-polyscraper.html</link>
	<description>&lt;p&gt;Warning: This post was written at 4AM and contains a technical account
of what I have been doing attempting to parallelize CIVX's internals. If
you are looking for a more general overview of what I have been doing
recently, you are better off looking to another one of my posts.
Recently, I have been working on CIVX's PolyScraper, a neat little piece
of code designed to be able to read and understand structured text
without knowing how the text is structured beforehand. On Thursday, I
let a test scrape of a rather large dataset start, figuring it would
finish sometime over the weekend and I'd be able to pick it up on
Monday. Then Monday rolled around, and the scrape was still running.
Worse, it didn't seem to be taking full advantage of the available
resources. Running as it was on the boat, it had four cores at its
disposal, however it was steadfastly using only one core.
Now PolyScraping is not an inherently parallelizable task, but on large
datasets it should benefit from some kind of parallelization,
particularly when using large numbers of small files (less so with small
numbers of large files, those types of tasks are usually sequential as
you have a smaller number of resources blocking on read IO). Clearly
there were other things to look into, but if I could do this, this would
mean a huge win for offline scraping, which was one of the things I had
enabled with my addition of local file support to the PolyScraper.
This all led me to &lt;a class=&quot;reference external&quot; href=&quot;http://docs.python.org/library/multiprocessing.html&quot;&gt;multiprocessing&lt;/a&gt;, a library I'd been wanting to try
out in python for some time now. Without going into too much detail,
multiprocessing attempts to get around the &lt;a class=&quot;reference external&quot; href=&quot;http://docs.python.org/glossary.html#term-global-interpreter-lock&quot;&gt;Global Interpreter Lock&lt;/a&gt; by
spawning subprocesses instead of threads.
The first attempt was written pretty quickly, as I still remember a lot
from my Parallel Computing class from a while ago. Indeed the main
problem turned out to be SQLAlchemy, or, more specifically our use of
sqlite for a backend db. Sqlite is not the most robust of databases and
can't really handle multiple processes attempting to write to the db at
once. Luke suggested (and I would love to try) moving over to Postgres
as we will eventually be doing on the boat, but unfortunately the boat
has been 'stuck ashore' for some time now due to an extended outage in
CSH's network.
In the meantime I have been whittling the process down to what I think
is the essentials. In the process I have made a complete mess of the
code concerning the PolyScraper, but I should be able to make things at
least look like the way they were before too long.
At this point, though, I have been working on this project for close to
20 hours today now. Luke is in town and we're all posted up in Remy's
new place all hacking on our projects together. With any luck a good
night's sleep will clear my head and give me new ideas for tomorrow.&lt;/p&gt;</description>
	<pubDate>Wed, 29 Jun 2011 22:04:00 +0000</pubDate>
</item>
<item>
	<title>CIVX: CIVX - Qalthos: Back up to Speed</title>
	<guid>tag:qalthos.github.io/blog,2011-06-21:back-up-to-speed.html</guid>
	<link>http://qalthos.github.io/blog/back-up-to-speed.html</link>
	<description>&lt;p&gt;I've almost closed &lt;a class=&quot;reference external&quot; href=&quot;https://fedorahosted.org/civx/ticket/106&quot;&gt;bug #106&lt;/a&gt;. I've done all I can do for now, until I
can figure out how to attribute actions to senators. Until then, I
should comment out the 'actions' tab tomorrow with a note letting
whoever tries this next what I've already tried.
There is still some work to do in this code, particularly with fixing
the hacky Assembly scraping I wrote last year which also broke. However,
considering that the Assembly is not currently one of the bits we are
trying to expose (and they don't have a nice public API like the
Senate), it probably won't get done for a little while.
When I left yesterday, I had exposed the senator's social page, but none
of the other tabs were showing up. The problem for this turned out to be
that the image representing the tab was corrupted and the text beneath
it was white, making it overall look like the tab was invisible. Once I
got a new image for the tab, they all suddenly appeared, though only the
bills had any information.
The next thing to fix was the scraping of the committees, whose pages
had also changed subtly in the past few months. Fixing this was much
less annoying than building them the first time, and I was able to
remove a lot of old shims in the code from when I was first being
introduced to &lt;a class=&quot;reference external&quot; href=&quot;http://www.crummy.com/software/BeautifulSoup/&quot;&gt;BeautifulSoup&lt;/a&gt;. Some of my later changes made this
particularly easy, and since BeautifulSoup is so powerful, I was able to
restore access to the data with relative ease. As a bonus, as soon as I
had committees back up, the tabs for votes and meetings came with it for
free. Suddenly, I was almost there!
The final problem I encountered today is actually not a new one, but one
we struggled with last year, and one I now feel confident I have
actually fixed and understand now. Once I got all the data pulling
again, a few of the pages would crash the server with
UnicodeDecodeErrors.
As a warning, some heavy Python is about to come down
UnicodeDecodeError is an error which happens (generally) when attempting
to decode a string into a Unicode object. This is generally a great
thing to do, as Python strings are generally encoded in the relatively
restrictive ASCII, which does not have characters for any of the more
exciting characters like accents and non-latin symbols. Unicode has no
such restrictions, and indeed has data for many, many more symbols, at
the cost of a few more bits of storage per character.
So why were we getting this error? The relevant line of code was 's =
unicode(s)' and was contained within &lt;a class=&quot;reference external&quot; href=&quot;http://pythonpaste.org/webob/#introduction&quot;&gt;WebOb&lt;/a&gt; code, not something I was
going to be able to modify successfully. Still, even this shouldn't be a
problem. The purpose of this function is to turn strings to Unicode
strings.
Except I didn't have a string, I already had a Unicode string.
Even this shouldn't be a problem, except that unicode() tries to
interpret its input as a string and then turn it into a Unicode string.
And while Unicode strings can be easily represented as normal strings,
the default of the unicode() function is to try to interpret those
strings as ASCII strings, and I had accents in the strings. These
strings were representing the names of the senators, so I had to make
sure it came out right.
In order to solve this, I had to reversibly represent these names as a
sequence of ASCII characters.
There are a few ways to replace out-of-bound characters when changing
strings into lesser encodings, and I had two useful ones to chose from.
The obvious one to chose was to change the characters into XML character
entities, however this quickly turned out to be insufficient. While
&amp;amp;#233; correctly showed up as é on the page, this string is used to
represent the name everywhere, including in the internal URL
representing the page. And the ampersand was quickly stripped out as a
broken argument to the URL, leading to a page for a nonexistent Senator.
Looking through the code, there were three distinct uses for the name
string. The first, which had started all this, was as an ASCII key to a
dictionary which needed to be authoritative but not necessarily
accurate. In other words, I needed it to be the same everywhere, but it
didn't necessarily need to be the correct name of the senator. The
second was the use on the generated web page, which needed to be as
accurate as possible to the Senator's actual name, as it is going to be
viewed publicly. The third, and the current stickler was the name in the
URL. Again, this had to be authoritative but not necessarily accurate.
This one, however, had to also only include web-safe characters, of
which &amp;amp;, # and ; do not qualify.
I mulled this over for a while, thinking up more and more elaborate
schemes for intercepting the names before they reached critical areas,
but none of it was terribly good coding practice. After far too much
thinking, I realized the obvious answer: have separate internal and
external names. The system still relies on the senator's name, which is
still a questionable practice given the multiple spellings of names that
occasionally pop up, (but mostly because I remember &lt;a class=&quot;reference external&quot; href=&quot;http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/&quot;&gt;this post&lt;/a&gt;, which
is something you should always keep in mind when programming around
names. The display name, on the other hand, has none of the restrictions
on characters (though it still needs to be ASCII to display properly),
but by using XML entities, we can make any character we want without
problems.
This was a long path to take to get back to where we were, but I think
that I really understand Python's Unicode in a way I never grasped
before. This should definitely help in the future as Unicode is a very
important part of coding portable applications and that's something I
want to do.&lt;/p&gt;</description>
	<pubDate>Wed, 22 Jun 2011 02:56:00 +0000</pubDate>
</item>
<item>
	<title>CIVX: CIVX - Qalthos: Shelves and Shoves</title>
	<guid>tag:qalthos.github.io/blog,2011-06-21:shelves-and-shoves.html</guid>
	<link>http://qalthos.github.io/blog/shelves-and-shoves.html</link>
	<description>&lt;p&gt;Today is the day to hit &lt;a class=&quot;reference external&quot; href=&quot;https://fedorahosted.org/civx/ticket/105&quot;&gt;bug #105&lt;/a&gt;, another of the leftover bugs from
last year.
The story goes something like this: there's a lot of data on
nysenate.gov that is nice to have, but asking for that info on every
call is a little cumbersome. We want to cache as much of the data as we
can, particularly the stuff that's not going to change in the next week
or longer. Previously, I had implemented a simple pylons cache which was
fast, but had no persistent storage, so every time the server went down
it pulled all the info again. And due to the way the scrape was written,
it pulled all the info for all the senators at once, creating quite a
bit of lag before the first page showed up. This clearly wasn't going to
be something we could continue to develop with.
Now, I know nothing about caching data, so I did some poking around in
CIVX to see how it is done elsewhere. Most of the other caches I found
in CIVX code were related to caching text feeds, which were not as
explanatory as I was hoping. Once I felt I had a handle on how things
were done there, I began to try to implement some of it, only to be
shown &lt;a class=&quot;reference external&quot; href=&quot;http://threebean.wordpress.com/2011/06/08/cached-function-calls-with-expiration-in-python-with-shelve-and-decorator/&quot;&gt;this post&lt;/a&gt; on &lt;a class=&quot;reference external&quot; href=&quot;http://docs.python.org/library/shelve.html&quot;&gt;shelve&lt;/a&gt;, a Python library for storing arbitrary
data. Combined with the decorator, this seemed to do exactly what I
wanted, namely provide a permanent storage area for a bunch of data with
a configurable expire time. I dumped the code into the dashboard, hooked
the proper inputs up and let it run. The results were... promising, but
not astonishing. The file storage worked, once the data was cached, we
stopped looking to nysenate.gov for data and instead used our own data,
even after server restarts.
The problem was that the file storage seemed to be slower than the
previous memory cache. This is all perfectly reasonable, since disk
access is much slower than memory, and a lot of data has to get pulled
for each senator. The first obvious thing I could do is to re-enable the
memory cache, but this did not seem to help as much as I wanted it to.
At this point, &lt;a class=&quot;reference external&quot; href=&quot;http://qalthos.github.io/blog/feeds/lewk.org&quot;&gt;Luke&lt;/a&gt; popped up in chat to sat that Moksha had a
&lt;a class=&quot;reference external&quot; href=&quot;http://pypi.python.org/pypi/shove&quot;&gt;Shove&lt;/a&gt; cache it uses for feeds. Sure enough, back in the files I had
been poking through earlier, there were some references to Shove. Back to
the net, I started to explore what Shove was and how it could help me.
It turns out Shove is mostly drop in compatible with shelve, and aims to
be a more extensible replacement for it. Once I got a handle on how
Shove works differently from shelve (answer, not very), I made a few
tiny tweaks and got a version successfully working with Shove and a
sqlite backend. This didn't make the end result any faster (well maybe a
little, but not much), but there is a lot of room for improvement,
particularly if I can hook into Moksha's own stores. Further, Shove has
its own abilities to cache items in memory in addition to storing them,
which I would like to look into. The best route for efficiencies, I
think is to change how the data gets stored in the cache. Currently all
the data gets pulled at once, which was done to pacify the pylons cache.
However, if I can get individual caches for each senator, then I can
pull smaller volumes of data at a time, hopefully speeding up the
process.
We'll see where I get tomorrow, but so far I'm feeling pretty good about
all this.&lt;/p&gt;</description>
	<pubDate>Wed, 22 Jun 2011 02:56:00 +0000</pubDate>
</item>
<item>
	<title>CIVX: CIVX - Qalthos: Summer of CIVX</title>
	<guid>tag:qalthos.github.io/blog,2011-06-21:summer-of-civx.html</guid>
	<link>http://qalthos.github.io/blog/summer-of-civx.html</link>
	<description>&lt;p&gt;So I'm back at RIT for the summer working on CIVX again. There's been a
lot of development on Moksha, the software stack CIVX runs on, and not
all of it was a trivial update. Still, many of the problems I
encountered were definitely my fault, not the least of which was
forgetting Arch Linux has switched to Python 3.
Once I was up, I looked into fixing the people dashboard we worked on
last summer. In the meantime, the NYS Senate updated their API for
getting open government data, so I had to figure out the new scheme and
try to make it work. Complicating this is that they still don't have
easy access to grabbing all the current senators, and the page we look
at to get this information changed enough to stop the script from
completing.
I'm actually surprised how quickly I was able to work this out, though
of course this is not even remotely new to me. But despite nearly a year
of inactivity on the project I seem to have gotten back into the swing
of it pretty well.&lt;/p&gt;</description>
	<pubDate>Wed, 22 Jun 2011 02:56:00 +0000</pubDate>
</item>
<item>
	<title>CIVX: CIVX - Qalthos: The Last Week</title>
	<guid>tag:qalthos.github.io/blog,2011-06-21:the-last-week.html</guid>
	<link>http://qalthos.github.io/blog/the-last-week.html</link>
	<description>&lt;p&gt;This week has been a mess for a lot of reasons. Let's see what I managed
to get through so far.
One of the things I got to look at this week is threebean's mokshactl
branch of CIVX and Moksha. This is a project to simplify the
administration of a Moksha installation. The project grew out of an
attempt to easily package Moksha and grew into a much larger system
capable of managing most aspects of CIVX at once, and in a very pretty
package, too. It has a few problems, but for the most part, it performs
quite well, and best of all, it will even integrate itself with Moksha,
controlling the necessary aspects of Moksha as well.
In less exciting news, I poked around in the people dashboard while I
had some time and got Assembly members working again. It didn't take
much as I had expected, but served to keep me on task while Remy was in
one of the never ending series of meetings he's had this week.
On a lighter side of things, I put some &lt;a class=&quot;reference external&quot; href=&quot;http://lobstertech.com/fabulous.html&quot;&gt;fabulous&lt;/a&gt; in the CIVX shell
today as I was working in it. The mokshactl branch is already
fabuloused, and once you see that, there's no coming back. fabulous
makes things very pretty with only a little work.
Other than that not a lot has gone down. Some work has gone into the
polyscraper, but that's nothing worth mentioning at this point. Between
that and some internal matters and hours of meetings and my car
developing a leak in it's brake line, that's all that went down this
week. Tomorrow I get to drive home and hopefully fix my car properly.&lt;/p&gt;</description>
	<pubDate>Wed, 22 Jun 2011 02:56:00 +0000</pubDate>
</item>
<item>
	<title>CIVX: CIVX - Qalthos: Grokking the Core</title>
	<guid>tag:qalthos.github.io/blog,2011-06-21:grokking-the-core.html</guid>
	<link>http://qalthos.github.io/blog/grokking-the-core.html</link>
	<description>&lt;p&gt;This week begins the real dive into the core of what makes CIVX. Today
(and yesterday, though yesterday hardly counts as a real day) were spent
adding major functionality to the polyscraper, something that's been
overdue for a long time now.
But what is this magical polyscraper? Well, in short, it's magic. A lot
of magic, actually, and that's half the problem. You see, in ye olden
days of CIVX, each data source had to have its own scraper, and these
were called whenever CIVX decided its data was old enough to get shoved
out and replaced with new data. This was all well and fine, except that
it took a very long time to get a scraper written for a new data source.
You would have to define all the columns, give it a location to look,
make sure you understood the site's particular dialect and scrubbed out
any irregularities in their data. What the poly scraper does is it
replaces all of those individual scrapers and replaces them with one big
scraper which is smart enough to deal with any URL it finds.
What I've been doing is adding new sources of data to the polyscraper.
In particular, yesterday was spent adding the ability to read files off
of a local disk and properly store them. This, in turn, exposed a few
holes in the underlying framework which needed to be patched. However,
this is a vitally important function, as things like the SunlightNY
scraper I wrote last year works outside of CIVX proper (in Java, no
less) and cannot be thrown into the polyscraper as easily. But I can
download the files locally, and then work on them when it is convenient.
With proper message passing, I can even seamlessly tell the polyscraper
to pick up the files as soon as they are downloaded.
Previously to this I had been working at the periphery of CIVX, adding
functionality to widgets and individual scrapers. This is my first real
push into the core functionality of CIVX, and it is good to see that I
really have picked enough up in all this time to really start to
understand the underlying structure of everything. Every day I learn
more about what goes on inside this machine, and every day marks another
set of tools I've learned to wield. I can't wait to see how far I get by
the end of the summer.&lt;/p&gt;</description>
	<pubDate>Wed, 22 Jun 2011 02:55:00 +0000</pubDate>
</item>
<item>
	<title>OVC: Open Video Chat - Jlew: Rochester Great Awards</title>
	<guid>tag:blogger.com,1999:blog-8286909058639323737.post-4062400917424485514</guid>
	<link>http://blog.jlewopensource.com/2011/02/rochester-great-awards.html</link>
	<description>Last week I posted that &lt;a href=&quot;http://blog.jlewopensource.com/2011/01/ovc-nominated-for-digital-rochester.html&quot;&gt;OVC was nominated for the Digital Rochester GREAT Awards&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Fran, Taylor, and I won the Student Achievement Award for our work with OVC.&lt;br /&gt;&lt;br /&gt;Taylor and I with our awards on display in the foss box.&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://picasaweb.google.com/lh/photo/VHJ99h0Uh4B0JLg7_48r-g?feat=embedwebsite&quot;&gt;&lt;img src=&quot;https://lh3.googleusercontent.com/_hxrWrIsxtPg/TUjEP2obAwI/AAAAAAAA1pQ/lxWbHGOzKIk/s400/P1060091.JPG&quot; height=&quot;300&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;From &lt;a href=&quot;https://picasaweb.google.com/Jlew.blackout/GreatAwards?feat=embedwebsite&quot;&gt;Great Awards&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://picasaweb.google.com/lh/photo/9LGhyBgvHDyWQSsAt-IDhw?feat=embedwebsite&quot;&gt;&lt;img src=&quot;https://lh4.googleusercontent.com/_hxrWrIsxtPg/TUjES6Nw5PI/AAAAAAAA1qg/J89ws02yZw0/s400/P1060097.JPG&quot; height=&quot;300&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;From &lt;a href=&quot;https://picasaweb.google.com/Jlew.blackout/GreatAwards?feat=embedwebsite&quot;&gt;Great Awards&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;a href=&quot;https://picasaweb.google.com/lh/photo/1dbXUxd8Ah_TVmlfJFs-Qxn3fvYVVEgtLbbe6LrJMq8?feat=embedwebsite&quot;&gt;&lt;img src=&quot;https://lh3.googleusercontent.com/_hxrWrIsxtPg/TVDKCTxtS5I/AAAAAAAA3RI/CySc8gpytSI/s400/DSC_0983.JPG&quot; height=&quot;265&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Taylor Rose, Fran Rogers, and Justin Lewis&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</description>
	<pubDate>Fri, 04 Feb 2011 16:47:00 +0000</pubDate>
	<author>noreply@blogger.com (Justin Lewis)</author>
</item>
<item>
	<title>CIVX: CIVX - Qalthos: Boston</title>
	<guid>tag:qalthos.github.io/blog,2011-01-23:boston.html</guid>
	<link>http://qalthos.github.io/blog/boston.html</link>
	<description>&lt;p&gt;So here we are in OLPC HQ, right in the middle of MIT. It's pretty sweet
having &lt;a class=&quot;reference external&quot; href=&quot;http://lewk.org/&quot;&gt;Luke&lt;/a&gt; around again to hack CIVX with us.
I've had a lot to do in the past few days. Remy's been showing me
scrapers and models, and I've been helping transition &lt;a class=&quot;reference external&quot; href=&quot;http://foss.rit.edu/user/17&quot;&gt;Kate's&lt;/a&gt; people
dashboard into an integrated component or integrating &lt;a class=&quot;reference external&quot; href=&quot;http://rebeccanatalie.com/&quot;&gt;Rebecca's&lt;/a&gt; theme
changes on the side. It's been hectic and fun and tough, but I finally
feel like I'm contributing to a project, something with substance and
goals, not just writing code to accomplish a task like some of my
previous co-ops. Being in a team this large helps, especially when we
pull in outside help like Luke, but I think it's mainly Remy's
infectious excitement for the project. When he gets down to work, one
can't help but feel his vision and be excited for the possibilities.
Unfortunately, that means I had precious little time to pay attention to
the other teams. Three separate groups hacking away at their own
projects, tossing ideas about and getting input from a few members
upstream, not to mention the whole OLPC offices around the corner- this
was a right proper hackathon, and something that makes me excited for the
future of these projects.&lt;/p&gt;</description>
	<pubDate>Sun, 23 Jan 2011 12:14:00 +0000</pubDate>
</item>
<item>
	<title>OVC: Open Video Chat - Jlew: OVC Nominated for the Digital Rochester Great Awards</title>
	<guid>tag:blogger.com,1999:blog-8286909058639323737.post-3361313605940403317</guid>
	<link>http://blog.jlewopensource.com/2011/01/ovc-nominated-for-digital-rochester.html</link>
	<description>&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_hxrWrIsxtPg/TTfO7zWDZAI/AAAAAAAA1l4/gv73oAhbD1E/s1600/GREAT.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;147&quot; width=&quot;320&quot; src=&quot;http://4.bp.blogspot.com/_hxrWrIsxtPg/TTfO7zWDZAI/AAAAAAAA1l4/gv73oAhbD1E/s320/GREAT.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Recently, the &lt;a href=&quot;http://foss.rit.edu/projects/ovc&quot;&gt;Open Video Chat&lt;/a&gt; team was nominated for the &lt;a href=&quot;http://great.digitalrochester.com/awards/&quot;&gt;Digital Rochester Great Awards&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The OVC team and one other student from RIT were nominated for the &lt;b&gt;Student Achievement&lt;/b&gt; award.&lt;br /&gt;&lt;blockquote&gt;Awarded to a student, currently enrolled in a Greater Rochester higher education institution, who showed leadership and skill in applying or advancing innovative technology for the betterment of themselves, their educational institution, and/or the greater Rochester Community.&lt;/blockquote&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_hxrWrIsxtPg/TTfRI_4nBYI/AAAAAAAA1mA/fck13UKv8-k/s1600/DSC_2728.JPG&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;212&quot; width=&quot;320&quot; src=&quot;http://4.bp.blogspot.com/_hxrWrIsxtPg/TTfRI_4nBYI/AAAAAAAA1mA/fck13UKv8-k/s320/DSC_2728.JPG&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Taylor Rose and Justin Lewis&lt;br /&gt;Image by Kenneth Pamatat.&lt;/div&gt;&lt;br /&gt;It appears that we were nominated by someone who had seen us showing off Open Video Chat at &lt;a href=&quot;http://rit.edu/imagine&quot;&gt;RIT's Imagine Festival&lt;/a&gt; last year where we had a booth set up in the center of the &lt;a href=&quot;http://innovation.rit.edu&quot;&gt;Innovation Center&lt;/a&gt;.  I personally never herd of this award group and was not expecting to be nominated by a random spectator, I really appreciate it.&lt;br /&gt;&lt;br /&gt;Since the nomination, I have been interviewed by RIT University News and just today we made it onto the Homepage of RIT's &lt;a href=&quot;http://www.cs.rit.edu&quot;&gt;Computer Science Department&lt;/a&gt;.&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_hxrWrIsxtPg/TTfNVFUpFJI/AAAAAAAA1lw/q7jFNzc8bjo/s1600/Screenshot.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; width=&quot;320&quot; src=&quot;http://3.bp.blogspot.com/_hxrWrIsxtPg/TTfNVFUpFJI/AAAAAAAA1lw/q7jFNzc8bjo/s320/Screenshot.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 20 Jan 2011 06:17:00 +0000</pubDate>
	<author>noreply@blogger.com (Justin Lewis)</author>
</item>
<item>
	<title>MAFH: MAFH - Jlew: HFOSS Class Final Presentations</title>
	<guid>tag:blogger.com,1999:blog-8286909058639323737.post-5078177804188929802</guid>
	<link>http://blog.jlewopensource.com/2010/11/hfoss-class-final-presentations.html</link>
	<description>Tonight was the final presentations for the course.  We should be expecting some final documentation updates as well as some activity releases in the new few days!&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_hxrWrIsxtPg/TNyttWk1z4I/AAAAAAAA0VE/XzFkc1RGn7g/s1600/lemonade_group.jpg&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;285&quot; src=&quot;http://2.bp.blogspot.com/_hxrWrIsxtPg/TNyttWk1z4I/AAAAAAAA0VE/XzFkc1RGn7g/s400/lemonade_group.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Lemonade Group in their fancy matching shirts&lt;/div&gt;&lt;br /&gt;&lt;h2&gt;Project Links&lt;/h2&gt;&lt;ul&gt; &lt;li&gt;Fortune Hunter: &lt;a href=&quot;http://wiki.sugarlabs.org/go/Fortune_Hunter&quot;&gt;http://wiki.sugarlabs.org/go/Fortune_Hunter&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Lemonade Stand: &lt;a href=&quot;http://wiki.sugarlabs.org/go/Lemonade_Stand&quot;&gt;http://wiki.sugarlabs.org/go/Lemonade_Stand&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Blocku: &lt;a href=&quot;http://wiki.sugarlabs.org/go/Blocku&quot;&gt;http://wiki.sugarlabs.org/go/Blocku&lt;/a&gt;&lt;/li&gt; &lt;li&gt;IRC Activity: &lt;a href=&quot;http://wiki.sugarlabs.org/go/Activities/IRC&quot;&gt;http://wiki.sugarlabs.org/go/Activities/IRC&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Transbot: &lt;a href=&quot;https://fedorahosted.org/transbot/&quot;&gt;https://fedorahosted.org/transbot/&lt;/a&gt;&lt;/li&gt; &lt;li&gt;PacMath: &lt;a href=&quot;http://wiki.sugarlabs.org/go/PacMath&quot;&gt;http://wiki.sugarlabs.org/go/PacMath&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Presentation Notes&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://foss.rit.edu/foss_bot/meetings/rit-innovation/2010/rit-innovation.2010-11-12-00.22.html&quot;&gt;Minutes&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://foss.rit.edu/foss_bot/meetings/rit-innovation/2010/rit-innovation.2010-11-12-00.22.txt&quot;&gt;Minutes (text)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://foss.rit.edu/foss_bot/meetings/rit-innovation/2010/rit-innovation.2010-11-12-00.22.log.html&quot;&gt;Log&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</description>
	<pubDate>Fri, 12 Nov 2010 03:09:00 +0000</pubDate>
	<author>noreply@blogger.com (Justin Lewis)</author>
</item>
<item>
	<title>MAFH: MAFH - Jlew: Fortune Engine and Fortune Hunter</title>
	<guid>tag:blogger.com,1999:blog-8286909058639323737.post-4136287661869982496</guid>
	<link>http://blog.jlewopensource.com/2010/10/fortune-engine-and-fortune-hunter.html</link>
	<description>This post is a bit out of date, but I Finally got the FortuneEngine it's own repository last weekend.  The Fortune Hunter repository has grown a lot over the summer due to the vast amount of art and art testing.  I figured it was not very friendly to have the engine coupled with that repository if someone wanted to use the engine.  It now has its &lt;a href=&quot;http://git.fedorahosted.org/git/?p=FortuneEngine.git&quot;&gt;own repository&lt;/a&gt; located on fedora hosted.  It will still use the same track as fortune hunter.&lt;br /&gt;&lt;br /&gt;Now the Fortune Engine has been included in the Fortune Hunter repository as a submodule to keep the engine in the game repository.&lt;br /&gt;&lt;br /&gt;I have also made a &lt;a href=&quot;https://fedorahosted.org/fortune_hunter/attachment/wiki/FortuneEngine/Download/Fortune%20Engine-1.0.tar.gz&quot;&gt;tarball 1.0&lt;/a&gt; release of the engine as well and &lt;a href=&quot;http://git.fedorahosted.org/git/?p=FortuneEngine.git;a=tag;h=517b9ce13d73119299672e6c18ca386ddcb57a1b&quot;&gt;tagged it&lt;/a&gt; in the repository.  My next steps are to upload a copy to &lt;a href=&quot;http://pypi.python.org/pypi&quot;&gt;pypi&lt;/a&gt; and then look into what features I should work on next.</description>
	<pubDate>Fri, 29 Oct 2010 02:08:00 +0000</pubDate>
	<author>noreply@blogger.com (Justin Lewis)</author>
</item>
<item>
	<title>MAFH: MAFH - Jlew: Class Project List</title>
	<guid>tag:blogger.com,1999:blog-8286909058639323737.post-7940595407771894430</guid>
	<link>http://blog.jlewopensource.com/2010/09/class-project-list.html</link>
	<description>I have updated our &lt;a href=&quot;http://wiki.sugarlabs.org/go/Math4Team/RIT/Projects&quot;&gt;project page&lt;/a&gt; on the sugarlabs wiki as well as compiled a list of the class and their blogs, projects, and wiki user pages.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;  &lt;li&gt;&lt;a href=&quot;http://wiki.sugarlabs.org/go/User:NinjaTurtle&quot;&gt;Atkinson, Somara&lt;/a&gt;&lt;br /&gt;      &lt;ul&gt;         &lt;li&gt;&lt;a href=&quot;http://somarablog.blogspot.com/&quot;&gt;Blog&lt;/a&gt;&lt;/li&gt;         &lt;li&gt;Project: &lt;a href=&quot;http://wiki.sugarlabs.org/go/Fortune_Hunter&quot;&gt;Fortune Hunter&lt;/a&gt;&lt;/li&gt;      &lt;/ul&gt;  &lt;/li&gt;  &lt;li&gt;&lt;a href=&quot;http://wiki.sugarlabs.org/go/User:Qalthos&quot;&gt;Case, Nathaniel&lt;/a&gt;&lt;br /&gt;      &lt;ul&gt;         &lt;li&gt;&lt;a href=&quot;http://whynotwingnut.blogspot.com/search/label/FOSSRIT&quot;&gt;Blog&lt;/a&gt;&lt;/li&gt;         &lt;li&gt;Project: &lt;a href=&quot;http://wiki.sugarlabs.org/go/Lemonade_Stand&quot;&gt;Lemonade Stand&lt;/a&gt;&lt;/li&gt;      &lt;/ul&gt;  &lt;/li&gt;  &lt;li&gt;Cole, Travis&lt;br /&gt;      &lt;ul&gt;         &lt;li&gt;&lt;a href=&quot;http://twc1451.blogspot.com/&quot;&gt;Blog&lt;/a&gt;&lt;/li&gt;         &lt;li&gt;Project:&lt;/li&gt;      &lt;/ul&gt;  &lt;/li&gt;  &lt;li&gt;&lt;a href=&quot;http://wiki.sugarlabs.org/go/User:Matt_Critelli&quot;&gt;Critelli, Matthew&lt;/a&gt;&lt;br /&gt;      &lt;ul&gt;         &lt;li&gt;&lt;a href=&quot;http://mcritelli.wordpress.com/&quot;&gt;Blog&lt;/a&gt;&lt;/li&gt;         &lt;li&gt;Project: &lt;a href=&quot;http://wiki.sugarlabs.org/go/Blocku&quot;&gt;Blocku&lt;/a&gt;&lt;/li&gt;      &lt;/ul&gt;  &lt;/li&gt;  &lt;li&gt;&lt;a href=&quot;http://wiki.sugarlabs.org/go/User:Classclownfish&quot;&gt;Honeycutt, Abigail&lt;/a&gt;&lt;br /&gt;      &lt;ul&gt;         &lt;li&gt;&lt;a href=&quot;http://equireg.com/blog/&quot;&gt;Blog&lt;/a&gt;&lt;/li&gt;         &lt;li&gt;Project:&lt;/li&gt;      &lt;/ul&gt;  &lt;/li&gt;  &lt;li&gt;&lt;a href=&quot;http://wiki.sugarlabs.org/go/User:Kaeedo&quot;&gt;Ito, Kai&lt;/a&gt;&lt;br /&gt;      &lt;ul&gt;         &lt;li&gt;&lt;a href=&quot;http://kaeedo.wordpress.com/&quot;&gt;Blog&lt;/a&gt;&lt;/li&gt;         &lt;li&gt;Project: &lt;a href=&quot;http://wiki.sugarlabs.org/go/Blocku&quot;&gt;Blocku&lt;/a&gt;&lt;/li&gt;      &lt;/ul&gt;  &lt;/li&gt;  &lt;li&gt;Kitson, Michael&lt;br /&gt;     &lt;ul&gt;        &lt;li&gt;&lt;a href=&quot;http://michaelskitson.com/blog/&quot;&gt;Blog&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;Project:&lt;/li&gt;     &lt;/ul&gt;  &lt;/li&gt;  &lt;li&gt;&lt;a href=&quot;http://wiki.sugarlabs.org/go/User:Jlew&quot;&gt;Lewis, Justin&lt;/a&gt;&lt;br /&gt;      &lt;ul&gt;         &lt;li&gt;&lt;a href=&quot;http://blog.jlewopensource.com&quot;&gt;Blog&lt;/a&gt;&lt;/li&gt;         &lt;li&gt;Projects: General Support/Helping All Teams&lt;/li&gt;      &lt;/ul&gt;  &lt;/li&gt;  &lt;li&gt;&lt;a href=&quot;http://wiki.sugarlabs.org/go/User:JT_Mengel&quot;&gt;Mengel, Scott&lt;/a&gt;&lt;br /&gt;      &lt;ul&gt;         &lt;li&gt;&lt;a href=&quot;http://jtmengel.blogspot.com&quot;&gt;Blog&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href=&quot;http://wiki.sugarlabs.org/go/Lemonade_Stand&quot;&gt;Lemonade Stand&lt;/a&gt;&lt;/li&gt;      &lt;/ul&gt;  &lt;/li&gt;  &lt;li&gt;&lt;a href=&quot;http://wiki.sugarlabs.org/go/User:KnightMearh&quot;&gt;Meschino, Jonathan&lt;/a&gt;&lt;br /&gt;      &lt;ul&gt;         &lt;li&gt;&lt;a href=&quot;http://knightmearh.blogspot.com&quot;&gt;Blog&lt;/a&gt;&lt;/li&gt;         &lt;li&gt;Project: &lt;a href=&quot;http://wiki.sugarlabs.org/go/Fortune_Hunter&quot;&gt;Fortune Hunter&lt;/a&gt;&lt;br /&gt;      &lt;/li&gt;&lt;/ul&gt;  &lt;/li&gt;  &lt;li&gt;Petersen, Lorin&lt;br /&gt;      &lt;ul&gt;         &lt;li&gt;&lt;a href=&quot;http://eloreyen.wordpress.com/&quot;&gt;Blog&lt;/a&gt;&lt;/li&gt;         &lt;li&gt;Project &lt;a href=&quot;http://wiki.sugarlabs.org/go/Blocku&quot;&gt;Blocku&lt;/a&gt;&lt;/li&gt;      &lt;/ul&gt;  &lt;/li&gt;  &lt;li&gt;Rogers, Francis&lt;br /&gt;      &lt;ul&gt;         &lt;li&gt;&lt;a href=&quot;http://fran.dumetella.net/&quot;&gt;Blog&lt;/a&gt;&lt;/li&gt;         &lt;li&gt;Project: &lt;a href=&quot;http://activities.sugarlabs.org/en-US/sugar/addon/4029&quot;&gt;Irc activity&lt;/a&gt;&lt;/li&gt;      &lt;/ul&gt;  &lt;/li&gt;  &lt;li&gt;Rose, Taylor&lt;br /&gt;      &lt;ul&gt;         &lt;li&gt;&lt;a href=&quot;http://trosehfoss.blogspot.com/&quot;&gt;Blog&lt;/a&gt;&lt;/li&gt;         &lt;li&gt;Project: &lt;a href=&quot;https://fedorahosted.org/lingobot/&quot;&gt;Translator bot&lt;/a&gt;&lt;/li&gt;     &lt;/ul&gt;  &lt;/li&gt;  &lt;li&gt;Thill, Mark&lt;br /&gt;     &lt;ul&gt;        &lt;li&gt;&lt;a href=&quot;http://thillm.blogspot.com/&quot;&gt;Blog&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;Project: &lt;a href=&quot;https://fedorahosted.org/lingobot/&quot;&gt;Translator bot&lt;/a&gt;&lt;/li&gt;     &lt;/ul&gt;  &lt;/li&gt;  &lt;li&gt;&lt;a href=&quot;http://wiki.sugarlabs.org/go/User:Sarah_Wagner&quot;&gt;Wagner, Sarah&lt;/a&gt;&lt;br /&gt;     &lt;ul&gt;        &lt;li&gt;&lt;a href=&quot;http://smw-os.blogspot.com/&quot;&gt;Blog&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;Project&lt;a href=&quot;http://wiki.sugarlabs.org/go/Lemonade_Stand&quot;&gt;Lemonade Stand&lt;/a&gt;&lt;/li&gt;     &lt;/ul&gt;  &lt;/li&gt;&lt;/ul&gt;</description>
	<pubDate>Thu, 30 Sep 2010 16:54:00 +0000</pubDate>
	<author>noreply@blogger.com (Justin Lewis)</author>
</item>
<item>
	<title>CIVX: CIVX - Qalthos: Almost There...</title>
	<guid>tag:qalthos.github.io/blog,2010-09-09:almost-there.html</guid>
	<link>http://qalthos.github.io/blog/almost-there.html</link>
	<description>&lt;p&gt;Today I worked my way through more of &lt;a class=&quot;reference external&quot; href=&quot;http://rebeccanatalie.com&quot;&gt;Rebecca's&lt;/a&gt; changes to the people
dashboard. It was actually in better condition than I had thought last
night. The first tab was the only one with the majority of the changes,
and most of the changes were easily applied once I understood them-
which is what I spent hours yesterday trying to do.&lt;/p&gt;
&lt;p&gt;I have a problem with writing quantities of HTML because they end up as
giant messes. Even XHTML strict isn't enough for me, though it does come
closer. Invariably, any file of reasonable complexity is going to have
whitespace inconsistencies, mislaid elements, or even entire sections
forgotten. This morning I took a fresh look at the generated HTML and
dashboard.mak and tried simply to understand their structure. After
really getting into the template version, I began to see what was really
necessary and not from Rebecca's blinged up copy. There are still a few
bits missing from the final version, but I think I can get them nailed
down before I leave today.&lt;/p&gt;</description>
	<pubDate>Thu, 09 Sep 2010 22:11:00 +0000</pubDate>
</item>
<item>
	<title>CIVX: CIVX - Qalthos: CIVX Stuff</title>
	<guid>tag:qalthos.github.io/blog,2010-09-09:civx-stuff.html</guid>
	<link>http://qalthos.github.io/blog/civx-stuff.html</link>
	<description>&lt;p&gt;So I've been spending some time finally getting some time to familiarize
myself with CIVX and all the parts that make up the system. I'm almost
comfortable with how the whole thing works together, though I'm not
entirely clear on how some things work to finally get to the screen.
Still, I got things running, both the current CIVX build and &lt;a class=&quot;reference external&quot; href=&quot;http://foss.rit.edu/user/17&quot;&gt;Kate's&lt;/a&gt;
widget, though getting the two together is harder than it seems like it
should be. On the other hand, I tweaked the GettingStarted page of the
CIVX wiki to smooth out a few bumps I ran into during the install
process. The Ubuntu instructions are still broken, but I plan going to
look into that in the future.
In terms of actually getting things done, I haven't done much of
substance. I've been immersing myself in CIVX, git, pep8, and all the
different things that go into the FOSS BOX. While I've been in the open
source community for a while now (and my very first project is almost
1.5 years old), I've never really tried to insert myself into a project
that was running in full swing with established work. Somehow this seems
different than the places I've worked previously... though that could
simply be the distributed nature of the work. With &lt;a class=&quot;reference external&quot; href=&quot;http://lewk.org&quot;&gt;Luke&lt;/a&gt; no longer
down the hall somewhere, getting information has turned into a more
interesting experience when the necessary parts are in his head.
I'm looking forward to an exciting next few weeks here, and a fruitful
next few years with the information learned from this experience.&lt;/p&gt;</description>
	<pubDate>Thu, 09 Sep 2010 22:11:00 +0000</pubDate>
</item>
<item>
	<title>CIVX: CIVX - Qalthos: Diving Deep</title>
	<guid>tag:qalthos.github.io/blog,2010-09-09:diving-deep.html</guid>
	<link>http://qalthos.github.io/blog/diving-deep.html</link>
	<description>&lt;p&gt;Yesterday had been spent working on a proper dev branch to CIVX. Today
we gave it a home.
Today started off trying to get the current dev CIVX running on our
server. Now, I had some experience setting up a CIVX instance from
getting one running on my box, but my box is mine and I know what's on
it. This server is not, so we had a few troubles along the way. Once
again the instructions proved insufficient (though not actually bad per
se). The server was running Python 2.4 by default, and one of the
scripts wanted to be run from Python 2.6, as it was pulling a few things
from future. Remy and I spent more than a little while wondering why
things weren't happening properly when we had neglected to run a command
or two. &lt;a class=&quot;reference external&quot; href=&quot;http://qalthos.github.io/blog/feeds/&amp;quot;http://lewk.org&quot;&gt;Luke&lt;/a&gt; set us straight at every turn, and I can now say that I
actually understand what most of those commands do with respect to the
rest of the system.
The second half of the day was a bit more interesting. Once CIVX was
running, my attention was turned to the scrapers. Most of the scrapers
are v2 scrapers, and one of our tasks for the summer is to get things
running up to v3. On the first try getting the stimulus watcher scraper
running, we had a few problems remembering where everything went and
where to call what when. On the second shot getting a scraper for
howdtheyvote.ca data, it went much faster. I need to remember to source
tg2env when I'm on the server, but mostly, things were good today.
Tomorrow we put together the pieces of v3, and keep on moving towards
our goals.&lt;/p&gt;</description>
	<pubDate>Thu, 09 Sep 2010 22:11:00 +0000</pubDate>
</item>
<item>
	<title>CIVX: CIVX - Qalthos: Here be Dragons</title>
	<guid>tag:qalthos.github.io/blog,2010-09-09:here-be-dragons.html</guid>
	<link>http://qalthos.github.io/blog/here-be-dragons.html</link>
	<description>&lt;p&gt;Today was the day we got &lt;a class=&quot;reference external&quot; href=&quot;http://www.rebeccanatalie.com&quot;&gt;Rebecca&lt;/a&gt; on to a git repo towards
implementing her changes to the people dashboard. It's only a halfway
step, as she isn't entirely using the proper version of the widgets but
a hacked one that works locally, and needs to be morphed into something
that will work in the context of the CIVX stack. Hopefully soon she will
be up to speed and be able to make a more direct submission in the near
future.
As it stands, this is good stuff, and the end result is definitely
usable, even if it's not in the format we want it just yet. Translating
one to the other has proven tiresome as well; I spent the better part of
three hours just to clean up the first of our tabs. There are a few
items I think might not be translatable, things that mainly live in
Moksha, but we'll get to that when we get to that. Right now, I need a
graphical diff viewer that cares neither for whitespace nor line breaks,
just for what's in the code. Good old meld, which I had been using, has
proven itself inadequate to the massive differences between these files.
Hopefully tomorrow I will have a fresh start from which to sculpt this
mess I've constructed into its completed form.&lt;/p&gt;</description>
	<pubDate>Thu, 09 Sep 2010 22:11:00 +0000</pubDate>
</item>
<item>
	<title>CIVX: CIVX - Qalthos: Introducing: GeoPirate!</title>
	<guid>tag:qalthos.github.io/blog,2010-09-09:introducing-geopirate.html</guid>
	<link>http://qalthos.github.io/blog/introducing-geopirate.html</link>
	<description>&lt;p&gt;So I've received my apparently mandated CIVX nickname, despite it
possibly being inaccurate in a week or two. I, along with &lt;a class=&quot;reference external&quot; href=&quot;http://rebeccanatalie.com/&quot;&gt;Pixel Ninja&lt;/a&gt;
and &lt;a class=&quot;reference external&quot; href=&quot;http://foss.rit.edu/user/17&quot;&gt;Python Princess&lt;/a&gt;, have been hacking away at our various tasks
together for over a week now, and despite the seemingly constant moving
from place to place, it's a pretty sweet gig.
My work yesterday was some final polishing of the getall script, and my
first real push to the geowebdns repository. I'm also working on a
supplemental, informational guide to maintenance. Unfortunately, my
changes can't quite replace the old script yet, because the import
script (the one that actually starts to bring the files into the
database and do something with them) is hardcoded to the current files
and that script is a bit harder to hack than the download script. The
real work was on the documentation, trying to get people to understand
my reasoning behind the changes and allow for them to continue my work
without too much difficulty.&lt;/p&gt;</description>
	<pubDate>Thu, 09 Sep 2010 22:11:00 +0000</pubDate>
</item>
<item>
	<title>CIVX: CIVX - Qalthos: Just another ten-hour day</title>
	<guid>tag:qalthos.github.io/blog,2010-09-09:just-another-ten-hour-day.html</guid>
	<link>http://qalthos.github.io/blog/just-another-ten-hour-day.html</link>
	<description>&lt;p&gt;Today was another exciting day in CIVX-land.
tl;dr: I spend the day helping other people and being awesome
It started out with the latest in a series of attempts at getting
&lt;a class=&quot;reference external&quot; href=&quot;http://www.rebeccanatalie.com&quot;&gt;Rebecca&lt;/a&gt; to a working CIVX repo. As I work through this with her, I am
slowly working out how all this works together (though admittedly it is
largely me flailing while Rebecca watches). With &lt;a class=&quot;reference external&quot; href=&quot;http://lewk.org&quot;&gt;Luke's&lt;/a&gt; help, I
eventually realized that the only thing really needed for CIVX to run is
python-virtualenv (it can run without, but that involves actually
installing python packages to /usr/local, something generally undesired
for a development environment). After some question of whether Rebecca
had sudo permission, we eventually discovered she did, and a short sudo
easy_install virtualenv later, we were ready to start installing the
CIVX stack.
If you haven't read the &lt;a class=&quot;reference external&quot; href=&quot;https://fedorahosted.org/civx/wiki/Setup&quot;&gt;CIVX developer's guide&lt;/a&gt; (and I think it's
probably safe to assume you haven't), it's a bit of a mess. Not actually
bad, but short and disorganized. This isn't too bad when you've got a
small, fairly tight development group with the main brain usually a ping
away on IRC, but as people are finding CIVX, I have taken it upon myself
to document every bump in my path. When I was first thrust into CIVX,
the page was much sparser with less detail and fewer sections, I have
added areas whenever there was a question of how to do what that
eventually came down to 'ask Luke'. Any time an arcane set of commands
came up I tried to get them on the page with as much information as I
could figure out, hopefully someone will take pity on my notes and make
them more descriptive.
Around this time &lt;a class=&quot;reference external&quot; href=&quot;http://foss.rit.edu/user/17&quot;&gt;Kate&lt;/a&gt; also had a few questions for me, most of which
I could figure out. However, I was still trying to get Rebecca running
and hadn't even touched my own computer more than to turn on IRC and
look a few thins up for Rebecca. Kate was having some trouble as she was
trying to scrape information off the NYS Senate page of senators,
neither of which I had done before. Rebecca had other things to do, and
getting her Mac up to speed was a lot of wait and pray so I switched
over to Kate's task. Now Kate also has a Mac, but she was set up with
CIVX long ago and could never quite explain to me how, thanks again to
arcane commands.
Anyway, her task involved a particular Unicode character in a senator's
name not playing well with her scraped name-to-URL converter magic.
Having only last night read &lt;a class=&quot;reference external&quot; href=&quot;http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/&quot;&gt;Falsehoods Programmers Believe About
Names&lt;/a&gt; off StumbleUpon, I immediately recognized this way as a dead
end. Sure, you could force all the current names into this pattern, but
it would never last. Some day, a senator would show up such that the
senate's conversion script and ours didn't match, and then that senator
would disappear from CIVX. After a bit of poking, however, I found that
each senator had a link to their contact page right in the div we were
scraping. A bit of poking around later, and I had a 100% reliable link
to each senator's page, as verified by the senate themselves. Suddenly
every senator's page worked, without any of this needless mucking about
in Unicode transformations.
Which brought us to our second problem. Most (with one important
exception) senators have a page hosted on &lt;a class=&quot;reference external&quot; href=&quot;http://www.nysenate.gov&quot;&gt;http://www.nysenate.gov&lt;/a&gt;, and
most have a contact page at /senators/first-m-last/contact.
What that page contains, however, seems largely up to each senator. Kate
had (and was quite proud of) her 4-line, incredibly complex and
unmaintainable regular expression which she used to mangle each page
into a regular form. However, as we poked further and further, we found
more and more inconsistencies and exceptions to the regular expression.
Clearly this was completely the wrong way again, but what was the right
way.
I suddenly saw an interesting anomaly. Most senators had the contact
info were styled exactly the same, despite having quite varying styles
otherwise. Kate had already seen that most of the addresses are together
in some sort of paragraph tag, and was trying to regexp on the contents
of each paragraph on the page. What she hadn't noticed was that every
page had a &amp;lt;div class=&amp;quot;field-content&amp;quot;&amp;gt; that contained all the contact
info. Now that, that was something a bit more to go on. Furthermore,
this contained all the contact info- occasionally more, but always the
minimum was their District Office and their Albany Office. Furthermore,
it was already in some form of HTML, which Kate had previously been
stripping and rebuilding manually. If we simply took this HTML as-is and
plugged it into CIVX's contact page, instantly every senator had exactly
what we (and they) wanted!
Well, almost.
It was about at this point that Rebecca went home for the day, CIVX not
yet working. a few important packages were missing from &lt;a class=&quot;reference external&quot; href=&quot;http://pypi.python.org/pypi&quot;&gt;pypi&lt;/a&gt;, keeping
us from completing the CIVX setup step so she could get cracking on real
CIVX, without needing me to merge every change she wanted to push. Still
this left me with more time to work on the regular expressions.
Now, most senators worked flawlessly, with two obvious exceptions. the
first, and the one I didn't want to tackle just yet, was the senator I
mentioned briefly above, the page of &lt;a class=&quot;reference external&quot; href=&quot;http://www.kemphannon.com/&quot;&gt;Sen. Kemp Hannon&lt;/a&gt;. Notice
anything different about his page? Well, for one, it's not hosted on
nysenate.gov, and for another, he has no explicit contact page. The
first made our scraper entirely useless without coding in an exception
for senators with separate websites, and the second made such an
exception next to impossible to make general, without reverting back to
the 'check each paragraph for addresses' method.
So Kemp was put on the backburner for now. The other one, which failed
somewhat more spectacularly, didn't even break. Rather, the contact page
of &lt;a class=&quot;reference external&quot; href=&quot;http://www.nysenate.gov/senator/john-j-flanagan/contact&quot;&gt;Sen. John J. Flanagan&lt;/a&gt;. Putting aside for the moment the excess
content in the div, including the NYS seal, and a few lines about
contact information, this is the worst example against automatically
generated HTML I have had the misfortune of needing to scrape.
Problem 1: &amp;lt;p &amp;gt;&amp;amp;nbsp;&amp;lt;p /&amp;gt;&amp;lt;br /&amp;gt; I kid you not, this is on the page a
minimum of 20 times in a row so that his Albany Office is so far below
the fold so as to be nonexistent. Sometimes there's inline styles,
sometimes not. One line has a simple space character instead of the
edgier, hipper &amp;amp;nbsp;. I wanted them all gone.this resulted in five
separate regexps so python wouldn't get too greedy and remove all the
content. One to replace &amp;amp;nbsp; with ' ', another to remove all
whitespace between a closing angle bracket and an opening one, a third
to remove anything matching style=&amp;quot;*&amp;quot;, a fourth to remove all the (now)
empty paragraphs, and a fifth and final one to turn any group of two or
more consecutive break tags into a single tag. It is probably fortunate
that python would not correctly apply my first attempt which was far
less readable, and more of a one-liner, as I don't know if I could have
understood it now had I not broken it into its component parts.
Problem 2 is a bit more of a WTF moment, both beautiful and frightening,
so I will reproduce it here verbatim:&lt;/p&gt;
&lt;pre class=&quot;literal-block&quot;&gt;
&amp;lt;P style=&amp;quot;TEXT-ALIGN: center&amp;quot;&amp;gt;&amp;lt;SPAN style=&amp;quot;COLOR: #012849; FONT-SIZE:
18pt&amp;quot;&amp;gt;&amp;lt;SPAN&amp;gt;&amp;lt;SPAN&amp;gt;&amp;lt;SPAN style=&amp;quot;LINE-HEIGHT: 115%; FONT-FAMILY:
'Calibri', 'sans-serif'; COLOR: #012849; FONT-SIZE: 16pt;
mso-fareast-font-family: Calibri; mso-ascii-theme-font: minor-latin;
mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;
mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font:
minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: EN-US;
mso-bidi-language: AR-SA&amp;quot;&amp;gt;&amp;lt;SPAN&amp;gt;&amp;lt;STRONG&amp;gt;&amp;lt;SPAN style=&amp;quot;FONT-FAMILY: Times
New Roman&amp;quot;&amp;gt;District Office&amp;lt;BR /&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/strong&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;SPAN
style=&amp;quot;COLOR: #012849; FONT-SIZE: 16pt&amp;quot;&amp;gt;&amp;lt;SPAN style=&amp;quot;FONT-FAMILY: Times
New Roman&amp;quot;&amp;gt;260 Middle Country Road, Suite 203&amp;lt;BR /&amp;gt;Smithtown, New York
11787&amp;lt;BR /&amp;gt;631-361-2154&amp;lt;BR /&amp;gt;631-361-5367
FAX&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;
&lt;/pre&gt;
&lt;p&gt;For those of you following along at home, that's
P(text-align) &amp;gt; SPAN(color, font-size) &amp;gt; SPAN &amp;gt; SPAN &amp;gt; SPAN(line-height,
font-family, color, font-size, a bunch of other font styles) &amp;gt;
SPAN &amp;gt; STRONG &amp;gt; SPAN(font-family) &amp;gt;
SPAN(color, font-size) &amp;gt; SPAN(font-family)
Naturally, my first order of business was to remove every single span
from the HTML we take in. Because, frankly, this is preposterous. We
already (by problem 1) strip out all the style information, because
frankly, we don't need it, so this mess just turns into six nested
spans, not a very useful thing. Suddenly, the HTML coming out of the
sanitizer is much more compact, and not just because of all the breaks
and paragraphs I took out.
By the time I finished with this, it was about an hour after most
everyone else had left. I spent the next half hour checking that my
sanitizer didn't break existing pages (it did, but only minorly) and
making sure my code was legible.
At that point, almost ten hours after I had started, I sat back,
committed my final changes, and decompressed. *This*- this is why I
love open source.&lt;/p&gt;</description>
	<pubDate>Thu, 09 Sep 2010 22:11:00 +0000</pubDate>
</item>
<item>
	<title>CIVX: CIVX - Qalthos: More Conference Calls</title>
	<guid>tag:qalthos.github.io/blog,2010-09-09:more-conference-calls.html</guid>
	<link>http://qalthos.github.io/blog/more-conference-calls.html</link>
	<description>&lt;p&gt;Every time I go through one of these calls I feel like I come out
knowing less about the topic discussed. The topics aren't hard, and I
can now follow along and understand most of what they're talking about,
but most of the technologies are things I haven't really looked at
before. It's interesting, and it's exciting, but it's a little wearying
too. The majority of the talks seem to revolve around the use of Amazon
EC2 instances, of which I know nothing.
On my own tasks, the semifinal versions of the getall script and the
associated documentation got pushed to &lt;a class=&quot;reference external&quot; href=&quot;http://bitbucket.org/slinkp/geowebdns&quot;&gt;geowebdns&lt;/a&gt;' repository today. I
feel pretty good about the changes I made, even if it doesn't prove
useful to the current task, I have opened up some small part of someone
else's open source program, and that's really cool.&lt;/p&gt;</description>
	<pubDate>Thu, 09 Sep 2010 22:11:00 +0000</pubDate>
</item>
<item>
	<title>CIVX: CIVX - Qalthos: Hello, world...</title>
	<guid>tag:qalthos.github.io/blog,2010-09-09:hello-world.html</guid>
	<link>http://qalthos.github.io/blog/hello-world.html</link>
	<description>&lt;p&gt;This is my first posting despite having been here for a week, because
the zaniness that was my first week did not allow for such silly things
as introductions. Now I finally have some of the infrastructure things
worked out, and can report on my findings.
Work has been progressing on a scraper for &lt;a class=&quot;reference external&quot; href=&quot;http://en.wikipedia.org/wiki/Shapefile&quot;&gt;shapefiles&lt;/a&gt; for the Senate.
I've been fairly successful in getting a large amount of data, (up to
7.6 GB of zip files!) so my task today was to clean up the script and
make it readable to commit it back upstream. I had started by adding
more loops to the script for special cases, but that meant repeating the
core download code. Realizing this, I made a generalized downloader
function which gets called by each loop, simplifying individual loops
into a simple&lt;/p&gt;
&lt;pre class=&quot;literal-block&quot;&gt;
'for URL in $URL_LIST; download $URL $FILE; done'
&lt;/pre&gt;
&lt;p&gt;Well, I think it's simpler...
Each time I tweak away at this file, my bash skill gets better and
better, but whether any of this is going to stick around is another
question. I always forget the simple bashisms, like for loops and
conditionals, and I can never remember quite how variables work. But as
I work more with this file, I get more comfortable with these
conventions. Though I still occasionally pine for the occasional
pythonic statement (and perhaps also for the fjords).&lt;/p&gt;</description>
	<pubDate>Thu, 09 Sep 2010 22:10:00 +0000</pubDate>
</item>
<item>
	<title>MAFH: MAFH - Jlew: Busy Days</title>
	<guid>tag:blogger.com,1999:blog-8286909058639323737.post-5456351887454437511</guid>
	<link>http://blog.jlewopensource.com/2010/08/busy-days.html</link>
	<description>We are approaching the end of this summer block, trying to wrap things up.  I have been jumping around a few projects lately, &lt;a href=&quot;http://foss.rit.edu/projects/fortunehunter&quot;&gt;Fortune Hunter&lt;/a&gt;, my &lt;a href=&quot;http://schoolserver.rit.edu&quot;&gt;School Server&lt;/a&gt;, and a &lt;a href=&quot;http://schoolserver.rit.edu/trac/csiweb&quot;&gt;csi website&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Local Hackfest&lt;/h2&gt;We had a hackfest in &lt;a href=&quot;http://innovation.rit.edu&quot;&gt;Center for Student Innovation&lt;/a&gt; on the 4th of August. Buffalo Chicken Pizza, groove bot blasting music, and lots of coders and a few projects; It was a great time.&lt;br /&gt;&lt;br /&gt;Fortune hunter team spent the day adding some touches to the animation engine.  By the end of the hackfest I was able to merge the art team's branch into the main.  Having 415 edits, only one merge conflict is quite impressive.  Some minor engine changes followed in the next couple of days to return backwards compatibility with &lt;a href=&quot;http://foss.rit.edu/projects/lemonade&quot;&gt;Lemonade&lt;/a&gt; (which is now being updated to the new animation system).&lt;br /&gt;&lt;br /&gt;Taylor and Eric were working on the CSI web app adding the ability to link up nodes as well as a few other nice tweaks. Jon Schull and I were also helping out in the early hours of the hackfest, planning some of the features as well as going through the code with Taylor and Eric.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://civx.us&quot;&gt;Civx&lt;/a&gt; had the whole crew plus some like Luke Macken coding away. One of the tasks for Nate was adding javascript scraping.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Upcoming Research Symposium&lt;/h2&gt;Well we have all been really busy preparing for our Research Papers, Posters, and Presentations for RIT's &lt;a href=&quot;http://www.rit.edu/cos/undergraduateresearchsymposium/&quot;&gt;Undergraduate Research Symposium&lt;/a&gt; that is being held on August 13th.&lt;br /&gt;&lt;br /&gt;The two fortune hunter groups have decided to have one poster and one presentation that will each cover both topics.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://docs.google.com/document/edit?id=1OovnXK1Klx-htChrEugQbwa1d5qeSYzafXB5ULnhcm4&amp;amp;hl=en&amp;amp;authkey=CJb5zJMC&quot;&gt;Game Engine Abstract&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://docs.google.com/document/edit?id=1ndze7btRi7hDuzQpiI3vKqiTu9app13N3gsanQ4xFdo&amp;amp;hl=en&amp;amp;authkey=CKODxrYC&quot;&gt;Animation System Abstract&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://docs.google.com/present/edit?id=0AbEW_PzuooSsZGhkN2djcDdfNzRuY3JmNThocg&amp;amp;hl=en&amp;amp;authkey=CIXUpYAH&quot;&gt;Presentation&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_hxrWrIsxtPg/TGGTLKnjZzI/AAAAAAAAzwU/mn1n5OsJWKg/s1600/Poster.jpg&quot;&gt;Poster&lt;/a&gt; (jpg)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h2&gt;Infrastructure&lt;/h2&gt;We have been doing a lot of things on our infrastructure side.  We got our three sugarlabs servers up and they just need some configuration and we will be hosting a sugar activities mirror.&lt;br /&gt;&lt;br /&gt;I have also been busy working on our own hosted system.  We have our own trac and git repositories hosed on &lt;a href=&quot;http://schoolserver.rit.edu&quot;&gt;schoolserver&lt;/a&gt;.  We even have a club here at RIT testing out the system.  So hopefully this will be the start of a very valuable resource.&lt;br /&gt;&lt;br /&gt;We have also given Dave Silverman the task of building a new logo for FOSS @ RIT. Well Dave delivered, so here is our new logo:&lt;br /&gt;&lt;img src=&quot;http://foss.rit.edu/files/logo.png&quot; alt=&quot;FOSS @ RIT logo&quot; /&gt;&lt;br /&gt;&lt;br /&gt;Some other things I have been working on is a &lt;a href=&quot;http://gitorious.org/jlew/gitosis-config&quot;&gt;gitorious config&lt;/a&gt; script to allow easy modification of our git repos on schoolserver.  My long term goal of this is to write/modify a trac plugin to allow git management from trac.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Gource Visualization&lt;/h2&gt;I have also been compiling a gource visualization that has all of our projects in one feed.  This required me to write a script that can combine the git logs of a few git repos into one log.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=gjTqTDEmSSE&quot;&gt;Watch on YouTube&lt;/a&gt;&lt;br /&gt;</description>
	<pubDate>Mon, 09 Aug 2010 21:50:00 +0000</pubDate>
	<author>noreply@blogger.com (Justin Lewis)</author>
</item>
<item>
	<title>MAFH: MAFH - DaveSilver: Integration...complete? Not quite...</title>
	<guid>http://foss.rit.edu/186 at http://foss.rit.edu</guid>
	<link>http://foss.rit.edu/node/186</link>
	<description>&lt;p&gt;So it's been a while since I posted anything to this blog. I hope you guys haven't missed me too much. This week has been pretty eventful. The last three days Kevin and I have been working to integrate the animation stuff into the Game Engine that he and Jlew made. This was a large task but not a vastly challenging one. It was more about determining the exact process we would use and doing that for everything, than it was about figuring out a unique process for each situation.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://foss.rit.edu/node/186&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Thu, 05 Aug 2010 16:11:49 +0000</pubDate>
</item>
<item>
	<title>MAFH: MAFH - Blitzkev: Hackfest Success</title>
	<guid>http://foss.rit.edu/185 at http://foss.rit.edu</guid>
	<link>http://foss.rit.edu/node/185</link>
	<description>&lt;p&gt;Actions speak louder than words so check below for commits made and a screen cap of some new animations running in the integrated animation/game engine.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://git.fedorahosted.org/git/?p=fortune_hunter.git;a=summary&quot; title=&quot;http://git.fedorahosted.org/git/?p=fortune_hunter.git;a=summary&quot;&gt;http://git.fedorahosted.org/git/?p=fortune_hunter.git;a=summary&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://imgur.com/9f9Ivl.jpg&quot; title=&quot;http://imgur.com/9f9Ivl.jpg&quot;&gt;http://imgur.com/9f9Ivl.jpg&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Thu, 05 Aug 2010 15:27:55 +0000</pubDate>
</item>
<item>
	<title>MAFH: MAFH - Blitzkev: Further success with integration</title>
	<guid>http://foss.rit.edu/183 at http://foss.rit.edu</guid>
	<link>http://foss.rit.edu/node/183</link>
	<description>&lt;p&gt;Today Dave looked into what was causing the randomness in the drawing hierarchy, and traced most of it to a dictionary. We pushed a small fix for that issue and are looking at fixing the other issues that cropped up. On my part I finished porting the battle menu, started the magic menu (which has a lot of work) and helped Dave with the dungeon drawing methods.&lt;/p&gt;</description>
	<pubDate>Mon, 02 Aug 2010 22:50:18 +0000</pubDate>
</item>
<item>
	<title>MAFH: MAFH - Blitzkev: Integration of drawable objects and fortune hunter</title>
	<guid>http://foss.rit.edu/182 at http://foss.rit.edu</guid>
	<link>http://foss.rit.edu/node/182</link>
	<description>&lt;p&gt;After finishing produce puzzle on Monday (the activity can be found here: &lt;a href=&quot;http://activities.sugarlabs.org/en-US/sugar/addon/4322&quot; title=&quot;http://activities.sugarlabs.org/en-US/sugar/addon/4322&quot;&gt;http://activities.sugarlabs.org/en-US/sugar/addon/4322&lt;/a&gt;) I have been working hard with Dave to get fortune hunter completely changed over to using his drawable object and scene classes instead of the old surface blits. Our 50+ git commits can be found here &lt;a href=&quot;http://git.fedorahosted.org/git/?p=fortune_hunter.git;a=shortlog;h=refs/heads/animationrework&quot; title=&quot;http://git.fedorahosted.org/git/?p=fortune_hunter.git;a=shortlog;h=refs/heads/animationrework&quot;&gt;http://git.fedorahosted.org/git/?p=fortune_hunter.git;a=shortlog;h=refs/...&lt;/a&gt; .&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://foss.rit.edu/node/182&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Fri, 30 Jul 2010 20:10:58 +0000</pubDate>
</item>
<item>
	<title>MAFH: MAFH - DaveSilver: Every time you fix one problem, another crops up...</title>
	<guid>http://foss.rit.edu/181 at http://foss.rit.edu</guid>
	<link>http://foss.rit.edu/node/181</link>
	<description>&lt;p&gt;As you may be able to guess from my blog title I have been running into more issues while trying to integrate my stuff into Jlew and Blitzkev's engine. Mainly we are having issues getting things to display because the entire engine has not yet been ported over to the new system. This means that some things are using our sprite and sprite group system while other things are using the old blit and flip method. For some reason this is causing the stuff to not display the same way every time we test and thus makes it very hard for us to pin down the exact issues we are having.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://foss.rit.edu/node/181&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Thu, 29 Jul 2010 16:46:59 +0000</pubDate>
</item>
<item>
	<title>MAFH: MAFH - DaveSilver: Integration... sucks...</title>
	<guid>http://foss.rit.edu/180 at http://foss.rit.edu</guid>
	<link>http://foss.rit.edu/node/180</link>
	<description>&lt;p&gt;So today I finally finished all of the classes and functions of the animation system. My next task is to integrate all of the classes into the game engine that Jlew and BlitzKev have built. This task is pretty hefty and will probably take a day or so to complete. It involves me finding every location where my stuff would be used and then figuring how best to make it work in those locations. It's a big task but I know I am up to it.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://foss.rit.edu/node/180&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Tue, 27 Jul 2010 15:34:42 +0000</pubDate>
</item>
<item>
	<title>MAFH: MAFH - Blitzkev: Mon July 26th - Produce Puzzle done</title>
	<guid>http://foss.rit.edu/179 at http://foss.rit.edu</guid>
	<link>http://foss.rit.edu/node/179</link>
	<description>&lt;p&gt;After a lot of hard work and 13 commits, I've finally finished porting my modified version of produce puzzle to the game engine. I also got the game working as an .xo bundle on the xo. Uploading to activities.sugarlabs as soon as I'm able.&lt;/p&gt;
&lt;p&gt;More fortune hunter polishing coming next, as well as finishing our abstract before Sunday night.&lt;/p&gt;</description>
	<pubDate>Mon, 26 Jul 2010 22:00:11 +0000</pubDate>
</item>
<item>
	<title>MAFH: MAFH - DaveSilver: T-Minus Three Weeks...</title>
	<guid>http://foss.rit.edu/178 at http://foss.rit.edu</guid>
	<link>http://foss.rit.edu/node/178</link>
	<description>&lt;p&gt;So we officially have only three weeks left to finish this project. That seems like a small amount but I think we are pretty much on track for that. Last week we discovered that using the images object type was a bad idea and decided we needed to convert our system to using sprites. Thankfully this does not require too much hard work on our end. I am currently working towards this goal.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://foss.rit.edu/node/178&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Mon, 26 Jul 2010 15:52:09 +0000</pubDate>
</item>
<item>
	<title>MAFH: MAFH - jtmengel: Tales of Thor's Day</title>
	<guid>http://foss.rit.edu/177 at http://foss.rit.edu</guid>
	<link>http://foss.rit.edu/node/177</link>
	<description>&lt;p&gt;Alright, time for the Thor's Day Blog, also know as Thursday by some nations that don't recognize the day's pagan origins. Ahem, but anyways, today was a day of killing off the tests we started yesterday on using classes, inheriting sprite, in conjunction with dirty lists.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://foss.rit.edu/node/177&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Thu, 22 Jul 2010 19:06:13 +0000</pubDate>
</item>
<item>
	<title>MAFH: MAFH - DaveSilver: Thurs time's the charm...</title>
	<guid>http://foss.rit.edu/176 at http://foss.rit.edu</guid>
	<link>http://foss.rit.edu/node/176</link>
	<description>&lt;p&gt;So today we worked on getting our system working so that we would not have to refresh everything on screen every single frame. We were pretty successful.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://foss.rit.edu/node/176&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Thu, 22 Jul 2010 18:40:04 +0000</pubDate>
</item>
<item>
	<title>CIVX: CIVX - kayeight: I made success!</title>
	<guid>http://foss.rit.edu/175 at http://foss.rit.edu</guid>
	<link>http://foss.rit.edu/node/175</link>
	<description>&lt;p&gt;Yesterday I completed the meetings and votes tabs of the person widget, which were a cinch with the list of committees successfully scraped by the masterful Geo Pirate. I can now safely say we're nearly done with this widget, save for the calendar tab (which appears to be on the back burner now) and a few minor ordering issues. Our next target is a poly form widget and a location dashboard, parts of which are already working.&lt;/p&gt;</description>
	<pubDate>Thu, 22 Jul 2010 13:20:02 +0000</pubDate>
</item>
<item>
	<title>MAFH: MAFH - Jlew: Fortune Hunter Dungeon Advancing</title>
	<guid>tag:blogger.com,1999:blog-8286909058639323737.post-435924107764177481</guid>
	<link>http://blog.jlewopensource.com/2010/07/fortune-hunter-dungeon-advancing.html</link>
	<description>I finally started implementing the ability to go to the next dungeon (&lt;a href=&quot;https://fedorahosted.org/fortune_hunter/ticket/44&quot;&gt;ticket 44&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;I didn't close the ticket because there seems to be some bug in the code on level two that gets you stuck in a room on level two.&lt;br /&gt;&lt;br /&gt;Otherwise, I have been doing a lot of little things.  Hopefully I'll get this figured out soon.</description>
	<pubDate>Wed, 21 Jul 2010 21:45:00 +0000</pubDate>
	<author>noreply@blogger.com (Justin Lewis)</author>
</item>
<item>
	<title>MAFH: MAFH - Blitzkev: Wed July 21st</title>
	<guid>http://foss.rit.edu/174 at http://foss.rit.edu</guid>
	<link>http://foss.rit.edu/node/174</link>
	<description>&lt;p&gt;Today was the weekly storyteller meeting. We laid down plans for the next week - in short:&lt;br /&gt;
I hope to finish produce puzzle by the end of the day Friday, and if not then, early next week. After that Jlew and I will go back to polishing fortune hunter as our flagship example of what the fortune engine is capable of. We will also be extending help to the Games for Science group and to the animation team.&lt;/p&gt;
&lt;p&gt;Today I worked further on the product puzzle game:&lt;br /&gt;
&lt;a href=&quot;http://git.fedorahosted.org/git?p=fossrit.git;a=commit;h=5b98697a951e0461635c65446a7b953260282e31&quot; title=&quot;http://git.fedorahosted.org/git?p=fossrit.git;a=commit;h=5b98697a951e0461635c65446a7b953260282e31&quot;&gt;http://git.fedorahosted.org/git?p=fossrit.git;a=commit;h=5b98697a951e046...&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://foss.rit.edu/node/174&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Wed, 21 Jul 2010 20:52:02 +0000</pubDate>
</item>
<item>
	<title>MAFH: MAFH - jtmengel: Bloging blogs, everyday</title>
	<guid>http://foss.rit.edu/173 at http://foss.rit.edu</guid>
	<link>http://foss.rit.edu/node/173</link>
	<description>&lt;p&gt;Design was previously thought to be complete and implementation could begin, but wait! There's more!&lt;/p&gt;
&lt;p&gt;We had previously moved on from dirty blitting content that we fully understood the subtleties therein, full of bravado and confidence that, as you will soon learn why, quickly evaporated.  As our plans were attacked by rabid weasels.  &lt;/p&gt;
&lt;p&gt;I carefully chose this metaphor to perfectly illustrate where we are, or course.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://foss.rit.edu/node/173&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Wed, 21 Jul 2010 19:33:18 +0000</pubDate>
</item>
<item>
	<title>CIVX: CIVX - kayeight: a different point of view</title>
	<guid>http://foss.rit.edu/172 at http://foss.rit.edu</guid>
	<link>http://foss.rit.edu/node/172</link>
	<description>&lt;p&gt;Yesterday, while becoming increasingly frustrated at the NY senate's website as I tried to scrape committee information, Nate suggested a much easier solution. I had been attempting to visit each senator's page and get their committees individually, but naturally, the website is formatted so inconsistently that no two senators list their committees in the same place or manner. I whiled away a number of hours in this direction before Nate had the idea of searching from the other direction - visiting each committee page and getting its members.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://foss.rit.edu/node/172&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Wed, 21 Jul 2010 13:15:59 +0000</pubDate>
</item>
<item>
	<title>MAFH: MAFH - DaveSilver: Things Keep Getting Complicated...</title>
	<guid>http://foss.rit.edu/171 at http://foss.rit.edu</guid>
	<link>http://foss.rit.edu/node/171</link>
	<description>&lt;p&gt;So yesterday was primarily successful however towards the end of the end we started running into some problems. Basically as we got to the end of the day we found that some of the methods we were using, or planning on using, were not going to be as successful as we thought. You see, we intended to use a &quot;dirty&quot; update method. This means that instead of updating the whole screen every frame, it only updates the areas covered by objects that actually need to be updated. To do this, we would simply create a list of the rectangle objects associated with what needs to be updated.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://foss.rit.edu/node/171&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Wed, 21 Jul 2010 13:15:17 +0000</pubDate>
</item>
<item>
	<title>MAFH: MAFH - DaveSilver: Moving On to Larger Things...</title>
	<guid>http://foss.rit.edu/169 at http://foss.rit.edu</guid>
	<link>http://foss.rit.edu/node/169</link>
	<description>&lt;p&gt;So yesterday we finally implemented rotation correctly and it looks great. Once we had that down we also implemented Rendered Transparency so that users could make more complex looking images, and the convert function so that images can be optimized more easily. After we got that working we moved on to determining how we would implement the animation classes into the larger Game Engine.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://foss.rit.edu/node/169&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Tue, 20 Jul 2010 18:50:43 +0000</pubDate>
</item>
<item>
	<title>MAFH: MAFH - Blitzkev: July 20th</title>
	<guid>http://foss.rit.edu/168 at http://foss.rit.edu</guid>
	<link>http://foss.rit.edu/node/168</link>
	<description>&lt;p&gt;I've been emailing Abbi working out how the Produce Puzzle main game should work and function. I have a good idea now how to move forward and lay it out. I'm working with the animation guys to integrate their Drawable Object classes into fortune hunter; and I'll use their classes for all the images in produce puzzle!&lt;/p&gt;</description>
	<pubDate>Tue, 20 Jul 2010 16:51:13 +0000</pubDate>
</item>
<item>
	<title>MAFH: MAFH - jtmengel: Incorporating what we've found</title>
	<guid>http://foss.rit.edu/167 at http://foss.rit.edu</guid>
	<link>http://foss.rit.edu/node/167</link>
	<description>&lt;p&gt;In these last two weeks, Dave and I on the front end team have made progress on outlining what we want to implement and, more importantly, what we will leave out to streamline performance;  We've been bouncing between two phases of our design process, the first being fervently adding features and functionality and the second being aggressively purging what isn't absolutely necessary.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://foss.rit.edu/node/167&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Tue, 20 Jul 2010 13:18:11 +0000</pubDate>
</item>
<item>
	<title>MAFH: MAFH - Blitzkev: Produce Puzzle Progress</title>
	<guid>http://foss.rit.edu/166 at http://foss.rit.edu</guid>
	<link>http://foss.rit.edu/node/166</link>
	<description>&lt;p&gt;Latest git commit can always be found here: &lt;a href=&quot;https://fedorahosted.org/fossrit/browser/produce_puzzle&quot; title=&quot;https://fedorahosted.org/fossrit/browser/produce_puzzle&quot;&gt;https://fedorahosted.org/fossrit/browser/produce_puzzle&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Finished the main menu (plus my custom graphic :D), from which the old code can now be run. I'm cleaning the old code up to remove all pygtk issues and be engine compliant.&lt;/p&gt;</description>
	<pubDate>Mon, 19 Jul 2010 18:38:10 +0000</pubDate>
</item>
<item>
	<title>CIVX: CIVX - rberent: rberent</title>
	<guid>http://rebeccanatalie.wordpress.com/?p=54</guid>
	<link>http://rebeccanatalie.wordpress.com/2010/07/19/cool-widgets/</link>
	<description>&lt;p&gt;Spending a lot of time making the CIVX interface more sleek and cutting-edge by implementing and tweaking some neat jQuery widgets that display content in a dynamic and clear way, making it easy to display content on one page without causing the user to have to scroll. I will add to this post later when I&amp;#8217;ve finished the latest widget so you can see it in action. All widgets are re-branded to match the new CIVX theme, but all code we use, including our widget code, is available for any user to view, download, implement, or whatever. Everything we use everywhere on our site is free to the public, hence keeping up with our truly, completely open source mission.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/rebeccanatalie.wordpress.com/54/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/rebeccanatalie.wordpress.com/54/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/rebeccanatalie.wordpress.com/54/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/rebeccanatalie.wordpress.com/54/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/rebeccanatalie.wordpress.com/54/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/rebeccanatalie.wordpress.com/54/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/rebeccanatalie.wordpress.com/54/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/rebeccanatalie.wordpress.com/54/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/rebeccanatalie.wordpress.com/54/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/rebeccanatalie.wordpress.com/54/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/rebeccanatalie.wordpress.com/54/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/rebeccanatalie.wordpress.com/54/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/rebeccanatalie.wordpress.com/54/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/rebeccanatalie.wordpress.com/54/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=rebeccanatalie.wordpress.com&amp;amp;blog=14084280&amp;amp;post=54&amp;amp;subd=rebeccanatalie&amp;amp;ref=&amp;amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Mon, 19 Jul 2010 15:12:38 +0000</pubDate>
</item>
<item>
	<title>MAFH: MAFH - DaveSilver: Rotation is My Chief Concern...</title>
	<guid>http://foss.rit.edu/165 at http://foss.rit.edu</guid>
	<link>http://foss.rit.edu/node/165</link>
	<description>&lt;p&gt;So a new week has begun and we are still getting rotation to work. We have a few ideas and supposedly JT got pretty far on it last Thursday but, with me not being in the FOSS Box that day, we were not able to truly work together. He has not come in yet but will probably be here soon and thus we will be able to bang out this final piece of the &quot;puzzle&quot;. Beyond that we will also be working on integrating our system with Jlew's game engine today. We are scheduled to have a meeting sometime today on how they can work together.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://foss.rit.edu/node/165&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Mon, 19 Jul 2010 13:03:15 +0000</pubDate>
</item>
<item>
	<title>CIVX: CIVX - kayeight: CIVX-ing away</title>
	<guid>http://foss.rit.edu/164 at http://foss.rit.edu</guid>
	<link>http://foss.rit.edu/node/164</link>
	<description>&lt;p&gt;Lately we have been trying to both put a swanky new theme on the CIVX website as well as wrap up the person dashboard. While Rebecca has been doing an amazing job on the former, I have been working on the latter. I ran into a few snags earlier last week when I experienced the results of not pulling from the repository often enough (note to self: don't do that again) and had problems merging my code with the large amount that had been committed since I last pulled.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://foss.rit.edu/node/164&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Mon, 19 Jul 2010 12:44:29 +0000</pubDate>
</item>
<item>
	<title>MAFH: MAFH - Jlew: Fortune Engine profiler and other projects</title>
	<guid>tag:blogger.com,1999:blog-8286909058639323737.post-5159580881882802166</guid>
	<link>http://blog.jlewopensource.com/2010/07/fortune-engine-profiler-and-other.html</link>
	<description>Yesterday I resolved the profiling ticket (&lt;a href=&quot;https://fedorahosted.org/fortune_hunter/ticket/31&quot;&gt;ticket 31&lt;/a&gt;).  This adds a basic profiling system to the game that can be run through the game console&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/_hxrWrIsxtPg/TD96jrH1drI/AAAAAAAAzeU/qmpNkyFf1vs/s1600/fortune_engine_draw_profile.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;306&quot; src=&quot;http://1.bp.blogspot.com/_hxrWrIsxtPg/TD96jrH1drI/AAAAAAAAzeU/qmpNkyFf1vs/s400/fortune_engine_draw_profile.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;This introduced a bug that I fixed today (&lt;a href=&quot;https://fedorahosted.org/fortune_hunter/changeset/26c82737d85eba30cde4c34544a2c21ea654009&quot;&gt;changeset&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Kevin and I also started working on our paper for the symposium at the end of the semester.&lt;br /&gt;&lt;br /&gt;Aside from Fortune Hunter and the Engine, I have also started working on porting Nate's Lemonade Stand game over to the engine.&lt;br /&gt;&lt;br /&gt;Python backwards compatibility drives me nuts.  The xo 1.0 runs python 2.5 or older where the newer ones use python 2.6.  In the game engine I was using the keyword &quot;as&quot; in the exception handler where in python 2.5 the keyword is &quot;,&quot;.  So I had to make a commit to convert all my code so that it doesn't use the newer &quot;as&quot; keyword (&lt;a href=&quot;https://fedorahosted.org/fortune_hunter/changeset/860f34b0663522ed5d8c0d2183b654ef59e4699d&quot;&gt;changeset&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Pygame has a similar issue... I had to remove using pygame.Color and just use the tuple format for the rgb color values in our game (changeset &lt;a href=&quot;https://fedorahosted.org/fortune_hunter/changeset/9d000d6c5f7f1405a84db747d630d1ff45fbcdab&quot;&gt;1&lt;/a&gt; and &lt;a href=&quot;https://fedorahosted.org/fortune_hunter/changeset/cf45d6cfecec12e3f3161fd0541e870cfddb32d5&quot;&gt;2&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Other then that, I have also been helping Taylor on a project for the CSI.  This project is like making a facebook/social networking site driven around projects and events.</description>
	<pubDate>Thu, 15 Jul 2010 21:28:00 +0000</pubDate>
	<author>noreply@blogger.com (Justin Lewis)</author>
</item>
<item>
	<title>MAFH: MAFH - DaveSilver: Better late than never....</title>
	<guid>http://foss.rit.edu/161 at http://foss.rit.edu</guid>
	<link>http://foss.rit.edu/node/161</link>
	<description>&lt;p&gt;So last night I got food poisoning when I ate some sour fruit and because of that I was not able to physically be at the Foss Box today. Despite that I was still able to get some work done. Basically yesterday I spent the whole day building the Scene class which was the final piece that needed to be completed of the animation system. With the code complete I spent today running tests to make sure things work and to make sure there was nothing I did wrong. Obviously I did do stuff wrong at first but it has now all been fixed and the class is fully functional.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://foss.rit.edu/node/161&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Thu, 15 Jul 2010 19:20:53 +0000</pubDate>
</item>
<item>
	<title>MAFH: MAFH - Blitzkev: Produce Puzzle</title>
	<guid>http://foss.rit.edu/160 at http://foss.rit.edu</guid>
	<link>http://foss.rit.edu/node/160</link>
	<description>&lt;p&gt;The first thing I did today was to fix two bugs in the new  MAFH, &lt;a href=&quot;https://fedorahosted.org/fortune_hunter/ticket/39&quot; title=&quot;https://fedorahosted.org/fortune_hunter/ticket/39&quot;&gt;https://fedorahosted.org/fortune_hunter/ticket/39&lt;/a&gt; and one related to targeting enemies that no longer exist. I spent a few hours helping the games for science team, getting them up-to-date on git and how the game engine works. &lt;/p&gt;
&lt;p&gt;I talked to Abbi Honeycutt, a developer of the Math4 game produce puzzle &lt;a href=&quot;http://wiki.laptop.org/go/Produce_Puzzle&quot; title=&quot;http://wiki.laptop.org/go/Produce_Puzzle&quot;&gt;http://wiki.laptop.org/go/Produce_Puzzle&lt;/a&gt;, and am now working on porting that over as another proof of concept. This is what I'll be spending the next 6 or so work days on.&lt;/p&gt;</description>
	<pubDate>Thu, 15 Jul 2010 19:07:37 +0000</pubDate>
</item>
<item>
	<title>MAFH: MAFH - Blitzkev: The end of Fortune Hunter</title>
	<guid>http://foss.rit.edu/159 at http://foss.rit.edu</guid>
	<link>http://foss.rit.edu/node/159</link>
	<description>&lt;p&gt;Ticket #17 has officially been closed (&lt;a href=&quot;https://fedorahosted.org/fortune_hunter/ticket/17&quot; title=&quot;https://fedorahosted.org/fortune_hunter/ticket/17&quot;&gt;https://fedorahosted.org/fortune_hunter/ticket/17&lt;/a&gt;). There will be more discussion on what I can further port over to the Game Engine; as Justin and I believe that porting Fortune Hunter over as a proof of concept has been a success.&lt;/p&gt;</description>
	<pubDate>Wed, 14 Jul 2010 19:17:43 +0000</pubDate>
</item>
<item>
	<title>MAFH: MAFH - DaveSilver: Animation Systems are...Coming...</title>
	<guid>http://foss.rit.edu/158 at http://foss.rit.edu</guid>
	<link>http://foss.rit.edu/node/158</link>
	<description>&lt;p&gt;So as of last night the animation systems are in a pretty good place. I have most of it done and am moving on to the final piece today. Overall things are going pretty well with it so far. The rotation stuff is still giving us problems but we have decided to put it on hold until we have everything else complete. This way we will not be held up by it and fall behind schedule. I expect that once we get away from the problem and stop thinking so much about it we will come up with a solution because that's just how these things tend to go but who knows.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://foss.rit.edu/node/158&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Wed, 14 Jul 2010 12:40:10 +0000</pubDate>
</item>
<item>
	<title>MAFH: MAFH - Jlew: Lemonade finds bug in Fortune Engine</title>
	<guid>tag:blogger.com,1999:blog-8286909058639323737.post-1625147092775224347</guid>
	<link>http://blog.jlewopensource.com/2010/07/lemonade-finds-bug-in-fortune-engine.html</link>
	<description>Today I spent a lot of time &lt;a href=&quot;http://gitorious.org/lemonade-stand-olpc/lemonade-stand-olpc/commit/234492b975fbe26b75e4f92e7648d1dc58f7e25c&quot;&gt;working on&lt;/a&gt; the &lt;a href=&quot;http://wiki.sugarlabs.org/go/Lemonade_Stand&quot;&gt;lemonade stand activity&lt;/a&gt;. The activity is almost back to its original state but in the game engine.  All that is left is the change counting mini-game at the end of each day.  After that it is just improving the gui.&lt;br /&gt;&lt;br /&gt;While working on lemonade, I found a bug in the game engine.  This bug caused the game to appear to freeze when the game console was summoned in non-animation mode (&lt;a href=&quot;https://fedorahosted.org/fortune_hunter/ticket/38&quot;&gt;ticket 38&lt;/a&gt;).  The ticket has not been closed yet due to the fact the problem remains when you close the console until the next event sets the screen dirty.</description>
	<pubDate>Wed, 14 Jul 2010 02:44:00 +0000</pubDate>
	<author>noreply@blogger.com (Justin Lewis)</author>
</item>
<item>
	<title>MAFH: MAFH - Blitzkev: Week 6</title>
	<guid>http://foss.rit.edu/157 at http://foss.rit.edu</guid>
	<link>http://foss.rit.edu/node/157</link>
	<description>&lt;p&gt;Battles are almost 100% finished. Players can now kill all enemies and move further on into the dungeon. The one thing left to implement is item drops. The whole process has been a very good proof of concept for the game engine itself.&lt;/p&gt;</description>
	<pubDate>Tue, 13 Jul 2010 21:06:12 +0000</pubDate>
</item>
<item>
	<title>MAFH: MAFH - Jlew: Game Engine and Lemonade Stand</title>
	<guid>tag:blogger.com,1999:blog-8286909058639323737.post-4903790323312792123</guid>
	<link>http://blog.jlewopensource.com/2010/07/game-engine-and-lemonade-stand.html</link>
	<description>Today I started out by fixing a bug in the game engine that caused the timer to give an inaccurate number of millisecond passed when not in animation mode (&lt;a href=&quot;https://fedorahosted.org/fortune_hunter/ticket/36#comment:4&quot;&gt;Ticket #36&lt;/a&gt;).  I also added some more commenting to the game engine (&lt;a href=&quot;https://fedorahosted.org/fortune_hunter/changeset/33b35ee3cf02c9d808b8565d6d2879fac8540baa&quot;&gt;changeset&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;After that I started recoding lemonade stand so that it will eventually run using the game engine. In its &lt;a href=&quot;http://gitorious.org/lemonade-stand-olpc/lemonade-stand-olpc/commit/2a710a1837837953025405d2562db7f7151e588d&quot;&gt;current state&lt;/a&gt; (&lt;a href=&quot;http://gitorious.org/lemonade-stand-olpc/lemonade-stand-olpc/commit/c299928cfbe2e25db3e33c351d538335f271dd8d&quot;&gt; and the other commit I did today&lt;/a&gt;) it is able to run the basic process day loop.  This includes buying items (or being forced to buy as many as you can if you try to buy to much making the game more interesting), decaying the inventory, process a weather change, and a random inventory event.  Next I need to to implement the simulation portion where people go and buy the items and go into a mini game.&lt;br /&gt;&lt;br /&gt;From there I get to start working on the main gui and some of the mini games.</description>
	<pubDate>Mon, 12 Jul 2010 22:30:00 +0000</pubDate>
	<author>noreply@blogger.com (Justin Lewis)</author>
</item>
<item>
	<title>CIVX: CIVX - rberent: rberent</title>
	<guid>http://rebeccanatalie.wordpress.com/?p=50</guid>
	<link>http://rebeccanatalie.wordpress.com/2010/07/12/hackathon-in-boston/</link>
	<description>&lt;p&gt;In Boston, we hacked all day with the folks at OLPC (One Laptop per Child), the whole CIVX team (including Luke Macken!) and the rest of our team from RIT. Basically, my task was to make the user dashboards (both people dashboards and state dashboards) look &amp;#8220;pretty&amp;#8221;. This involves extensive changes to the CSS files, as well as applying and tweaking the custom theme I previously blogged about creating using jQuery&amp;#8217;s Theme Roller. Some of the styles that were set up based on the themeroller generated imagery and others generated css code. I was able to go in and tweak some of the settings without having to re-create an entire new theme, which was pretty awesome and saved me lots of time. I also used CSS to re-position a lot of the elements on the dashboards, apply hierarchical typographic styles, text treatment, link behavior, and more.&lt;/p&gt;
&lt;p&gt;In addition to hacking, we got a tour of the OLPC Headquarters which was both moving and incredibly interesting to me having come into this job after the development of Justin, Taylor and Fran&amp;#8217;s Open Video Chat for the XOs (OLPC laptops). I learned a lot and had a nice time networking and looking around.&lt;/p&gt;
&lt;p&gt;On another note, the trip was a great bonding experience for our team here this summer. I think we all had a good time hanging out and spending time with one another outside of the office. Dinners were fun, and several of us went to a drum and bass club where we listened to some good music and got to know each other better. An especially awesome occurance was the surprise meet-up with my college roommate and great friend Keith Simmons, a good friend and former student of SJ&amp;#8217;s (Steve Jacobs) and an amazing hacker and pixel ninja himself. I also planned a meet-up with another friend of mine from college, Mark Cuddy, a former Industrial Design RIT grad, and both of them came out and joined us for fun on the last night in Boston. Overall, Boston was a great experience and a lot of work was done with a lot of people collaborating!!&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/rebeccanatalie.wordpress.com/50/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/rebeccanatalie.wordpress.com/50/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/rebeccanatalie.wordpress.com/50/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/rebeccanatalie.wordpress.com/50/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/rebeccanatalie.wordpress.com/50/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/rebeccanatalie.wordpress.com/50/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/rebeccanatalie.wordpress.com/50/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/rebeccanatalie.wordpress.com/50/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/rebeccanatalie.wordpress.com/50/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/rebeccanatalie.wordpress.com/50/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/rebeccanatalie.wordpress.com/50/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/rebeccanatalie.wordpress.com/50/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/rebeccanatalie.wordpress.com/50/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/rebeccanatalie.wordpress.com/50/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=rebeccanatalie.wordpress.com&amp;amp;blog=14084280&amp;amp;post=50&amp;amp;subd=rebeccanatalie&amp;amp;ref=&amp;amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</description>
	<pubDate>Mon, 12 Jul 2010 16:52:25 +0000</pubDate>
</item>
<item>
	<title>CIVX: CIVX - kayeight: hackfest.success == true</title>
	<guid>http://foss.rit.edu/155 at http://foss.rit.edu</guid>
	<link>http://foss.rit.edu/node/155</link>
	<description>&lt;p&gt;As you may have read, this past week the entire FOSS-box roadtripped to Boston for a hackfest at OLPC headquarters. Though we don't work on the XO laptops, CIVX was also able to tag along, and it's a good thing we did - the opportunity to work in person with Luke again was invaluable. It's awesome what can get done over the course of eight hours in a conference room with a bunch of hacker extraordinaires!&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://foss.rit.edu/node/155&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Mon, 12 Jul 2010 13:04:01 +0000</pubDate>
</item>

</channel>
</rss>
