<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Alex Slover</title>
	<atom:link href="http://alexslover.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://alexslover.com</link>
	<description></description>
	<lastBuildDate>Thu, 05 Jan 2012 08:16:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='alexslover.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Alex Slover</title>
		<link>http://alexslover.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://alexslover.com/osd.xml" title="Alex Slover" />
	<atom:link rel='hub' href='http://alexslover.com/?pushpress=hub'/>
		<item>
		<title>Lion will mess with your head &#8211; and your processes</title>
		<link>http://alexslover.com/2011/07/23/lion-will-mess-with-your-head-and-your-processes/</link>
		<comments>http://alexslover.com/2011/07/23/lion-will-mess-with-your-head-and-your-processes/#comments</comments>
		<pubDate>Sat, 23 Jul 2011 20:55:06 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[technology]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[lion]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[os x]]></category>
		<category><![CDATA[upgrade]]></category>

		<guid isPermaLink="false">http://alexslover.com/?p=259</guid>
		<description><![CDATA[Last time a new version of Mac OS X came out, I upgraded right away. This turned out to be a bit of a mistake— the .0 release of Snow Leopard froze up a lot and even KP&#8217;d on me a couple times. Everything was cleared up with the .1 release not even two weeks [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alexslover.com&amp;blog=9740962&amp;post=259&amp;subd=alexslover&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Last time a new version of Mac OS X came out, I upgraded right away. This turned out to be a bit of a mistake— the .0 release of Snow Leopard froze up a lot and even KP&#8217;d on me a couple times. Everything was cleared up with the .1 release not even two weeks later, but I vowed never to use a .0 release of OS X again. Now Lion is out and— damn!— I&#8217;ve gone and done it again. Except, not really. This time I have Jake as my guinea pig. He&#8217;s a registered developer and so had access to the beta, and assured me it was stable as could be. So far, he&#8217;s right. If you&#8217;re holding off on Lion for that reason alone, go ahead and take the plunge.</p>
<p>I&#8217;ve got a few general comments I want to zoom through before I get to the real meat of why I&#8217;m writing this post. Let&#8217;s do them in my patented bullet-list style so I can spare you my engineer&#8217;s purple prose.</p>
<ul>
<li>Apple has messed with the appearance again. The change is so slow, and so far between, that it&#8217;s easy to fool yourself into thinking that OS X has remained visually constant over its seven releases, but nothing could be farther from the truth. If you compare OS X 10.0 to today, it&#8217;s shocking how subdued the appearance has become. Do you remember the pinstripes everywhere? Ick! It&#8217;s almost like Apple is moving in the opposite direction to Microsoft in terms of visual evolution, and the trend continues with Lion: the famous capsule-shaped buttons are now square, gradients have been replaced by solid colors, blue has often been replaced by grey. I like it, though a few of their choices are irksome: the &#8220;stoplight&#8221; buttons in the upper-left of windows have been inexplicably shrunk and are smaller click targets. Why? Who knows. The inexplicable exception is iCal and the Address Book, which are now hideously ugly. I never used those to begin with so it doesn&#8217;t bother me, but what the hell went wrong <a href="http://static.arstechnica.net/2011/07/18/lion_ical_week-4e24a3a-intro.png">here?</a> Apple, we need an option to turn that monstrosity off. Happily, there are also changes to the Mail interface, which are very much for the better. Three-pane browsing, yay!</li>
<li>Apple is determined to bring as much of the iPad experience to the desktop as they can. One of the most evident places is the abundance of new trackpad gestures: swipe to change screens, swipe to bring up the application launcher, etc. If you haven&#8217;t been using the trackpad on your fancy Mac for navigation and other tasks yet, I can&#8217;t recommend it enough: if you&#8217;re performing tasks where your fingers aren&#8217;t on the keys, keeping them that way has a measurable productivity boost. My one issue was that I had <em>already</em> been doing this sort of thing with <a href="http://www.jitouch.com/index.php?page=jitouch">jiTouch</a>, so there were a bunch of gesture conflicts. Check for application compatibility before you upgrade! (TrueCrypt breaks too, you&#8217;ll need to get an <a href="http://www.schmidp.com/2011/06/07/mac-os-x-10-7-lion-truecrypt-howto/">updated version of MacFUSE</a> before you can proceed)</li>
<li>Performance seems about the same. Maybe slightly faster. Though in their never-ending quest to provide more eye candy, Apple has now made Finder windows expand to their full size with a quick animation when you open them. Why? Who knows. I don&#8217;t think this has caused opening a Finder window to take any more time than it used to in absolute terms, but it <em>feels</em> slower, and that&#8217;s all users care about.</li>
<li>Support for full-screen apps is awesome on so many levels. I&#8217;ve often been working that way anyway— my Chrome window is always fullscreened, and I&#8217;ve applied various hacks to get Aquamacs and the Terminal close too— but having every application be able to take up the whole screen will rule, as soon as third-party developers get the necessary code in place. Having the operating system be able to <em>fully</em> get out of your way so you can focus on what you&#8217;re doing is an absolute win.</li>
</ul>
<p>So there&#8217;s that. Now let&#8217;s talk about the biggest set of changes in Lion, and the one that&#8217;s most likely to baffle and rile people.</p>
<p>I shouldn&#8217;t have to tell you that its Apple&#8217;s mission to make interacting with the computer as easy as possible, even if that comes at the expense of fine-grained control over what&#8217;s happening. Lion continues this trend in a couple ways.</p>
<p>First, autosaving. Third-party programs like Office have often rolled their own autosave functionality, but there now APIs so that any application can do it with the operating system&#8217;s help. The autosave and versioning functionality is so constant and so pervasive, that there is literally no need to actually save your documents now— Lion is doing it for you. Open up TextEdit and you&#8217;ll see that <em>there is no Save option anymore.</em> It has been replaced with &#8220;Save a Version&#8221;, which essentially forces the autosave feature to keep that particular version no matter what (normally it eventually stops saving versions). As computer users, we&#8217;ve been trained so thoroughly so periodically save our work that it&#8217;s second-nature. It&#8217;s practically part of the standard procedure of using a computer, like clicking &#8220;Shut Down&#8221; when you&#8217;re ready to power down. Apple has gone and said, &#8220;Wait, since everyone does this, and everyone <em>should</em> be doing it- why do they have to do it themselves? Why can&#8217;t it be part of the operating system?&#8221; The idea is that isolating you from accidental deletions and application crashes should be the operating system&#8217;s responsibility, just like isolating you from the details of the TCP/IP stack when you browse the Web. It does make sense if you think about it (I promise!), but it flies so firmly in the face of how we&#8217;ve been using computers up until now that it may take some getting used to. You don&#8217;t have to hit Save! It&#8217;ll be OK!</p>
<p>Second, and this is the one that&#8217;s <i>really</i> to drive computer geeks up the wall, Apple has now decided to start shielding you from whether or not applications are running, and when they start and stop. What does that mean? It means that Lion can quit your applications whenever it wants, if it decides it needs the additional resources (note: just like iOS). I can already see many of you starting to hyperventilate at this possibility, so let me explain why this isn&#8217;t as crazy as it sounds. First, because of the autosave functionality and because Lion can restore applications to their exact state&mdash; right down to what text was highlighted when you quit&mdash; if Lion quits an application and you start it back up, it will be exactly as if it had never quit at all. Second, Lion is pretty conservative about when it kills a program: it won&#8217;t kill it if it has open windows, or is blocked on waiting for data from the disk or network. Here, Apple has said, &#8220;As far as the user is concerned, what does it actually matter whether the application is running or not? If the state is always preserved (and it is), the user shouldn&#8217;t care about whether there&#8217;s a CPU process for that program. Quitting a program to free resources is something the OS should handle.&#8221;. Bottom line? You don&#8217;t have to quit programs any more. Just keep opening them up, and when Lion needs the resources, it&#8217;ll kill a program that isn&#8217;t in use. When you need that program again, open it up, and the state restoration will guarantee that it hasn&#8217;t changed.</p>
<p>So: you don&#8217;t have to Save, and you don&#8217;t have to Quit. Two of the most fundamental operations in how we interact with computers&mdash; these predate the GUI, for heaven&#8217;s sake&mdash; deprecated in one stroke. They&#8217;re still there, for the moment, but don&#8217;t be surprised if there comes a time in the future when OS X doesn&#8217;t have them at all. This is the future, folks. Swallow your fears and climb aboard.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/alexslover.wordpress.com/259/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/alexslover.wordpress.com/259/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/alexslover.wordpress.com/259/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/alexslover.wordpress.com/259/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/alexslover.wordpress.com/259/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/alexslover.wordpress.com/259/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/alexslover.wordpress.com/259/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/alexslover.wordpress.com/259/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/alexslover.wordpress.com/259/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/alexslover.wordpress.com/259/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/alexslover.wordpress.com/259/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/alexslover.wordpress.com/259/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/alexslover.wordpress.com/259/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/alexslover.wordpress.com/259/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alexslover.com&amp;blog=9740962&amp;post=259&amp;subd=alexslover&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://alexslover.com/2011/07/23/lion-will-mess-with-your-head-and-your-processes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Alex</media:title>
		</media:content>
	</item>
		<item>
		<title>Getting an SDET internship at Microsoft</title>
		<link>http://alexslover.com/2010/11/17/getting-an-sdet-internship-at-microsoft/</link>
		<comments>http://alexslover.com/2010/11/17/getting-an-sdet-internship-at-microsoft/#comments</comments>
		<pubDate>Wed, 17 Nov 2010 20:50:54 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[advice]]></category>
		<category><![CDATA[interview]]></category>
		<category><![CDATA[job]]></category>
		<category><![CDATA[microsoft]]></category>

		<guid isPermaLink="false">http://alexslover.com/?p=232</guid>
		<description><![CDATA[When you graduate from college with a CS degree, potential employers aren&#8217;t terribly interested with the knowledge you gained from your classes. I mean, they are, but what they care about more is how well you can meet project deadlines, how quickly you can start working with their codebase/algorithms/platforms when you start the job, can [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alexslover.com&amp;blog=9740962&amp;post=232&amp;subd=alexslover&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>When you graduate from college with a CS degree, potential employers aren&#8217;t terribly interested with the knowledge you gained from your classes. I mean, they are, but what they care about more is how well you can meet project deadlines, how quickly you can start working with their codebase/algorithms/platforms when you start the job, can you communicate well with your teammates and managers, how fast can you pick up new knowledge, that sort of thing. These kinds of things are difficult to learn in class; doing projects helps but really the best way to improve is to actually have job experience. This is true with a lot of majors, but, in my opinion, CS more than most. Thus, during the Fall semester, most of us spend as much time worrying about getting a summer internship as we do about our classes. Don&#8217;t get one, and you&#8217;re behind.  I actually applied to Microsoft last year, and made it to their second-round interviews. In case you&#8217;re not familiar with Microsoft&#8217;s interview process, they do first-rounds over the phone or in person at your school, and if they like what they saw, they transport you to Redmond (or occasionally other places, depending on what group you&#8217;re interviewing with) and subject you to the infamous back-to-back-to-back 45-minute interviews. Almost immediately after those, you find out whether you got the job or not.</p>
<p>Last year, as it turned out, the answer for me was &#8220;not&#8221;; I ended up spending the summer at Cisco, helping port some security appliance code to 64-bit (good times, hopefully more about that in a later post). This year my fortunes were significantly better: I landed the job. Starting at the very end of May next year, I&#8217;m going to be working with the online services division, specifically Bing. Hooray!  Now I get to pass the secrets of my success unto you. There are already literally dozens of blog posts about how to prepare for, and what to expect in, Microsoft interviews, but I still felt it was a good idea to throw my two cents in for a couple reasons. First, because other blog writers helped me, and I wanted to keep up the chain of good will (giving back, y&#8217;know?). Second, a lot of those posts are written for people applying for full-time positions, and things are a little easier for potential interns. I mean, it&#8217;s not a cake walk, but they know you don&#8217;t have years of work experience to draw on, and they&#8217;re fair about assessing you accordingly. Third, because I want to boil down the several really vital tips I think you should know for the final-round questions. In fact, I&#8217;m going to do that right off the bat, before I describe the interview process and the kinds of questions I got, because remembering these things is so important.</p>
<h4>The Three Things You <strong>Must</strong> Remember at a Microsoft Interview</h4>
<ol>
<li><em>Ask Your Interviewer Clarifying Questions</em> &#8211; This is so important it should be 1 and 2. No matter what kind of question you get asked— whether it&#8217;s &#8220;code this&#8221; or &#8220;test this&#8221; or &#8220;design this&#8221; or &#8220;how would you do this&#8221;— ask your interviewer questions to be sure you understand exactly what it is they want. Sometimes they ask questions that are vague on purpose to see if you get them to clarify, and sometimes it&#8217;s totally unintentional, but you will <em>not</em> get all the information you need the first time around, I guarantee it.
<p>Asking questions not only helps you get closer to the right answer, but even more importantly, people who ask questions and know more precisely what it is they&#8217;re supposed to be doing, instead of jumping in and making mistakes which have to be corrected at great expense later, make much better software engineers.</li>
<li><em>Show Your Work</em> &#8211; And by this I don&#8217;t just mean write your code down on the board (that&#8217;s sort of a requirement). I mean, talk about your thought process, <strong>all</strong> of it. Everything that crosses your mind as you work out a solution to the problem should be discussed with your interviewer. For one question, when I was asked &#8220;How would you code this?&#8221;, I actually responded, &#8220;Well, the obvious way is to&#8230;&#8221;, and then tossed out a very bad, exponential-time answer, because that&#8217;s where my train of thought started. Of course, I immediately clarified that it was a bad way, and then explained how to go from my answer to a much better one. Even if you don&#8217;t go that far, always talk about what you&#8217;re doing and thinking.
<p>The reason for this is, again, they&#8217;re not that interested in the extent of your programming knowledge or skills— they already know you&#8217;re good enough on that score, otherwise you wouldn&#8217;t have come out to the final-round interviews in the first place. What they&#8217;re trying to figure out is how you think when presented with a problem; <em>that</em>&#8216;s how they find out if you&#8217;ll be an effective employee. Language syntax and even algorithms can be looked up on Wikipedia, bad thought processes can&#8217;t be corrected so easily. It has a more immediate advantage too: if you start going down a dead end on your solution to a problem, your interviewer might actually help you and say, &#8220;Is that such a great idea?&#8221;. If you silently puzzle away, they can&#8217;t assist you. Don&#8217;t be stoic, help them help you.</li>
<li><em>Be Thorough</em> &#8211; When you get asked to write down a piece of code, or even a test specification, you can be sure that your interviewer is going to try and come up with situations where it&#8217;ll break/fail. Microsoft writes code for the real world, not academic projects. You can stay one step ahead by making your solutions as robust as possible. Try to think of <strong>everything</strong>. What if a malloc() fails? If you&#8217;re iterating over an array, what if that array has so many elements that your loop index overflows? Does your string handle Unicode? What if the network connection goes down? If you&#8217;re using a random number generator, sometimes they block if there&#8217;s not enough entropy; what will your code do then? This can sound a little overwhelming, but you don&#8217;t have to think of all this stuff on the first draft of your code— just get it eventually. More than once I wrote down embarrassingly broken code at first (even though I had followed the first two steps), then corrected it to be bombproof over the course of the interview, and they like to see that: can you spot your mistakes and fix them?</li>
</ol>
<p>If you remember these three things, of which 1) and 2) are the most important, you&#8217;re in solid shape.  The overwhelming temptation when interviewing with Microsoft, or for any software job really, is to cram all manner of computer science information into your brain. This is a mistake, I think. Like I said, if you make it to the final-round interviews, they already pretty know you&#8217;re technically proficient enough, so don&#8217;t try to squeeze CS esoterica to get an advantage, it won&#8217;t help. What <em>will</em> help is problem-solving skills, not trivial facts. That being said, here&#8217;s the kind of before-hand preparation I think will help the most:</p>
<ul>
<li>You only need to know basic data structures <strong>but</strong> you need to know them backwards and forwards. Lists (singly- and doubly-linked, circular, etc.), list derivatives like queues/stacks, and trees are the must-haves. What you can probably count on is that you&#8217;re only going to be asked questions about simple data structures, but the questions themselves will be tough. For instance, any decent CS student can write a recursive function to iterate over every element in a tree, but can you write such a function iteratively? Pre-order and in-order traversals are a bit tricky, post-order traversal done iteratively is genuinely difficult (at least when you&#8217;re under the time and pressure constraints of an interview). I wasn&#8217;t asked this question in particular, but another interviewee in my group was.
<p>In addition to making you write familiar functions in unfamiliar ways, Microsoft also likes to make you write functions with no special cases. Can you insert an element into a doubly-linked list at a given index with <strong>no</strong> special cases at all?</p>
<p>Doing lots of problems like this beforehand will help a great deal. Write functions like the two described above, and think of other brain-twisters on lists and trees (I&#8217;m not going to give you any; coming up with them is as helpful as solving them!). Questions about string manipulation seem to be a favorite too: write a function to test whether a string contains another string, or whether two strings are anagrams of each other, things like that. Do as much practice as you can for things like this.</li>
<p></p>
<li>Practice testing things. This is a no-brainer if you&#8217;re applying for SDET, but dev applicants get testing questions too. You can be sure that you&#8217;ll be asked to test the code you just wrote, and you&#8217;ll want to know how to do that, but more abstract questions are equally common. For example, if your interviewer were to hand you the stapler on her desk and say, &#8220;Test this&#8221;, what would you do? You&#8217;ll want to be sure that you&#8217;re keeping my three guidelines above in mind, so I think a good start would go something like this:
<p>&#8220;Who&#8217;s using this stapler?&#8221; &#8211; Remember, <i>ask clarifying questions</i>. &#8220;Who is the target audience&#8221; is a great one that they love to see, as it indicates that you&#8217;re thinking about target markets and how to meet their needs. In this case, a stapler for use in a kindergarden might have very different requirements and a very different construction, hence, different test procedures, than one in a university library. Some staplers are huge things that can staple hundreds of sheets, is the stapler one of those? If so, how should its tests differ?</p>
<p>&#8220;Well, since the stapler is for X, we should probably start by Y&#8230;&#8221; &#8211; <i>Show your work</i>. Before you even start coming up with test cases, talk about <i>how</i> you&#8217;re going to come with tests. Are you going to divvy it up by feature, or by type of test (fuzz testing, performance testing, security testing&mdash; I&#8217;m not sure how well these apply to a stapler, but you get the idea)?</p>
<p>This goes for actual applications too. Sometimes, they actually sit you down in front of an application and ask you to test it. (It happened to me last year, but not this year). If it does happen, not only will you want to explore every nook and cranny of whatever app they put in front of you, but you&#8217;ll want to think like a programmer: if I had been the one to write this app, what mistakes might I have made? Put negative values, or strings, in boxes that take positive numbers. Rapidly click the &#8220;Save&#8221; button a dozen times to see if it breaks the write to disk. Turn off the computer&#8217;s wireless card while the application is making a network query. <i>Be Thorough</i>.</li>
</ul>
<p>The last thing I&#8217;ll do is talk quickly about some of the questions I got, and how I responded to them. These were last year&#8217;s questions (I think individual interviewers come up with their own questions rather than use anything company-prescribed, but even so, they might be a little miffed if I talk about the questions I got this year), and I&#8217;m going to speak in very general terms rather than give a total play-by-play, but they should help you understand the kinds of things you&#8217;re likely to see.</p>
<p><strong>Write and test a function to see if a string contains another string</strong></p>
<p>IIRC, this was part of my first interview of the four, really a warm-up question. I ended up coding it in Java (choice of language doesn&#8217;t really matter), using the straightforward solution of nested loops where you match the first character of the string to be found against successive characters in the enclosing string, then enter an inner loop if they match. Nothing too difficult here, but just don&#8217;t rush and make silly mistakes: for questions like this just make sure your loop indices are correct, and that you&#8217;re handling edge cases correctly, stuff like that. In this case, the testing involved coming up with lots of string pairs and checking whether my code returned the correct result. Again, at every stage in the process (maybe for every line of code you write), talk about what you&#8217;re doing and why.</p>
<p><strong>*hands me her ID badge to get into the building* &#8220;Test this&#8221;</strong></p>
<p>I badly botched this one, because this was my first time around and I wasn&#8217;t aware of my three guidelines. What I assumed she meant was that she wanted me to test the badge in isolation; it took a while before I realized she meant the entire system&mdash; card, card reader, the door locking mechanism connected to the card reader, the server the card reader connects to, the personnel database backing that server, and so on. She would&#8217;ve gladly mentioned this to me if I had asked, but I didn&#8217;t. I also just jumped in and start vomiting out a big list of test cases, another mistake. The way to go here would&#8217;ve been to draw (show your work!) a diagram of the whole system, and how the components interact, and then talk about testing each component in isolation, for each one enumerating the various kinds of tests (again: security, performance, fuzz testing, stress testing, usability testing, failure cases) and what cases would be necessary to perform them.</p>
<p><strong>You&#8217;ve founded a company that sells pens. How would you design your website?</strong></p>
<p>I still chuckle a little in admiration when I remember this, because it&#8217;s such a great question. &#8220;How would you design your website?&#8221; is just so vast, and is exactly the sort that can get you bogged down in a maze of unimportant details if you don&#8217;t handle it correctly. Again, the way to go is to <i>ask questions</i> first. </p>
<p>Who am I selling pens to? Home shoppers will probably only be buying one, looking at pretty pictures, and paying with PayPal; corporate users might buy ten thousand, want to know the pen&#8217;s specifications, and need your website to be able to charge to their expense account. Am I a local company selling to my county, or a multinational? This affects decisions like how robust your underlying application and database layers need to be, what kinds of third-party services you might need to tie into, and so on. Which parts of my company (shipping, billing, etc.) are being handled in-house, and which are being handled by other companies? If you make assumptions about the answers to these questions, and it turns out your assumptions are not the assumptions your interviewer is making, you&#8217;re going to design entirely the wrong site!</p>
<p>After that, I broke the website into parts (presentation, application, database), broke each of those parts into components, and then outlined a development strategy for each of those components. At one point I was actually asked how I would divvy up developer time among these various components, which surprised me a little as it seemed like more of a PM question. I took my best shot at it though, and that&#8217;s something you should also be ready for.</p>
<p>At the end of the day, though, the thing that&#8217;ll help you the most is if you just relax. The interviewers don&#8217;t grill you relentlessly: they&#8217;re easy-going and want you to chat with them. If you do a little beforehand preparation, take it easy and act normally, while remembering my tips above, you&#8217;re in a solid position. Good luck!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/alexslover.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/alexslover.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/alexslover.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/alexslover.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/alexslover.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/alexslover.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/alexslover.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/alexslover.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/alexslover.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/alexslover.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/alexslover.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/alexslover.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/alexslover.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/alexslover.wordpress.com/232/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alexslover.com&amp;blog=9740962&amp;post=232&amp;subd=alexslover&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://alexslover.com/2010/11/17/getting-an-sdet-internship-at-microsoft/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Alex</media:title>
		</media:content>
	</item>
		<item>
		<title>A logic puzzle for your Friday enjoyment</title>
		<link>http://alexslover.com/2010/10/29/a-logic-puzzle-for-your-friday-enjoyment/</link>
		<comments>http://alexslover.com/2010/10/29/a-logic-puzzle-for-your-friday-enjoyment/#comments</comments>
		<pubDate>Fri, 29 Oct 2010 14:49:05 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[entertainment]]></category>
		<category><![CDATA[math]]></category>
		<category><![CDATA[riddle]]></category>

		<guid isPermaLink="false">http://alexslover.com/?p=228</guid>
		<description><![CDATA[What kind of person would I be if I didn&#8217;t leave you with a brain-twisting logic puzzle to help work your neurons and burn off all those calories from your Halloween candy? A bad person, that&#8217;s what. And I&#8217;m not a bad person. So, let&#8217;s say you&#8217;ve heard of the Monty Hall problem. And you&#8217;re [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alexslover.com&amp;blog=9740962&amp;post=228&amp;subd=alexslover&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>What kind of person would I be if I didn&#8217;t leave you with a brain-twisting logic puzzle to help work your neurons and burn off all those calories from your Halloween candy? A bad person, that&#8217;s what. And I&#8217;m not a bad person.</p>
<p>So, let&#8217;s say you&#8217;ve heard of the <a href="http://en.wikipedia.org/wiki/Monty_Hall_problem">Monty Hall problem</a>. And you&#8217;re not like the uncultured masses, <em>you</em> know that the probability of getting the car if you switch is 2/3, not 1/2. And you feel so smart, don&#8217;t you, knowing the fundamentals of probability better than Joe Schmoe down the street. Well, try this one, tough guy:</p>
<p>Suppose you pick four cards out of a standard deck: the Ace of Spades, the Ace of Hears, the 2 of Spades, and the 2 of Hearts. You shuffle these four cards very well, and then hand two of them to me (we both know what the four cards are). So, now I&#8217;ve got two out of the four cards, and it&#8217;s your job to guess what the probability is that I have both aces.</p>
<p>At the moment, the probability is clear. There are six possible card combinations that I could have:</p>
<blockquote><p>A♠A♡   A♠2♠   A♠2♡</p>
<p>A♡2♠   A♡2♡   2♠2♡</p></blockquote>
<p>and since they occur with equal probability, I&#8217;ve got a 1/6 chance of having both aces.</p>
<p>But now I say, &#8220;I have at least one ace.&#8221; (and we will assume I&#8217;m not lying). Now we want to compute the probability of my having both aces, given that I have at least one. In math terms, this would be P( both aces | one ace ).</p>
<p>Well, there is one combination out of the six that does not have any aces (2♠2♡), and we can eliminate that possibility. So now my chance of having both aces rises to 1/5.</p>
<p>I don&#8217;t stop there, though. Now I say &#8220;I have the ace of spades&#8221;, and again, I&#8217;m not lying. What does this do to the probability? Clearly, it eliminates all of the possible combinations that don&#8217;t have the ace of spades, leaving</p>
<blockquote><p>A♠A♡   A♠2♠   A♠2♡</p>
<p><del>A♡2♠</del> <del>A♡2♡</del> <del>2♠2♡</del></p></blockquote>
<p>and so the probability is 1/3. Notice, though, that we could apply exactly the same reasoning if I had said &#8220;I have the ace of hearts&#8221;:</p>
<blockquote><p>A♠A♡   <del>A♠2♠</del> <del>A♠2♡</del></p>
<p>A♡2♠   A♡2♡   <del>2♠2♡</del></p></blockquote>
<p>and the probability would again be 1/3.</p>
<p>But wait a minute. We said before that if I announce, &#8220;I have one ace&#8221;, the probability that I have both aces is 1/5. But because we both know what the four cards are, if you know that I have one ace, you know it must be either the ace of spades or the ace of hearts, and either way, the probability of my having both aces is 1/3.</p>
<p>So which is it? If I say, &#8220;I have one ace&#8221;, do I have a one-in-five chance of having both aces, or a one-in-three chance? They can&#8217;t both be right. More importantly, explain <em>why</em> this is the case, and why the wrong answer this wrong (it&#8217;s very easy to be right for the completely wrong reason with this puzzle).</p>
<p>Now, this is not a trick question. It&#8217;s like the <a href="http://xkcd.com/blue_eyes.html">xkcd Blue Eyes</a> puzzle: there&#8217;s no lying or guesswork involved, and the solution is not some stupid out-of-the-blue side-attack that will make you groan. It takes some careful deliberation to work out the right answer.</p>
<p>I can&#8217;t claim credit for this question: Cornell&#8217;s Professor Halpern used it in a recent Decision Theory lecture to help illuminate the dangers of improperly constructed state spaces for us. I did a little Googling and couldn&#8217;t find it on the internet, though, so I figured I&#8217;d share it for your enjoyment.</p>
<p>I&#8217;ve tried to make the question as clear and unambiguous as possible, but if you need clarification on something, use the comments or you can hit me up on <a href="http://www.twitter.com/sloverlord/">Twitter</a>. Have fun!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/alexslover.wordpress.com/228/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/alexslover.wordpress.com/228/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/alexslover.wordpress.com/228/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/alexslover.wordpress.com/228/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/alexslover.wordpress.com/228/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/alexslover.wordpress.com/228/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/alexslover.wordpress.com/228/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/alexslover.wordpress.com/228/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/alexslover.wordpress.com/228/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/alexslover.wordpress.com/228/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/alexslover.wordpress.com/228/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/alexslover.wordpress.com/228/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/alexslover.wordpress.com/228/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/alexslover.wordpress.com/228/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alexslover.com&amp;blog=9740962&amp;post=228&amp;subd=alexslover&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://alexslover.com/2010/10/29/a-logic-puzzle-for-your-friday-enjoyment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Alex</media:title>
		</media:content>
	</item>
		<item>
		<title>Why I&#8217;m ditching Facebook</title>
		<link>http://alexslover.com/2010/09/06/why-im-ditching-facebook/</link>
		<comments>http://alexslover.com/2010/09/06/why-im-ditching-facebook/#comments</comments>
		<pubDate>Mon, 06 Sep 2010 23:06:47 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[contact]]></category>
		<category><![CDATA[facebook]]></category>

		<guid isPermaLink="false">http://alexslover.com/?p=211</guid>
		<description><![CDATA[I&#8217;ve been putting this off for several months now (meant to do it way back at the end of April), but I&#8217;m finally getting my butt in gear and shutting down my Facebook page. When I say &#8220;shutting down&#8221;, I mean as in total deletion, not just stopping using it. I&#8217;ve mentioned this plan to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alexslover.com&amp;blog=9740962&amp;post=211&amp;subd=alexslover&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been putting this off for several months now (meant to do it way back at the end of April), but I&#8217;m finally getting my butt in gear and shutting down my Facebook page. When I say &#8220;shutting down&#8221;, I mean as in total deletion, not just stopping using it. I&#8217;ve mentioned this plan to a couple friends and whatnot, some of whom responded apprehensively or negatively, so I just wanted to write this for those people, to explain my rationale as well as the reason why this doesn&#8217;t mean you can&#8217;t get in touch with me anymore. There are two key reasons why I&#8217;m bailing out:</p>
<ul>
<li><strong>I never use it anymore</strong>. I&#8217;ve just sorta stopped. If you look at my wall, on most days it&#8217;s big blocks of my status posts, with an occasional comment from someone else. I don&#8217;t upload pictures, don&#8217;t really look at anyone else&#8217;s status or what they&#8217;re doing, etc. I&#8217;m not totally sure why I&#8217;ve just gradually drifted away from Facebook, but I have a few theories (<em>indented </em>bulleted list, yay!)
<ul>
<li><strong>All I used it for was status updates</strong>. Sometime around the spring of 2009, I realized that pretty much the only thing I was using Facebook for was just broadcasting statuses: what I was doing, or what Slashdot article I was reading at the time. This is what my professors would call a &#8220;heavyweight solution to a lightweight problem&#8221;, which is why I signed up for <a href="http://www.twitter.com/sloverlord">Twitter</a> around the same time: same task, without the overhead. For a while I&#8217;ve just been linking my Facebook status to my Twitter feed, but that just presents a different problem: since I essentially ignore Facebook now, it means I&#8217;m shooting statuses off into the ether. People occasionally comment on them, and then I just look like a jerk for not responding.</li>
<li><strong>Facebook and me don&#8217;t really mesh</strong>. I&#8217;m going to be blunt here: I don&#8217;t have a lot of friends. I&#8217;m one of those people that has just a few really good friends, and I have other means besides Facebook for keeping in touch with them. This is sort of the opposite of the typical &#8220;Facebook model&#8221; where people have a lot of friends and use the site as a hub to coordinate communication with all of them. The other things people mention using Facebook for- like connecting with people from high school and so forth- don&#8217;t really apply to me either. I&#8217;ve really just run out of any good reason to keep using it, and having essentially not used it at all since April, I&#8217;ve found that I haven&#8217;t missed it.</li>
</ul>
</li>
<li><strong>Their privacy policy bugs me</strong>. It seems like clockwork that every six months Facebook has made some changes to their privacy policy, which are inevitably a turn for the worse. There was the <a href="http://mashable.com/2009/09/19/facebook-beacon-rip/">Beacon debacle</a> way back in the ancient days of 2007, but more recently there was the dustup where some pieces of information, like your Likes and friends list, not only weren&#8217;t hidden by default, but couldn&#8217;t be hidden from the general public <em>no matter what</em>. It&#8217;s true that Facebook has generally backed down whenever the anger over these changes gets out of hand, but these are clearly reluctant acts from a company that doesn&#8217;t really care, and treats user annoyance at privacy changes as an oddity instead of an entirely justified reaction. And even after Facebook &#8220;backs down&#8221;, the <a href="http://mattmckeon.com/facebook-privacy/">anti-privacy creep</a> doesn&#8217;t seem to have stopped; the main cause of my anger is not what Facebook is doing now, but what such a clearly apathetic company might do in the future. If I was really invested in Facebook, I might be willing to overlook these things (I admit that I do give Google some leeway because I rely on them for so much), but I&#8217;m not about to tolerate this kind of behavior with regards to a service I don&#8217;t care about.</li>
</ul>
<p>Basically I&#8217;ve decided that Facebook is more trouble than it&#8217;s worth. I&#8217;m not getting anything out of it now, so I don&#8217;t see why I should bother myself with either the time investment in it, or the concern about whether potential employers, sketchy advertisers, etc. are looking at it.</p>
<p>If you want to keep in touch with me, Facebook isn&#8217;t going to be an option any more, but there are plenty of other ways.</p>
<p>If you don&#8217;t mind trying out Twitter, I actually highly recommend it. Twitter sort of has a reputation for being a place where self-obsessed narcissists post every little detail of their drab lives, and there are plenty of people like that, but really it&#8217;s whatever you make of it. Like I was saying earlier, I just use it for posting anything I think people who are interested in me (that&#8217;s one of the reasons I like Twitter: if you care about what I&#8217;m saying, follow me; if you don&#8217;t, don&#8217;t. Compare this to Facebook where everyone who I&#8217;ve friended sees my status whether they want to or not) might want to see. The number of people I know who use Twitter has steadily been increasing, so it&#8217;s actually as useful as Facebook ever was for sending quick bursts of communication to people. If you don&#8217;t know as many people using it, its usefulness might be limited, but I encourage you to give it a try.</p>
<p>If you don&#8217;t feel like doing that, I&#8217;ve got e-mail, I have a cellphone with this fancy newfangled thing called texting (see the contact tab) or if you&#8217;re proximate to me in the real world you could even come up to me and talk <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Point is, I&#8217;m not dropping off the face of the Earth just because I&#8217;m getting rid of Facebook, and I don&#8217;t want to lose touch with anyone who still wants to talk to me. I&#8217;ll actually check Facebook regularly for the next week or so: if you want to make plans to establish a communication link, that&#8217;s the time to do it.</p>
<p>Ciao!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/alexslover.wordpress.com/211/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/alexslover.wordpress.com/211/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/alexslover.wordpress.com/211/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/alexslover.wordpress.com/211/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/alexslover.wordpress.com/211/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/alexslover.wordpress.com/211/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/alexslover.wordpress.com/211/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/alexslover.wordpress.com/211/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/alexslover.wordpress.com/211/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/alexslover.wordpress.com/211/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/alexslover.wordpress.com/211/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/alexslover.wordpress.com/211/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/alexslover.wordpress.com/211/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/alexslover.wordpress.com/211/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alexslover.com&amp;blog=9740962&amp;post=211&amp;subd=alexslover&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://alexslover.com/2010/09/06/why-im-ditching-facebook/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Alex</media:title>
		</media:content>
	</item>
		<item>
		<title>Google rolls out Docs updates</title>
		<link>http://alexslover.com/2010/04/15/google-rolls-out-docs-updates/</link>
		<comments>http://alexslover.com/2010/04/15/google-rolls-out-docs-updates/#comments</comments>
		<pubDate>Thu, 15 Apr 2010 18:27:37 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[technology]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[google]]></category>

		<guid isPermaLink="false">http://alexslover.com/?p=203</guid>
		<description><![CDATA[A few days ago, Google announced an updated version of Google Docs, their cloud-based collaborative document-editing software. There are essentially three major components to Google&#8217;s announcement: architecture, features, and Drawing. From Google&#8217;s point of view, the architecture change is the biggest difference. Google says that the underlying software powering Google Docs (whatever it was) has [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alexslover.com&amp;blog=9740962&amp;post=203&amp;subd=alexslover&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div id="attachment_204" class="wp-caption aligncenter" style="width: 510px"><a href="http://alexslover.files.wordpress.com/2010/04/google-docs-drawing-screenshot.png"><img src="http://alexslover.files.wordpress.com/2010/04/google-docs-drawing-screenshot.png?w=500&#038;h=280" alt="Screenshot of Google Docs&#39; new drawing function" title="google docs drawing screenshot" width="500" height="280" class="size-full wp-image-204" /></a><p class="wp-caption-text">Screenshot of Google Docs' new drawing utility, showing basic effects, text/photo insertion, and transparency</p></div>
<p>A few days ago, Google <a href="http://googledocs.blogspot.com/2010/04/new-google-docs.html">announced an updated version</a> of <a href="http://docs.google.com">Google Docs</a>, their cloud-based collaborative document-editing software. There are essentially three major components to Google&#8217;s announcement: architecture, features, and Drawing.</p>
<p>From Google&#8217;s point of view, the architecture change is the biggest difference. Google says that the underlying software powering Google Docs (whatever it was) has been completely replaced, and that the new system will allow them to introduce features roll out updates more quickly than they could before. They also say it has significantly better performance. What went unsaid, but is almost certainly going on, is that this &#8220;new architecture&#8221; is able to do all this because it scraps support for IE6, as Google <a href="http://arstechnica.com/microsoft/news/2010/01/google-to-send-internet-explorer-6-users-packing-come-march.ars">warned they would do</a>, and is now fully built with modern web technologies that IE6 doesn&#8217;t support (HTML5, CSS3, etc.) I can&#8217;t emphasize enough what a good thing this is: I can say from experience (with my time at NextMark) that it takes almost 10 times as much effort to get a website working on IE6 than on every other browser put together, and ditching it will free up a ton of development time that Google can spend on other things. The best part is, the rest of us who are smart enough not to use IE6, see the benefits too, since we&#8217;re now running code that has been optimized for our browsers, not IE6.</p>
<p>Users are probably going to be more interested in the new features though. One of the coolest the real-time simultaneous editing: while Docs has always allowed multiple people to edit a document at the same time, these changes typically took several minutes to be seen by the other people working on a document. With the new Docs, Google has put in a system very similar to what Wave has: when someone else is editing a document at the same time as you, you see a cursor with their name, and you see their changes in real-time. I&#8217;ve tried this several times over the past few days, and it works great, even when the people working are separated by considerable physical distance. Other helpful new features include improved equation and macro capabilities in Spreadsheets, a Print Preview function, &#8220;snap grids&#8221; in Presentation to help line things up, and improved formatting when importing to or exporting from Office. The full list of new features is available <a href="http://www.google.com/google-d-s/whatsnew.html">here</a>, and is impressively long: it won&#8217;t be long before Google Docs can do everything Microsoft Office can do, and in a more convenient (and less expensive) fashion.</p>
<p>Another addition is Drawing, which now joins the ranks with Documents, Spreadsheets, and Presentations. You can see a screenshot of Drawing in action above. Like the others, it has real-time collaborative editing, so you can immediately see the changes others are making. Feature-wise, it&#8217;s basically equivalent to Windows&#8217; Paint utility: nothing too severe. It lets you draw lines, and text, and pictures, and there are some simple fill options and cheesy effects. Like Paint, it&#8217;s meant to be a utility for banging out quick sketches and explanatory diagrams, not editing your photos. For that job, it works very well.</p>
<p>Overall, the updates to Google Docs have taken a great thing and made it even better. Microsoft isn&#8217;t taking this lying down: they&#8217;re working on a web-based version of all their Office programs (I&#8217;ve used the beta and it&#8217;s actually quite good), but it&#8217;s hard to see it posing a real threat with Google&#8217;s huge headstart.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/alexslover.wordpress.com/203/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/alexslover.wordpress.com/203/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/alexslover.wordpress.com/203/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/alexslover.wordpress.com/203/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/alexslover.wordpress.com/203/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/alexslover.wordpress.com/203/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/alexslover.wordpress.com/203/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/alexslover.wordpress.com/203/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/alexslover.wordpress.com/203/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/alexslover.wordpress.com/203/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/alexslover.wordpress.com/203/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/alexslover.wordpress.com/203/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/alexslover.wordpress.com/203/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/alexslover.wordpress.com/203/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alexslover.com&amp;blog=9740962&amp;post=203&amp;subd=alexslover&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://alexslover.com/2010/04/15/google-rolls-out-docs-updates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Alex</media:title>
		</media:content>

		<media:content url="http://alexslover.files.wordpress.com/2010/04/google-docs-drawing-screenshot.png" medium="image">
			<media:title type="html">google docs drawing screenshot</media:title>
		</media:content>
	</item>
		<item>
		<title>Hacking in with stack overflows</title>
		<link>http://alexslover.com/2010/04/15/hacking-in-with-stack-overflows/</link>
		<comments>http://alexslover.com/2010/04/15/hacking-in-with-stack-overflows/#comments</comments>
		<pubDate>Thu, 15 Apr 2010 01:42:18 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[school]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://alexslover.com/?p=191</guid>
		<description><![CDATA[Last week my assignment in Systems Programming was to take a vulnerable program- for which we were not provided the source code, only the executable binary- and figure out how to hack it and make it do what we want. Specifically, the program, called &#8220;server&#8221;, would ask us to put in our NetID (Cornell&#8217;s equivalent [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alexslover.com&amp;blog=9740962&amp;post=191&amp;subd=alexslover&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Last week my assignment in Systems Programming was to take a vulnerable program- for which we were <em>not</em> provided the source code, only the executable binary- and figure out how to hack it and make it do what we want. Specifically, the program, called &#8220;server&#8221;, would ask us to put in our NetID (Cornell&#8217;s equivalent to a username), and it would spit it back out and terminate, like so:<br />
<code>[alex@linus ~]$ server<br />
What is your NetID? <strong>ais46</strong><br />
Goodbye, ais46!<br />
[alex@linus ~]<br />
</code><br />
Because there is an environment variable on Cornell&#8217;s Linux machines that is set to your NetID when you log in, the program could detect and respond accordingly if you entered something that was not your NetID. Behold:<br />
<code>[alex@linus ~]$ server<br />
What is your NetID? <strong>ahc45</strong><br />
Nice try ais46, but you can't fool me!<br />
Goodbye, ais46!<br />
[alex@linus ~]$<br />
</code><br />
My mission was to get server to print something else, namely, &#8220;All your base are belong to ais46&#8243;, proving that old internet memes never die, they just get recycled into college assignments by bored grad students.</p>
<p>How to go about this? The string &#8220;All your base are belong to&#8221; doesn&#8217;t appear anywhere in the program&#8217;s code, and it&#8217;s not as if the string I enter can contain hidden code, because all it does is go to a variable which is compared for equality with &#8220;ais46&#8243;&#8230; right?</p>
<p>Well, in a perfect world, yes. We don&#8217;t live in a perfect world, though: we live in a world where it is sometimes possible to exploit a <em>buffer overflow</em>. A buffer overflow occurs when data is placed in a variable that is too small to contain it, and the data &#8220;overflows&#8221; into other portion of memory. For example, if I were to declare an array big enough to hold ten characters, and then put the string, &#8220;My name is Alex Slover&#8221; into that array, I would be causing a buffer overflow. What happens to the part of memory that is overflowed into? Much of the time it will contain another variable in use by your program, which will now be changed to some new (essentially random) value, causing unexpected program behavior or a crash. This in itself is bad enough, but it is sometimes possible to use a buffer overflow to not only make a program crash, but take it over entirely.</p>
<p>(You may be wondering why buffer overflows are even possible, and why computers aren&#8217;t designed to simply keep track of how big a program&#8217;s variables are, and refuse to allow writing data beyond the boundary of a variable. The answer is that this <em>is</em> possible, and in fact it&#8217;s mandatory across all of the newer programming languages in existence: Java, Python, C#, etc. The problem is that enforcing variable boundaries (called <strong>bounds checking</strong>) takes extra time and extra memory, which is not acceptable in situations where code needs to run as fast as possible, such as in the kernel of an operating system. Thus, older languages (like C) and languages that are newer but designed to be used in low-level systems programming environments (like C++) do not require bounds checking, and and instead place the onus on the programmer to be extremely careful to not allow buffer overflows to occur. This does not mean that <em>all</em> programs written in C and C++ are vulnerable, of course, just that a great deal of extra caution is required; it would&#8217;ve been pretty easy to write the server program so that it did not create a weak spot and allow someone to break in, but that would&#8217;ve made for a rather unfair assignment.)</p>
<p>The next question is: how can a buffer overflow let you control a program and make it do whatever you want? Surely variables and executable code are stored in distant enough locations in memory as to make manipulating the executable code just by changing variables impossible. The answer is that code and data are indeed stored far, far apart; in fact, changing the executable data of a program once it has started running is impossible: that segment of memory is always marked as read-only and any attempt to write to it will cause a program to crash. (You may remember, back in the bad old days of Windows, getting that inexplicable error message &#8220;This program has performed an illegal operation and will be terminated&#8221;, and wondering whether your software had broken the law. What was actually going on was that the program, probably due to a careless programmer oversight, had attempted to write into a segment of memory it was not allowed to write to, and the operating system had killed it for security reasons.) So if we can&#8217;t change the executable program, how can we inject our own code? The answer lies in the <em>stack</em>, which is how all (or virtually all) programs running on a computer are organized in memory.</p>
<p>To understand the stack, remember programs running on a computer typically consist of functions that call other functions. In C, for example, all programs start at the main() function. If you were in the main function and wanted to print something to the screen, you&#8217;d call the printf() function, which would cause the program flow to jump to that function, execute whatever instructions form the prinf() function, and then jump back to main() when finished. But how does the program know where to jump back to when finished? The answer is that this value is stored on the <em>stack</em>, which is a special part of program memory. Every time a function is called, that function gets its own <em>stack frame</em>, which is a self-contained chunk of memory on the stack. So if I call the function printf(), then printf() will get its own stack frame, which is created when printf() starts and destroyed when it ends. The stack frame for a function contains all the local variables which are used by that function and that function alone (global variables, accessible between functions, are handled in a different manner), and it also contains the <em>return address</em>, which is where program flow jumps back to once the program is finished. For example, if I am in the main() function, and I call printf() when I am at location 0x84ae0000, the return address would be set to (for example) 0x84ae0004, which is where main() picks up and resumes executing once printf() is finished. (If the preceding notation was unfamiliar to you, seek guidance <a href="http://en.wikipedia.org/Hexadecimal">on Wikipedia</a>)</p>
<p>So: return addresses (which is where the program will jump to when the function has finished) are stored on the stack, and local variables, which can overflow in some cases, are also stored on the stack. Are you seeing the answer? The trick to hijacking the server program is to put so much data into the variable which is supposed to contain my NetID, that it <strong>overflows onto the return address</strong>. For example, if I were to make my injected data just a long string of zeroes, then instead of the real return address, the program would try to jump to address 0&#215;00000000. Now, forcing the program to jump to return address 0&#215;00000000 isn&#8217;t very useful: I can&#8217;t write any evil code there, it would cause a program crash identical to the one described two paragraphs earlier. What to do? Well, through careful analysis and use of a debugger, I can figure out the memory address corresponding to the beginning of the variable that I am overflowing. Why not use that as the return address? Thus the answer becomes clear: turn the evil code to be executed into a series of bytes and use <em>those bytes themselves</em> as the padding to fill up the stack and let me write over the existing return address, substituting for that address the address of the beginning of my code. It basically loops back on itself!</p>
<p>Because my systems programming class may use this assignment in the future and probably wouldn&#8217;t take kindly to me giving away the answer, and because I think figuring things out for yourself is always more fun and useful than having someone else feed it to you, I&#8217;m not going to give a play-by-play of what I did. Suffice to say, I carefully crafted some data corresponding to the evil instructions I wanted to execute, then appended a return address to the end of that data. I then passed in that data where the program was expecting my NetID, and <strong>bam</strong>: my data overflowed its variable, spilling onto the rest of the stack, causing it to be corrupted. Nothing happened immediately, but when the current function ended, it did its job and looked at the return address on the stack to know where to jump back to, which had been replaced with the address of my malicious code. It dutifully jumped to that location, began executing the instructions it saw, and that was that. Of course, the only thing my instructions did was cause server to print a goofy message, but in the real world, it would not have been difficult to craft code that did something genuinely dangerous: such as getting &#8220;root&#8221; privileges to have full control over the entire computer.</p>
<p>This sort of attack was only made possible because of the artificial nature of the assignment; in the real world, things are not so simple. Nevertheless, buffer overflow attacks, even if they are more complicated than the one I have just described, are among the most common entry vectors for a hacker with bad intentions to gain control of a computer system. We&#8217;re doing assignments like this not because Cornell wants to secretly train a private army of hackers, but because by understanding exactly how these attacks work, we&#8217;re better equipped to stop them.</p>
<p>I&#8217;ll probably post some more things along these lines in the future, but there are a vast quantity of resources available if you want to learn more. I especially recommend <a href="http://www.amazon.com/Hacking-Art-Exploitation-Jon-Erickson/dp/1593271441/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1271295352&amp;sr=8-1"><i>The Art of Exploitation</i></a>, a no-nonsense book that teaches you exactly how stacks, programs, and computer networks work, and how to look for ways to exploit them. This book is particularly good, because it&#8217;s not a &#8220;cookbook&#8221; that says, &#8220;Do this to hack into a computer&#8221; (such a book would be useless anyway, as whatever vulnerabilities it explained would quickly be patched and made useless). Rather, it explains how computers work at a fundamental level, why vulnerabilities occur, and where to find them. The book is useful even if you&#8217;ve never done a day of programming in your life: the first chapter consists of enough C lessons to get you moving. (Just to be perfectly clear: this is an academic interest on my part. I would never do anything illegal with the knowledge I have, and neither should you. Hacking is like the Force, it should be used for knowledge and defense, never for attack.)</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/alexslover.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/alexslover.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/alexslover.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/alexslover.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/alexslover.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/alexslover.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/alexslover.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/alexslover.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/alexslover.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/alexslover.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/alexslover.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/alexslover.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/alexslover.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/alexslover.wordpress.com/191/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alexslover.com&amp;blog=9740962&amp;post=191&amp;subd=alexslover&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://alexslover.com/2010/04/15/hacking-in-with-stack-overflows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Alex</media:title>
		</media:content>
	</item>
		<item>
		<title>Who&#8217;s going to buy Palm?</title>
		<link>http://alexslover.com/2010/04/12/whos-going-to-buy-palm/</link>
		<comments>http://alexslover.com/2010/04/12/whos-going-to-buy-palm/#comments</comments>
		<pubDate>Mon, 12 Apr 2010 21:28:03 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[news]]></category>
		<category><![CDATA[palm]]></category>
		<category><![CDATA[smartphone]]></category>

		<guid isPermaLink="false">http://alexslover.com/?p=187</guid>
		<description><![CDATA[It&#8217;s really too bad to see that Palm isn&#8217;t doing so well, since they have one of the best- the best, in many respects- smartphone OS on the market. Despite all the excitement in the days immediately before and after the launch of the Pre, sales have not been particularly good, and Palm stock is [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alexslover.com&amp;blog=9740962&amp;post=187&amp;subd=alexslover&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s really too bad to see that Palm isn&#8217;t doing so well, since they have one of the best- <i>the</i> best, in many respects- smartphone OS on the market. Despite all the excitement in the days immediately before and after the launch of the Pre, sales have not been particularly good, and Palm stock is right back where it was before they dropped the webOS bombshell on the unsuspecting world. Ars <a href="http://arstechnica.com/gadgets/news/2010/03/rip-palm-its-over-and-heres-why.ars">has a good article</a> on why that is, and it boiled down to two things:</p>
<ul>
<li><b>Apps</b> &#8211; The first rule when trying to compete with Apple on their own territory is, don&#8217;t. The second rule, though, is that if you are going to compete with Apple on their own territory, you have to observe the things people are complaining about vis-a-vis Apple, and <i>improve</i> on them; don&#8217;t make them worse. (For example, this is the reason why even fewer people care about the Dell Adamo than about the MacBook Air: the MacBook Air sells for highway robbery prices as it is, and the Adamo is <i>even more</i> expensive. Epic fail in every definition of the term). Palm made the exact same mistake: when people were (and still are) complaining about Apple&#8217;s restrictive and obscure app approval process, Palm could&#8217;ve swept in to save by the making webOS a completely open development platform (it <i>is</i> based on Linux, after all), but they decided to make the process even <i>worse</i> than Apple&#8217;s: the APIs available to developers were lousy, the app approval process was achingly slow, and there was just nothing to get developers excited about a platform that was already way behind the iPhone in terms of installed user base. Talk about shooting yourself in the foot. Then Android came along and actually delivered on the promise of a platform without development restrictions, and that was that. To this day, there are barely 2,000 apps available for webOS, slightly over a hundredth- 1%- of what you can get on the iPhone. That ain&#8217;t gonna cut it.</li>
<li><b>Palm&#8217;s bizarre advertising</b> &#8211; It&#8217;s a shame that all it takes to kill the chances of a promising product is crappy advertising, but that&#8217;s the way of the world. This is especially frustrating because Palm had most of their work cut out for them: in terms of visuals, the Pre looked better than anything- including the iPhone- on the market when it was released. They just had to show the phone off and let the money roll in. Instead, they opted for those mildly disconcerting adds with the featureless woman emotionlessly doing&#8230; well, no one was really sure what she was doing, which was the problem. Palm actually just realized this, and <a href="http://adage.com/agencynews/article?article_id=143141">fired their ad agency</a>, but way too late.</li>
</ul>
<p>With Palm&#8217;s revenue continuing to spiral downwards, the rumors inevitably started to swirl that someone would have to buy them out. For a while, Jon Rubenstein denied these, and insisted that everything was fine, but as of this morning the reports coming out say they&#8217;ve reached the end of the line: Palm is <a href="http://voices.washingtonpost.com/fasterforward/2010/04/palm_on_the_block_users_in_the.html">looking for offers</a>.</p>
<p>Naturally, there&#8217;s a great deal of speculation as to who might decide to snap Palm up, assuming the report is even accurate. The current frontrunner seems to be HTC, the Taiwanese company which has exploded out of nowhere (after abandoning Windows Mobile, probably the best business decision of the 2009 year) to become the leading manufacturer of non-Apple desire-inducing smartphones, at least in the US. I see the logic in this, but I also don&#8217;t think it&#8217;s an absolute: HTC seems to be doing just fine manufacturing phones for Android and Windows Mobile. Nevertheless, it is possible: HTC has been making add-ons and skins for both Android and WinMo, so they clearly have both good programmers and a desire to tune the user experience to be exactly what they want, and having their own operating system would give them just that.</p>
<p>Some people have advanced that buyers might come from companies that already have mobile operating systems: RIM, Apple, Google and Microsoft have all been put forward as possibilities. I don&#8217;t think any of these are very likely: RIM&#8217;s all-work-no-play corporate culture doesn&#8217;t mesh with Palm at all, and Mike Lazaridis seems devoted to his current platform; Apple (and Steve Jobs in particular) would probably rather watch in glee at Palm&#8217;s bankruptcy than spend a penny on them, even to get their patent portfolio; Android is doing well enough that I doubt Google needs the help; and Microsoft just makes no sense: webOS&#8217;s Linux codebase would be of almost no help to Redmond.</p>
<p>To me, more likely possibilities seem like companies that want to branch into the smartphone market, but don&#8217;t have an operating system of their own and don&#8217;t feel like adopting Android. Dell and Lenovo both spring to mind: both are computer manufacturers looking enviously at the exploding smartphone market, and both are utterly lacking in the means to develop a nice smartphone operating system themselves. (Can you imagine an operating system designed by Dell? Are you picturing a great deal of grey, and a user experience that drains your soul? If not, you&#8217;re doing it wrong.) Lenovo is apparently already working on a mobile operating system, or at least a &#8220;platform&#8221;, but I can&#8217;t see it impressing people the way webOS can.</p>
<p>One intriguing possibility to me is Nokia. On the one hand, Nokia is doing just fine in the cellphone market as a whole: they&#8217;re the world&#8217;s top manufacturer, after all. On the other hand, their mindshare and market share in the United States is next to nonexistent, and they could really use a smartphone OS with a little more kick. I have never been all that impressed with Maemo: It&#8217;s fine for tinkerers and hackers, and people who need very basic smartphone functionality, but its interface is not designed for large touchscreen devices (which are, like it or not, the way of the future) and it&#8217;s just plain ugly. It&#8217;s connectivity can&#8217;t match up to Android or the iPhone either. No matter how hard Nokia tries, they can&#8217;t seem to break into the American market, but I think if they bought webOS, and either scrapped Maemo altogether or integrated it into Palm&#8217;s offering (they&#8217;re both Linux-based, making that easier), and offered some genuinely attractive phones, they may have better luck. Now, this too seems like a long shot: like RIM, Nokia has a corporate culture not conducive to buying a smaller company with the aim of using that company&#8217;s IP to scrap everything they&#8217;ve developed, but webOS is a great operating system that just needs a company with deep pockets and an ounce of sense to bring it to the masses, and Nokia has both. And they need to scrap Maemo. They need to scrap Maemo <i>so bad</i>.</p>
<p>Of course, the entire story about Palm looking for a buyer could just be heresy, but SEC filings don&#8217;t lie: unless something turns around fast, buyout or bankruptcy look to be the only options. Keep your eye on this one as it develops.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/alexslover.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/alexslover.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/alexslover.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/alexslover.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/alexslover.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/alexslover.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/alexslover.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/alexslover.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/alexslover.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/alexslover.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/alexslover.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/alexslover.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/alexslover.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/alexslover.wordpress.com/187/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alexslover.com&amp;blog=9740962&amp;post=187&amp;subd=alexslover&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://alexslover.com/2010/04/12/whos-going-to-buy-palm/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Alex</media:title>
		</media:content>
	</item>
		<item>
		<title>Why you should give Stargate Universe another chance</title>
		<link>http://alexslover.com/2010/04/10/why-you-should-give-stargate-universe-another-chance/</link>
		<comments>http://alexslover.com/2010/04/10/why-you-should-give-stargate-universe-another-chance/#comments</comments>
		<pubDate>Sat, 10 Apr 2010 15:28:50 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[entertainment]]></category>
		<category><![CDATA[sci-fi]]></category>
		<category><![CDATA[sgu]]></category>
		<category><![CDATA[stargate]]></category>
		<category><![CDATA[tv]]></category>

		<guid isPermaLink="false">http://alexslover.com/?p=177</guid>
		<description><![CDATA[Stargate Universe didn&#8217;t get off to the greatest of starts, I know. The interpersonal drama was heavy-handed and poorly executed, the similarities to BSG were painfully obvious, and the self-contained plots weren&#8217;t sustaining interest all that well. But since the second half of season 1 started the Friday before last, I think things have gotten [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alexslover.com&amp;blog=9740962&amp;post=177&amp;subd=alexslover&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://alexslover.files.wordpress.com/2010/04/sgu-logo.jpg"><img src="http://alexslover.files.wordpress.com/2010/04/sgu-logo.jpg?w=500&#038;h=262" alt="Stargate Universe logo" title="sgu logo" width="500" height="262" class="aligncenter size-full wp-image-176" /></a></p>
<p><i>Stargate Universe</i> didn&#8217;t get off to the greatest of starts, I know. The interpersonal drama was heavy-handed and poorly executed, the similarities to BSG were painfully obvious, and the self-contained plots weren&#8217;t sustaining interest all that well. But since the second half of season 1 started the Friday before last, I think things have gotten considerably better (whether this was the plan all along, or because Sci-Fi/Syfy/whatever paid attention to the complaints) and the series is heading in a positive direction.</p>
<p>No, it&#8217;s not the same Stargate we know and love. There&#8217;s no doubt it&#8217;s a very different kind of series: Stargate has always been about sci-fi action, but whereas <i>SG-1</i> and <i>Atlantis</i> derived much of their appeal from their self-referential, lampshade-hanging humor, <i>SGU</i> has decided to eschew the comedy, and give everything a much darker tone. As a result, a lot of people complained that this somehow violated the &#8220;spirit&#8221; of Stargate. There may be something to that argument, but I also think you can&#8217;t just keep rehashing the same formula over and over again (that&#8217;s why the later series of <i>Star Trek</i> were so lousy), even if that&#8217;s what the fans want: eventually you&#8217;ll inevitably run out of ideas. As it is, that&#8217;s probably why <i>Atlantis</i> only lasted 5 seasons to <i>SG-1</i>&#8216;s 10, they knew there wasn&#8217;t really anywhere else to go. I for one am pleased that they weren&#8217;t satisfied with another stale repetition.</p>
<p>And the other aspects of the show are improving too. There&#8217;s a intriguing plot arc now, involving an actual alien menace (in true Stargate tradition, the aliens even speak English, although not in the way and not for the reasons you might think), rather than the one-shot deals we had before. The tedious, angsty love triangles are still there, but they&#8217;ve been shoved into the background (not occupying more than 5 minutes of the last two episodes), at least for the time being. Instead, we now have people fighting for control of the ship, which makes for much more interesting watching. (Personally, I hope they get rid of the interpersonal drama altogether. Syfy already has one very good drama show right now, <i>Caprica</i>, which is just making <i>SGU</i> look all the worse by comparison. We&#8217;ll see how that pans out.). Characters are being fleshed out more: Dr. Rush is now a very polarizing enigma, with the show leaving it to you to decide whether he&#8217;s a backstabbing jerk or a brilliant mastermind who&#8217;s doing what&#8217;s ultimately best for everyone; Col. Young is no longer the <i>de facto</i> best choice for running the ship, considering the mistakes he&#8217;s made; and a lot of the assumptions we made about other characters are starting to look shaky too.</p>
<p>And to top it all off, the season 1.5 trailer for SGU appeared to have Michael Shanks in it. Daniel Jackson!</p>
<p>All I&#8217;m saying is, things may have gotten off slowly, but the pace is picking up, and I think the show is getting much more hate than it deserves. If you are among the people griping about it, try picking it back up (the last three episodes are all still on <a href="http://www.hulu.com/stargate-universe">the show&#8217;s Hulu page</a>), with an open mind that even though this isn&#8217;t the same Stargate, it could be a good show in its own right. You might be pleasantly surprised.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/alexslover.wordpress.com/177/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/alexslover.wordpress.com/177/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/alexslover.wordpress.com/177/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/alexslover.wordpress.com/177/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/alexslover.wordpress.com/177/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/alexslover.wordpress.com/177/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/alexslover.wordpress.com/177/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/alexslover.wordpress.com/177/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/alexslover.wordpress.com/177/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/alexslover.wordpress.com/177/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/alexslover.wordpress.com/177/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/alexslover.wordpress.com/177/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/alexslover.wordpress.com/177/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/alexslover.wordpress.com/177/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alexslover.com&amp;blog=9740962&amp;post=177&amp;subd=alexslover&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://alexslover.com/2010/04/10/why-you-should-give-stargate-universe-another-chance/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Alex</media:title>
		</media:content>

		<media:content url="http://alexslover.files.wordpress.com/2010/04/sgu-logo.jpg" medium="image">
			<media:title type="html">sgu logo</media:title>
		</media:content>
	</item>
		<item>
		<title>China might be revaluating its currency</title>
		<link>http://alexslover.com/2010/04/09/china-might-be-revaluating-its-currency/</link>
		<comments>http://alexslover.com/2010/04/09/china-might-be-revaluating-its-currency/#comments</comments>
		<pubDate>Fri, 09 Apr 2010 18:04:38 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[news]]></category>
		<category><![CDATA[china]]></category>
		<category><![CDATA[economy]]></category>
		<category><![CDATA[finance]]></category>

		<guid isPermaLink="false">http://alexslover.com/?p=166</guid>
		<description><![CDATA[The New York Times has ran two pieces in the past two days relating to China and its currency. The first is that Timothy Geithner met with the Chinese vice prime minister, Wang Qishan, yesterday. Like so many diplomatic meetings, especially those involving China, both parties probably tried their hardest not to say anything of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alexslover.com&amp;blog=9740962&amp;post=166&amp;subd=alexslover&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><i>The New York Times</i> has ran two pieces in the past two days relating to China and its currency. The first is that Timothy Geithner <a>met with the Chinese vice prime minister</a>, Wang Qishan, yesterday. Like so many diplomatic meetings, especially those involving China, both parties probably tried their hardest not to say anything of any real importance, so as not to cause any upsets, but it also points out that Geithner probably continued to nudge China to allow their currency to increase in value against the dollar. There are signs that may actually happen too: <a href="http://www.nytimes.com/2010/04/09/business/global/09yuan.html">yesterday&#8217;s article</a> mentioned a series of signs that China might allow the renminbi (or yuan, if you&#8217;re into that sorta&#8217; thing) to appreciate.</p>
<p>Now, what exactly does this mean, and why is China doing it?</p>
<p>The thing to understand about exchange rates is that, most of the time, they are not set by some government authority or shadowy cartel of bankers, but simply by supply-and-demand, just like any other commodity. If the United States economy is doing well, investors all over the world want to put their money into American investments, and since they need dollars to do that, they have to exchange their local currency for dollars. Hence, demand for dollars increases relative to supply, and so the price of a dollar relative to other currencies (its exchange rate) strengthens. Likewise, if investors feel there are better opportunities elsewhere, they use their dollars to purchase other currencies, and the value decreases. Governments can take some action with regards to the value of their currency (last year, for example, Russia spent a great deal of its oil-money to prop up the value of the ruble, an effort that largely succeeded but cost Moscow a huge portion of its budget surplus), but not as much as much as they would probably like, and at any rate, the WTO looks askance at &#8220;currency manipulation&#8221; &#8211; unfair government interference on the value of a nation&#8217;s currency to gain an unfair trade advantage.</p>
<p>Many smaller economies, however, prefer to &#8220;peg&#8221; their currency to a larger one, usually the dollar or the Euro. There are a couple reasons for this: most notably that they prefer their currency to be shielded from moderate fluctuations in the market, which would have little effect on larger economies but could cause the value of their own currency to fluctuate wildly, which is obviously undesirable. China did this up until 2005, pegging their exchange rate at 8.27 yuan per dollar. Because of both pressure from foreign governments and the desire to make China a real player in the global currency market, China lifted the peg in 2005 and now values the yuan against a basket of currencies, but they have still endured a great deal of criticism that the yuan is being kept artificially weak.</p>
<p>Even if there&#8217;s no currency peg, there are a couple ways they could do this. One Chinese policy that is often cited as an artificial currency manipulation tool is their &#8220;purchase quota&#8221;: both Chinese and non-Chinese citizens can only change a total of $50,000 worth of yuan per year, in either direction. No one can sell more than $10,000 worth of yuan in a single day, or buy more than $500 worth (some exceptions are made for large corporations, obviously, since they have to deal with much greater currency amounts on a daily basis, but even these are viewed as needlessly strict). The criticism is that because these quotas impose hard limits on the number of yuan that can be bought and sold, they don&#8217;t allow its value to fluctuate with supply-and-demand.</p>
<p>This bugs other countries for a couple reasons: with a weak yuan, one dollar is able to buy many yuan, making Chinese imports cost less. The weaker the yuan, the less Chinese companies need to charge for their products, since it takes fewer dollars to net them the same amount of revenue. Likewise, foreign companies find it harder to do business in China, since Chinese customers have to spend more yuan to get the equivalent amount of dollars necessary to buy the product. There are complaints that China is performing this currency manipulation in order to give its industry and unfair advantage over those of other countries, both in China and elsewhere. Not only that, but it makes it more expensive for people to invest in China, which some people are saying is intended to unfairly limit control of Chinese companies to Chinese nationals.</p>
<p>However, currency manipulation is not the only explanation for these actions, there are some legitimate ones too, such as trying to prevent the yuan from getting too heavily involved in the &#8220;carry trade&#8221;. A carry trade is when people borrow money in one country, for the exclusive purpose of exchanging it for other currencies to borrow money in another country. Currencies with low interest rates and/or little economic growth are popular for carry trades. The thing about carry trades is that they are a double-edged sword: they can be very helpful for a country in some situations, and very damaging in others.</p>
<p>I&#8217;m going to use Japan as an example, because the yen is by far the most heavily carry-traded currency today. Ever since Japan&#8217;s recession in the 1990&#8242;s, the BOJ has set the interest rate of the yen extremely low (often zero), meaning for years it has been very cheap to borrow Japanese currency. Investors have taken advantage of this by borrowing tons of yen, converting it to other currencies, and then using that money to make investments in other countries, at less cost then it would take than to borrow the money in that currency directly. This has the net effect of weakening the yen against other countries (since everyone is trying to buy other currencies with their yen), which is a good thing for a highly export-driven country like Japan: the weaker the yen, the more yen foreign customers can buy with their money, and so the less that Japanese companies have to charge to sell their products, making them more competitive. Not only that, but a weaker yen makes the carry trade even more profitable for investors, so it encourages them to borrow and sell even more yen, a positive-feedback cycle.</p>
<p>When times are good, this is all and well, and the carry trade has been a great help to Japan for the last 20 years. The downside is when it backfires, it backfires hard: when there are <strong>no</strong> profitable investments to be found anywhere in the world, as was the case after the economic meltdown after the last 18 months, not only do investors stop borrowing yen, but they need to convert their money back into yen to pay back their Japanese loans. Hence, when there were few money-making opportunities to be had last year, everyone converted their overseas currency back into yen, driving the exchange rate up immensely (since summer 2007, where 1 dollar traded for ¥124, the rate plummeted to a low of ¥85 last November, and has since crept up to only ¥94). This is a major problem for Japan: with a stronger yen, Japanese companies have to either accept lower revenues (since the dollars of their customers translate to fewer yen), or increase their prices. This is why Japan has been hit doubly-hard by the recent economic turmoil.</p>
<p>Obviously China is not interested in seeing the same thing happen to them, which is in itself a perfectly legitimate reason for proper fiscal policy: the WTO doesn&#8217;t say that countries can&#8217;t be involved at all with their nation&#8217;s exchange rate, only that they cannot get involved so heavily that it &#8220;excessively distorts&#8221; what the value of that currency would be if only supply-and-demand economics were involved, with the aim of unfairly competing with other countries. The problem is that &#8220;excessively distorts&#8221; is a purely subjective measure. Countries like the United States believe China is excessively distorting the value of the yuan; China, of course, does not. Third parties are more mixed on the matter: <i>The Economist</i> says the renminbi is overvalued by about 20%, which is a significant amount, but nowhere near the 40% that the US tends to claim. China has slowly but steadily allowed the yuan to increase in value for the past few years, but the total change since 2005 has only amounted to about 16%.</p>
<p>If the <i>Times</i> is to be believed though, there&#8217;s about to be a significant policy shift, which may see the yuan increasing in value at a faster clip in the near future. The important thing to keep in mind here is that China is probably not doing this because of the pressure placed on them by the West. As the concept of &#8220;saving face&#8221; is extremely important to figures of authority in China, it is vital that they do not appear to their populace to be caving in to Western demands (the Chinese public is quick to notice and anger about such things). Instead, their primary motivation is probably economic: although the weak yuan has been a great help to China for the last couple decades, it&#8217;s starting to show some downsides too. Inflation in China has been higher than what the government would like it to be, and real-estate prices are skyrocketing. The problem is that with a weak yuan whose value is artificially constrained by policy, it is difficult for China&#8217;s central bank to manage these problems effectively; they are able to take much more action if the value of the currency is flexible with respect to the performance of the markets. That&#8217;s probably the real issue here.</p>
<p>At any rate, assuming the <i>Times&#8217;</i> report is even accurate, the change is unlikely to be dramatic, at least for the time being.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/alexslover.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/alexslover.wordpress.com/166/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/alexslover.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/alexslover.wordpress.com/166/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/alexslover.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/alexslover.wordpress.com/166/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/alexslover.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/alexslover.wordpress.com/166/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/alexslover.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/alexslover.wordpress.com/166/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/alexslover.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/alexslover.wordpress.com/166/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/alexslover.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/alexslover.wordpress.com/166/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alexslover.com&amp;blog=9740962&amp;post=166&amp;subd=alexslover&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://alexslover.com/2010/04/09/china-might-be-revaluating-its-currency/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Alex</media:title>
		</media:content>
	</item>
		<item>
		<title>iPhone OS 4.0 addresses a lot of complaints</title>
		<link>http://alexslover.com/2010/04/08/iphone-os-4-0-addresses-a-lot-of-complaints/</link>
		<comments>http://alexslover.com/2010/04/08/iphone-os-4-0-addresses-a-lot-of-complaints/#comments</comments>
		<pubDate>Thu, 08 Apr 2010 18:18:55 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[technology]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://alexslover.com/?p=160</guid>
		<description><![CDATA[Some people hate the iPhone. And that&#8217;s okay; we live in a free society after all, you&#8217;re welcome to hate whatever you want. Apple just made justifying your position a lot more difficult with their iPhone OS 4.0 presentation though. When I look at the list of reasons people give for disliking the iPhone, Apple [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alexslover.com&amp;blog=9740962&amp;post=160&amp;subd=alexslover&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Some people hate the iPhone. And that&#8217;s okay; we live in a free society after all, you&#8217;re welcome to hate whatever you want. Apple just made justifying your position a lot more difficult with their iPhone OS 4.0 presentation though. When I look at the list of reasons people give for disliking the iPhone, Apple sent a scythe through it today. To wit:</p>
<ul>
<li><b>Multitasking</b> &#8211; This was the big one, the primary functionality complaint. Steve admitted that Apple was a little behind in implementing this (no kidding), but said that the iPhone would do it the best. It looks like iPhone 4.0 will allow only specific services to run in the background, but since those services include the music player, GPS radio, data access, and a bunch of other things, that shouldn&#8217;t be an issue. They claim to have a &#8220;perfect freeze&#8221; implementation too &#8211; if an app doesn&#8217;t require background services (like most games), the iPhone can do a total freeze of the app&#8217;s state (so it uses 0 CPU cycles, and hence, no power), restoring it when the app is opened. I&#8217;ve always had my doubts about whether the impact of multitasking on a phone&#8217;s battery life is as severe as Apple claims- my Droid seems to handle it just fine- but this is a good thing.</li>
<li><b>Improved e-mail</b> &#8211; Previous incarnations of the iPhone just didn&#8217;t have the same level of fine-grained control of your e-mail that Blackberries did, which is why the latter has remained the go-to device for serious e-mail addicts. 4.0 improves the situation dramatically though: there is now a &#8220;global inbox&#8221; to see the mail from all your accounts in one place, faster account switching so you don&#8217;t have to tap Back-Back-Back-Back-Back to get from one account to another, threaded mail viewing (finally!), and the ability for third-party apps to open attachments. All in all, this brings mail on the iPhone certainly ahead of that offered by my Droid, and probably on par with a Blackberry.</li>
<li><b>Enterprise features</b> &#8211; The iPhone has ever-so-slowly been making inroads into corporate environments, but previous software versions were still lacking some vital features in terms of both usability and security. With 4.0 though, there is dramatically improved encryption capabilities (including allowing 3rd-party software access to the encryption APIs), distributing apps wirelessly with push notification for company updates (this one got huge applause from the audience), and SSL VPN support (VPN stands for virtual private network, and is a means of setting up an encrypted connection between you and a network which could be anywhere else in the world), which is a must in many corporate environments. IT departments are going to be hard-pressed to say no.</li>
</ul>
<p>There were a few other announcements which were impressive but not earth-shattering. Like everyone else, they&#8217;ve tried to get into the &#8220;social networking&#8221; genre by including a unified gaming platform- perhaps the begging of an iPhone-Xbox-Live?- but what I really would&#8217;ve liked to see is the physical-buttons-add-on <a href="http://www.engadget.com/2010/04/03/apple-patent-application-shocker-games-need-buttons/">revealed in a patent</a> a little while ago. </p>
<p>One announcement that&#8217;s not much from a usability perspective but huge from a business perspective is iAd, Apple&#8217;s unified advertising delivery API. Steve complained about the hodge-podge methods of delivering advertising content on the iPhone today, and thus unveiled a service where you could pay for ads through Apple, who would take care of delivery to apps that request advertising. The interesting thing is that Apple- not some other ad agency- is going to handle selling and targeting the ads&#8230; they are seriously moving in on Google&#8217;s turf now. Relations between Apple and Google, which have been bad these last few months, just got considerably worse.</p>
<p>There&#8217;s still no Flash, and obviously Apple&#8217;s stringent app-approval process ain&#8217;t going anywhere. But given that companies are <a href="http://gizmodo.com/5504402/broadehow-the-ipad-is-already-reshaping-the-internet-without-flash">rapidly redeploying their websites to work with HTML5</a>, if for no other reason than to work on the iPad, it&#8217;s getting harder and harder to complain about the lack of Flash support. And with 150,000 apps to do pretty much anything you want, the second complaint doesn&#8217;t seem to be hitting as hard as it used to be either.</p>
<p>As usual, iPhone OS 4.0 is going to spend some time alone with developers, and will probably hit your grubby little paws in a few months&#8230; but only if you have an iPhone 3GS. Earlier iPhones and iPod touches either cannot get 4.0 at all, or get a degraded version without multitasking (which is the primary draw). This is probably going to irk a lot of people, although it makes sense from a hardware perspective. Both the original iPhone and the 3G are several years old, after all. The iPad&#8217;s getting it too, but not until the fall. This doesn&#8217;t make a whole of sense, but neither does buying an iPad without multitasking.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/alexslover.wordpress.com/160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/alexslover.wordpress.com/160/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/alexslover.wordpress.com/160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/alexslover.wordpress.com/160/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/alexslover.wordpress.com/160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/alexslover.wordpress.com/160/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/alexslover.wordpress.com/160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/alexslover.wordpress.com/160/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/alexslover.wordpress.com/160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/alexslover.wordpress.com/160/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/alexslover.wordpress.com/160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/alexslover.wordpress.com/160/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/alexslover.wordpress.com/160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/alexslover.wordpress.com/160/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alexslover.com&amp;blog=9740962&amp;post=160&amp;subd=alexslover&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://alexslover.com/2010/04/08/iphone-os-4-0-addresses-a-lot-of-complaints/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Alex</media:title>
		</media:content>
	</item>
	</channel>
</rss>
