<?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>Yesterday&#039;s news</title>
	<atom:link href="http://www.zvolkov.com/clog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.zvolkov.com/clog</link>
	<description>and mindstream byproducts</description>
	<lastBuildDate>Tue, 07 Feb 2012 00:23:46 +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>my list of issues with this company</title>
		<link>http://www.zvolkov.com/clog/2012/02/06/my-list-of-issues-with-this-company/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=my-list-of-issues-with-this-company</link>
		<comments>http://www.zvolkov.com/clog/2012/02/06/my-list-of-issues-with-this-company/#comments</comments>
		<pubDate>Mon, 06 Feb 2012 23:23:56 +0000</pubDate>
		<dc:creator>zvolkov</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.zvolkov.com/clog/?p=318</guid>
		<description><![CDATA[If this sounds a bit harsh, negative, naive ecetera, please keep in mind this is coming from a non-native English speaker (a Russian!), so the virtue of subtlety of expression may not fully manifest in author&#8217;s foreign writing. Also, if you despise the &#8220;give me this now&#8221; attitude, remember that the author is an immigrant: indeed, he [...]]]></description>
			<content:encoded><![CDATA[<p>If this sounds a bit harsh, negative, naive ecetera, please keep in mind this is coming from a non-native English speaker (a Russian!), so the virtue of subtlety of expression may not fully manifest in author&#8217;s foreign writing.</p>
<p>Also, if you despise the &#8220;give me this now&#8221; attitude, remember that the author is an immigrant: indeed, he left his own country in hope to find a better society! Now, instead of doing the same in this case, I&#8217;m trying to make the difference as much as I can, both hands-on, and by writing analytic emails / posts like this one.</p>
<p>Finally, what goes below is my personal opinion, and as any opinion it maybe biased, one-sided, or outright wrong. However, at some point in my life I decided, paraphrasing Plato, that the life w/o opinions is not worth living. Besides, what would remain of the declared superiority of capitalism / democracy over communism if we were deprived of our opinions?</p>
<p>With all due disclaimers, here is my opinion of this company.</p>
<h2>The Good</h2>
<ul>
<li>Strong development team</li>
<li>Friendly culture</li>
<li>Great work/life balance</li>
<li>Relatively recent technologies (for a Microsoft shop)</li>
<li>No problems w/ purchasing 3rd party dev tools</li>
<li>Developers do not report to PMs</li>
<li>No unneeded bureaucracy</li>
<li>Developers manage their dev environment however they like</li>
<li>If developers take effort and responsibility to innovate, the business does not actively resist</li>
</ul>
<h2>The Bad</h2>
<ul>
<li>
<h3>No respect for game rules, no understanding why we need them</h3>
<ul>
<li>Single decision maker aka benevolent tyrant</li>
<li>No single written down backlog</li>
<li>Ad-hoc requests and prioritization</li>
<li>Scrum breaks down as soon as dev team stops applying pressure to support it</li>
<li>No code freeze nor feature freeze, combined with big infrequent releases</li>
</ul>
</li>
<li>
<h3>No technical strategy, no understanding why we need one</h3>
<ul>
<li>Greedy for new features w/ no respect for adding more technical debt</li>
<li>No understanding of iterative approach in terms of functional vs. auxiliary features</li>
<li>No desire to evolve sustainable architecture</li>
<li>No desire to pay back technical debt</li>
</ul>
</li>
<li>
<h3>Weak BA/PM skills</h3>
<ul>
<li>Some are still stuck in the Waterfall/RUP w/o even realizing it. Barely familiar with Scrum / Kanban and only supporting it when the initiative comes from development.</li>
<li>Sometimes still struggling with fundamentals like mockups, well-structured user stories etc.</li>
<li>Lacking ability to build conceptual models as opposed to user-facing screens.</li>
<li>Not willing to learn / improve and not seeing the need.</li>
</ul>
</li>
<li>
<h3>No understanding, outside of development, that we are a SaaS company</h3>
<ul>
<li>No dedicated production operations team, no understanding why we need one</li>
<li>Inadequate IT staff for a SaaS company</li>
<li>IT resisting dev efforts to automate deployments</li>
</ul>
</li>
</ul>
<h2>The Ugly</h2>
<p>To summarize, in this company the pressure from &#8220;the business&#8221; is applied in the direction of increasing entropy: breaking the process and destroying software infrastructure, instead of building it up. If development team gave up to the pressure, in about 3-5 years the company&#8217;s computer systems would regress to the point where more effort would be required to keep the systems functional than to make any progress.</p>
<p>The only way developers can succeed in such an environment is by treating &#8220;the business&#8221; as noise while secretly doing what they think is right.</p>
<p>You would think it should be a common knowledge that for a company to succeed, developers and &#8220;the business&#8221; should be on the same side. However, the opposite seems to be the case. As an ex-rockstar Hanselman <a href="http://www.hanselman.com/blog/25RulesOfManagement.aspx">used to put it</a>,  <em>If you&#8217;re not getting in trouble with your boss at least twice a year, you&#8217;re likely not pushing the envelope hard enough</em>.</p>
<div class="plus-one-wrap"><g:plusone size="medium" count="false" href="http://www.zvolkov.com/clog/2012/02/06/my-list-of-issues-with-this-company/"></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.zvolkov.com/clog/2012/02/06/my-list-of-issues-with-this-company/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IO-style cloning in Javascript</title>
		<link>http://www.zvolkov.com/clog/2012/01/17/io-style-cloning-in-javascript/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=io-style-cloning-in-javascript</link>
		<comments>http://www.zvolkov.com/clog/2012/01/17/io-style-cloning-in-javascript/#comments</comments>
		<pubDate>Tue, 17 Jan 2012 22:31:40 +0000</pubDate>
		<dc:creator>zvolkov</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.zvolkov.com/clog/?p=296</guid>
		<description><![CDATA[In true prototype languages like IO, there is no inheritance vs. instantiation of classes, there is differential inheritance aka cloning. New objects are derived from existing objects. The old object serves as a prototype of the new one. In Javascript there is no proper cloning &#8212; instead, a prototype to be assigned to a freshly created [...]]]></description>
			<content:encoded><![CDATA[<p>In <em>true</em> prototype languages like <a href="http://en.wikipedia.org/wiki/Io_%28programming_language%29">IO</a>, there is no inheritance vs. instantiation of classes, there is differential inheritance aka <em>cloning</em>. New objects are derived from existing objects. The old object serves as a prototype of the new one.</p>
<p>In Javascript there is no proper cloning &#8212; instead, a prototype to be assigned to a freshly created object depends on the <em>prototype</em> property of the constructor function. All the elements are there but they are insanely incoherent.</p>
<p>To take <a href="http://javascript.crockford.com/prototypal.html">Crockford&#8217;s Object.create pattern</a> one micro-step closer to IO, here&#8217;s how IO-style cloning can be implemented in Javascript:</p>
<pre class="brush:js">var yobject = {
  derive : function () {
    var F = function() {};
    F.prototype = this;
    return new F();
  }
};</pre>
<p>Now the objects (or, rather, &#8220;yobjects&#8221;) can be easily cloned like this:</p>
<pre class="brush:js">var car = yobject.derive();
car.wheels = 4;
var ferrari = car.derive();
ferrari.color = red;
console.log(ferrari.wheels); //prints 4</pre>
<p>You can even implement singleton pattern, IO-style:</p>
<pre class="brush:applescript">var elvisCadillac = car.derive();
elvisCadillac.color = 'pink';
elvisCadillac.clone = function () {return this;};

var fake = elvisCadillac.derive();
console.log(fake === elvisCadillac ); //prints true</pre>
<p>I thereby name you <strong>The Yobject Pattern</strong>!</p>
<div class="plus-one-wrap"><g:plusone size="medium" count="false" href="http://www.zvolkov.com/clog/2012/01/17/io-style-cloning-in-javascript/"></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.zvolkov.com/clog/2012/01/17/io-style-cloning-in-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Teaching Assembly, Part 2</title>
		<link>http://www.zvolkov.com/clog/2012/01/15/teaching-assembly-part-2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=teaching-assembly-part-2</link>
		<comments>http://www.zvolkov.com/clog/2012/01/15/teaching-assembly-part-2/#comments</comments>
		<pubDate>Sun, 15 Jan 2012 17:36:06 +0000</pubDate>
		<dc:creator>zvolkov</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.zvolkov.com/clog/?p=284</guid>
		<description><![CDATA[Just to dump my thoughts on the subject, and clean the brain buffer for new ideas, I&#8217;m writing this post summarizing what I taught my son since the last post: Learned the notion of video memory. Drew a stickman by setting bits in video memory. Made the stickman &#8220;move&#8221; by erasing and redrawing it with [...]]]></description>
			<content:encoded><![CDATA[<p>Just to dump my thoughts on the subject, and clean the brain buffer for new ideas, I&#8217;m writing this post summarizing what I taught my son since the last post:</p>
<ul>
<li>Learned the notion of video memory. Drew a stickman by setting bits in video memory. Made the stickman &#8220;move&#8221; by erasing and redrawing it with an offset.</li>
<li>Made a &#8220;font&#8221; consisting of binary representation of pixels required to draw letter &#8220;A&#8221;. Learned to &#8220;print&#8221; strings consisting of A&#8217;s. Discussed what it would take to print arbitrary strings this way.</li>
<li>Learned the notion of ASCII code as a way to represent characters in memory.</li>
<li>Called CP/M system function to print a $-terminated string.</li>
</ul>
<p>Now, in our first phase, all programming was done in CP/M&#8217;s debugger &#8220;SID&#8221;, running on an 8080 emulator. The idea was to start with simple non-segmented addressing, understand limitations of 8-bit arithmetic, and overall get used to a highly restricted environment the assembler programmer works in. At some point I realized it wasn&#8217;t our primary goal to learn CP/M and decided to upgrade to 8086.</p>
<p>Here&#8217;s what we learned on 8086:</p>
<ul>
<li>Learned that DOS command DEBUG &#8212; DOS equivalent of CP/M&#8217;s SID &#8212; still works on Windows XP (and even on 32-bit Windows 7 or so I was told!). Played with DEBUG to learn its slightly different commands and output format. Turns out there&#8217;s an improved clone of DEBUG called GRDB.</li>
<li>8086 registers. All 16 bit. Many accumulators. Extra registers.</li>
<li>8086 versatile MOV commands and the [xyz] notation. No need to remember 8080&#8242;s LXI/LDAX bullshit.</li>
<li>8086 built-in multiplication and division</li>
<li>File system basics. Directories and files. Path. Commands CD and DIR. The process of loading executable file into memory and starting it.</li>
<li>8086 has lots of RAM. Segment addressing. Why segments &#8220;overlap&#8221; (or, rather, can start anywhere on 16 byte boundary). Tiny model vs. small model.</li>
<li>DOS equivalent of CP/M&#8217;s print functions (Interrupt 21h, same function #9). Same $-terminated strings.</li>
<li>Rewrote a couple of previously written programs (e.g. reversing an array) from 8080 assembler into 8086.</li>
<li>Learned to save a program from DEBUG into a .COM file.</li>
<li>The notion of source code vs. executable. Compilation. Wrote a &#8220;hello world&#8221; in .asm file and compiled it to .COM using MASM.</li>
<li>A DOS Int 21 function to input a character.</li>
<li>Wrote a console game (!) that guesses a number from 1 to 1000 by progressively cutting the range in half.</li>
<li>Representation of negative numbers. Two&#8217;s complement format.</li>
</ul>
<p>This was a time when I almost decided that we were done and it was time to move on to C. I even showed Matthew hello world in C and he liked how you don&#8217;t need to juggle registers and how printf magically formats strings and numbers. But then I realized: first, I was rushing a bit and perhaps we need to stay on assembler until he gets comfortable writing programs w/o my help. Most importantly, I realized C was not exactly meant for &#8220;fun&#8221; programming &#8212; it is perfect for processing files but less perfect for drawing on screen, or for making sounds, or for developing micro-games, not without using third-party libraries anyway. I really believe I should avoid the libraries as they will certainly overwhelm Matthew (&#8220;look these people have already written EVERYTHING there was to be written!&#8221;).</p>
<p>And so I this morning I decided to linger on assembler a bit longer. Here&#8217;s what we learned in the last few days:</p>
<ul>
<li>The notion of global constants (the strings we print) vs. global variables. Rewrote the game to take advantage of global variables as opposed to holding stuff in registers all the time.</li>
<li>The notion of local variables on stack.</li>
<li>Intel 80386. 32-bit registers.</li>
<li>Modern debuggers: IDA Pro and OllyDbg.</li>
<li>FASM (Flat assembler) as a simpler, more modern alternative to MASM. FASMW IDE.</li>
<li>The boot process. BIOS vs. OS.</li>
<li>Interrupts. Actual (hardware interrupts) vs. interrupts as system API.</li>
<li>DOS interrupts and BIOS interrupts vs. directly working with hardware.</li>
<li>Keyboard scan codes. Difference between scan- ASCII- codes.</li>
</ul>
<p>Now I&#8217;m thinking we should develop a console game that would involve moving an object on screen with cursor keys. Perhaps such a game as Snake or Sokoban or Arcanoid would work well. Any ideas?</p>
<div class="plus-one-wrap"><g:plusone size="medium" count="false" href="http://www.zvolkov.com/clog/2012/01/15/teaching-assembly-part-2/"></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.zvolkov.com/clog/2012/01/15/teaching-assembly-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Teaching assembly</title>
		<link>http://www.zvolkov.com/clog/2011/12/20/teaching-assembly/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=teaching-assembly</link>
		<comments>http://www.zvolkov.com/clog/2011/12/20/teaching-assembly/#comments</comments>
		<pubDate>Wed, 21 Dec 2011 01:49:49 +0000</pubDate>
		<dc:creator>zvolkov</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.zvolkov.com/clog/?p=267</guid>
		<description><![CDATA[When my son was about 8 or 9 I introduced him to non-decimal base numbers &#8212; we were playing aliens with 2 or 3 or 8 or 16 total fingers.  Now he is 12. We&#8217;ve been studying 8080 asm for about two weeks now, every evening. To my surprise, it&#8217;s going extremely well. Why did I choose assembly language? Both &#8221;enterprise&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>When my son was about 8 or 9 I introduced him to non-decimal base numbers &#8212; we were playing aliens with 2 or 3 or 8 or 16 total fingers.  Now he is 12. We&#8217;ve been studying 8080 asm for about two weeks now, every evening. To my surprise, it&#8217;s going extremely well.</p>
<p>Why did I choose assembly language?</p>
<p>Both &#8221;enterprise&#8221; languages (Java or C#) and &#8220;open&#8221; languages (Ruby, Javascript etc.) are overcomplicated. Most of modern languages are multiparadigm ones. This means, if you start with a &#8220;real&#8221; language, on his first day he&#8217;d bump into elements of OOP, functions, closures and God knows what else. Then there are libraries. Then there are IDEs. Believe me, you don&#8217;t want your kid to get overwhelmed on his first day.</p>
<p>Most modern languages &#8212; except pure functional ones like Haskell and the like &#8212; have their syntaxis highly influenced by C. Why not learn C then? IMHO, that&#8217;s a great idea. It does not have OOP, and is overall pretty simple. However, when learning C you will inevitably bump into things that are IMPOSSIBLE TO EXPLAIN without talking about RAM, stack, and registers. Unless of course you want to wave your arms and say that it&#8217;s all computer magic.</p>
<p>In light of the above, learning ASM as the first language makes a lot of sense. ASM is not hard at all. I would even say it&#8217;s simpler than any high-level programming language because of its narrow scope and small number of moving parts. You really only have a handful of registers, a few arithmetical commands<wbr>, plus 1-2 instructions for moving stuff in/out of RAM. THAT&#8217;S ALL. With about a dozen instructions you can start writing meaningful algorithms. In a few weeks he can learn conditional logic, loops, and even arrays.</wbr></p>
<p>Now, what you DON&#8217;T want to teach your child is the memory conventions, segments, and the process of compiling and linking an asm source file. Leave that for until after he knows C. That&#8217;s why for our programming environment I chose SID &#8212; this is a &#8221;debugger-monitor&#8221; running on a legacy OS called CP/M (running on an in-browser 8080 emulator: <a href="http://www.tramm.li/i8080">http://www.tramm.li/i8080</a>). All you get is a blank screen, with few simple commands (L100 to see a disasemmbly of instructions at address 100, A100 to start entering new instructions line by line, G100 to run the program etc.). I can&#8217;t tell you how much it helps the focus to narrow the scope to a blank screen with one command line.</p>
<p>Here&#8217;s what we have covered so far:</p>
<ul>
<li>Hex / Binary / Decimal conversion and arithmetic.</li>
<li>Basics of von-Neumann architecture: CPU, registers, RAM</li>
<li>Basic assembly mnemonics (Intel-style) – MOV, ADD, SUB</li>
<li>CP/M debugger-monitor (DDT/SID) workflow and basic commands: A, L, T, X</li>
<li>i8080-specific mnemonics – MVI, ADI. Entering and running a simple program.</li>
<li>The notion of loop. The FLAGS register. The Zero flag. New command JNZ. Implementing multiplication of two numbers via addition.</li>
<li>More 8080 mnemonics – LXI, PCHL. Implementing a subprogram via jumps (don’t know what stack is yet)</li>
<li>More debugger commands: S, H. More 8080 mnemonics: INR. Reading from RAM.</li>
<li>Implementing a program that sums elements of an array given a pointer to its head and a number of elements.</li>
<li>The notion of carryover. The Carry flag. Implementing a two-byte addition by counting the carryovers. Enhanced the Sum Of Array program accordingly.</li>
<li>More 8080 mnemonics: INX. Array of structures. Writing to RAM. Using flowcharts to visualize complex programs.</li>
<li>Implemented a program that takes an array of triples, then for each element multiples first two bytes and stores the result into the third byte.</li>
<li>Comparing numbers with CMP. A program to find maximum value in array.</li>
<li>A program to reverse an array in-place.</li>
</ul>
<p>Next, I’m planning to introduce a concept of stack, and then, after a bunch of exercises we will move on to C. I’m excited.</p>
<p>As Joel Spolsky once said:</p>
<blockquote><p>Trying to be a programmer without understanding how a CPU works is like trying to practice medicine without learning anatomy. Sure, you can have limited success curing patients with medical advice gleaned from Google, but on the whole you&#8217;re going to be a pretty bad doctor.</p></blockquote>
<p>&nbsp;</p>
<div class="plus-one-wrap"><g:plusone size="medium" count="false" href="http://www.zvolkov.com/clog/2011/12/20/teaching-assembly/"></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.zvolkov.com/clog/2011/12/20/teaching-assembly/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MIT Course in Operating Systems</title>
		<link>http://www.zvolkov.com/clog/2011/11/09/mit-course-in-operating-systems/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mit-course-in-operating-systems</link>
		<comments>http://www.zvolkov.com/clog/2011/11/09/mit-course-in-operating-systems/#comments</comments>
		<pubDate>Wed, 09 Nov 2011 19:39:52 +0000</pubDate>
		<dc:creator>zvolkov</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.zvolkov.com/clog/?p=256</guid>
		<description><![CDATA[One of the most exciting areas of Software Engineering is operating systems design. That and design of compilers are the two topics I have always dreamed of studying more closely. While my friend Max Trushin is digging deeply into the second topic, I find myself getting sucked in the first one. Indeed, lately I&#8217;ve spent [...]]]></description>
			<content:encoded><![CDATA[<p>One of the most exciting areas of Software Engineering is <em>operating systems design</em>. That and <em>design of compilers</em> are the two topics I have always dreamed of studying more closely. While my friend Max Trushin is <a href="http://rulezzz.org/">digging deeply into the second topic</a>, I find myself getting sucked in the first one. Indeed, lately I&#8217;ve spent significant time installing and tweaking my two Arch Linux installations. What I found recently though, takes my Linux hobby to an entirely new level. I&#8217;m talking about the Massachusetts Institute of Technology&#8217;s course in Operating System Engineering.</p>
<p>It&#8217;s a 6-month-long course that covers all you need to know about OS design, starting from basics, all the way through multitasking and micro-kernels.</p>
<p>Here&#8217;s what they provide for free:</p>
<p><strong>A <a href="http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-828-operating-system-engineering-fall-2006/readings/">list of literature</a></strong>, with some of the books actually available for free download:</p>
<ul>
<li>Compact 32-bit protected mode <a href="http://www.drpaulcarter.com/pcasm/">PC Assembly tutorial</a> (~180 pages PDF)</li>
<li><a href="http://cm.bell-labs.com/cm/cs/who/dmr/cacm.pdf">The Unix Time-sharing System</a> (10 pages PDF) — the original UNIX article by UNIX authors Ken Thompson and Dennis Ritchie, published back in 1974</li>
<li><a href="http://cm.bell-labs.com/who/dmr/hist.html">The Evolution of the Unix Time-sharing System</a> &#8211; a follow up 1984 article by Dennis Ritchie</li>
<li><a href="http://www.multicians.org/f7y.html">Multics, the first seven years</a> &#8211; a short overview of the predecessor that inspired Ken Thompson to write UNIX</li>
<li><a href="http://plan9.bell-labs.com/sys/doc/rc.pdf">Rc &#8211; The Plan 9 Shell</a></li>
<li><a href="http://web.archive.org/web/20040603021346/http://members.iweb.net.au/~pstorr/pcbook/">Phil Storrs PC Hardware book</a> &#8211; archive.org&#8217;s copy of a great online book on general PC hardware architecture and programming.</li>
<li><a href="http://pdos.csail.mit.edu/6.828/2011/reference.html">A great list of reference resources for low-level system programming</a>.</li>
</ul>
<p><strong><a href="http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-828-operating-system-engineering-fall-2006/lecture-notes/">Lecture notes</a></strong> (from 2006, and <a href="http://pdos.csail.mit.edu/6.828/2011/schedule.html">from 2011</a> &#8211; click on lecture topic) summarizing the essence of 23 lectures on  topics ranging from boot process management to shell design.</p>
<p><strong>A working Unix clone</strong>, complete with source code and commentaries:</p>
<ul>
<li><a href="git://pdos.csail.mit.edu/xv6/xv6.git">Complete source code, 8000 lines</a>, plus an easy to print <a href="http://pdos.csail.mit.edu/6.828/2011/xv6/xv6-rev6.pdf">PDF version</a></li>
<li><a href="http://pdos.csail.mit.edu/6.828/2011/xv6/book-rev6.pdf">A textbook / commentary</a>, explaining design and implementation details, in an easy to follow manner.</li>
</ul>
<p><strong>More information</strong> available on <a href="http://pdos.csail.mit.edu/6.828/">MIT current 6.828 course</a> page and on <a href="http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-828-operating-system-engineering-fall-2006/">MIT open courseware page for 6.828</a>.</p>
<p>Not sure about you but I&#8217;m seriously considering reading through the lectures, if not doing the actual labs!</p>
<div class="plus-one-wrap"><g:plusone size="medium" count="false" href="http://www.zvolkov.com/clog/2011/11/09/mit-course-in-operating-systems/"></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.zvolkov.com/clog/2011/11/09/mit-course-in-operating-systems/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Buying a monitor</title>
		<link>http://www.zvolkov.com/clog/2011/10/23/buying-a-monitor/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=buying-a-monitor</link>
		<comments>http://www.zvolkov.com/clog/2011/10/23/buying-a-monitor/#comments</comments>
		<pubDate>Mon, 24 Oct 2011 02:13:12 +0000</pubDate>
		<dc:creator>zvolkov</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.zvolkov.com/clog/?p=226</guid>
		<description><![CDATA[Continuing my &#8220;spending money&#8221; series, today I&#8217;ll explain what I was looking for in a monitor. Before buying a monitor, I&#8217;ve spent a great deal of time researching monitor technologies and stuff. If you a programmer, here are the main things you want in a monitor: Stand This is big. I can&#8217;t tell you how [...]]]></description>
			<content:encoded><![CDATA[<p>Continuing my &#8220;spending money&#8221; series, today I&#8217;ll explain what I was looking for in a monitor.<br />
Before buying a monitor, I&#8217;ve spent a great deal of time researching monitor technologies and stuff.<br />
If you a programmer, here are the main things you want in a monitor:</p>
<p><strong>Stand</strong></p>
<p>This is big. I can&#8217;t tell you how many monitors come with a stand that can tilt but can&#8217;t go up and down. If you spend many hours in front of your monitor, you really want your screen to be at your eye level. Get yourself a <strong>height-adjustable</strong> monitor, your back and neck will thank you.</p>
<p><strong>TFT panel</strong></p>
<p>100% of laptop screen and perhaps 90% of desktop monitors on the market use so-called <strong>TN</strong> panels. While TN panels are cheaper and they do redraw faster (good for games) they have one annoying feature: the screen brightness / contrast changes depending on the angle you&#8217;re looking at. Some TN panels are so bad that only the middle of the screen looks good, while top and bottom are darker.</p>
<p>This problem is fixed in <strong>IPS</strong> panels, which also provide better colors as well. They are more expensive though, but if you spend most of your waking time in front of a monitor, you don&#8217;t want to economize on it. Your eye doctor bill will cost much more, believe me.</p>
<p>Now, there are many sub-types of IPS panels (e-IPS, h-IPS, s-IPS) but these are just marketing names, don&#8217;t pay attention to them. What&#8217;s actually important are the actual characteristics of the panel, and with a bit of effort you can look them up. Go to <a href="http://www.tftcentral.co.uk/panelsearch.htm">TFT Central Panel Search Database</a> and enter model code of the monitor you are considering e.g. &#8220;U2410&#8243;. This will give you code of actual TFT panel e.g. &#8220;LM240WU4-SLB1&#8243;. Then go to <a href="http://www.tftcentral.co.uk/articles/monitor_panel_parts.htm">TFT Central Monitor Panel Part Database</a> and find the panel specifications. Make sure your panel number matches exactly. Even a one-letter difference can be a completely different panel with totally different characteristics.</p>
<ol>
<li>Make sure your panel is actually an IPS. If you can&#8217;t afford one, get an <strong>MVA</strong> or <strong>PVA</strong> panel, but never buy a TN.</li>
<li>Make sure your panel is not a 6-bit one. If it just says 16.7M colors without mentioning bits, it should be safe to assume it&#8217;s an <strong>8-bit pane</strong>l. Obviously, 6-bit panels can show 8 times less colors than 8-bit ones (6 bits x RGB vs. 8 bits x RGB). This is especially noticeable on shades of gray which set Red, Green and Blue to the same value. While 8-bit panels will give 256 shades of gray, 6-bit ones will give only 64! To hide this limitation manufacturers employ  a trick called &#8221;<strong>FRC</strong>&#8221; (Frame Rate Control) &#8212; basically blinking the pixel between two colors to simulate the color in between. Needless to say, this increases eye strain.</li>
<li>Make sure your panel is not a 10-bit one. Both true 10-bit panels, as well as 8-bit panels emulating 10 bit through FRC are bad for programmers. True 10 bits produce over-saturated colors &#8212; good for movies and games but not for coding. 8-bit FRC are not as bad for eye strain as 6-bit FRC ones, but you should avoid them as well.</li>
</ol>
<p><strong>Resolution and size</strong></p>
<p>These days, the standard resolution is 1920&#215;1080 (aka Full HD). Now, depending on the physical size, these pixels will either be spread over 27 inches or crammed in 17 inches.</p>
<p>Bigger screen with smaller resolution (=bigger pixel size) is generally better for your eyes. What you want to avoid is big screen size <em>and </em>lots of pixels &#8212; too much screen space means you will not be able to see it all and will have to move your eyes and even your head a lot more! This can not only reduce your productivity, but even cause a headache.</p>
<p>Based on the above, the monitor <strong>bigger than 24 inches is probably too big for a developer</strong>. Resolution-wise, anything smaller than 1400&#215;1050 is <em>way</em> too small for anyone but hardcore <em>vim</em> fans, while anything more than 2000 pixels wide will result in tiny pixels (= small fonts).</p>
<p><strong>Widescreen ratio</strong></p>
<p>While 16:9 widescreens are good for movies, they are not so good for programming. Remember, your are looking at code, which is rarely longer than a hundred chars, but usually much longer than 100 lines. You want to see as many lines of code as possible without scrolling. More lines of code reduces pressure on your short- term memory. Your brain will thank you.</p>
<p>As you understand, this means that (given the same resolution and pixel size) <strong>16:10</strong> monitors are better than 16:9, while <strong>4:3</strong> are the best, for us, code monkeys.</p>
<p><strong>Number of monitors</strong></p>
<p>Two smallish monitors is better than one huge monster. Here&#8217;s why. Because most programmers tend to run their IDEs and editors full-screen, multiple monitors give you natural boundaries for your maximized windows. While you can simulate those boundaries with software-based virtual desktops, nothing beats simplicity of multiple monitors.</p>
<p><strong>Putting it all together</strong></p>
<p>Based on the above the ultimate development workstation should have two or three 1600&#215;1200 monitors (or 1400&#215;1050). The biggest 1600&#215;1200 screens in existence are 21.3&#8243; &#8212; anything bigger will be 16:10. Don&#8217;t get me wrong, 21.3&#8243; at 1600&#215;1200 is a great size, with nice chunky pixels. There are two problems with this idea though. One, you can&#8217;t watch native BD-movies, and two, it is almost impossible to find 1600&#215;1200 monitors with 8-bit IPS panels, and if you find them they tend to be <em>very </em>expensive $1000+ professional screens.</p>
<p><strong>Dismissed choices</strong></p>
<ul>
<li><strong>Dell U2410m</strong> &#8212; is an 8-bit FCR IPS, too expensive at $500.</li>
<li><strong>Dell u2412m,</strong> is a 6-bit FCR IPS, plus Dell.com charges sales tax which amounts to extra $20.</li>
<li><strong>Dell U2312m </strong>is an affordable IPS screen, but it is a 6-bit FCR and too wide at 1900&#215;1080.</li>
<li><strong>NEC 2190UXp</strong> is fantastic 1600&#215;1200 21.3&#8243; PVA, way too expensive at $850!</li>
<li><strong>NEC 2090UXi</strong> is a great 1600&#215;1200 20&#8243; 8-bit IPS, again too expensive at $700</li>
<li><strong>LG IPS231P </strong>is a cheap 6-bit FCR IPS, again too wide at 1920&#215;1080</li>
<li><strong>LG L2000CP-BF </strong>is a bit small at 20&#8243; 1600&#215;1200, but is a real 8-bit IPS. The question is, do you want to pay $400 for that?</li>
</ul>
<p>Most others were either countless cheap TN panels or way too expensive professional IPSes like Eizo and NEC.</p>
<p><strong>And the winner is</strong></p>
<p>If I had limitless supply of money, I would get two <strong>NEC 2190UXp </strong>for the total of mind-boggling $1700!. But since my family still has to eat, I had to settle on something cheaper. I have browsed through endless lists of reviews and specifications before choosing Hewlett Packard&#8217;s good old <strong>HP ZR24w</strong>. Being a 24 inch 1920&#215;1200 monitor (16:10) it is almost too big, but it does have an 8-bit IPS matrix, and a nice pixel size, and a good height-adjustable base. At the moment of this writing <a href="http://www.bhphotovideo.com/c/product/684126-REG/HP_Hewlett_Packard_VM633A8_ABA_ZR24w_24_Widescreen_LCD.html">BHPhotoVideo</a> has the best price: $340 with free shipping and no tax. Beware of an &#8220;improved&#8221; version of same monitor, <strong>HP ZR2440w. </strong> Even though it costs more, it has a much inferior 6-bit panel&#8230;</p>
<p>UPDATE: <span style="color: #ff0000;">Don&#8217;t buy</span> HP ZR24w, it&#8217;s a piece of crap! Its backlight fixture makes buzzing noise and its viewing angle is horrible for an IPS panel. Next to my 24&#8243; iMac circa 2008 (same size, same resolution) the HP looks colorless and milky. I should have bought NEC instead.</p>
<div class="plus-one-wrap"><g:plusone size="medium" count="false" href="http://www.zvolkov.com/clog/2011/10/23/buying-a-monitor/"></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.zvolkov.com/clog/2011/10/23/buying-a-monitor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bye-bye Godaddy!</title>
		<link>http://www.zvolkov.com/clog/2011/10/22/bye-bye-godaddy/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=bye-bye-godaddy</link>
		<comments>http://www.zvolkov.com/clog/2011/10/22/bye-bye-godaddy/#comments</comments>
		<pubDate>Sun, 23 Oct 2011 01:48:30 +0000</pubDate>
		<dc:creator>zvolkov</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.zvolkov.com/clog/?p=222</guid>
		<description><![CDATA[Today I&#8217;m totally happy. Earlier this year I have migrated this blog from BlogEngine.NET onto WordPress. Today I have finished moving all my web sites off Godaddy and onto Linode VPS. Here&#8217;s the stack I run now: openSUSE Linux 11.4. Liking it more than Ubuntu so far. Compare names: &#8220;apt-get&#8221; vs. &#8220;zypper&#8221;. The standard greeting [...]]]></description>
			<content:encoded><![CDATA[<p>Today I&#8217;m totally happy. Earlier this year I have migrated this blog from BlogEngine.NET onto WordPress.<br />
Today I have finished moving all my web sites off Godaddy and onto Linode VPS.<br />
Here&#8217;s the stack I run now:</p>
<ul>
<li><strong>openSUSE Linux 11.4</strong>. Liking it more than Ubuntu so far. Compare names: &#8220;apt-get&#8221; vs. &#8220;zypper&#8221;. The standard greeting says &#8220;Have a lot of fun!&#8221;.</li>
<li><strong>nginx</strong>. Superfast, simple, powerful web-server optimized for static content (but not only). Helped me configure redirects from zvolkov.com/blog to zvolkov.com/clog and from zvolkov.com/poignant_ru to www.poignant.ru.</li>
<li><strong>MySQL</strong>. Moving two WordPress databases I had on Godaddy over was a piece of cake.</li>
<li><strong>PHP with PHP-FPM and APC</strong>. The latter is an opcode cache for PHP.</li>
<li><strong>WordPress</strong>. I was concerned about moving existing WordPress installation from Windows to Linux by copying files, but surprisingly, this was painless.</li>
<li><strong>WP Super Cache</strong>. This plugin creates static gzip files for each WordPress post, which then can be served by ngnix w/o the overhead of PHP and SQL processing.</li>
</ul>
<p>By far the most interesting and demanding part of the move was tweaking nginx.</p>
<div class="plus-one-wrap"><g:plusone size="medium" count="false" href="http://www.zvolkov.com/clog/2011/10/22/bye-bye-godaddy/"></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.zvolkov.com/clog/2011/10/22/bye-bye-godaddy/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Permanent redirect static pages from Godaddy Windows IIS using httpRedirect in Web.Config</title>
		<link>http://www.zvolkov.com/clog/2011/10/21/permanent-redirect-static-pages-from-godaddy-windows-iis-using-httpredirect-in-web-config/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=permanent-redirect-static-pages-from-godaddy-windows-iis-using-httpredirect-in-web-config</link>
		<comments>http://www.zvolkov.com/clog/2011/10/21/permanent-redirect-static-pages-from-godaddy-windows-iis-using-httpredirect-in-web-config/#comments</comments>
		<pubDate>Fri, 21 Oct 2011 13:21:47 +0000</pubDate>
		<dc:creator>zvolkov</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://zvolkov.com/clog/?p=203</guid>
		<description><![CDATA[Today I moved my Russian translation of W(p)GtR from Godaddy to my shiny new Linode VPS. What I needed though, is to redirect people visiting the old site, to the new site. My old site was running on Windows / IIS / ASP.NET so I could not use Godaddy&#8217;s Redirect URL feature in Control Panel [...]]]></description>
			<content:encoded><![CDATA[<p>Today I moved <a href="http://www.poignant.ru">my Russian translation of W(p)GtR</a> from Godaddy to my shiny new <a href="http://www.linode.com/">Linode VPS</a>.<br />
What I needed though, is to redirect people visiting the old site, to the new site.<br />
My old site was running on Windows / IIS / ASP.NET so I could not use Godaddy&#8217;s Redirect URL feature in Control Panel which only works on Linux accounts.<br />
To redirect those visitors hitting the folder (i.e. zvolkov.com/poignant_ru), I added <code>default.asp</code> with following content:</p>
<pre class="brush: vb; gutter: false; toolbar: false; auto-links: false;">&lt;%@ Language=VBScript %&gt;
&lt;%
Response.Status="301 Moved Permanently"
Response.AddHeader "Location","http://www.poignant.ru"
%&gt;</pre>
<p>
This was easy. The trick was to redirect visitors to individual static .html pages &#8212; and here&#8217;s how I solved it.<br />
Basically, you need to add a web.config to your folder with <code>httpRedirect</code> tag in it, like this:
</p>
<pre class="brush: xml; gutter: false; toolbar: false; auto-links: false;">&lt;configuration&gt;
&lt;system.webServer&gt;
  &lt;httpRedirect enabled="true" exactDestination="true" httpResponseStatus="Permanent"&gt;
     &lt;add wildcard="*ch1.html" destination="http://www.poignant.ru/ch1.html" /&gt;
     &lt;add wildcard="*ch2.html" destination="http://www.poignant.ru/ch2.html" /&gt;
     &lt;add wildcard="*ch3.html" destination="http://www.poignant.ru/ch3.html" /&gt;
     &lt;add wildcard="*ch4.html" destination="http://www.poignant.ru/ch4.html" /&gt;
     &lt;add wildcard="*index.html" destination="http://www.poignant.ru/index.html" /&gt;
     &lt;add wildcard="*copyright.html" destination="http://www.poignant.ru/copyright.html" /&gt;
     &lt;add wildcard="*help.html" destination="http://www.poignant.ru/help.html" /&gt;
     &lt;add wildcard="*WpGtR_rus.pdf" destination="http://www.poignant.ru/WpGtR_rus.pdf" /&gt;
  &lt;/httpRedirect&gt;
&lt;/system.webServer&gt;
&lt;/configuration&gt;</pre>
<p>
Works like a charm! You will notice that the site is significantly faster now.<br />
This is because it is served by <a href="http://en.wikipedia.org/wiki/Nginx">nginx</a>, a relatively new super-speed web server.<br />
Next week I will be moving my blogs as well.</p>
<div class="plus-one-wrap"><g:plusone size="medium" count="false" href="http://www.zvolkov.com/clog/2011/10/21/permanent-redirect-static-pages-from-godaddy-windows-iis-using-httpredirect-in-web-config/"></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.zvolkov.com/clog/2011/10/21/permanent-redirect-static-pages-from-godaddy-windows-iis-using-httpredirect-in-web-config/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building my PC, part 3</title>
		<link>http://www.zvolkov.com/clog/2011/10/20/building-my-pc-part-3/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=building-my-pc-part-3</link>
		<comments>http://www.zvolkov.com/clog/2011/10/20/building-my-pc-part-3/#comments</comments>
		<pubDate>Thu, 20 Oct 2011 13:23:17 +0000</pubDate>
		<dc:creator>zvolkov</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://zvolkov.com/clog/?p=197</guid>
		<description><![CDATA[Ok, I must admit, I&#8217;m just enjoying spending money. Then again, what kind of computer is complete until you spend a fortune? Here&#8217;s what I bought since the last post: DVD &#8212; $70 The tough part about choosing a DVD-reader-writer is to find one that would match the front panel. I have settled on this [...]]]></description>
			<content:encoded><![CDATA[<p>Ok, I must admit, I&#8217;m just enjoying spending money. Then again, what kind of computer is complete until you spend a fortune? Here&#8217;s what I bought since the last post:</p>
<p><strong>DVD &#8212; $70</strong></p>
<p>The tough part about choosing a DVD-reader-writer is to find one that would match the front panel. I have settled on this <a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16827136226">LG WH12LS30</a>. It&#8217;s a multiformat Blu-Ray / DVD / CD reader and writer. Perhaps more importantly, it&#8217;s front panel more-or-less matches my Corsair 650D&#8217;s black brushed aluminium front.</p>
<p><strong>HDD &#8212; $65</strong></p>
<p>Considering that I have an SSD as my primary drive, the main factor in the purchase of an HDD for me was <em>noise</em>. I hate those bird chirping sounds most hard-drives emit, but more than the chirping, over years I came to hate the hiss of a rotating spindle. That&#8217;s why I decided to go with this 1 Tb <a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16822136939">Western Digital Caviar Green WD10EARX</a>. According to <a href="http://www.silentpcreview.com/New_3TB_WD_Caviar_Green_Hard_Drive">these tests by silentpcreview.com</a>, its 2Tb brother is the quietest of all 3.5&#8243; hard drives on the market today. Now, these tests were done before the 1Tb version was available. Given that the 2Tb version has 3 actual disks inside, the 1Tb is likely to have only 2 disks. This guess is supported by the <a href="http://www.wdc.com/wdproducts/library/SpecSheet/ENG/2879-701229.pdf">WD spec sheet</a>, which says that WD10EARX is 40 grams lighter than WD20EARX, requires 0.10VDC less power, and emits 1dbA less noise. From first hand experience I must say this is the quietest hard drive I have ever seen in my life.</p>
<p><strong>Total cost - $1376 (plus shipping)</strong></p>
<p>That&#8217;s it for today. The next up is the Monitor.</p>
<div class="plus-one-wrap"><g:plusone size="medium" count="false" href="http://www.zvolkov.com/clog/2011/10/20/building-my-pc-part-3/"></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.zvolkov.com/clog/2011/10/20/building-my-pc-part-3/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Building my PC part 2</title>
		<link>http://www.zvolkov.com/clog/2011/10/05/building-my-pc-part-2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=building-my-pc-part-2</link>
		<comments>http://www.zvolkov.com/clog/2011/10/05/building-my-pc-part-2/#comments</comments>
		<pubDate>Wed, 05 Oct 2011 21:43:31 +0000</pubDate>
		<dc:creator>zvolkov</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://zvolkov.com/clog/?p=188</guid>
		<description><![CDATA[This is fun. Researching, assembling, testing my own baby computer. Dimensions Make sure your components will actually physically fit together. First, make sure your case is big enough for your Power Supply and your motherboard. You can get dimensions of both before you by them. If you have a non-standard CPU cooler, like I do, [...]]]></description>
			<content:encoded><![CDATA[<p>This is fun. Researching, assembling, testing my own baby computer.</p>
<p><strong>Dimensions</strong></p>
<p>Make sure your components will actually physically fit together.</p>
<p>First, make sure your case is big enough for your Power Supply and your motherboard. You can get dimensions of both before you by them.</p>
<p>If you have a non-standard CPU cooler, like I do, make sure it will fit in the case height-wise. Make sure the memory will fit with the cooler installed.</p>
<p>If you&#8217;re planing on a big-ass video-card, make sure it will fit length-wise into the case. Make sure it won&#8217;t obstruct other slots on the motherboard that you are going to use.</p>
<p>If you&#8217;re buying *high* memory DIMMs (the new style, with heat radiators), make sure they won&#8217;t bump into your video card or your CPU cooler.</p>
<p>Luckily, I had very little issues with the above. I ordered a huge case, so my CPU cooler (barely) fit. But I had to install it facing the backpanel, to resolve the conflict with my DIMMs.</p>
<p><strong>Noise</strong></p>
<p>Standard fans that come with case &#8212; any case, even a $175 one &#8212; are crappy. Meaning, they produce lots of noise.</p>
<p>First, if your case has 3 or more fans &#8212; you may not even need them all. Two good fans should be plenty enough.</p>
<p>Next, I&#8217;m replacing the exhaust fan (the one on the backpanel) with this $17 <a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16835185171">Scythe</a>. Since it is 4 pin (<strong>P</strong>ulse <strong>W</strong>idth <strong>M</strong>odulation), I can plug it into MB and have the BIOS slow it down when cold. It <strong>also</strong> comes with a tiny knob of its own which I can rotate to adjust the lowest speed.</p>
<p>My Scythe will only produce 7 decibels of noise on its lowest setting. This is very good, but remember, multiple fans add up. If you have a fan on the top of the case (I do), see if you can replace that one too. I&#8217;m getting <a href="http://www.amazon.com/gp/product/B002LE8BJA">a 200mm Coolermaster</a> for $16.  It may look obnoxious with those red LEDs, but it will push the air at 110 <strong>C</strong>ubic <strong>F</strong>eet per <strong>M</strong>inute while making only 19 decibels of noise. If worse comes to worse, I think I can cut those leds off.</p>
<p>Again, measure twice, cut once. The fans come in  different diameters (120mm, 140mm, 200mm are most common), but most importantly they have different distances between their mounting holes, and different depths (=thickness) too.</p>
<p><strong>Hard Drive</strong></p>
<p>After long hesitations I decided to buy an 128GB Crucial m4 SSD for $200. Why SSD? Because it&#8217;s been more than 3 years since they became common and I must check whether those super-speed myths are true. Why Crucial m4? Because Crucial is an old-school memory company that cares about quality, unlike OCZ who make super-fast SSDs that crash. That simple.</p>
<p><strong>Total Cost</strong></p>
<p>This brings my total cost from $1008 to $1241 (plus shipping, so probably more like $1300). The only thing I&#8217;m missing is a video card. Another $200. So the total cost is going to be $1500. Not bad for a rig made off of top of the [mainstream] line components.</p>
<p>This is it for now, and since I personally know one person who reads my blog, I can tell you: <strong>you should totally do it, Igor!</strong></p>
<div class="plus-one-wrap"><g:plusone size="medium" count="false" href="http://www.zvolkov.com/clog/2011/10/05/building-my-pc-part-2/"></g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.zvolkov.com/clog/2011/10/05/building-my-pc-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

