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

<channel>
	<title>From the Ground Up</title>
	<atom:link href="http://blog.mediabymrb.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.mediabymrb.com</link>
	<description>Chronicling the Life of Marc Budofsky</description>
	<lastBuildDate>Tue, 15 May 2012 19:53:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Long Time, No Post</title>
		<link>http://blog.mediabymrb.com/2012/05/long-time-no-post/</link>
		<comments>http://blog.mediabymrb.com/2012/05/long-time-no-post/#comments</comments>
		<pubDate>Tue, 15 May 2012 19:53:18 +0000</pubDate>
		<dc:creator>Marc Budofsky</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://blog.mediabymrb.com/?p=1170</guid>
		<description><![CDATA[It&#8217;s been almost 2 months since my last post, so a quick update is in order. Now that the semester is finally winding down and classes are done, I&#8217;ll be able to do some write-ups on the final touches that have been made to my server and the other projects that I&#8217;ve been working on [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been almost 2 months since my last post, so a quick update is in order.  Now that the semester is finally winding down and classes are done, I&#8217;ll be able to do some write-ups on the final touches that have been made to my server and the other projects that I&#8217;ve been working on lately.  With regards to the server, its been running nicely with my 8 TB of hard drive space and 8 GB of RAM, but still needs to be tweaked on the software side &#8211; specifically it needs MySQL to be functional as a developmental web server.  I was able to get VirtualBox running on it, so its a nice trade off for the time being.  I&#8217;ve also been putting the final touches on <a href='http://thetechupload.com'>The Tech Upload</a>, so check that out in the next few days for some tech blogging.  A new e-commerce site might be in the works as well, so stay tuned for some posts about that.</p>
<p>I&#8217;ll sit down in the next couple of weeks and make some real posts, but just wanted to get back into the blogosphere after such a long absence.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mediabymrb.com/2012/05/long-time-no-post/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HP N40L Home Server: The Build</title>
		<link>http://blog.mediabymrb.com/2012/03/hp-n40l-home-server-the-build/</link>
		<comments>http://blog.mediabymrb.com/2012/03/hp-n40l-home-server-the-build/#comments</comments>
		<pubDate>Sun, 18 Mar 2012 19:22:18 +0000</pubDate>
		<dc:creator>Marc Budofsky</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://blog.mediabymrb.com/?p=1163</guid>
		<description><![CDATA[When I originally bought the HP N40L, I had thought the software would be a quick drag and drop type thing, and the actual build would take more time. Unfortunately, configuring a server takes a lot more time that I had originally assumed, so I&#8217;m going to outline &#8216;The Build&#8217; in this post, and save [...]]]></description>
			<content:encoded><![CDATA[<p>When I originally bought the <a href='http://blog.mediabymrb.com/2012/02/hp-n40l-home-server/'>HP N40L</a>, I had thought the software would be a quick drag and drop type thing, and the actual build would take more time.  Unfortunately, configuring a server takes a lot more time that I had originally assumed, so I&#8217;m going to outline &#8216;The Build&#8217; in this post, and save &#8216;The Setup&#8217; for a later one.  The build is pretty simple &#8211; the server comes with 4 slot loading hard drive bays, so all you really need to do is procure the 4 hard drives that will be in the server.  Unfortunately, with hard drive prices as high as they are right now, getting the drives took me about 2 weeks to finally decide which model to go with, and to work a little bit to actually be able to afford them.  I placed an order on Newegg this past Thursday for 4 <a href='http://www.newegg.com/Product/Product.aspx?Item=N82E16822148681'>Seagate Barracuda Green ST2000DL003</a> 2TB hard drives.  Being the green series, they spin at 5900 RPM, but offer a 64 MB cache and SATA III connectivity.  While I highly doubt my server will ever approach the SATA III 6 Gb/s bandwidth limit, its nice to know there&#8217;s some wiggle room built into the system &#8211; right now, the largest bottleneck is network speed and my 10/100 Mbps router.  I had originally planned on upgrading the RAM to 8 GB at the same time I got the hard drives, but I honestly forgot to add it to my shopping cart before checking out; given that the HDDs almost ran a $500 bill, its probably best to hold off on the RAM for the time being anyway.</p>
<p>So onto the actual install of the hard drives.  I received the box from Newegg the beginning of last week.  I&#8217;m assuming Newegg receives their drives in styrofoam packing with 8 drives per set, as my box contained the styrofoam with 4 drives in it.  Unfortunately, I forgot that OEM drives do not come with mounting hardware, so a trip to <a href='http://unicornelex.com/'>Unicorn Electronics</a> was necessary to get the mounting screws.  After I had all of the parts, installing the drives was a matter of removing the slot loading trays and securing each drive.  After that, I simply had to reload the trays and the drives were good to go.  I&#8217;ll get into the software more in the next post, but I&#8217;ll touch on the formatting of the drives quickly now.  After the drives were installed and I booted the system up, I formatted each drive and created a software based RAID1 configuration using GEOM Mirror, which is part of FreeNAS by default.  Because RAID1 only allows 2 drives to be used at a time, at least for the software based instance I&#8217;m using, I set up 2 RAID1 configurations, one for Data and the other for Backups.  The drives are shared on the network via SMB and AFP shares, based on what I plan on using them for.</p>
<p>So, like I said at the beginning of the post, the hardware was a quick and easy process.  Since I&#8217;ve got the drives installed, I&#8217;ve been playing with getting the software tweaked properly for the past 2 weeks almost.  Once it&#8217;s all working properly, I&#8217;ll outline how everything is set up in the next post.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mediabymrb.com/2012/03/hp-n40l-home-server-the-build/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>UpDown UpDown Sorting</title>
		<link>http://blog.mediabymrb.com/2012/03/updown-updown-sorting/</link>
		<comments>http://blog.mediabymrb.com/2012/03/updown-updown-sorting/#comments</comments>
		<pubDate>Fri, 09 Mar 2012 03:31:48 +0000</pubDate>
		<dc:creator>Marc Budofsky</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://blog.mediabymrb.com/?p=1147</guid>
		<description><![CDATA[Over the past few months, I&#8217;ve been working on the new website for The Tech Upload. They launched Phase I about a month ago, and I&#8217;ve been trying to finish up Phase II for them. Part of Phase II includes a reddit-like user posting section, with the ability for visitors to vote posts up/down based [...]]]></description>
			<content:encoded><![CDATA[<p>Over the past few months, I&#8217;ve been working on the new website for <a href="http://www.thetechupload.com">The Tech Upload</a>. They launched Phase I about a month ago, and I&#8217;ve been trying to finish up Phase II for them. Part of Phase II includes a <a href="http://www.reddit.com/">reddit</a>-like user posting section, with the ability for visitors to vote posts up/down based on how useful/informative it is. Since the site is run by <a href="http://wordpress.org/">WordPress</a> on the backend, I decided to use some plugins rather than write the functionality from scratch. After some searching, I decided to use the <a href="http://wordpress.org/extend/plugins/updownupdown-postcomment-voting/">UpDown UpDown</a> plugin to provide the voting functionality, and the <a href="http://wordpress.org/extend/plugins/post-from-site/">Post from Site</a> plugin to keep users out of the backend. Once I had UpDown UpDown working properly on the site, I realized that it didn&#8217;t provide any way to sort the posts by votes. I googled around a little bit to find the proper WordPress function to allow a custom query, and came up with <code>$wpdb->get_results()</code>. The query would need to return the published posts for a specific category, ordered by the total number of votes the post has received. With the post being stored in one table, the category information in another, and the votes in a third, it took several attempts to craft the appropriate query.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1147code2'); return false;">View Code</a> SQL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p11472"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td><td class="code" id="p1147code2"><pre class="sql" style="font-family:monospace;">$query <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">&quot;
	SELECT p.*, IFNULL((votes.vote_count_up - votes.vote_count_down),0) as PostVote
	FROM $wpdb-&gt;posts as p
	LEFT JOIN `wp_up_down_post_vote_totals` as votes
		ON p.ID = votes.post_id
	WHERE p.ID IN (SELECT tr.`object_id`
		FROM $wpdb-&gt;term_relationships as tr
		WHERE tr.`term_taxonomy_id` = '##')
		AND p.post_status = 'publish' 
		AND p.post_type = 'post'
	ORDER BY PostVote DESC
&quot;</span>;
$posts <span style="color: #66cc66;">=</span> $wpdb<span style="color: #66cc66;">-&gt;</span>get_results<span style="color: #66cc66;">&#40;</span>$query<span style="color: #66cc66;">,</span> OBJECT<span style="color: #66cc66;">&#41;</span>;</pre></td></tr></table></div>

<p><strong>Line 1:</strong><br />
p is aliased as the <code>posts</code> table &#8211; all of the post information is returned from here.  PostVote is the total of up and down votes for each post from the <code>wp_up_down_post_vote_totals</code>, aliased as votes.  <code>IFNULL()</code> is used in the event that a post has no vote data stored in the table, and avoids having a NULL result returned.  This is also necessary for ordering the results.</p>
<p><strong>Line 2:</strong><br />
Set up the alias and determine which table is being queried.</p>
<p><strong>Line 3-4:</strong><br />
In order to not lose any posts that don&#8217;t have any vote information, a <code>LEFT JOIN</code> is used to select all of the posts.  This line allows the vote totals to be returned properly.</p>
<p><strong>Line 6-8:</strong><br />
Since only one category needs to be queried, this line makes sure that all of the posts are part of the appropriate category.  <code>IN</code> is used as an array of Object-ID&#8217;s are returned containing all of the posts in the selected category.  Replace &#8216;##&#8221; with the <strong>taxonomy_id</strong>, not the category ID, of the appropriate category.</p>
<p><strong>Line 9-10:</strong><br />
The last part of the <code>WHERE</code> clause is to ensure that the posts returned are of the &#8216;post&#8217; type and have been published already.</p>
<p><strong>Line 11:</strong><br />
Finally, the posts are ordered by the PostVote, to ensure that the highest voted posts are at the top.</p>
<p>I hope this is helpful to anyone who was in the same position as me.  Any questions, leave a comment below.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mediabymrb.com/2012/03/updown-updown-sorting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HP N40L Home Server</title>
		<link>http://blog.mediabymrb.com/2012/02/hp-n40l-home-server/</link>
		<comments>http://blog.mediabymrb.com/2012/02/hp-n40l-home-server/#comments</comments>
		<pubDate>Thu, 23 Feb 2012 23:26:18 +0000</pubDate>
		<dc:creator>Marc Budofsky</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://blog.mediabymrb.com/?p=1144</guid>
		<description><![CDATA[For the past 2 months I&#8217;ve been debating getting a small server that I could use for wireless Time Machine backups and to store media &#8211; in essence, a customizable NAS drive. Today I was checking for the parts that I would need to get, and came across a great deal on the HP Proliant [...]]]></description>
			<content:encoded><![CDATA[<p>For the past 2 months I&#8217;ve been debating getting a small server that I could use for wireless Time Machine backups and to store media &#8211; in essence, a customizable NAS drive.  Today I was checking for the parts that I would need to get, and came across a great deal on the HP Proliant N40L.  This was the chassis I was planning on getting, so I decided to finally buy it and get the server underway.  Stock, it comes with a 1.5 GHz AMD Athlon II Neo, 2 GB of DDR3 RAM and a 250 GB hard drive.  I&#8217;ll eventually add 4 x 2 TB drives in a RAID 1 configuration, and 8 GB of RAM, once prices come down a little bit.  All of it will be run by FreeNAS, which is an open-source FreeBSD based OS that will provide all of the functionality I could ask for, and probably a little more.  Stay tuned for the build and setup in the next couple of weeks.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mediabymrb.com/2012/02/hp-n40l-home-server/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Geektool, v2</title>
		<link>http://blog.mediabymrb.com/2012/01/geektool-v2/</link>
		<comments>http://blog.mediabymrb.com/2012/01/geektool-v2/#comments</comments>
		<pubDate>Sat, 21 Jan 2012 17:10:28 +0000</pubDate>
		<dc:creator>Marc Budofsky</dc:creator>
				<category><![CDATA[GeekTool]]></category>
		<category><![CDATA[OS X]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://blog.mediabymrb.com/?p=1118</guid>
		<description><![CDATA[I was just looking through the analytics and stats for my blog, and realized that almost 1 year later, my Geektool post is generating the most traffic to my site. Given that I recently got a new computer and began using some new geeklets, I figured an update was in order. I&#8217;ll try my best [...]]]></description>
			<content:encoded><![CDATA[<p>I was just looking through the analytics and stats for my blog, and realized that almost 1 year later, my <a href='http://blog.mediabymrb.com/2011/01/mac-os-x-only-geektool/'>Geektool post</a> is generating the most traffic to my site.  Given that I recently got a <a href='http://blog.mediabymrb.com/2012/01/late-2011-mbp/'>new computer</a> and began using some new geeklets, I figured an update was in order.  I&#8217;ll try my best to follow the same format that I used last time &#8211; for geeklets that remain unchanged from my old computer to my new one, I will not be reposting the code; please head over to the <a href='http://blog.mediabymrb.com/2011/01/mac-os-x-only-geektool/'>original post</a> for those geeklets.</p>
<p>And, without any further ado, my current GeekTool setup:<br />
<div id="attachment_1121" class="wp-caption aligncenter" style="width: 510px"><a href="http://blog.mediabymrb.com/wp-content/uploads/2012/01/Screen-Shot-2012-01-21-at-11.38.32-AM.png"><img src="http://blog.mediabymrb.com/wp-content/uploads/2012/01/Screen-Shot-2012-01-21-at-11.38.32-AM-1024x640.png" alt="" title="GeekTool Setup" width="500" height="313" class="size-large wp-image-1121" /></a><p class="wp-caption-text">Click to Enlarge</p></div></p>
<p>For the most part, it&#8217;s almost identical to what I was using on my last MBP.  The major changes are (1) ToDo.txt, (2) GCal, and (3) iTunes.  I know that I had iTunes embedded on my desktop in the last post, but with Lion now out, the program I was using did not behave the way I was hoping it would.  I&#8217;ve since switched to a completely GeekTool related way of handling iTunes information.  As was the case last time, some of these scripts are not my own &#8211; I&#8217;ve tried my best to give credit where I can, but if there are any problems, please leave a comment.</p>
<h3 style='margin-top:24px;'>ToDo.txt</h3>
<p><a href="http://blog.mediabymrb.com/wp-content/uploads/2012/01/GeekTool_ToDo.png"><img src="http://blog.mediabymrb.com/wp-content/uploads/2012/01/GeekTool_ToDo.png" alt="" title="GeekTool: ToDo.txt" width="251" height="242" class="aligncenter size-full wp-image-1124" /></a><br />
Header: <code>echo "ToDo's"</code><br />
ToDo.txt  (Local Copy Only): <code>/path/to/todo.sh</code><br />
ToDo.txt (Web Synchronized): <code>/path/to/unison todo.prf -silent -auto -batch; sed -i.bak 's/\\//g' /path/to/todo.txt; /path/to/todo.sh</code></p>
<p>I&#8217;ve written about <a href='http://blog.mediabymrb.com/2011/12/todo-txt-on-the-web/'>ToDo.txt</a> before, and included some screenshots of how I was embedding it on the desktop.  If you only use ToDo.txt on one computer, embedding it on the desktop is as simple as executing the shell script, as shown in the second line above.  If you want to synchronize your todo list between your computer and a remote server, you&#8217;ll need a copy of <a href='http://www.cis.upenn.edu/~bcpierce/unison/'>unison</a> installed on both systems.  In the last line of code above, the first statement synchronizes the text files between both systems, the second statement handles some formatting to ensure everything displays properly, and the last statement prints it out on the desktop.  For those who are interested in the web interface, I will try my best to do a write up on it once I&#8217;m back at school and settle in.</p>
<h3 style='margin-top:24px;'>Calendar</h3>
<p><a href="http://blog.mediabymrb.com/wp-content/uploads/2012/01/GeekTool_Calendar.png"><img src="http://blog.mediabymrb.com/wp-content/uploads/2012/01/GeekTool_Calendar.png" alt="" title="GeekTool: Calendar" width="230" height="85" class="aligncenter size-full wp-image-1122" /></a><br />
Header: <code>echo "Calendar"</code><br />
Calendar Script: <a href='http://blog.mediabymrb.com/wp-content/uploads/2012/01/gcal.pl_.txt'>Download</a> and change the extension to &#8216;.pl&#8217;<br />
Calendar Script Execution: <code>perl ~/Desktop/Perl/gcal.pl</code></p>
<p>There really isnt much to say about the Calendar script &#8211; it pulls upcoming events from your Google Calendar and allows you to display them on your desktop.  If you want to read more about how the script handles it, head over the author&#8217;s <a href='http://www.devangoldstein.com/87/bringing-google-calendar-to-my-desktop/'>post</a> for all the details.</p>
<h3 style='margin-top:24px;'>iTunes</h3>
<p><div id="attachment_1123" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.mediabymrb.com/wp-content/uploads/2012/01/GeekTool_iTunes.png"><img src="http://blog.mediabymrb.com/wp-content/uploads/2012/01/GeekTool_iTunes-300x73.png" alt="" title="GeekTool: iTunes" width="300" height="73" class="size-medium wp-image-1123" /></a><p class="wp-caption-text">Click to Enlarge</p></div><br />
Unfortunately, CoverStream stopped working properly after I switched to Lion due to the change from Spaces to Mission Control.  Whereas the rest of my geeklets appear to be fixed to the desktop when I move between work spaces, CoverStream looked like an application moving from space to space.  I began the hunt for an alternative, and although I&#8217;ve lost the album artwork, am very happy with the end result.</p>
<p>iTunes Script: <a href="http://blog.mediabymrb.com/wp-content/uploads/2012/01/iTunesInfo.scpt_.txt">Download</a> and change the extension to &#8216;.scpt&#8217;<br />
iTunes Script Execution: <code>osascript /path/to/iTunesInfo.scpt</code></p>
<p>As with the Calendar, a simple script is used to display the album information.  The only real drawback from CoverStream is that, due to the refresh rate in GeekTool, this geeklet doesn&#8217;t operate in real time.  That is, if you change a song, it might take a few seconds for your desktop to update with the new information.  Check out the original author&#8217;s <a href='http://www.keynote2keynote.com/2007/04/10/ultimate-geektool-setup-pimp-your-desktop-part-2/'>post</a> for some more information on how the script works.</p>
<p>I know there aren&#8217;t as many geeklets as last time, but with all of them combined, my desktop has become much more functional.  The ability to see my calendar and todo&#8217;s without having to open any additional programs is a huge time saver.  As always, any questions, please don&#8217;t hesitate to post a comment below.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mediabymrb.com/2012/01/geektool-v2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Late 2011 MBP</title>
		<link>http://blog.mediabymrb.com/2012/01/late-2011-mbp/</link>
		<comments>http://blog.mediabymrb.com/2012/01/late-2011-mbp/#comments</comments>
		<pubDate>Fri, 13 Jan 2012 00:45:06 +0000</pubDate>
		<dc:creator>Marc Budofsky</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[OS X]]></category>
		<category><![CDATA[Macbook Pro]]></category>
		<category><![CDATA[RAM]]></category>
		<category><![CDATA[SSD]]></category>

		<guid isPermaLink="false">http://blog.mediabymrb.com/?p=1109</guid>
		<description><![CDATA[As I briefly mentioned in my last post, I recently got a new MacBook Pro as an early graduation present to replace my old MBP. Even though it was a brand new computer, I only upgraded a few components when I purchased it &#8211; opting to upgrade the remaining items by myself after. This was [...]]]></description>
			<content:encoded><![CDATA[<p>As I briefly mentioned in my last <a href='http://blog.mediabymrb.com/2011/12/todo-txt-on-the-web/'>post</a>, I recently got a new MacBook Pro as an early graduation present to replace my <a href='http://blog.mediabymrb.com/2010/11/macbook-pro-upgrades/'>old MBP</a>.  Even though it was a brand new computer, I only upgraded a few components when I purchased it &#8211; opting to upgrade the remaining items by myself after.  This was mostly due to the fact that a lot of the upgrades Apple offers are insanely overpriced.  For instance, going from 4 GB to 8 GB of RAM adds $200 onto the price of the computer.  An 8 GB kit of RAM off of <a href='http://www.newegg.com/'>Newegg</a> typically runs between $30 &#8211; $50, depending on the brand and speed.  Additionally, when you have Apple do it for you, they keep the original 4 GB of RAM &#8211; when you do it yourself, you can reuse the 4 GB of RAM in a later project.  </p>
<p>Anyway, the two main components I decided to leave stock were the hard drive and RAM (if you couldn&#8217;t tell already).  The RAM I quickly found on Newegg for $30 &#8211; it was a G.Skill kit (which happens to be my personal go to brand for RAM) at the same speed as the stock RAM in MBP.  By quickly found, I mean the 8 GB of RAM was installed within 3 hours of bringing the computer home.  As for the hard drive, I thought I would be able to handle the switch from the SSD in my old MBP to a 7200 RPM drive in the new computer, but quickly came to realize that the speed difference is HUGE.  Last week I found a 256 GB Samsung 830 Series on Newegg for $350 &#8211; if that sounds a little high to anyone, Apple charges $500 for the 256 GB SSD option, and, again, they keep the original hard drive.  After debating if I should just get it already or wait a little longer, I ended up buying it.  One interesting thing to note is that the hard drive that came in the computer was 9 mm tall, while the SSD was only 7 mm &#8211; there&#8217;s no issue using a smaller drive in the MBP, but I was definitely surprised when I placed the drives side by side.  Here&#8217;s a picture of the SSD fully installed.<br />
<div id="attachment_1110" class="wp-caption aligncenter" style="width: 610px"><a href="http://blog.mediabymrb.com/wp-content/uploads/2012/01/AiYKz4_CMAAmhZ8.jpg"><img src="http://blog.mediabymrb.com/wp-content/uploads/2012/01/AiYKz4_CMAAmhZ8.jpg" alt="" title="Samsung 830 Series SSD, 256 GB" width="600" height="448" class="size-full wp-image-1110" /></a><p class="wp-caption-text">256 GB Samsung 830 Series in Late 2011 MacBook Pro</p></div></p>
<p>After upgrading the RAM and swapping out the HDD for an SSD, the computer is insanely fast.  Not to say it was a slouch before &#8211; the quad core i7 is definitely a huge improvement over the Core 2 Duo that was in my old MBP &#8211; but the difference between a traditional hard drive and a solid state drive is staggering.  The computer is virtually quiet during normal operation, and only audible when the fans kick on if its working a little harder than normal.  Overall, I&#8217;m loving my new MBP &#8211; its amazing how much of a difference 4 years makes in the computer world.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mediabymrb.com/2012/01/late-2011-mbp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Another One Down</title>
		<link>http://blog.mediabymrb.com/2012/01/another-one-down/</link>
		<comments>http://blog.mediabymrb.com/2012/01/another-one-down/#comments</comments>
		<pubDate>Mon, 02 Jan 2012 02:47:30 +0000</pubDate>
		<dc:creator>Marc Budofsky</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>

		<guid isPermaLink="false">http://blog.mediabymrb.com/?p=1105</guid>
		<description><![CDATA[Just wanted to take a moment and wish everyone a happy and healthy 2012 &#8211; I have some new projects in the works, so new posts are on the horizon. Stay tuned!]]></description>
			<content:encoded><![CDATA[<p>Just wanted to take a moment and wish everyone a happy and healthy 2012 &#8211; I have some new projects in the works, so new posts are on the horizon.  Stay tuned!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mediabymrb.com/2012/01/another-one-down/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ToDo.txt on the Web</title>
		<link>http://blog.mediabymrb.com/2011/12/todo-txt-on-the-web/</link>
		<comments>http://blog.mediabymrb.com/2011/12/todo-txt-on-the-web/#comments</comments>
		<pubDate>Thu, 29 Dec 2011 23:45:09 +0000</pubDate>
		<dc:creator>Marc Budofsky</dc:creator>
				<category><![CDATA[GeekTool]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://blog.mediabymrb.com/?p=1074</guid>
		<description><![CDATA[While I was home over Thanksgiving break, I got an early graduation gift from my parents &#8211; a new 2.5 GHz i7 MacBook Pro. In the process of transferring all of my programs and documents to the new computer, I decided to look into some new programs to install, specifically a better way to keep [...]]]></description>
			<content:encoded><![CDATA[<p>While I was home over Thanksgiving break, I got an early graduation gift from my parents &#8211; a new 2.5 GHz i7 MacBook Pro.  In the process of transferring all of my programs and documents to the new computer, I decided to look into some new programs to install, specifically a better way to keep track of my todo list.  Recently, my todo list consisted of a 1/4 piece of printer paper that I would write out each Sunday when starting my work for the week, and hope that I would still be able to find by the middle of the week.  I remembered reading about <a href='http://todotxt.com/'>todo.txt</a> a while back, and looked into it.  The basic premise behind the program is a simple, text-based todo list that is updatable via the terminal and a few basic shell script commands.  I set it up on my new MBP, and was immediately impressed by the program.  I was talking to my friend <a href='http://alexbeutel.com'>Alex</a> about the program, and started thinking about how convenient it would be to have a web based todo list.  I looked into a few web apps that already existed, but quickly found a web-wrapper for todo.txt.  It was written in PHP, and wrapped the shell commands in a convenient web interface.  After getting the basic web functionality working, I began looking into ways to synchronize the local todo list on my computer with the copy stored on my server.  I was originally going to try and use rsync, but found out it was a one way algorithm.  Upon further searching, I came across unison &#8211; it operates using the same concepts as rsync, but allows for two-way syncing.  The next hurdle was getting my hands on the appropriate binaries for each operating system (OS X for the MBP, and Linux, specifically CentOS, for my server) and making sure that they were the same version.  Unison only allows syncing between identical versions of the binary &#8211; if you have 2.44 installed on your local system, 2.44 must also be installed on the server; there is no backward compatibility.  The OS X binary was easy; I fired up Terminal and issued the appropriate commands and was up and running.  For my server, I set up a CentOS virtualization to create the binary and then copied it over ssh to the appropriate location on my server.  After everything was set up, I began tweaking a preference file that would automatically and silently handle the synchronization, and be fired from Geektool every couple of minutes.  Additionally, by using Geektool to handle the synchronization between the server and the local copy, displaying the output on my desktop was also easily done.  By handling the entire system the way that I have, I can update my todo list from any of my computers, or from the web interface, and always ensure that the latest copy will be downloaded and displayed locally.  </p>
<p>Check out the screenshots below, and check back in the next few weeks &#8211; I&#8217;m hoping to clean up some of my modifications to the web-wrapper and repackage it for others to use.  I only made a few changes with regard to security and formatting the output, but I think they&#8217;ll be helpful so that someone else doesn&#8217;t have to worry about.  Any questions, leave a comment below.</p>
<p>GeekTool:<br />
<div id="attachment_1081" class="wp-caption aligncenter" style="width: 275px"><img src="http://blog.mediabymrb.com/wp-content/uploads/2011/12/GeekTool.jpg" alt="" title="GeekTool" width="265" height="152" class="size-full wp-image-1081" /><p class="wp-caption-text">ToDo.txt Embedded on Desktop via Geektool</p></div><br />
Terminal:<br />
<div id="attachment_1083" class="wp-caption aligncenter" style="width: 554px"><img src="http://blog.mediabymrb.com/wp-content/uploads/2011/12/Terminal1.jpg" alt="" title="Terminal" width="544" height="266" class="size-full wp-image-1083" /><p class="wp-caption-text">ToDo.txt in Terminal</p></div><br />
Web:<br />
<div id="attachment_1084" class="wp-caption aligncenter" style="width: 660px"><img src="http://blog.mediabymrb.com/wp-content/uploads/2011/12/Web.jpg" alt="" title="Web" width="650" height="365" class="size-full wp-image-1084" /><p class="wp-caption-text">ToDo.txt via the Web</p></div></p>
<p><strong>Update [1/6/2012]:</strong> It seems that the organization behind ToDo.txt realized that they needed official iOS support and recently released their own native client.  You can check it out <a href='http://itunes.apple.com/us/app/todo.txt-touch/id491342186?ls=1&#038;mt=8'>here</a>.  I havent bought it yet (the $1.99 seems a little steep for what its actually doing), but from reading the reviews of it, you need to keep your todo file in your dropbox; not as clean a solution as I was hoping they would come out with, but probably offers a little more functionality than my web interface.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mediabymrb.com/2011/12/todo-txt-on-the-web/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>New Google Bar</title>
		<link>http://blog.mediabymrb.com/2011/12/new-google-bar/</link>
		<comments>http://blog.mediabymrb.com/2011/12/new-google-bar/#comments</comments>
		<pubDate>Fri, 09 Dec 2011 21:30:27 +0000</pubDate>
		<dc:creator>Marc Budofsky</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Cookies]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Hack]]></category>
		<category><![CDATA[Toolbar]]></category>

		<guid isPermaLink="false">http://blog.mediabymrb.com/?p=1071</guid>
		<description><![CDATA[The other day, one of my friend&#8217;s showed me the blog he had been working on for one of his classes during the past semester. One of the posts explained how to enable the new Google Bar, but was strictly tailored to Google Chrome. After a quick search, I found the necessary plugin for Firefox [...]]]></description>
			<content:encoded><![CDATA[<p>The other day, one of my friend&#8217;s showed me the <a href='http://www.thetechupload.com/'>blog</a> he had been working on for one of his classes during the past semester.  One of the posts explained how to <a href='http://www.thetechupload.com/2011/12/dont-wait-for-new-google-bar-get-it-now.html'>enable the new Google Bar</a>, but was strictly tailored to Google Chrome.  After a quick search, I found the necessary plugin for Firefox to achieve the same functionality:</p>
<p>1. Download and install <a href='https://addons.mozilla.org/en-US/firefox/addon/cookies-manager-plus/?src=search'>Cookies Manager+</a> for Firefox.  Restart to complete the installation.<br />
2. Open &#8216;Cookies Manager+&#8217; and enter &#8216;PREF&#8217; in the search bar.<br />
3. Under sites, find the cookie for &#8216;google.com&#8217; &#8211; the name of the cookie should be &#8216;PREF&#8217;<br />
4. Double click the cookie to edit it.  Change the &#8216;Content&#8217; to &#8216;ID=03fd476a699d6487:U=88e8716486ff1e5d:FF=0:LD=en:CR=2:TM=1322688084:LM=1322688085:S=McEsyvcXKMiVfGds&#8217;<br />
5. Reload any Google site (Gmail/Calendar/+/etc) and you should have the new Google Bar enabled.</p>
<p>Its a nice change from the toolbar approach Google was using before &#8211; everything is contained in a single drop down menu from the Google logo.  Make sure to check out my friends blog (<a href='http://www.thetechupload.com/'>TheTechUpload.com</a>) for some more interesting tricks and hacks.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mediabymrb.com/2011/12/new-google-bar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MyBroadway</title>
		<link>http://blog.mediabymrb.com/2011/11/mybroadway/</link>
		<comments>http://blog.mediabymrb.com/2011/11/mybroadway/#comments</comments>
		<pubDate>Wed, 30 Nov 2011 11:03:32 +0000</pubDate>
		<dc:creator>Marc Budofsky</dc:creator>
				<category><![CDATA[Binghamton University]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[Binghamton]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Information Systems]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[MIS]]></category>
		<category><![CDATA[MyBroadway]]></category>

		<guid isPermaLink="false">http://blog.mediabymrb.com/?p=1064</guid>
		<description><![CDATA[In order to finish my MBA with a concentration in Management Information Systems (MIS), I&#8217;m required to take Information Systems. The general concept behind the class is to understand the necessary steps that go into the analysis and design of IT systems. For the second half of the semester, we&#8217;ve focused on creating and analyzing [...]]]></description>
			<content:encoded><![CDATA[<p>In order to finish my MBA with a concentration in Management Information Systems (MIS), I&#8217;m required to take Information Systems.  The general concept behind the class is to understand the necessary steps that go into the analysis and design of IT systems.  For the second half of the semester, we&#8217;ve focused on creating and analyzing <a href='http://en.wikipedia.org/wiki/Data_flow_diagram'>Data Flow Diagrams</a> (DFDs) and <a href='http://en.wikipedia.org/wiki/Entity-relationship_model'>Entity-Relationship Diagrams</a> (ERDs).  Throughout the entire semester, we&#8217;ve been working in groups to do analysis of the fictitious MyBroadway Video Rental Company.  Each case builds on the previous one &#8211; we started looking at a broad overview of the system, then moved into creating DFDs and ERDs to model and mockup a finished product.  Instead of having a traditional final for the class, we were given the option to do a final project and presentation.  The final project was to implement the databases we designed during the ERD analysis and create a working prototype.  My professor gave us two options for creating the database: (1) use Microsoft Access to design the tables and just create basic user interface to test them or (2) use PHP/MySQL to create a functional website to demonstrate how the product would work for both customers and employees.  I immediately gravitated towards the PHP option and began coding.</p>
<p>I started by designing a simple layout that was aesthetically pleasing, and added in the basic functionality: register a new account and login to the system.  Given that it was supposed to be a movie rental portal, I next had to figure out where to get a decent sized movie library that I could store in my database.  After some thinking and googling, I decided to use IMDBs Top 250 as a starting point.  I originally thought of writing a scraper from scratch to obtain the relevant information, but quickly found out that <a href='http://imdbapi.com/'>IMDB API</a> was freely available.  However, in order to use IMDB API, I needed to have the movie list stored somewhere; either in the database or as a text file.  A little more googling led me to <a href='https://scraperwiki.com/'>ScraperWiki</a>, where I found a <a href='https://scraperwiki.com/scrapers/imdb_top_250_2/'>scraper</a> that was already written to dump the Top 250 into a .CSV file.  After uploading the .CSV file to my server, I put together a quick PHP script to parse it out and save the IMDB IDs into a table.  Now I was in business &#8211; another quick script to run the IDs through IMDB API and I had a working movie database.  I also ended up saving the movie posters from IMDB locally on my server to avoid hotlinking them every time the page was loaded.  After getting the movies all put together, I started building out the rest of the functionality: rent/buy movies, checkout, request a new title, view/return rentals, view purchases, and view transaction history.  To reduce the amount of reloads the user would have when navigating the site, I ended up linking almost all of the operations to AJAX requests that queried PHP scripts and updated the DOM using jQuery.  </p>
<p>Some of the other fun features that stand include:</p>
<ul>
<li>Facebook/Google+ like notifications for when items are in the cart or rentals are overdue.</li>
<li>A &#8216;Quick Cart&#8217; dropdown that appears when the notification for the Shopping Cart is clicked.</li>
<li>A few CSS3 hacks to create a wrapping effect around the body of the page.</li>
<li>Embedded Trailers when viewing the details of a single movie.</li>
<li>A scrolling interface for the movies page that allows the user to view all of the movies in the catalog without reloading the page</li>
<li>&#8220;Employee&#8221; reviews of movies, with a 5-star rating system.</li>
<li>The ability to request a new movie, or vote for a movie requested by another customer.</li>
<li>Similar Movies (when on a Movie detail page) and Suggestions calculated on the fly based off of the genre of the current movie or previous transactions, respectively.</li>
</ul>
<p>I&#8217;m sure I left a few things out &#8211; I&#8217;ve been working on the site for about 3 weeks now, so I know what I&#8217;m expecting to see at this point.  Overall, it was a fun project to work on, and it allowed me to test out some new features that I probably wouldn&#8217;t have had the time to on a real production site.  Anyway, you can check out the working prototype <a href='http://school.mediabymrb.com/mybroadway/'>here</a> &#8211; just register an account and start playing around with it.  Any questions or comments, leave me a post below.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mediabymrb.com/2011/11/mybroadway/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 2.042 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2012-05-20 20:26:58 -->

