<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.kartones.net/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Kartones Blog</title><link>http://kartones.net/blogs/kartones/default.aspx</link><description>Be the change you wanna see in this world</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP2 (Build: 20611.960)</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.kartones.net/Kartones" /><feedburner:info uri="kartones" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.kartones.net%2FKartones" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.kartones.net%2FKartones" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.kartones.net/Kartones" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.kartones.net%2FKartones" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.kartones.net%2FKartones" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.kartones.net%2FKartones" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><item><title>Book Review: PHP Objects, Patterns, and Practice</title><link>http://feeds.kartones.net/~r/Kartones/~3/XwPwxqilxuo/book-review-php-objects-patterns-and-practice.aspx</link><pubDate>Wed, 17 Mar 2010 22:38:30 GMT</pubDate><guid isPermaLink="false">b86c0850-82e5-42ed-a9d8-bde9e8f94ec1:50781</guid><dc:creator>Kartones</dc:creator><slash:comments>0</slash:comments><comments>http://kartones.net/blogs/kartones/archive/2010/03/18/book-review-php-objects-patterns-and-practice.aspx#comments</comments><description>&lt;p&gt;&lt;img title="PHP Objects, Patterns, and Practice" alt="PHP Objects, Patterns, and Practice" src="http://kartones.net/images_posts/screenshots/book_php_object_patterns.jpg" /&gt;&lt;/p&gt; &lt;p&gt;New book review, this time of a PHP book. Finding a good one is not an easy task, much harder finding one that shows quality code and good practices!&lt;/p&gt; &lt;p&gt;As usual you can read the review &lt;a href="http://kartones.net/blogs/kartones/pages/book-reviews.aspx#book011"&gt;at my book reviews page&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://kartones.net/aggbug.aspx?PostID=50781" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/Kartones/~4/XwPwxqilxuo" height="1" width="1"/&gt;</description><category domain="http://kartones.net/blogs/kartones/archive/tags/Books/default.aspx">Books</category><category domain="http://kartones.net/blogs/kartones/archive/tags/Review/default.aspx">Review</category><feedburner:origLink>http://kartones.net/blogs/kartones/archive/2010/03/18/book-review-php-objects-patterns-and-practice.aspx</feedburner:origLink></item><item><title>SQL Server 2008: The server principal is not able to access the database under the current security context</title><link>http://feeds.kartones.net/~r/Kartones/~3/26b4hq324jw/sql-server-2008-the-server-principal-is-not-able-to-access-the-database-under-the-current-security-context.aspx</link><pubDate>Tue, 09 Mar 2010 07:54:22 GMT</pubDate><guid isPermaLink="false">b86c0850-82e5-42ed-a9d8-bde9e8f94ec1:50771</guid><dc:creator>Kartones</dc:creator><slash:comments>0</slash:comments><comments>http://kartones.net/blogs/kartones/archive/2010/03/09/sql-server-2008-the-server-principal-is-not-able-to-access-the-database-under-the-current-security-context.aspx#comments</comments><description>&lt;p&gt;Looks like SQL Server Management Studio guys didn’t properly tested the tool with unprivileged users. If, like me, you have a shared SQL Server database that lives among others, probably your DB user will only be able to see and operate with your specific database.&lt;/p&gt; &lt;p&gt;But if you try to expand the Databases node from the management studio, this error (Error 916) will appear:&lt;/p&gt; &lt;p&gt;&lt;img title="Screenshot" alt="Screenshot" src="http://kartones.net/images_posts/kartonesblog/ssms2008_error.jpg" /&gt;&lt;/p&gt; &lt;p&gt;The solution is as easy as strange and hard to come by yourself (I found it at &lt;a href="https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=354291&amp;amp;wa=wsignin1.0"&gt;Microsoft Connect&lt;/a&gt;):&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Press F7 to display the &lt;em&gt;Object Explorer Details&lt;/em&gt; window&lt;/li&gt; &lt;li&gt;Doubleclick on the &lt;em&gt;Databases&lt;/em&gt; folder&lt;/li&gt; &lt;li&gt;Right-click in the Collation header and uncheck it.&lt;/li&gt; &lt;li&gt;Refresh&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;And now it will work and list perfectly all the server databases.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Remember, if you have a site or application that has roles, always test with the least privileged account everything ;)&lt;/p&gt;&lt;img src="http://kartones.net/aggbug.aspx?PostID=50771" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/Kartones/~4/26b4hq324jw" height="1" width="1"/&gt;</description><category domain="http://kartones.net/blogs/kartones/archive/tags/SQL+Server/default.aspx">SQL Server</category><category domain="http://kartones.net/blogs/kartones/archive/tags/Troubleshooting/default.aspx">Troubleshooting</category><feedburner:origLink>http://kartones.net/blogs/kartones/archive/2010/03/09/sql-server-2008-the-server-principal-is-not-able-to-access-the-database-under-the-current-security-context.aspx</feedburner:origLink></item><item><title>Back from the MindCamp 2.0</title><link>http://feeds.kartones.net/~r/Kartones/~3/S3U8VFLchtw/back-from-the-mindcamp-2-0.aspx</link><pubDate>Wed, 03 Mar 2010 23:44:11 GMT</pubDate><guid isPermaLink="false">b86c0850-82e5-42ed-a9d8-bde9e8f94ec1:50757</guid><dc:creator>Kartones</dc:creator><slash:comments>0</slash:comments><comments>http://kartones.net/blogs/kartones/archive/2010/03/04/back-from-the-mindcamp-2-0.aspx#comments</comments><description>&lt;p&gt;&lt;img src="http://lh5.ggpht.com/_zkVXnr2UGcw/S47wlfHpbOI/AAAAAAAALlw/1-uXbbPyEXA/s144/mindcamp.png" alt="mindcamp.png" /&gt;&lt;/p&gt; &lt;p&gt;One of the reasons why I’m so tired this week is that the last weekend we had the &lt;a href="http://www.themindcamp.net/"&gt;MindCamp 2.0&lt;/a&gt;, an informal &lt;a href="http://en.wikipedia.org/wiki/Code_Camp"&gt;CodeCamp&lt;/a&gt; managed by students and .NET clubs around Spain.&lt;/p&gt; &lt;p&gt;I was quite informal, full of alcohol, laptops and food, and with addons like Guitar Hero tournaments, wifi cracking courses or the unique oportunity of hearing “the eye of the tiger” around 10 times per day :)&lt;/p&gt; &lt;p&gt;Apart from the jokes, the sessions were great (ASP.NET MVC, Task Parallel Library, security, XNA, Silverlight, the Wiimote…) and I had a great time with everyone.&lt;/p&gt; &lt;p&gt;You can check a small selection of photos &lt;a href="http://picasaweb.google.com/Kartones/MindCamp20?feat=directlink"&gt;in my photo albums&lt;/a&gt;, and download if you want the small (but dense!) speech I gave about high scalability (sadly, only in spanish, although if a few people request it in english I could translate it) &lt;a href="http://kartones.net/files/folders/highscalability_dev/entry50754.aspx"&gt;from the Downloads section&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://kartones.net/aggbug.aspx?PostID=50757" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/Kartones/~4/S3U8VFLchtw" height="1" width="1"/&gt;</description><category domain="http://kartones.net/blogs/kartones/archive/tags/CodeCamp/default.aspx">CodeCamp</category><category domain="http://kartones.net/blogs/kartones/archive/tags/Events/default.aspx">Events</category><feedburner:origLink>http://kartones.net/blogs/kartones/archive/2010/03/04/back-from-the-mindcamp-2-0.aspx</feedburner:origLink></item><item><title>Using derivated Exception classes for better error handling</title><link>http://feeds.kartones.net/~r/Kartones/~3/WHlAdIAUAfs/using-derivated-exception-classes-for-better-error-handling.aspx</link><pubDate>Tue, 23 Feb 2010 07:46:29 GMT</pubDate><guid isPermaLink="false">b86c0850-82e5-42ed-a9d8-bde9e8f94ec1:50741</guid><dc:creator>Kartones</dc:creator><slash:comments>4</slash:comments><comments>http://kartones.net/blogs/kartones/archive/2010/02/23/using-derivated-exception-classes-for-better-error-handling.aspx#comments</comments><description>&lt;p&gt;One defect that I’ve been finding once and again in the past doing .NET projects is a bad exception handling strategy. &lt;/p&gt; &lt;p&gt;Too many times I’ve seen code that just places a generic &lt;font face="Courier New"&gt;try { … } catch(Exception ex) { … }&lt;/font&gt; code block to capture errors. And of course any code inside throwing generic exceptions (just with different messages).&lt;/p&gt; &lt;p&gt;The &lt;a href="http://msdn.microsoft.com/en-us/library/system.exception.aspx"&gt;System.Exception&lt;/a&gt; class it is indeed the basis of any error that happens, but it is a bad habit to reuse it. Exception represents a fatal error, something critical unexpected.&lt;/p&gt; &lt;p&gt;.NET provides the &lt;a href="http://msdn.microsoft.com/en-us/library/system.applicationexception.aspx"&gt;System.ApplicationException&lt;/a&gt; class for a simple reason. To catch any exception from our applications. &lt;/p&gt; &lt;p&gt;It inherits from Exception, so a generic catch (&lt;font face="Courier New"&gt;Exception ex&lt;/font&gt;) would catch it anyway, but by using it, we differenciate between those exceptions generated by our application and those generated by external factors, like for example an &lt;a href="http://msdn.microsoft.com/en-us/library/system.outofmemoryexception.aspx"&gt;OutOfMemoryException&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;But if we just use ApplicationException instead of Exception we only have two layers of error levels… Why not going a step further and building a full hierarchy of exceptions?&lt;/p&gt; &lt;ul&gt; &lt;li&gt;InvalidRuleSetException  &lt;li&gt;BLLException  &lt;li&gt;ApplicationException  &lt;li&gt;Exception &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Look at that descending list… We can catch a lot of stuff from different layers:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;If something goes wrong in our BLL layer while loading a fictional RuleSet, we can just show a message to the user telling him to choose a correct one.  &lt;li&gt;If somehow the BLL components break, the presentation layer can catch it and present a “&lt;em&gt;We’re having technical problems, please try again later&lt;/em&gt;” message.  &lt;li&gt;If something goes really wrong in the setup of our web application (for example a wrongly configured IIS), we can silently keep users out of the website without showing them multiple nasty errors.  &lt;li&gt;And finally, if the server gets out of free space for the ASP.NET temporal files folder (which has happened to me too), we will avoid more ugly errors or generic IIS error descriptions… &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;The easy way is to stick to simple Exception throwings and catchings, but it doesn’t helps your code readability. And probably, it won’t help too much when the application fails and you just get a generic “Exception” in your log (it is amazing, but some people forget to at least log the full stack trace…).&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;And all of this can be applied to PHP too. PHP contains &lt;a href="http://es2.php.net/manual/en/reserved.exceptions.php"&gt;just two base exception classes&lt;/a&gt;, and &lt;a href="http://es2.php.net/manual/en/spl.exceptions.php"&gt;a few typical derived ones&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;So don’t be lazy and create a hierarchy of exceptions. You, your colleages, and everyone who could use your code or the compiled components will not regret it, I promise.&lt;/p&gt;&lt;img src="http://kartones.net/aggbug.aspx?PostID=50741" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/Kartones/~4/WHlAdIAUAfs" height="1" width="1"/&gt;</description><category domain="http://kartones.net/blogs/kartones/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://kartones.net/blogs/kartones/archive/tags/Patterns+_2600_amp_3B00_+Practices/default.aspx">Patterns &amp;amp; Practices</category><category domain="http://kartones.net/blogs/kartones/archive/tags/.NET/default.aspx">.NET</category><category domain="http://kartones.net/blogs/kartones/archive/tags/PHP/default.aspx">PHP</category><feedburner:origLink>http://kartones.net/blogs/kartones/archive/2010/02/23/using-derivated-exception-classes-for-better-error-handling.aspx</feedburner:origLink></item><item><title>Added a page with my recommended IE addons</title><link>http://feeds.kartones.net/~r/Kartones/~3/0qPyaAU6NuU/added-a-page-with-my-recommended-ie-addons.aspx</link><pubDate>Tue, 16 Feb 2010 01:13:04 GMT</pubDate><guid isPermaLink="false">b86c0850-82e5-42ed-a9d8-bde9e8f94ec1:50734</guid><dc:creator>Kartones</dc:creator><slash:comments>0</slash:comments><comments>http://kartones.net/blogs/kartones/archive/2010/02/16/added-a-page-with-my-recommended-ie-addons.aspx#comments</comments><description>&lt;p&gt;The same that I have a page listing &lt;a href="http://kartones.net/blogs/kartones/pages/my-installed-firefox-addons.aspx"&gt;my recommended/favourite Firefox addons&lt;/a&gt;, I think it was time to do the same with Internet Explorer and provide &lt;a href="http://kartones.net/blogs/kartones/pages/my-internet-explorer-addons.aspx"&gt;a small list of useful addons&lt;/a&gt; (mostly for development/design).&lt;/p&gt; &lt;p&gt;Quite small right now, but if I find other interesting components I’ll update it (you can find the link on the left).&lt;/p&gt; &lt;p&gt;Of course, if you know of other interesting addons, feel free to leave me a comment!&lt;/p&gt;&lt;img src="http://kartones.net/aggbug.aspx?PostID=50734" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/Kartones/~4/0qPyaAU6NuU" height="1" width="1"/&gt;</description><category domain="http://kartones.net/blogs/kartones/archive/tags/Firefox/default.aspx">Firefox</category><category domain="http://kartones.net/blogs/kartones/archive/tags/Internet+Explorer/default.aspx">Internet Explorer</category><feedburner:origLink>http://kartones.net/blogs/kartones/archive/2010/02/16/added-a-page-with-my-recommended-ie-addons.aspx</feedburner:origLink></item><item><title>Too much power, too much control</title><link>http://feeds.kartones.net/~r/Kartones/~3/c_AVyzF_R24/too-much-power-too-much-control.aspx</link><pubDate>Mon, 08 Feb 2010 07:18:18 GMT</pubDate><guid isPermaLink="false">b86c0850-82e5-42ed-a9d8-bde9e8f94ec1:50720</guid><dc:creator>Kartones</dc:creator><slash:comments>3</slash:comments><comments>http://kartones.net/blogs/kartones/archive/2010/02/08/too-much-power-too-much-control.aspx#comments</comments><description>&lt;p&gt;Recently, I had an unfortunate incident with my GMail account. &lt;a href="http://twitter.com/Kartones/status/8364254892"&gt;It got blocked&lt;/a&gt; for around one hour “because of suspicious activity”.&lt;/p&gt;  &lt;p&gt;I was doing some User-Agent tests with Firefox and &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/59"&gt;User Agent Switcher&lt;/a&gt; with GMail open in one tab so you can imagine my terrible crime… nothing at all :) I didn’t even refreshed a lot the GMail tab.&lt;/p&gt;  &lt;p&gt;The feeling of impotence, of not being able to do anything (I use Google for my calendar, documents, emails… even my photos) was very frightening.&lt;/p&gt;  &lt;p&gt;Also, the page’s help was very deceiving. It said to click on a link if I thought I was “innocent”. I did so and it sent me to the help. Inside the Answers system I was able to fill a form, which apparently was sent and I was again in the help, looping between the form and the details.&lt;/p&gt;  &lt;p&gt;So the only solution was to wait until they decided to release my account back again.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Moral of the story: Don’t put too many power in just one place, if someone takes over control of it, you’re screwed.&lt;/p&gt;  &lt;p&gt;I will start migrating all important stuff to a @kartones.net account so in case of more “lockdowns” I can at least unplug the domain from Google Apps for Domain and plug it elsewere to keep it working and receiving emails.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Moral #2: As soon as there’s money implied, everyone is evil. It’s only a matter of who’s more or less evil compared with the others.&lt;/p&gt;&lt;img src="http://kartones.net/aggbug.aspx?PostID=50720" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/Kartones/~4/c_AVyzF_R24" height="1" width="1"/&gt;</description><category domain="http://kartones.net/blogs/kartones/archive/tags/Offtopic/default.aspx">Offtopic</category><category domain="http://kartones.net/blogs/kartones/archive/tags/Google/default.aspx">Google</category><feedburner:origLink>http://kartones.net/blogs/kartones/archive/2010/02/08/too-much-power-too-much-control.aspx</feedburner:origLink></item><item><title>Top 5 Microsoft FAILs</title><link>http://feeds.kartones.net/~r/Kartones/~3/qEU29RKKjKU/top-5-microsoft-fails.aspx</link><pubDate>Sun, 31 Jan 2010 23:39:00 GMT</pubDate><guid isPermaLink="false">b86c0850-82e5-42ed-a9d8-bde9e8f94ec1:50708</guid><dc:creator>Kartones</dc:creator><slash:comments>0</slash:comments><comments>http://kartones.net/blogs/kartones/archive/2010/02/01/top-5-microsoft-fails.aspx#comments</comments><description>&lt;p&gt;Sometimes, learning from past mistakes gives us the best tools to prepare for the future. &lt;/p&gt;  &lt;p&gt;This post might be taken as a flame against MS, but I would love to see similar ones related to Linux, Apple and other major companies like IBM. I would write them (because they all have fails, some of them big too), but I lack the knowledge as I have been most of my life in a “Microsoft ecosystem”.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;b&gt;MSN Network&lt;/b&gt;: Microsoft’s attempt to conquer the online world by creating “their own internet” (much like AOL but with greater ambitions). It came with Windows 95 and on CDs. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Windows ME&lt;/b&gt;: The bastard Windows son. Everybody hated it, nobody can remember anything good about it without cheating and looking at the Wikipedia. Half-way between Windows 98 and Windows 2000, was quickly killed with Windows XP. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Internet Explorer 1-6&lt;/b&gt;: We’ve needed 7 versions of IE to start to have a decent browser. Always late (or directly the last) implementing all standards and browser features (like tabs). IE6 has particulary created &amp;quot;the way of the hacks&amp;quot; related to CSS and Javascript, hurting web development even as of today (but hopefully finally dying). &lt;/li&gt;    &lt;li&gt;&lt;b&gt;XBox 360 RRoD&lt;/b&gt;: Probably the best actual-generation gaming console and at the same time the most hardware failures-prone one in history. During years, almost 100% of built consoles could potentially “achieve” the Red Ring of Death, so MS had to extend the warranty period, change the motherboard and even create a specific motherboard to fix old console models without a chance of having problems again in the future. Fortunately the problem seems to be perfectly solved now and all consoles in stores work without problems. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Live for Windows&lt;/b&gt;: After the success of XBox Live, Microsoft got greedy and tried to charge PC users for something they always had for free: online multiplayer. It got so bad acceptance that they switched to just provide PC achievements, DLC and since recently a small online distribution store (as &lt;a href="http://www.steampowered.com"&gt;Steam&lt;/a&gt;). &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;As mentions that didn’t promoted to the final list, I had two more candidates:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;b&gt;J++/J#&lt;/b&gt;:&amp;nbsp; Nobody knows anybody that has actually used J++ or more recently J#. It was a failed attempt to bring Java developers to the Visual Studio world and do a lock-in on the Windows platform. Finally Microsoft decided to “retire” J# after Visual Studio 2005.&lt;/li&gt;    &lt;li&gt;&lt;b&gt;MSN Search&lt;/b&gt;: A terrible “search engine” that for years has only had usage because &lt;a href="http://www.msn.com"&gt;www.msn.com&lt;/a&gt; was the homepage of Internet Explorer. After a long number of versions, they have renamed it to &lt;b&gt;Bing&lt;/b&gt; to celebrate a brand new search engine, and seems that it is finally being worth a try and actually providing at least decent results. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;As usual, this is my personal opinion. I’ve lived almost all the Windows lifecycle (since Windows 3.11) and despite of this list, I still prefer Microsoft products on some areas (like the operating system or the development tools).&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Note&lt;/b&gt;: Although many will claim that Windows Vista should be on this list, I particulary don’t see it as a Windows ME 2. While Windows 7 is for sure “the real Windows Vista”, Vista itself was not bad, only slow, and included a bunch of great features (like the great security enhancements). It just lacked a proper polishing.&lt;/p&gt;&lt;img src="http://kartones.net/aggbug.aspx?PostID=50708" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/Kartones/~4/qEU29RKKjKU" height="1" width="1"/&gt;</description><category domain="http://kartones.net/blogs/kartones/archive/tags/Windows/default.aspx">Windows</category><category domain="http://kartones.net/blogs/kartones/archive/tags/Postmortem/default.aspx">Postmortem</category><category domain="http://kartones.net/blogs/kartones/archive/tags/MSN/default.aspx">MSN</category><category domain="http://kartones.net/blogs/kartones/archive/tags/Microsoft/default.aspx">Microsoft</category><feedburner:origLink>http://kartones.net/blogs/kartones/archive/2010/02/01/top-5-microsoft-fails.aspx</feedburner:origLink></item><item><title>POST from http to https: The hidden security</title><link>http://feeds.kartones.net/~r/Kartones/~3/9ADtPbLBoAs/post-from-http-to-https-the-hidden-security.aspx</link><pubDate>Wed, 20 Jan 2010 21:27:30 GMT</pubDate><guid isPermaLink="false">b86c0850-82e5-42ed-a9d8-bde9e8f94ec1:50689</guid><dc:creator>Kartones</dc:creator><slash:comments>0</slash:comments><comments>http://kartones.net/blogs/kartones/archive/2010/01/20/post-from-http-to-https-the-hidden-security.aspx#comments</comments><description>&lt;p&gt;Most people think that the only way to have a secure login is to make your whole site use SSL. And while in order to have a sniffing-proof site it is indeed required, for most sites just performing a secure login is enough (to avoid sending your username/email + password in clear text through the network).&lt;/p&gt;  &lt;p&gt;How does it work? In the past, sites used to have the login page with https, and after logging in would switch to http (once the cookie is set, session created, ectetera). This is not bad, but if your login page is also the landing page for your site, can take a performance hit to start negotiating SSL channels on each visit.&lt;/p&gt;  &lt;p&gt;A more elegant and performance wise solution, that many sites now do (like Amazon or Twitter), is to keep even the login page in HTTP, but perform the POST to a HTTPS url:&lt;/p&gt;  &lt;p&gt;&lt;img title="http calls example" alt="http calls example" src="http://kartones.net/images_posts/kartonesblog/using_https_action_in_http_login_form.png" /&gt;&lt;/p&gt;  &lt;p&gt;Before any data is sent, the browser will detect that we’re going to post to a secure url and negotiate the SSL/TLS encryption and channel (&lt;em&gt;step 9 in the image&lt;/em&gt;), and only send the data after everything is setup (&lt;em&gt;step 14&lt;/em&gt;).&lt;/p&gt;  &lt;p&gt;After that, we can change again to a HTTP channel and keep browsing at full speed (&lt;em&gt;step 15&lt;/em&gt;), but none of our credentials have been exposed.&lt;/p&gt;&lt;img src="http://kartones.net/aggbug.aspx?PostID=50689" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/Kartones/~4/9ADtPbLBoAs" height="1" width="1"/&gt;</description><category domain="http://kartones.net/blogs/kartones/archive/tags/Security/default.aspx">Security</category><category domain="http://kartones.net/blogs/kartones/archive/tags/Web+Server/default.aspx">Web Server</category><category domain="http://kartones.net/blogs/kartones/archive/tags/SSL/default.aspx">SSL</category><feedburner:origLink>http://kartones.net/blogs/kartones/archive/2010/01/20/post-from-http-to-https-the-hidden-security.aspx</feedburner:origLink></item><item><title>Is Android becoming the new J2ME?</title><link>http://feeds.kartones.net/~r/Kartones/~3/O12RaDS2kuM/is-android-becoming-the-new-j2me.aspx</link><pubDate>Tue, 12 Jan 2010 23:43:24 GMT</pubDate><guid isPermaLink="false">b86c0850-82e5-42ed-a9d8-bde9e8f94ec1:50655</guid><dc:creator>Kartones</dc:creator><slash:comments>0</slash:comments><comments>http://kartones.net/blogs/kartones/archive/2010/01/13/is-android-becoming-the-new-j2me.aspx#comments</comments><description>&lt;p align="justify"&gt;&lt;img title="Android" alt="Android" align="left" src="http://kartones.net/images_posts/kartonesblog/android_logo.png" /&gt;When &lt;a href="http://en.wikipedia.org/wiki/J2me"&gt;J2ME&lt;/a&gt; appeared, we were all told that it would allow to create Java applications that would run on any capable phone.     &lt;br /&gt;Nice utopia, but anybody that has either worked developing or alongside J2ME developers knows that this is, apart from a funny joke, quite distant from reality.&lt;/p&gt;  &lt;p&gt;J2ME, if anything, can be said to be “code one, port everywhere”. With the epic mistake of Sun of letting manufacturers implement their own version of J2ME Virtual Machines, the mess that we have currently gives more headaches that solves problems, but still there are quite a lot of non-smartphones in the market so support and application development has to be still present.&lt;/p&gt;  &lt;p&gt;False capabilities reporting, all kind of errors, problems and bugs on VM implementations lead to almost 100% of the cases leading to a pack of “builds” for specific devices (or if you’re lucky, family of devices of a brand), each with different fixes and/or hacks to bypass the problems.&lt;/p&gt;  &lt;p&gt;So, in conclusion we have a nice idea gone terribly wrong and causing a lot of development problems.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Leaving apart other major PDA types (iPhone, Windows Mobile and BlackBerry), Google probably said “Hey, we can do better! Let’s include normal Java and provide better SDKs, more guidelines, an AppStore like Marketplace but free, and everything will go nice”.&lt;/p&gt;  &lt;p&gt;And yes, the idea is ok, in fact Google is pumping SDKs at quite a fast pace (although they are more related to special launchs like Google Maps Navigation/Motorola Droid or the Nexus One than to the size of changes and new features). &lt;/p&gt;  &lt;p&gt;Android itself is more than decent. IMHO is after the iPhone the best smartphone choice, better than a Blackberry and way better than Windows Mobile (I’ve been a WM user since its 2000 PDAs), the market has a lot of apps…&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;But I see two major problems:&lt;/p&gt;  &lt;p&gt;The first one, Google itself noticed it, and is one of the reasons why Nexus One exists: Pushing SDKs is nice, but if the OS version pushing depends on the Operator, your screwed. In Spain, my HTC Magic runs Android 1.6 because Vodafone rolled the update, but HTC Hero is stuck on 1.5 because Orange hasn’t pushed 1.6 (says will push 2.0 but we’ll see).&lt;/p&gt;  &lt;p&gt;Nexus One will be able to have direct updates, so problem solved, but at the same time google is now a competitor of the manufacturers and operators. The same problem happens with any Windows Mobile device, you usually get stuck with the OS version it has forever. Apple did it correctly because they only build a single range of models, so they control their OS updates.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;And the second problem, is the falacy of Java pure multi-platform, projected on Android. &lt;/p&gt;  &lt;p&gt;At work, we have one specific device that does not render correctly all transparent pngs on WebKit. Why does it happen, if it’s the same browser everywhere? Why some devices throw errors when others work perfectly with the same code? Why Google didn’t thought about multiple resolutions at first, and then launched a device with a crappier, lower resolution than “the standard” after many apps are out?&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Those two things, and some stupid limitations (the browser doesn’t allows HTML file upload controls, but if you install Opera Mini under Android, it is able to use them…) are making me wonder if really Android is so platform independent, or if we’re going the way of a “cooler an better” J2ME version 2.&lt;/p&gt;  &lt;p&gt;If you have an Android phone with some apps installed, you will probably notice this in a subtle way: almost weekly updates on quite a lot of apps, with update logs like “added multiple resolutions support” and then “fixed a few bugs”, “fixed a problem with xxxxx device”, “updated for the nth time to support Android 2.1” (isn’t it backwards compatible?)…&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I wish I’m wrong…&lt;/p&gt;&lt;img src="http://kartones.net/aggbug.aspx?PostID=50655" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/Kartones/~4/O12RaDS2kuM" height="1" width="1"/&gt;</description><category domain="http://kartones.net/blogs/kartones/archive/tags/Java/default.aspx">Java</category><category domain="http://kartones.net/blogs/kartones/archive/tags/Mobile/default.aspx">Mobile</category><category domain="http://kartones.net/blogs/kartones/archive/tags/J2ME/default.aspx">J2ME</category><category domain="http://kartones.net/blogs/kartones/archive/tags/Android/default.aspx">Android</category><feedburner:origLink>http://kartones.net/blogs/kartones/archive/2010/01/13/is-android-becoming-the-new-j2me.aspx</feedburner:origLink></item><item><title>Book Review: Masters of Doom</title><link>http://feeds.kartones.net/~r/Kartones/~3/g8dNCNAxHsQ/book-review-masters-of-doom.aspx</link><pubDate>Wed, 06 Jan 2010 00:39:18 GMT</pubDate><guid isPermaLink="false">b86c0850-82e5-42ed-a9d8-bde9e8f94ec1:50644</guid><dc:creator>Kartones</dc:creator><slash:comments>0</slash:comments><comments>http://kartones.net/blogs/kartones/archive/2010/01/06/book-review-masters-of-doom.aspx#comments</comments><description>&lt;p&gt;&lt;img title="book cover" alt="book cover" src="http://kartones.net/images_posts/screenshots/book_masters_of_doom.jpg" /&gt;&lt;/p&gt;  &lt;p&gt;I’ve writen &lt;a href="http://kartones.net/blogs/kartones/pages/book-reviews.aspx#book010"&gt;a new book review&lt;/a&gt;, this time about the history of John Carmack, John Romero and the company id Software. It’s a biography so don’t expect source code, but a source of motivation ;)&lt;/p&gt;&lt;img src="http://kartones.net/aggbug.aspx?PostID=50644" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/Kartones/~4/g8dNCNAxHsQ" height="1" width="1"/&gt;</description><category domain="http://kartones.net/blogs/kartones/archive/tags/Books/default.aspx">Books</category><category domain="http://kartones.net/blogs/kartones/archive/tags/Review/default.aspx">Review</category><feedburner:origLink>http://kartones.net/blogs/kartones/archive/2010/01/06/book-review-masters-of-doom.aspx</feedburner:origLink></item></channel></rss>
