<?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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Blue Static Development</title>
	
	<link>http://www.bluestatic.org/blog</link>
	<description>All about Blue Static development.</description>
	<lastBuildDate>Sun, 14 Feb 2010 19:35:04 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</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/bluestatic" /><feedburner:info uri="bluestatic" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Public Repos and Bug Attributes</title>
		<link>http://feedproxy.google.com/~r/bluestatic/~3/v1tY00Emd-E/</link>
		<comments>http://www.bluestatic.org/blog/2010/02/14/public-repos-and-bug-attributes/#comments</comments>
		<pubDate>Sun, 14 Feb 2010 19:35:04 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[Bugdar]]></category>

		<guid isPermaLink="false">http://www.bluestatic.org/blog/?p=137</guid>
		<description><![CDATA[Bugdar 2 is now sufficiently far along that I&#8217;m comfortable posting the git repository. The Phalanx repository has been public from the beginning (albeit unnanounced) at Github: http://github.com/rsesek/phalanx. Bugdar 2&#8217;s repository is now also available there: http://github.com/rsesek/Bugdar2. At the same time, they will be availiable at their canonical home in http://bluestatic.org/git/. The Github mirrors are [...]]]></description>
			<content:encoded><![CDATA[<p>Bugdar 2 is now sufficiently far along that I&#8217;m comfortable posting the git repository. The Phalanx repository has been public from the beginning (albeit unnanounced) at Github: <a href="http://github.com/rsesek/phalanx">http://github.com/rsesek/phalanx</a>. Bugdar 2&#8217;s repository is now also available there: <a href="http://github.com/rsesek/Bugdar2">http://github.com/rsesek/Bugdar2</a>. At the same time, they will be availiable at their canonical home in <a href="http://bluestatic.org/git/">http://bluestatic.org/git/</a>. The Github mirrors are just easier for most people.</p>
<p>Development of Bugdar 2 is still moving fast. In the past few days I&#8217;ve laid down the core of the search system and added support for resubmitting a POST request after login (don&#8217;t lose your work if you&#8217;re not logged in). There&#8217;s two more major milestones before I consider us past the &#8216;first alpha&#8217; stage: usergroup permissions and bug attributes. What are bug attributes?</p>
<p>In Bugdar 1, there were a set of fields that Bugdar compelled you to use: product, version, status, resolution, priority, severity, and assignment. If you didn&#8217;t want to use one of these fields, you couldn&#8217;t remove it &#8211; you just had to ignore it. There were also custom fields, but the architecture under them was always shaky. By having all these required fields, we were defining a bug as so:</p>
<pre>CREATE TABLE bug (
	bugid int unsigned NOT NULL AUTO_INCREMENT
	userid int unsigned NOT NULL
	dateline bigint unsigned NOT NULL
	product int unsigned NOT NULL
	component int unsigned NOT NULL
	version int unsigned NOT NULL
	summary varchar(255) NOT NULL
	priority int unsigned NOT NULL
	severity int unsigned NOT NULL
	status int unsigned NOT NULL
	resolution int unsigned NOT NULL
	assignedto int unsigned NOT NULL
	duplicateof int unsigned NOT NULL
	dependency text NOT NULL
	hidden smallint unsigned NOT NULL
	initialreport int unsigned NOT NULL
	-- [A lot of other cache information here]
);</pre>
<p>That&#8217;s a lot of data! If a bug isn&#8217;t going to use one of those fields, it&#8217;s still going to carry around all that weight. In Bugdar 2, this is how we define a bug:</p>
<pre>CREATE TABLE bugs (
	bug_id int NOT NULL PRIMARY KEY AUTO_INCREMENT,
	title varchar(250) NOT NULL DEFAULT '',
	reporting_user_id int NOT NULL DEFAULT 0,
	reporting_date int NOT NULL DEFAULT 0,
	hidden boolean NOT NULL DEFAULT 0,
	first_comment_id int NOT NULL DEFAULT 0
);</pre>
<p>That&#8217;s a huge difference. You&#8217;ll notice all the attributes &#8211; the metadata &#8211; are not stored on the bug itself anymore. Instead, that&#8217;s done through a tuple:</p>
<pre>CREATE TABLE bug_attributes (
	bug_id int NOT NULL DEFAULT 0,
	attribute_title varchar(50) NOT NULL DEFAULT '',
	value varchar(250),
	PRIMARY KEY (bug_id, attribute_title)
);</pre>
<p>The implications of this are that an single (unique), arbitrary attribute can be attached to a bug at the user&#8217;s will. The requirement of data is now imposed by the administrator rather than the developer. It also helps to normalize the database schema. So how do attributes work?</p>
<p>Attributes can be defined formally in an administrative panel, or they can be defined ad-hoc while editing bugs. Attributes can be titled to create a field, or they can just be values, which will be represented as tags. The goal with this system is to create a highly flexible data model in which all the stock Bugdar 1 fields could be represented as attributes.</p>
<p>Formally defined attributes can be one of five types: text, boolean, list, date, or user. Text fields are self explanatory. Booleans are interesting because they don&#8217;t necessarily have binary value; they have ternary value: true, false, and unset &#8211; but that&#8217;s more of a semantic detail. Lists are a set of selectable, pre-defined options. The last two types are new since Bugdar 1. Date fields will have a calendar selection widget. Finally, user fields allow the bug to be attached to some user in Bugdar&#8217;s system; this is how assignments work.</p>
<p>This is a rendering of how attributes will be arranged on the bug display:</p>
<p><img src="http://www.bluestatic.org/blog/wp-content/uploads/Screen-shot-2010-02-14-at-2.00.36-PM-e1266174622295.png" alt="" title="Bugdar 2 Fields and Tags" width="227" height="236" class="aligncenter size-full wp-image-149" /></p>
<p>That same information takes up more than half the page in Bugdar 1. That&#8217;s all for now.</p>
<img src="http://feeds.feedburner.com/~r/bluestatic/~4/v1tY00Emd-E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.bluestatic.org/blog/2010/02/14/public-repos-and-bug-attributes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.bluestatic.org/blog/2010/02/14/public-repos-and-bug-attributes/</feedburner:origLink></item>
		<item>
		<title>Long-overdue update</title>
		<link>http://feedproxy.google.com/~r/bluestatic/~3/JIWrgt03HQU/</link>
		<comments>http://www.bluestatic.org/blog/2010/02/09/long-overdue-update/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 05:25:45 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[Bugdar]]></category>
		<category><![CDATA[Chromium]]></category>
		<category><![CDATA[mac os x]]></category>
		<category><![CDATA[MacGDBp]]></category>

		<guid isPermaLink="false">http://www.bluestatic.org/blog/?p=129</guid>
		<description><![CDATA[So I know I promised at Thanksgiving an update on the state of things. Well I lied/got busy. Sorry; these things happen. The past few months have been a whirlwind. So here&#8217;s a brief personal update before I talk about software.
In May 2009 the Mac port of Chromium (the open source project that Google uses [...]]]></description>
			<content:encoded><![CDATA[<p>So I know I promised at Thanksgiving an update on the state of things. Well I lied/got busy. Sorry; these things happen. The past few months have been a whirlwind. So here&#8217;s a brief personal update before I talk about software.</p>
<p>In May 2009 the Mac port of <a href="http://www.chromium.org">Chromium</a> (the open source project that Google uses for their <a href="http://www.google.com/chrome/">Chrome</a> browser) was starting to gear up. I&#8217;d been interested in working on a Mac browser project for a while; but Firefox&#8217;s code seemed beastly and I never have been a fan of XUL. Safari is great, but it isn&#8217;t open source. Enter Chromium: an open-source, truly native, WebKit-based browser. Consider it love at first sight. Fast forward 12 patches and four months later to August when I am nominated and made a committer. <a href="http://code.google.com/p/chromium/issues/list?can=1&#038;q=owner:rsesek">My work</a> has all involved bridging the cross-platform C++ model (as in MVC) to Objective-C/Cocoa land. I wrote the Mac the page info window, history menu, cookie manager, font and language settings, download settings, and added favicons throughout various parts of the UI. Now, present day. Last week Google offered me an internship position in Manhattan. I&#8217;m thrilled at the opportunity and am excited to start work there in May with such smart, interesting, and talented people. I expect to learn a lot!</p>
<p>So now let&#8217;s talk software.</p>
<p><strong>Bugdar</strong><br />
Last time I wrote about the future of Bugdar 2, I posted a link to a list of phases development that would occur. The original plan was to create 1.3 as a stepping stone to 2.0. That line of development has since been abandoned. Instead, I decided to <a href="http://en.wikipedia.org/wiki/Greenfield_project">greenfield</a> the project. There were many reasons for doing this; but here are the two big ones:</p>
<p>1. I have a better, more focused vision of what I want Bugdar 2 to be. When writing Bugdar 1, I didn&#8217;t have a clear goal of what I wanted &#8211; there was no philosophy to the design, I was merely thinking &#8220;copy Bugzilla, but do it better&#8221;. Overall, I think I was successful with this. But this is not Bugdar 2, at all. Bugdar 2 will be a refined, incredibly flexible system that I am excited to share with you. But because the two projects will be so different, trying to create a large, temporary scaffolding system (version 1.3) was extremely time consuming and kludgey.</p>
<p>2. ISSO. Originally dubbed the &#8220;Iris Studios Shared Objects&#8221; framework. This thing is ancient. The first version dates back to when I was a rather n00b PHPer. The first commit was from 12 January 2005! Since that time I&#8217;ve had a lot more development experience and completed a Minor in Computer Science. A better, more-efficient architecture could be devised.</p>
<p>I wrote an entirely new PHP framework (that will require PHP 5.3+) that is a bare-minimum, no-frills framework. I call this Phalanx and the code is currently available on <a href="http://github.com/rsesek/phalanx">Github</a>; it is licensed under the GPL version 3. Phalanx is event-driven. Rather than writing another MVC framework, I decided to look at the problem of web frameworks through the lens of functional programming. The problem with MVC on the web is the lack of state; HTTP is not persistent. Functional programming focuses more on inputs and outputs (and the transformations between them), which is how Phalanx works. Each Event class defines a set of inputs that it accepts and the outputs it will return. This also makes unit testing much more clear-cut. I won&#8217;t get into further details here, though. That&#8217;s for another post.</p>
<p>So before I could start moving again on Bugdar, I had to write this new framework. That took a matter of months (July - January). But I&#8217;m now back on Bugdar. Phalanx makes development really fast, and in the past two days I&#8217;ve implemented the basic user system, a preliminary Auth2 API, and initial submission and listing of bug reports. I&#8217;ve posted a new <a href="http://www.bluestatic.org/software/bugdar/2_0/roadmap.php">roadmap</a> for Bugdar 2.</p>
<p><strong>MacGDBp</strong><br />
I&#8217;ve been refactoring and cleaning up MacGDBp&#8217;s code over the past few months. It&#8217;s also been accumulating various fixes for non-critical bugs. I&#8217;d also like to re-tackle the socket/network layer for 1.4, as I tried and failed to improve this in 1.3. You can probably expect this update before Spring.</p>
<p><strong>Site Redesign</strong><br />
I&#8217;m also working on redesign the Blue Static site. It really hasn&#8217;t changed since 2006 (insert the &#8216;learned a lot&#8217; bit here) and it&#8217;s time. I&#8217;m not very far on this, yet.</p>
<p>Wow that&#8217;s a lot. More in the next few days. UI mocks to come.</p>
<img src="http://feeds.feedburner.com/~r/bluestatic/~4/JIWrgt03HQU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.bluestatic.org/blog/2010/02/09/long-overdue-update/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.bluestatic.org/blog/2010/02/09/long-overdue-update/</feedburner:origLink></item>
		<item>
		<title>Happy Thanksgiving!</title>
		<link>http://feedproxy.google.com/~r/bluestatic/~3/lCN13vPPMLg/</link>
		<comments>http://www.bluestatic.org/blog/2009/11/26/happy-thanksgiving/#comments</comments>
		<pubDate>Fri, 27 Nov 2009 03:47:28 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[Bugdar]]></category>

		<guid isPermaLink="false">http://www.bluestatic.org/blog/?p=126</guid>
		<description><![CDATA[Happy Thanksgiving to all you US citizens!
Today I&#8217;m releasing a security update to Bugdar, version 1.2.4. This version addresses a possible SQL injection vector in search.php. The details of the report can be found here. Thanks to Adam DiCarlo for disclosing the issue.
Please update to 1.2.4 as soon as you can. The release links can [...]]]></description>
			<content:encoded><![CDATA[<p>Happy Thanksgiving to all you US citizens!</p>
<p>Today I&#8217;m releasing a security update to Bugdar, version 1.2.4. This version addresses a possible SQL injection vector in search.php. The details of the report can be found <a href="http://www.bluestatic.org/bugs/showreport.php?bugid=185">here</a>. Thanks to Adam DiCarlo for disclosing the issue.</p>
<p>Please update to 1.2.4 as soon as you can. The release links can found on the normal <a href="http://www.bluestatic.org/software/bugdar/">Bugdar webpage</a>. Alternatively, here are the direct <a href="http://www.bluestatic.org/download.php/bugdar/1.2.4/zip">ZIP</a> and <a href="http://www.bluestatic.org/download.php/bugdar/1.2.4/tgz">Tar</a> links.</p>
<p>I apologize for the lack of posts, but I&#8217;d rather be coding rather than talking about coding <img src='http://www.bluestatic.org/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . I&#8217;ll post an update on the state of Bugdar 2.0 in a few days.</p>
<img src="http://feeds.feedburner.com/~r/bluestatic/~4/lCN13vPPMLg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.bluestatic.org/blog/2009/11/26/happy-thanksgiving/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.bluestatic.org/blog/2009/11/26/happy-thanksgiving/</feedburner:origLink></item>
		<item>
		<title>MacGDBp 1.3</title>
		<link>http://feedproxy.google.com/~r/bluestatic/~3/wix68gQ1yEQ/</link>
		<comments>http://www.bluestatic.org/blog/2009/05/18/macgdbp-13/#comments</comments>
		<pubDate>Tue, 19 May 2009 03:51:09 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[mac os x]]></category>
		<category><![CDATA[MacGDBp]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.bluestatic.org/blog/?p=116</guid>
		<description><![CDATA[I&#8217;m pleased to announce MacGDBp 1.3. This release features a new tool that allows you inspect values in the variables list via a HUD (screenshot below). This inspector will allow you to see long strings and to select/copy text values. To access this feature, go to Window &#8594; Inspector (Shift+Cmd+I). The currently-selected variable (which now, [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m pleased to announce MacGDBp 1.3. This release features a new tool that allows you inspect values in the variables list via a HUD (screenshot below). This inspector will allow you to see long strings and to select/copy text values. To access this feature, go to Window &rarr; Inspector (Shift+Cmd+I). The currently-selected variable (which now, in 1.3, remembers itself across debugger stepping) will have its full value displayed in the HUD window.</p>
<p><a href="http://www.bluestatic.org/blog/wp-content/uploads/macgdbp-variable-inspector.png"><img src="http://www.bluestatic.org/blog/wp-content/uploads/macgdbp-variable-inspector-300x218.png" alt="MacGDBp 1.3 Variable Inspector" title="MacGDBp 1.3 Variable Inspector" width="300" height="218" class="aligncenter size-medium wp-image-118" /></a></p>
<p>Under the hood, there are two significant changes. The first is a rewrite of the receiving side of the socket layer (it now precisely uses the message length when buffering memory), which should eliminate the &#8220;buffer is incomplete&#8221; errors that occasionally popped up. The second is that the PHP stack will no longer be managed internally. After every debugger step, the entire stack will be now re-created because Xdebug proved to be unpredictable for keeping in sync with an internal state. Debugger actions may now seem a little less snappy, but I think accuracy is more important than speed here. In 1.4 I&#8217;m going to use a caching mechanism that will speed up performance by reducing network access.</p>
<p>This release also features a bunch of bug fixes, a couple of which would cause the debugger display to not work under certain circumstances. As always, the <a href="http://www.bluestatic.org/software/macgdbp/changelog.php">change log</a> and <a href="http://www.bluestatic.org/git/?p=MacGDBp.git;a=shortlog;h=refs/tags/1.3">commit log</a> have all the details on the release.</p>
<img src="http://feeds.feedburner.com/~r/bluestatic/~4/wix68gQ1yEQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.bluestatic.org/blog/2009/05/18/macgdbp-13/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.bluestatic.org/blog/2009/05/18/macgdbp-13/</feedburner:origLink></item>
		<item>
		<title>Firefox vs. Safari: Toolbars</title>
		<link>http://feedproxy.google.com/~r/bluestatic/~3/M_eV8QmbvJA/</link>
		<comments>http://www.bluestatic.org/blog/2009/04/06/firefox-vs-safari-toolbars/#comments</comments>
		<pubDate>Tue, 07 Apr 2009 04:52:52 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[Commentary]]></category>
		<category><![CDATA[browsers]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[mac os x]]></category>
		<category><![CDATA[safari]]></category>

		<guid isPermaLink="false">http://www.bluestatic.org/blog/?p=97</guid>
		<description><![CDATA[I cannot commit to a web browser. I like Firefox because I think it provides options (via extensions) and the awesome bar is, in fact, awesome. Safari however provides better platform aesthetic and WebKit is a faster rendering engine.
But besides that, I noticed recently that Firefox feels a little  &#8220;cramped&#8221; after using Safari 4 [...]]]></description>
			<content:encoded><![CDATA[<p>I cannot commit to a web browser. I like Firefox because I think it provides options (via extensions) and the awesome bar is, in fact, awesome. Safari however provides better platform aesthetic and WebKit is a faster rendering engine.</p>
<p>But besides that, I noticed recently that Firefox feels a little  &#8220;cramped&#8221; after using Safari 4 beta. And this is the reason why:</p>
<p><a href="http://www.bluestatic.org/blog/wp-content/uploads/firefox-vs-safari-toolbars.png"><img src="http://www.bluestatic.org/blog/wp-content/uploads/firefox-vs-safari-toolbars-300x135.png" alt="Firefox vs. Safari Toolbars" title="Firefox vs. Safari Toolbars" width="300" height="135" class="aligncenter size-medium wp-image-98" /></a></p>
<p>I&#8217;m amazed at what 24 pixels can do.</p>
<img src="http://feeds.feedburner.com/~r/bluestatic/~4/M_eV8QmbvJA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.bluestatic.org/blog/2009/04/06/firefox-vs-safari-toolbars/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.bluestatic.org/blog/2009/04/06/firefox-vs-safari-toolbars/</feedburner:origLink></item>
	</channel>
</rss>
