<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" version="2.0">

<channel>
	<title>wm161.net</title>
	
	<link>http://wm161.net</link>
	<description>Your daily source of everything.</description>
	<lastBuildDate>Wed, 25 Aug 2010 15:49:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/wm161net" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="wm161net" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" />
		
		
		
		
		
		
		
		
		
	<geo:lat>41.728451</geo:lat><geo:long>-80.74507</geo:long><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2Fwm161net" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.addtoany.com/?linkname=wm161.net&amp;linkurl=http%3A%2F%2Ffeeds.feedburner.com%2Fwm161net&amp;type=feed" src="http://www.addtoany.com/addfr-b.gif">Add to Any Feed Reader</feedburner:feedFlare><item>
		<title>Exciting Adventures in Windows</title>
		<link>http://wm161.net/2010/01/24/exciting-adventures-in-windows/</link>
		<comments>http://wm161.net/2010/01/24/exciting-adventures-in-windows/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 02:56:46 +0000</pubDate>
		<dc:creator>Trever Fischer</dc:creator>
				<category><![CDATA[Fedora]]></category>

		<guid isPermaLink="false">http://wm161.net/?p=528</guid>
		<description><![CDATA[Over the weekend, I went to a small LAN party of 4 people, including myself where we played a &#8216;quick&#8217; 5-hour game of Sins of a Solar Empire. Yes, the game really is that huge. The real fun though, was that my windows partition ate itself a few days ago and I forgot about fixing [...]]]></description>
			<content:encoded><![CDATA[<p>Over the weekend, I went to a small LAN party of 4 people, including myself where we played a &#8216;quick&#8217; 5-hour game of Sins of a Solar Empire. Yes, the game really is that huge. The real fun though, was that my windows partition ate itself a few days ago and I forgot about fixing it till I arrived. Windows would boot up and show me a BSOD saying it couldn&#8217;t mount the boot partition. Someone burned a XP Pro installer CD which I used to enter the &#8216;recovery console&#8217;. Then it got exciting. For about an hour, my friend who is a Windows expert tried to help me figure out which windows &#8216;drive&#8217; contained my windows install. I was terrified of using the disk checker tool on the wrong drive for fear that Windows would eat it alive, claiming it was all &#8216;bad data&#8217;. My windows bootloader was installed to the first partition, sda1. In Windows, this shows up as the I drive because of the multi-format USB card reader my machine came with. My linux partitions (/boot and /) show up as either J or O, I&#8217;m not sure which is which.</p>
<p>The recovery console didn&#8217;t care about that useful bit of information I&#8217;ve lived with comfortably for about a year. My friend told me that Windows sees the first NTFS partition as the C drive, and thats that. Problem was, that windows couldn&#8217;t recognize any drives as being my NTFS partition. Linux could *guess* that sda1 had an NTFS header, but the important bits of the header were corrupt so it couldn&#8217;t be mounted. In the recovery console, I, J, and O were non-existant. The only drives I could see were two missing floppies, my two DVD drives, and my three hard disk partitions. After an hour of jumping through logical problems such as &#8220;If windows marks the drives it sees in alphabetic order, but my windows drive is actually called I in real life, and chkdisk might find a partition, then maybe I&#8217;m probably not screwed.&#8221;</p>
<p>I gave up<sup>1</sup>, rebooted to Linux in single user mode, and ran <a href="http://www.cgsecurity.org/wiki/TestDisk">TestDisk</a>. Problem solved.</p>
<p>Lesson learned here? <strong>You can&#8217;t use Windows to fix Windows</strong>. It just simply isn&#8217;t equipped to do so. I&#8217;ll gladly stick with <a href="http://fedoraproject.org">software that gives me the tools to do what I want</a>.</p>
<p><sup>1</sup>: My friend actually donated a spare harddrive for the night that I quickly installed a fresh copy of windows to, letting us finally start our game at 2am. I fixed things when I got home later that day.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/wm161net?a=EMNUCz-6xMQ:cCuSINNKwEU:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/wm161net?i=EMNUCz-6xMQ:cCuSINNKwEU:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/wm161net?a=EMNUCz-6xMQ:cCuSINNKwEU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/wm161net?d=yIl2AUoC8zA" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://wm161.net/2010/01/24/exciting-adventures-in-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item><item>
		<title>Call for icons</title>
		<link>http://wm161.net/2010/03/19/call-for-icons/</link>
		<comments>http://wm161.net/2010/03/19/call-for-icons/#comments</comments>
		<pubDate>Sat, 20 Mar 2010 03:46:35 +0000</pubDate>
		<dc:creator>Trever Fischer</dc:creator>
				<category><![CDATA[KDE]]></category>

		<guid isPermaLink="false">http://wm161.net/?p=531</guid>
		<description><![CDATA[For the 4.4 release, my local ACM chapter had a small release event where I demoed all the neat new features. One question that came up was &#8220;Why are all the control panel pages so&#8230;disorganized?&#8221;
I&#8217;ve wanted to work on that since it seemed like it&#8217;d be really simple and quick to do. However for the [...]]]></description>
			<content:encoded><![CDATA[<p>For the 4.4 release, my local ACM chapter had a small release event where I demoed all the neat new features. One question that came up was &#8220;Why are all the control panel pages so&#8230;disorganized?&#8221;</p>
<p>I&#8217;ve wanted to work on that since it seemed like it&#8217;d be really simple and quick to do. However for the past few weeks, I&#8217;ve been stuck working with an iRobot Create for my robotics class. [plug] My team and I have been using the <a href="http://gitorious.com/libirobot">libirobot</a> library I started writing a long while ago to get our two projects done.[/plug] Since the library is completely unfinished and experimental, it took up all of my KDE hacking time. D&#8217;oh.</p>
<p>But after the two projects were done, I suddenly found myself with free time again. So instead of working on <a href="http://wm161.net/2009/12/29/webcams-in-phonon/">getting webcam support into phonon like I should&#8217;ve been doing</a>, I <a href="http://reviewboard.kde.org/r/3287/">fiddled around with the organization.</a> (<a href="http://reviewboard.kde.org/r/3287/s/332/">Here&#8217;s a WIP-quality screenshot too</a>)</p>
<p>I asked a few folks who thought it was disorganized, and they seem to like the new ordering. The only problem though, is that we need a new icon for the new &#8216;input hardware&#8217; category. I created a bug report, to which <a href="https://bugs.kde.org/show_bug.cgi?id=231270">pinheiro replied</a>:</p>
<blockquote><p>ok valid bug, there is a bunch of icons in kcm that could be better a comprehensive list of those and also proposals to make them better would be fantastic.</p>
<p><cite>pinheiro on <a href="https://bugs.kde.org/show_bug.cgi?id=231270">bug 231270</a></cite></p></blockquote>
<p>I&#8217;m going to go through them this weekend with some other campus KDE users and a new design major friend I recently met (who has never used or seen KDE before) and look at what needs improvement.</p>
<p>&#8217;till then, if you&#8217;ve got a problem or suggestion for some icons, go say something in that bug.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/wm161net?a=jKew8Pj4STE:vVVL3dB3RAo:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/wm161net?i=jKew8Pj4STE:vVVL3dB3RAo:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/wm161net?a=jKew8Pj4STE:vVVL3dB3RAo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/wm161net?d=yIl2AUoC8zA" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://wm161.net/2010/03/19/call-for-icons/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item><item>
		<title>Systemsettings Reorganization: Part II</title>
		<link>http://wm161.net/2010/03/31/systemsettings-reorganization-part-ii/</link>
		<comments>http://wm161.net/2010/03/31/systemsettings-reorganization-part-ii/#comments</comments>
		<pubDate>Wed, 31 Mar 2010 04:29:53 +0000</pubDate>
		<dc:creator>Trever Fischer</dc:creator>
				<category><![CDATA[KDE]]></category>

		<guid isPermaLink="false">http://wm161.net/?p=536</guid>
		<description><![CDATA[If you didn&#8217;t glean it from my call for icons, then here&#8217;s what you missed: systemsettings needs reorganizing and some better icons.
Dario Andres and Ben Cooksley have a proposal up on TechBase that goes reasonably in-depth to explore a better organization of systemsettings. Today, I spent time with a friend of mine who isn&#8217;t a [...]]]></description>
			<content:encoded><![CDATA[<p>If you didn&#8217;t glean it from my <a href="http://wm161.net/2010/03/19/call-for-icons/">call for icons</a>, then here&#8217;s what you missed: systemsettings needs reorganizing and some better icons.</p>
<p>Dario Andres and Ben Cooksley have <a href="http://techbase.kde.org/User:DarioAndres/SS3">a proposal up on TechBase</a> that goes reasonably in-depth to explore a better organization of systemsettings. Today, I spent time with a friend of mine who isn&#8217;t a power user, but an &#8216;average&#8217; KDE user. I sat down with her over the period of a few hours and came up with some interesting notes while I asked her to do various tasks, comment on why she thought certain things would be in places, and generally go through every icon in the 4.4 systemsettings layout.</p>
<p>The way I went through things was I asked her to perform some task, and I asked questions to explain her thoughts when she seemed confused, made a quick decision, or the wrong choice. Here&#8217;s what we came up with, roughly translated from my notes:</p>
<p><strong>Task:</strong> Change the screensaver</p>
<p>Her first move was to jump to the appearance icon and poke around in there. The words &#8220;Splash Screen&#8221; confused her for a few seconds before she went back. After scanning the icons, she jumped over to Display and was thoroughly confused to not find it there. The reasoning behind the choice was her background of growing up using Windows. Eventually she found it after I told her to check out the Desktop group. After she found it, she commented that there was a bit of confusion between your display and your appearance. I asked what she&#8217;d think if moving the display icon to a new Hardware group would do, and she&#8217;d immediately know that the screensaver wasn&#8217;t in there.</p>
<p><strong>Task:</strong> Change the battery level at which your laptop goes to sleep</p>
<p>Initially, she thought it might be under Desktop. It was the only one remotely related. I pointed out that there was an Advanced tab and she immediately found it there, commenting that she never had a clue that the tabs existed.</p>
<p><strong>Task:</strong> Calibrate the new joystick you just plugged in</p>
<p>She was totally unable to find it. This is reasonable considering that it was buried under &#8220;Keyboard &#038; Mouse&#8221;. I pulled up <a href="http://reviewboard.kde.org/r/3287/s/332/">the screenshot from the reviewboard ticket</a> and asked where she might find it then. In the screenshot, Keyboard &#038; Mouse was renamed to Input Devices, which she said was a dead giveaway that the joystick would be in there. We both agreed that it needed a better icon, since the keyboard is but one of many devices.</p>
<p><strong>Task:</strong> Configure the list of actions that show up when a storage device is plugged in</p>
<p>Her first choice was the &#8220;Default Applications&#8221; icon, explaining that it made sense you&#8217;d want to specify the default actions for a device. However, she couldn&#8217;t find it &#8217;till I reminded her of the Advanced tab. Still in &#8216;find the icon&#8217; mode, she scanned the list and went to Autostart first. I&#8217;d like to blame a poor explanation of the task for that one, but her claim was that the icon (a gear with a play button) implied some kind of connection between &#8216;do something&#8217; and &#8216;hardware&#8217;. From there she jumped right at the Removable Devices (device-automounter) text. Going back, she picked the other &#8216;device&#8217; text and found it.</p>
<p>Here, she took a break and asked why some of these things weren&#8217;t filed under the &#8216;Personal&#8217; category. &#8220;I mean, they&#8217;re all about configuring my personal settings, right?&#8221; She was making references to the appearance, desktop, and display icons.</p>
<p><strong>Task:</strong> In KDE, you can configure the system to send certain sounds to specific devices, such as notifications and voice chat to your headphones, but pipe your music to your speakers. Where do you change that?</p>
<p>Phonon&#8217;s speaker icon was a dead giveaway. Instant success.</p>
<p><strong>Task:</strong> When you double-click on a window&#8217;s titlebar, you can have it either &#8217;shade&#8217; up into a little bar, or maximize the window. Change this.</p>
<p>She saw the text &#8216;Window Behavior&#8217; and leapt for it. Again was &#8216;window behavior&#8217;, followed by &#8216;titlebar actions&#8217;.</p>
<p><strong>Task:</strong> Change the keyboard shortcuts.</p>
<p>At first, she went for the Input Actions tile, explaining that it simply made sense for input to generate actions, and that the icon was a keyboard. Going back, she went for Keyboard &#038; Mouse and found it.</p>
<p><strong>Task:</strong> Configure your mouse gestures.</p>
<p>She was in disbelief that KDE had mouse gestures, but forged on anyways. She remembered which icon it was (Input Actions) and commented that it *really* should be called &#8216;Mouse Gestures&#8217; and be put in with Keyboard &#038; Mouse.</p>
<p><strong>Task:</strong> Change the sounds Konversation plays when someone mentions your name.</p>
<p>She &#8220;wasn&#8217;t aware that the OS could let you do that through systemsettings&#8221;, and first insisted that she open up konversation. I changed the task to &#8216;make the windows make sounds when they minimize&#8217;, since that seemed a bit less tied to any one application. She went to the Notifications icon, clicked the dropdown and stared at it. Not seeing &#8216;window&#8217; and not noticing the scrollbar, she closed it and assumed there was some other place, like maybe window behavior. I asked her about her choices here and she mentioned that the tiny dropdown was a real bad choice because the list was far too huge for the box. My suggestion here is that we change the tiny dropdown to a much bigger list view and add a search box.</p>
<p>That was the end of the list of tasks I had planned, so we moved on to looking at all the icons under the &#8220;Advanced&#8221; tab. I feel that there are some icons in there that simply don&#8217;t belong.</p>
<p>The first icon we looked at was the Login Manager one for KDM. She was confused by the word &#8216;login&#8217;, thinking that it meant you would configure your account from there. There really wasn&#8217;t a clear distinction between Login Manager and User manager, even considering the icons.</p>
<p>Next, we looked at the service manager entry. She thought it would be related to the services you&#8217;d find in /etc/init.d. Since it was under &#8216;advanced&#8217;, the term implied that they were related to the system and not the desktop. This gave me an interesting idea, that the various system services, like opencollaboration, desktop search, akonadi, solid, KDED services, and the session manager should all be combined into one &#8216;Desktop Services&#8217; icon group.</p>
<p>Task Scheduler (crontab) was next. It was easy to identify what would be configured, but when asked about the icon she thought that the wrench and screwdriver had zero relation to the &#8216;time&#8217; and &#8216;task&#8217; aspects of scheduling a task. I asked for her idea of what a good icon would be, but she was clueless. Another CS student in the lab overheard me asking and drew a quick doodle of a stopwatch in front of a checklist.</p>
<p>After going through these icons (the rest were fine), I opened up the version I had modified as part of the reviewboard request. It was a slight improvement she said, but lots more needed to be done. However, she mentioned some other interesting ideas that don&#8217;t seem to be in Dario and Ben&#8217;s proposal:</p>
<ul>
<li>If Display is moved to hardware, the screensaver would be expected to be in appearance, since the display is hardware.</li>
<li>Merge the two CD icons (the CDDB retrieval and cdaudio kioslave) into one group</li>
<li>Desktop Theme Details should really be a button or sub-menu below the Workspace KCM that actually configures the desktop theme.</li>
<li>In The KDE Wallet page, she expected that she&#8217;d be able to manage her password list <em>in addition to</em> what it does now &#8211; configure when it gets closed and opened.</li>
<li>Default Applications, Device Actions, and File Associations seem to be the same topic and should be grouped somehow</li>
<li>The Autostart icon &#8220;Gear+Play button&#8221; clearly means &#8220;configure something that runs&#8221;</li>
</ul>
<p>I&#8217;d like to post my thoughts based on my friend&#8217;s input, but it is approximately 00:30 AM here with a 9 AM class and a super-busy Wednesday. I&#8217;ll save that for later today.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/wm161net?a=5H1_K6Xw_90:Lezexuygh3g:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/wm161net?i=5H1_K6Xw_90:Lezexuygh3g:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/wm161net?a=5H1_K6Xw_90:Lezexuygh3g:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/wm161net?d=yIl2AUoC8zA" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://wm161.net/2010/03/31/systemsettings-reorganization-part-ii/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item><item>
		<title>OpenCraft 0.3b</title>
		<link>http://wm161.net/2010/05/14/opencraft-0-3b/</link>
		<comments>http://wm161.net/2010/05/14/opencraft-0-3b/#comments</comments>
		<pubDate>Fri, 14 May 2010 06:36:38 +0000</pubDate>
		<dc:creator>Trever Fischer</dc:creator>
				<category><![CDATA[Opencraft]]></category>

		<guid isPermaLink="false">http://wm161.net/?p=542</guid>
		<description><![CDATA[About a month ago, my local ACM Chapter got introduced to the game Minecraft. It spread like wildfire, and we quickly set up our own server within the CS department&#8217;s internal network. The server and the game are both closed-source, which nobody really liked. We found an alternate server by the name of MCSharp, which [...]]]></description>
			<content:encoded><![CDATA[<p>About a month ago, my local <a href="http://acm.cs.uakron.edu/">ACM Chapter</a> got introduced to the game <a href="http://minecraft.net">Minecraft</a>. It spread like wildfire, and we quickly set up our own server within the CS department&#8217;s internal network. The server and the game are both closed-source, which nobody really liked. We found an alternate server by the name of MCSharp, which had a ton more features than the official server, so we switched to that. But then we found <a href="http://opencraft.sf.net/">OpenCraft</a>, the FLOSS Minecraft server.</p>
<p>We immediately began hacking on it, improving it, adding new features, and more. We forked the source and put it up <a href="http://gitorious.com/opencraft-acm">on gitorious as opencraft-acm</a>. Today, we&#8217;re almost ready for a full 0.3 release, and there&#8217;s a ton of new features:</p>
<p>The full list of features and bugfixes is included with the release changelog, but here&#8217;s a quick rundown of the big ones for those with little time:</p>
<ul>
<li>Support for the flist alternate heartbeat server</li>
<li>Level generation</li>
<li>Automatic periodic level backups</li>
<li>Permission lists</li>
<li>Support for reading the MCSharp level format</li>
<li>Support for reading the BIN serialized level format from the official client/server</li>
<li>Various new commands</li>
</ul>
<p>The only problem however, is that this is still just a fork. The original maintainer, Graham Edgecomb, seems to be unreponsive. We&#8217;ve tried on several occasions to get in touch, and one of the original developers, Brett Russell, came into our IRC channel on slashnet and offered to help us get in touch.</p>
<p>No dice.</p>
<p>So we <a href="https://sourceforge.net/apps/trac/sourceforge/ticket/10992">filed an abandoned project takeover</a> with sourceforge. In 3 months, if Graham doesn&#8217;t get back to us, we&#8217;ll be in charge of the project. For now though, you can find the releases on my site here, under <a href="/labs/opencraft">Opencraft</a> in the lab.</p>
<p>So <a href="/labs/opencraft#download">head on over</a> and download the 0.3 beta. We&#8217;ll release 0.3 fo&#8217; real once we&#8217;ve found all the bugs.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/wm161net?a=yYbYc6hcZZY:wZL4ucKzuX4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/wm161net?i=yYbYc6hcZZY:wZL4ucKzuX4:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/wm161net?a=yYbYc6hcZZY:wZL4ucKzuX4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/wm161net?d=yIl2AUoC8zA" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://wm161.net/2010/05/14/opencraft-0-3b/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item><item>
		<title>Minecraft in 2D</title>
		<link>http://wm161.net/2010/07/05/minecraft-in-2d/</link>
		<comments>http://wm161.net/2010/07/05/minecraft-in-2d/#comments</comments>
		<pubDate>Mon, 05 Jul 2010 15:22:04 +0000</pubDate>
		<dc:creator>Trever Fischer</dc:creator>
				<category><![CDATA[Opencraft]]></category>

		<guid isPermaLink="false">http://wm161.net/?p=554</guid>
		<description><![CDATA[
Yes, thats Minecraft. And it looks like Dwarf Fortress.
Sidein came over yesterday for our 4th of july cookout and demonstrated the next big thing for OpenCraft.
Eventually, once he cleans up the code, he&#8217;ll put it up on Gitorious.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://wm161.net/blog/wp-content/uploads/2010/07/2010-07-04-17.43.41.jpg"><img src="http://wm161.net/blog/wp-content/uploads/2010/07/2010-07-04-17.43.41-300x225.jpg" alt="" title="Minecraft2D with DwarfFortress theme" width="300" height="225" class="alignnone size-medium wp-image-553" /></a></p>
<p>Yes, thats Minecraft. And it looks like Dwarf Fortress.</p>
<p><a href="http://usiah.com">Sidein</a> came over yesterday for our 4th of july cookout and demonstrated the next big thing for <a href="http://opencraft.sf.net/">OpenCraft</a>.</p>
<p>Eventually, once he cleans up the code, he&#8217;ll put it up on Gitorious.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/wm161net?a=gzulXl4G85M:54P0nnrafDo:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/wm161net?i=gzulXl4G85M:54P0nnrafDo:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/wm161net?a=gzulXl4G85M:54P0nnrafDo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/wm161net?d=yIl2AUoC8zA" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://wm161.net/2010/07/05/minecraft-in-2d/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item><item>
		<title>Live: From Phonon!</title>
		<link>http://wm161.net/2010/07/13/live-from-phonon/</link>
		<comments>http://wm161.net/2010/07/13/live-from-phonon/#comments</comments>
		<pubDate>Tue, 13 Jul 2010 06:04:08 +0000</pubDate>
		<dc:creator>Trever Fischer</dc:creator>
				<category><![CDATA[Fedora]]></category>
		<category><![CDATA[KDE]]></category>

		<guid isPermaLink="false">http://wm161.net/?p=558</guid>
		<description><![CDATA[Hey, remember me? Yeah, I was supposed to get webcams into Phonon. What was that, months ago? As everyone knows, life gets in the way at times. But the last week or so, things have settled down. In the last three days, I sat down and re-learned everything I forgot about phonon. Then I learned [...]]]></description>
			<content:encoded><![CDATA[<p>Hey, remember me? Yeah, I was supposed to get webcams into Phonon. What was that, months ago? As everyone knows, life gets in the way at times. But the last week or so, things have settled down. In the last three days, I sat down and re-learned everything I forgot about phonon. Then I learned a little bit about gstreamer.</p>
<p>So, cue the drumroll.</p>
<p><strong>Ladies and gentlemen.</strong></p>
<p>I present to you, for your viewing pleasure, the first screenshot of a webcam being used with phonon:</p>
<p><a href="http://wm161.net/blog/wp-content/uploads/2010/07/snapshot5.png"><img src="http://wm161.net/blog/wp-content/uploads/2010/07/snapshot5-300x234.png" alt="" title="snapshot5" width="300" height="234" class="alignnone size-medium wp-image-559" /></a></p>
<p><em>ta da!</em></p>
<p>That would be Melanie, my girlfriend-turned-test-subject.</p>
<p>Its not much, but thats because it is only 14 lines of code.</p>
<p>Here&#8217;s the code, in as few lines as needed:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">Phonon::<span class="me2">Experimental</span>::<span class="me2">CaptureDevice</span> *dev = new Phonon::<span class="me2">Experimental</span>::<span class="me2">CaptureDevice</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">mediaObject-&gt;setCurrentSource<span class="br0">&#40;</span>dev<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">mediaObject-&gt;play<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p>The other lines not there create a mainwindow, a video widget, etc.</p>
<p>The code in phonon though, is a little ugly. It&#8217;ll need cleaned up slightly before I can push out a commit to the git repo. Its also 2 AM, so I&#8217;ll post more details about how I&#8217;m planning on designing the system tomorrow.</p>
<p>Of course, I could be entirely dancing all over someone else&#8217;s toes. I had to drop out of the loop for a good while, but from what I understand, nobody has attempted tackling this since I last tried. Ping me if I&#8217;m wrong :).</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/wm161net?a=pEBsd_5Qoxk:Flm3RTehbEU:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/wm161net?i=pEBsd_5Qoxk:Flm3RTehbEU:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/wm161net?a=pEBsd_5Qoxk:Flm3RTehbEU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/wm161net?d=yIl2AUoC8zA" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://wm161.net/2010/07/13/live-from-phonon/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item><item>
		<title>In which our hero discovers his work already done</title>
		<link>http://wm161.net/2010/07/14/in-which-our-hero-discovers-his-work-already-done/</link>
		<comments>http://wm161.net/2010/07/14/in-which-our-hero-discovers-his-work-already-done/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 06:49:09 +0000</pubDate>
		<dc:creator>Trever Fischer</dc:creator>
				<category><![CDATA[Fedora]]></category>
		<category><![CDATA[KDE]]></category>

		<guid isPermaLink="false">http://wm161.net/?p=564</guid>
		<description><![CDATA[Phonon already has video capture support. But nobody thought to tell kde-multimedia@lists.kde.org, #phonon, or the planet(s). I&#8217;m also slightly miffed that I wrote a proposal for the same exact thing and never got considered.
So karma decided to deliver my big box of homemade DDR machine fun from Newegg 2 days earlier. Such is life.
Compared to [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://gitorious.org/phonon/phonon/merge_requests/14">Phonon already has video capture support</a>. But nobody thought to tell kde-multimedia@lists.kde.org, #phonon, or the planet(s). I&#8217;m also slightly miffed that I wrote a proposal for the same exact thing and never got considered.</p>
<p>So karma decided to deliver my big box of homemade DDR machine fun from Newegg 2 days earlier. Such is life.</p>
<p>Compared to that merge request, my changes were miniscule, but I feel that I should still explain what I did, what I had planned, and how Casian&#8217;s changes fall (more or less) right in line. Hopefully my input will help.</p>
<p>The nucleus of my design was the CaptureDevice. I planned on adding a constructor to the MediaSource that would take this newly invented CaptureDevice class. CaptureDevices would be abstract devices and could represent any well-defined hardware-based source of media. Here&#8217;s what I wrote:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">class PHONONEXPERIMENTAL_EXPORT CaptureDevice</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; public:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">enum</span> Type <span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Invalid = <span class="nu0">-1</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Camera,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Tuner,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Desktop,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Microphone,</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//LineIn,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Unknown</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; CaptureDevice<span class="br0">&#40;</span><span class="br0">&#41;</span>; <span class="co1">//Default capture device</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; CaptureDevice<span class="br0">&#40;</span>Type type<span class="br0">&#41;</span>; <span class="co1">//Default device for type</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; CaptureDevice<span class="br0">&#40;</span>Type type, <span class="kw4">const</span> QString &amp;deviceName<span class="br0">&#41;</span>; <span class="co1">//Explicit device path</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; QString deviceName<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="kw4">const</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; Type type<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="kw4">const</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; protected:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; explicit CaptureDevice<span class="br0">&#40;</span>CaptureDevicePrivate &amp;dd<span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; QExplicitlySharedDataPointer&lt;CaptureDevicePrivate&gt; d;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span>;</div>
</li>
</ol>
</div>
<p>I wanted it to be super simple so anyone could just shout, &#8220;I need a webcam&#8221;, and *bam* you&#8217;d get the default webcam instead of the tuner card. Or even better, just ask for any kind of capture device and in 99.99% of user environments, you&#8217;d get something with an audio stream. The 0.01% is to account for users without any kind of sound card or sound capturing device. You&#8217;ll also note the special &#8220;Desktop&#8221; type for capturing your desktop. I think its safe to say that pretty much all platforms implement this in their media layer.</p>
<p>In addition, you could pass in some string that the platform could understand (eg. &#8220;/dev/video0&#8243; or &#8220;plughw:0&#8243;). That way, you could grab a Device from Solid and pass that around.</p>
<p>Looking at his code, all that is already there. So the only real difference between my planned design and Casian&#8217;s was that there wouldn&#8217;t be a distinction between audio and video capture unless you absolutely needed it (such as for changing TV channels), which is what type() is for. The way I thought about it was that with a simple CaptureDevice to cover both cases, there&#8217;d only be one place to go for all your capture needs. In retrospect, splitting it up this way is a much better idea. It keeps us from trying to squash the unrelated functions of TV tuning and microphone boosting into one class.</p>
<p>Besides that one detail, his implementation is almost verbatim. I look forward to when the merge request gets accepted so I can jump in and get the gstreamer and xine engines to work with it. The code I wrote for my CaptureDevice is literally one line of original code: <kbd>gst_element_factory_make("v4l2src", "v4l2src");</kbd>.</p>
<p>So congratulations and many thanks to Casian for doing what I was supposed to be doing for a while :P. Please direct your thanks to him instead of the comments.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/wm161net?a=UIJQKVKOc1o:SIKJLuqlowY:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/wm161net?i=UIJQKVKOc1o:SIKJLuqlowY:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/wm161net?a=UIJQKVKOc1o:SIKJLuqlowY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/wm161net?d=yIl2AUoC8zA" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://wm161.net/2010/07/14/in-which-our-hero-discovers-his-work-already-done/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item><item>
		<title>Webcams in Phonon: The GStreamer Edition</title>
		<link>http://wm161.net/2010/07/26/webcams-in-phonon-the-gstreamer-edition/</link>
		<comments>http://wm161.net/2010/07/26/webcams-in-phonon-the-gstreamer-edition/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 06:49:02 +0000</pubDate>
		<dc:creator>Trever Fischer</dc:creator>
				<category><![CDATA[Fedora]]></category>
		<category><![CDATA[KDE]]></category>

		<guid isPermaLink="false">http://wm161.net/?p=574</guid>
		<description><![CDATA[
Hey, look, its a working webcam in Phonon. Again. My significant other is away for the week being a camp counsellor, so instead here is a picture of us drawn by an artist we met at Ohayocon earlier this year in Columbus, OH. I appear to be playing Cave Story, and she&#8217;s wearing her MOMO [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://wm161.net/blog/wp-content/uploads/2010/07/snapshot6.png"><img src="http://wm161.net/blog/wp-content/uploads/2010/07/snapshot6-300x234.png" alt="" title="snapshot6" width="300" height="234" class="alignnone size-medium wp-image-575" /></a></p>
<p>Hey, look, its a working webcam in Phonon. Again. My significant other is away for the week being a camp counsellor, so instead here is a picture of us drawn by an artist we met at Ohayocon earlier this year in Columbus, OH. I appear to be playing Cave Story, and she&#8217;s wearing her <a href="http://xenosaga.wikia.com/wiki/MOMO">MOMO</a> costume.</p>
<p>The first picture was much more exciting, I think. But this one still has potential. It was created using the GSOC project I <a href="http://wm161.net/2010/07/14/in-which-our-hero-discovers-his-work-already-done/">previously discovered</a>. The code is actually one line shorter:</p>
<p><code lang="c++">QList<Phonon::VideoCaptureDevice> devices = Phonon::BackendCapabilities::availableVideoCaptureDevices();<br />
mediaObject->setCurrentSource(devices[0]);</code></p>
<p>Assuming that no super huge changes happen with the API, I plan to work on the Xine backend once I finish implementing the bits I left out from my code, such as device removal notification and proper device icons. My code is up for ridicule at <a href="http://gitorious.org/~tdfischer/phonon/phonon-webcams/commits/webcam">Gitorious, under my personal repository</a>. Make sure you check out the &#8216;webcam&#8217; branch.</p>
<p>Before I go, a certain &#8220;Steve Schilz&#8221; has contacted me with an interest in writing support for the new capture API into the DirectShow backend. I gave him some pointers on where to start, so all those still using Windows can rejoice.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/wm161net?a=oIK-ir0yryc:L6FWmAgmsqI:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/wm161net?i=oIK-ir0yryc:L6FWmAgmsqI:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/wm161net?a=oIK-ir0yryc:L6FWmAgmsqI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/wm161net?d=yIl2AUoC8zA" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://wm161.net/2010/07/26/webcams-in-phonon-the-gstreamer-edition/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item><item>
		<title>The stage is set for domination</title>
		<link>http://wm161.net/2010/07/28/the-stage-is-set-for-domination/</link>
		<comments>http://wm161.net/2010/07/28/the-stage-is-set-for-domination/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 14:08:48 +0000</pubDate>
		<dc:creator>Trever Fischer</dc:creator>
				<category><![CDATA[Fedora]]></category>
		<category><![CDATA[KDE]]></category>

		<guid isPermaLink="false">http://wm161.net/?p=579</guid>
		<description><![CDATA[
And that, my friends, is the last bit needed to get webcams into KDE. This morning around 3 AM or so I finished implementing the VideoDataOutput class in the gstreamer backend. It allows a phonon user to capture frames from a gstreamer stream. That picture was captured with the following code:



&#160;


Widget::Widget&#40;QWidget *parent&#41;


&#123;


&#160; &#160; ui.setupUi&#40;this&#41;;


&#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://wm161.net/blog/wp-content/uploads/2010/07/snap.png"><img src="http://wm161.net/blog/wp-content/uploads/2010/07/snap-300x225.png" alt="" title="snap" width="300" height="225" class="alignnone size-medium wp-image-578" /></a></p>
<p>And that, my friends, is the last bit needed to get webcams into KDE. This morning around 3 AM or so I finished implementing the VideoDataOutput class in the gstreamer backend. It allows a phonon user to capture frames from a gstreamer stream. That picture was captured with the following code:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">Widget::<span class="me2">Widget</span><span class="br0">&#40;</span>QWidget *parent<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; ui.<span class="me1">setupUi</span><span class="br0">&#40;</span>this<span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; Phonon::<span class="me2">MediaObject</span> *mo = new Phonon::<span class="me2">MediaObject</span><span class="br0">&#40;</span>this<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; Phonon::<span class="me2">createPath</span><span class="br0">&#40;</span>mo, ui.<span class="me1">video</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; Phonon::<span class="me2">Experimental</span>::<span class="me2">VideoDataOutput2</span> *capture = new Phonon::<span class="me2">Experimental</span>::<span class="me2">VideoDataOutput2</span><span class="br0">&#40;</span>this<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; Phonon::<span class="me2">createPath</span><span class="br0">&#40;</span>mo, capture<span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; connect<span class="br0">&#40;</span>capture, SIGNAL<span class="br0">&#40;</span>frameReadySignal<span class="br0">&#40;</span><span class="kw4">const</span> VideoFrame2&amp;<span class="br0">&#41;</span><span class="br0">&#41;</span>, this, SLOT<span class="br0">&#40;</span>frameReady<span class="br0">&#40;</span><span class="kw4">const</span> VideoFrame2&amp;<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; QList&lt;Phonon::<span class="me2">VideoCaptureDevice</span>&gt; devices = Phonon::<span class="me2">BackendCapabilities</span>::<span class="me2">availableVideoCaptureDevices</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; mo-&gt;setCurrentSource<span class="br0">&#40;</span>devices<span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; mo-&gt;play<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; connect<span class="br0">&#40;</span>ui.<span class="me1">takeSnapshotButton</span>, SIGNAL<span class="br0">&#40;</span>clicked<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>, this, SLOT<span class="br0">&#40;</span>takePicture<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">Widget::<span class="me2">frameReady</span><span class="br0">&#40;</span><span class="kw4">const</span> Phonon::<span class="me2">Experimental</span>::<span class="me2">VideoFrame2</span> &amp;frame<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; qDebug<span class="br0">&#40;</span><span class="br0">&#41;</span> &lt;&lt; <span class="st0">&quot;Got a frame.&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; m_buffer = frame;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">Widget::<span class="me2">takePicture</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; qDebug<span class="br0">&#40;</span><span class="br0">&#41;</span> &lt;&lt; <span class="st0">&quot;Snap!&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; QImage image = m_buffer.<span class="me1">qImage</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; image.<span class="me1">save</span><span class="br0">&#40;</span><span class="st0">&quot;/tmp/snap.png&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
</ol>
</div>
<p>Once I test it against some code that doesn&#8217;t use video capture, it&#8217;ll be golden.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/wm161net?a=lcImvXqN4Ss:kpYzJmCoZP8:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/wm161net?i=lcImvXqN4Ss:kpYzJmCoZP8:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/wm161net?a=lcImvXqN4Ss:kpYzJmCoZP8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/wm161net?d=yIl2AUoC8zA" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://wm161.net/2010/07/28/the-stage-is-set-for-domination/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item><item>
		<title>Qt in College</title>
		<link>http://wm161.net/2010/08/25/qt-in-college/</link>
		<comments>http://wm161.net/2010/08/25/qt-in-college/#comments</comments>
		<pubDate>Wed, 25 Aug 2010 15:49:02 +0000</pubDate>
		<dc:creator>Trever Fischer</dc:creator>
				<category><![CDATA[KDE]]></category>

		<guid isPermaLink="false">http://wm161.net/?p=582</guid>
		<description><![CDATA[Some might know I go to the University of Akron in Akron, Ohio. Its probably just me but it seems that the northeast part of ohio is a very Microsoft-favored region as far as software developers go.
However: My favorite professor, Dr. Collard, is teaching the &#8220;Introduction to Object Oriented Programming&#8221; (which should really be called [...]]]></description>
			<content:encoded><![CDATA[<p>Some might know I go to the <a href="http://www.uakron.edu">University of Akron</a> in Akron, Ohio. Its probably just me but it seems that the northeast part of ohio is a very Microsoft-favored region as far as software developers go.</p>
<p>However: <a href="http://cs.uakron.edu/~collard/">My favorite professor, Dr. Collard</a>, is teaching the &#8220;Introduction to Object Oriented Programming&#8221; (which should really be called Object Oriented Design and Analysis). I understand that sounds rather boring but the super cool part is the book and framework we&#8217;re using:</p>
<p><img src="http://imgur.com/1CHyj.png" alt="" title="Hosted by imgur.com" /></p>
<p>The full source of the book (which itself is open source) is available at <a href="http://cartan.cas.suffolk.edu/oopdocbook/">http://cartan.cas.suffolk.edu/oopdocbook/</a>.</p>
<p>Dr. Collard is pretty excited about it. He emailed the author to acquire the teaching materials, which led to us being a &#8216;beta test&#8217; class that gets to try out the next pre-release version of the book, as soon as he gets the copy emailed to him.</p>
<p>Not sure if its a good thing or not, but he refuses to use the proper pronunciation of &#8216;cute&#8217; &#8220;even if you write for KDE&#8221; because he refuses to call such a good framework &#8216;cute&#8217;.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/wm161net?a=jke70aYfiwY:EYcPGQC5qJw:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/wm161net?i=jke70aYfiwY:EYcPGQC5qJw:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/wm161net?a=jke70aYfiwY:EYcPGQC5qJw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/wm161net?d=yIl2AUoC8zA" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://wm161.net/2010/08/25/qt-in-college/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item></channel>
</rss>
