<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-16689853</id><updated>2011-12-13T04:21:39.472-05:00</updated><category term='flash'/><category term='funny'/><category term='personal'/><category term='translation'/><category term='GDC'/><category term='mail.com'/><category term='as3'/><category term='programming'/><category term='games'/><category term='casual games'/><category term='hiring'/><category term='game design'/><category term='game development'/><category term='copyright'/><category term='interview'/><category term='social networks'/><category term='job search'/><category term='web2.0'/><category term='DMCA'/><category term='email'/><category term='DS'/><category term='project management'/><category term='Digg'/><category term='ma.gnolia'/><category term='google'/><category term='onlive'/><title type='text'>Grumpy Tech Guy</title><subtitle type='html'>Software engineer's thoughts on technology - sometimes grumpy, sometimes depressive, sometimes happy (though not often).</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>84</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-16689853.post-2692267499494611528</id><published>2011-01-19T12:57:00.004-05:00</published><updated>2011-01-19T13:14:45.215-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='as3'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='flash'/><title type='text'>AS3 class name collision - a story of one bug</title><content type='html'>Recently I spent almost a day fighting with a mysterious Flash error.&lt;br /&gt;&lt;br /&gt;Here is the situation. The system is structured in the following way: One SWF (a wrapper) loads other SWFs  (let's call them “modules”). One of the modules, in turn, loads another SWF, which we will call “content”. The wrapper is being developed by one programmer, the content – by another and I am working on the module (a typical setup for a virtual world project).&lt;br /&gt;&lt;br /&gt;The wrapper is tied to the server in many ways, so I prefer to test locally only the module and the content (besides, the interaction between the wrapper and the module is minimal, and was already tested). &lt;p&gt;So, I launched the module locally, and the system run fine. The content is loaded, the module cast it to the required interface and called certain methods on the content – everything is perfect. Then I uploaded the module and the game to the server, launched the entire system , and the flash player reported an exception. I checked the source and quickly realized that the exception happened because the module could not cast  the loaded object to the required interface.&lt;/p&gt;&lt;p&gt;My first thought was that the SWF for some reason cannot be loaded from the server. I've added all possible error handlers, and found nothing. The content was loaded in the following way:&lt;/p&gt;&lt;blockquote&gt;_loader = new Loader();&lt;br /&gt;_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete, false, 0, true);&lt;br /&gt;_loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onErrorLoading, false, 0, true);&lt;br /&gt;_loader.contentLoaderInfo.addEventListener(IOErrorEvent.NETWORK_ERROR, onErrorLoading, false, 0, true);&lt;br /&gt;_loader.contentLoaderInfo.addEventListener(IOErrorEvent.VERIFY_ERROR, onErrorLoading, false, 0, true);&lt;br /&gt;_loader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityErrorLoading, false, 0, true);&lt;br /&gt;_loader.load(new URLRequest(fileLocation));&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Here is what happened in the onLoadComplete method:&lt;br /&gt;&lt;blockquote&gt;log.debug("loader info content type:"+_loader.contentLoaderInfo.contentType);&lt;br /&gt;log.debug("loader info URL:"+_loader.contentLoaderInfo.url);&lt;br /&gt;log.debug("loader content:"+_loader.content);&lt;br /&gt;myContent = _loader.content as MyContentInterface;&lt;br /&gt;&lt;/blockquote&gt;The onErrorLoading method was never called; the only method executed was  onLoadComplete. When running module locally, I was getting the following output in the log:&lt;br /&gt;&lt;blockquote&gt;10:33:00:453 [DEBUG] loader info content type:application/x-shockwave-flash&lt;br /&gt;10:33:00:453 [DEBUG] loader info URL:&lt;a class="linkification-ext" href="file:///C" title="Linkification: file:///C"&gt;file:///C&lt;/a&gt;|/Projects/[... some correct path here ...]/Main.swf&lt;br /&gt;10:33:00:453 [DEBUG] loader content:[object Main]&lt;br /&gt;&lt;/blockquote&gt;And here is what I was getting on the server:&lt;br /&gt;&lt;blockquote&gt;12:01:03:375 [DEBUG]  loader info content type:application/x-shockwave-flash&lt;br /&gt;12:01:03:375 [DEBUG]  loader info URL:[... correct URL...]&lt;br /&gt;12:01:03:375 [DEBUG]  loader content:instance43942.instance43943&lt;br /&gt;&lt;/blockquote&gt;It is obvious that the difference is in the loader content: in one case it is an object, and in the other case it contains some strange instances.&lt;p&gt;At this point I got stuck. I tortured the developer of the content SWF, asked him to try different compile modes (with/without network support etc...), checked file versions and paths on the server, checked security settings – all without any success or any clue.&lt;/p&gt;&lt;p&gt;After many painful hours, all of a sudden I got an insight. I run and checked the source code for the wrapper and for the content SWFs. Turned out that the developers of both wrapper and content SWFs called their main classes Main, and put them in the default package. Of course, the content SWF was loading fine,  but its Main class could not be loaded because of the name collision. When the content developer moved his Main class into the proper package the problem was solved and the whole system worked like a charm.&lt;/p&gt;&lt;p&gt;The most curious thing here is that the Flash player did not complain about the name collision in any way – it just silently ignored the problem. &lt;/p&gt;&lt;p&gt;Hopefully my story will help someone and save their time.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-2692267499494611528?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/2692267499494611528/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=2692267499494611528' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/2692267499494611528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/2692267499494611528'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2011/01/as3-class-name-collision-story-of-one.html' title='AS3 class name collision - a story of one bug'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-1877179225275994401</id><published>2010-02-25T11:29:00.002-05:00</published><updated>2010-02-25T11:34:21.852-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hiring'/><category scheme='http://www.blogger.com/atom/ns#' term='interview'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='job search'/><title type='text'>How to prepare a code sample</title><content type='html'>In some companies asking the job candidates to provide code samples before the interview became a standard part of the hiring process. Here are some guidelines which will help you to avoid common mistakes, make a good impression with your code, and, as a result, get the interview.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1.Pick the right code.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Select the code which is as relevant as possible both to the technology and to the industry. Of course, exact match is not always possible, but try to avoid obvious mismatches. For example, for a position of a Java developer, Java code will be, naturally, the best. C++ or AS3 might do; Perl or Haskell will be poor choices – quite possible that the engineer who will review your code will not know these languages and will be unable to adequately evaluate it.&lt;br /&gt;&lt;br /&gt;Do not send too much. For me, 1-2 files is generally enough to get the idea.&lt;br /&gt;&lt;br /&gt;Be careful about sending entire projects. First, usually projects are much bigger than what I really have time to evaluate. Second, I might be tempted to build the project and run it –  therefore, you have to make sure that the code not only looks good, but also runs good.&lt;br /&gt;&lt;br /&gt;Send only the code that was written by yourself. Even if the other person's code is a part of the project, don't send it (here is another good reason not to send a full project).&lt;br /&gt;&lt;br /&gt;Do not send trivial or auto-generated code. A class which consists only of data members and getters/setters is not very interesting to review.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2.Prepare the code&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If there is a well-known style guide  for your language, make sure your code follows it. It always makes a good impression and shows you as a professional, who knows and respects the standards and conventions of the industry.&lt;br /&gt;&lt;br /&gt;Also make sure that:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Your code has enough comments, and that the comments follow the format recommended for your language (for example, in Java the comments should follow the JavaDoc rules). The comments should include one comment per code unit (module, class etc), and one comment per function (method etc.). Reviewer should be able to easily understand the purpose of the code and get some idea how the code is supposed to work.&lt;/li&gt;&lt;li&gt;There is no obvious debugging and development leftovers. Remove all commented out lines, TODO markers, unused variables, debug printing etc.&lt;/li&gt;&lt;li&gt;The variables and functions have meaningful names.&lt;/li&gt;&lt;li&gt;The code is formatted so it is easy to read.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;If your code has a comment with a copyright statement of one of your previous companies, think again, whether you can send it. If you still want to send it, remove the copyright statement.&lt;br /&gt;&lt;br /&gt;Remove all references to a sensitive information. Don't worry if it will make the code unusable, or even prevent it from compiling – just make sure you explained it in the code and in the comments.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3.Prepare yourself.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If your code will be good enough to get you an interview, remember, that your code most definitely will be a part of the conversation, so:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Make sure you understand and can explain each and every word of the code.&lt;/li&gt;&lt;li&gt;If your code uses some design patterns, be ready to discuss them.&lt;/li&gt;&lt;li&gt;Be ready to explain how the code works.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-1877179225275994401?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/1877179225275994401/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=1877179225275994401' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/1877179225275994401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/1877179225275994401'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2010/02/how-to-prepare-code-sample.html' title='How to prepare a code sample'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-1161394369532126188</id><published>2009-04-06T22:11:00.002-04:00</published><updated>2009-04-06T23:10:48.211-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='game development'/><category scheme='http://www.blogger.com/atom/ns#' term='GDC'/><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><title type='text'>Unusual games at GDC 2009</title><content type='html'>Two very interesting events at GDC were &lt;a href="http://www.igf.com/"&gt;IGF (Independent Games Festival)&lt;/a&gt; and &lt;a href="http://www.experimental-gameplay.org/"&gt;experimental gameplay workshop&lt;/a&gt;. I immensely enjoyed people presenting new creative ideas, prototypes and finished games, and I wrote down the names of the games that caught my eye into my little black notebook. So today I want to share the list with you, my dear readers. But I have to start with three disclaimers.&lt;br /&gt;&lt;br /&gt;1. This by no means is a comprehensive list of all interesting or unusual games presented at GDC. It is not even a complete list of the games I liked! And I want to say, that I admire everybody who had imagination to invent new games, willpower to make them, and guts to present them at GDC. &lt;br /&gt;2. Some of the games are not completed yet, and exist only as prototypes. &lt;br /&gt;3. Some of the things I am going to mention are not games. They are "game-like creations". Be prepared – here be some weird stuff.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Complete Games.&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.dyson-game.com/"&gt;"Dyson"&lt;/a&gt;. According to the game’s site the game is "an ambient real-time strategy with abstract visuals".  The game is about controlling self-replicationg machines to take over asteroids. The game looks strange and interesting!&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.bigfishgames.com/download-games/4166/musaic-box/index.html"&gt;"Musaic Box"&lt;/a&gt;. Created by a Russian team, this game won an "Excellence in design" award at IGF! Congratulations, guys! It was cool to hear "Spasibo" from the stage! The game is being sold now by Big Fish Games.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.kongregate.com/games/GlaielGamer/closure"&gt;"Closure"&lt;/a&gt;. This is an in-browser flash game, built around an idea, that if you can’t see something (because it’s too dark), then it doesn’t exist. Try it!  &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.farbs.org/games.html"&gt;"Rom Check Fail"&lt;/a&gt;. I’ve seen this hilarious game some time ago, but I will happily share it again. If you’ve ever played some old arcade classics, such as "Pac-Man" or "Frogger", then you must play this delightful parody! &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.ludomancy.com/blog/2008/09/15/storyteller/"&gt;"Storyteller"&lt;/a&gt; and &lt;a href="http://www.ludomancy.com/blog/2008/11/11/i-wish-i-were-the-moon-redux/"&gt;"I wish I were the Moon"&lt;/a&gt;. These are not games – more like a study in alternative storytelling. They are short and very unusual. Give them a try – they are in-browser.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Ideas, prototypes etc.&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://eriksvedang.wordpress.com/blueberrygarden/"&gt;"Blueberry Garden"&lt;/a&gt;.  Beautiful and strange graphics make this game a piece of art. I didn’t get an opportunity to play it myself, but I watched other people playing, and they seem to like it. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.playfeist.net/"&gt;"Feist"&lt;/a&gt; seems to be some sort of platformer – but I just love the art! &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.machinarium.com/"&gt;"Machinarium"&lt;/a&gt;. From the creators of "Samorost" and "Samorost 2". Again, look at the art! &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.giantsparrow.com/games/swan/"&gt;"The Unfinished Swan"&lt;/a&gt;. This is a first – person exploration game, which takes place in a totally white world. The player runs with a (probably) paintball gun, which shoots balls of black paint, so the player can see some parts of the world. It’s hard to explain – check out the trailer.&lt;/li&gt; &lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://marctenbosch.com/"&gt;"Miegakure"&lt;/a&gt;.  Unfortunately, the game’s site has only one paragraph about it, but I just had to mention it – a game which happens in a 4D world, which can be somehow manipulated in 3D… &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://achrongame.com/"&gt;"Achron"&lt;/a&gt;. The site defines it as "meta-time strategy game", which means RTS with time travel enabled. By “enabled” I mean all interesting possibilities which arise from a capability to change future by changing the past. Weird – but I do want to play it! &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-1161394369532126188?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/1161394369532126188/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=1161394369532126188' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/1161394369532126188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/1161394369532126188'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2009/04/unusual-games-at-gdc-2009.html' title='Unusual games at GDC 2009'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-4957435438334288710</id><published>2009-04-02T13:22:00.002-04:00</published><updated>2009-04-02T13:26:00.699-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='onlive'/><category scheme='http://www.blogger.com/atom/ns#' term='games'/><category scheme='http://www.blogger.com/atom/ns#' term='game development'/><category scheme='http://www.blogger.com/atom/ns#' term='GDC'/><title type='text'>OnLive</title><content type='html'>As I said in my previous post, &lt;a href="http://www.onlive.com/"&gt;OnLive&lt;/a&gt; attracted quite some attention at GDC 2009. Here are some more details about this new service. The details come from my conversation with one of OnLive representatives – unfortunately, I don't remember his name.&lt;br /&gt;&lt;br /&gt;The general idea of the service can be stated as "Games on demand" (similar to movies on demand). The user gets a client for the OnLive service, which can be either software client in form of a computer program, or hardware client in form of a “microconsole” - a small box which is connected to broadband Internet and to TV via HDMI connection. Then the user is connected to OnLive server and can play any game he or she wants. The came runs on the  OnLive servers, and the image, sound and control commands are transmitted between the client and the service over the Internet. So, essentially, your TV (or computer) becomes just a remote terminal for OnLive servers.&lt;br /&gt;&lt;br /&gt;I've heard already some talks about OnLive being the tomorrow of the gaming and about the imminent death of consoles as we know them now (and of PC gaming as well). From my point of view, these claims are a quite exaggerated (to say the least). First, the service currently works with maximal resolution of 1280 x 720,  that is in 720p mode. From what I understand, this is a limit imposed by the bandwidth (actually, I think it is a miracle they provide stable image at this resolution!). As you can see, the resolution is even worse than 1080p, provided by Xbox and PS3 , to say nothing about decent gaming PCs. Another fact is lag. At the expo the demo run from the server located approximately 50 miles away from the convention center, and the feeling of the games was OK – though even with server that close I felt some “softness” of the control – not a lag, just some unusual feeling. In real life the distance to server will be significantly larger, and this effect will, probably become more noticeable.&lt;br /&gt;&lt;br /&gt;So, I think hardcore gamers will not switch completely to this service. As for more casual gamers – this, of course, will depend heavily on OnLive pricing system. From what the OnLive representative told me, they are still unsure about the model, but, most probably, they will charge the users some  subscription fee, and then charge some amount per game. Until we know more about the prices, it will be hard to tell whether it will be less expensive to use the service, or, maybe, in the long run the purchase of a console will be more financially reasonable.&lt;br /&gt;&lt;br /&gt;Another interesting thing about OnLive is that it makes easy to continue playing your game when you are traveling – as soon as there is a good broadband connection, the player can access the games from anywhere (if there is a server not too far, of course).&lt;br /&gt;&lt;br /&gt;For developers OnLive might be interesting because of several features:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Stable target platform – knowing target hardware will make development much easier;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Direct distribution channel, with possibility to dynamically adjust pricing and get real-time business data;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Reduced piracy and cheats.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Porting the games to OnLive platform is not transparent – developers will have to use special SDK (available for free) to implement, for example, save/load and multiplayer features in the new environment. As of now, there are no plans to support any sort of community or indie game development for OnLive.&lt;br /&gt;&lt;br /&gt;By the way, as for now the multiplayer happens only within OnLive network – though in future it might change.&lt;br /&gt;&lt;br /&gt;To sum it up: I don't think that OnLive will "kill gaming as we know it", but I do think that the service is extremely interesting and promising.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-4957435438334288710?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.onlive.com/' title='OnLive'/><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/4957435438334288710/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=4957435438334288710' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/4957435438334288710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/4957435438334288710'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2009/04/onlive.html' title='OnLive'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-736138810310986309</id><published>2009-03-31T22:04:00.003-04:00</published><updated>2009-03-31T22:08:43.016-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='game development'/><category scheme='http://www.blogger.com/atom/ns#' term='GDC'/><title type='text'>GDC 2009 Summary</title><content type='html'>Yes, I know, this short summary of GDC 2009 got a bit delayed.  But, I think, better late than never (it seems more and more to become my permanent motto). &lt;br /&gt;&lt;br /&gt;In short – it was cool. But for me it was slightly less cool than the previous one, maybe because I’ve started seeing some repetitions in GDC patterns.  But still, it was worth going - tons of inspiration and some pretty interesting talks and new connections. &lt;br /&gt;&lt;br /&gt;These are some most important (from my point of view, of course) points from GDC 2009:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight:bold;"&gt;iPhone.&lt;/span&gt; The same way last year everybody was infatuated with Facebook, this year game developers got a new darling: iPhone. Tens of sessions were dedicated to iPhone development, and iPhone marketing, and iPhone business (One session was titled “Why did iPhone Changed Everything”). There are two reasons people are so excited about it: first, selling apps on iPhone is easy, manageable and understandable process; second, iPhone is, no doubt, an incredibly sexy device. By the way, it seemed like every second GDC attendee was a proud iPhone owner. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight:bold;"&gt;Social games.&lt;/span&gt; Not Facebook-specific anymore, the topic of combining social networks with games is still incredibly hot. The variety of games is wider – from virtual worlds to massively single-player games to advergames that created their own social network… And, of course, everyone is dreaming about marrying social games to iPhone.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.onlive.com/"&gt;Onlive.&lt;/a&gt; This new service offers to use your TV as a dumb terminal for playing top-of-the-line games on a remote server. It attracted much attention on GDC; I talked with some guys from this company and will post more details tomorrow. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-weight:bold;"&gt;Recession.&lt;/span&gt; Many production-related sessions were discussing how to survive it, and there was some feeling of uncertainty in the air. &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt; These are the highlights. In the next couple of days I will post more details  about Onlive, as well as name some of the games that caught my eye.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-736138810310986309?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/736138810310986309/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=736138810310986309' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/736138810310986309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/736138810310986309'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2009/03/gdc-2009-summary.html' title='GDC 2009 Summary'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-7108163215028172472</id><published>2009-02-27T17:39:00.001-05:00</published><updated>2009-02-27T17:40:51.951-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='email'/><category scheme='http://www.blogger.com/atom/ns#' term='mail.com'/><title type='text'>Mail.com Redirection and Spam</title><content type='html'>It happened so that I use mail.com premium redirection service for my emails. (When I started using it it wasn't premium, and it wasn't mail.com either. It was Altavista – does anyone remember this word? - giving out “permanent personal email addresses for life”.)  The service works slowly, but it used to work more or less stable – and I am too lazy to change my primary email address in gazillion places.&lt;br /&gt;&lt;br /&gt;Recently, however, I started getting complaints from my correspondents. They told me that my mailbox bounces their emails. I also started to notice that I am missing some emails. I tried reaching customer service – they told me that everything is all right, yes, everything's fine, and I couldn't reproduce the effect.&lt;br /&gt;&lt;br /&gt;Yesterday, when my wife told me that she got her mails bounced, I got really angry. I asked her for the error, she showed me the bounced letter,  and then I understood what happened. I logged on to my mail.com account – which I usually never do, because, as I said, I am using them only as redirector – and discovered that they turned on spam protection.&lt;br /&gt;&lt;br /&gt;I definitely didn't ask for it, and I don't remember them telling me about it (though I could have overlooked the notice). Which is worse, the setting were totally absurd – caught spam was stored in a “Junk e-mail” folder on the server, so I had no clue that some messages were sorted out. (They could have tag them as spam, or, at least, send me once a day a reminder that such and such messages were put into Junk folder – their system knows that I use it only as redirector!).&lt;br /&gt;&lt;br /&gt;I turned their spam protection off, and I hope it will fix my problems. So, just a word of advice – if you are using mail.com premium redirector, go to the server and check the settings – it might save you from some unpleasant surprises later.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-7108163215028172472?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/7108163215028172472/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=7108163215028172472' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/7108163215028172472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/7108163215028172472'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2009/02/mailcom-redirection-and-spam.html' title='Mail.com Redirection and Spam'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-1219219800637634504</id><published>2009-02-25T14:30:00.002-05:00</published><updated>2009-02-25T14:39:02.661-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='project management'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>In search of a ticketing system</title><content type='html'>Using ticketing systems to organize project workflow became almost my second nature, and now I am looking for a good system to use with my personal projects. Here is what I need:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;The system should be simple enough to be usable in a small-scale environment. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;It should provide all core ticketing features. Tickets should have reasonable set of data fields: type (defect/feature/enhancement etc), status, due date, etc. The system should provide me with capability to assign tickets, to append notes and comments to tickets, to attach files to tickets. It should also provide reasonable number of canned reports (my tickets/all open/ due today etc). &lt;/li&gt;&lt;br /&gt;&lt;li&gt;The system should also have some basic notion of projects, and should be multi-user (I mean that personal to-do lists will not do). &lt;/li&gt;&lt;br /&gt;&lt;li&gt;The system should be able to notify me with email about all relevant events (ticket assigned to me, edited, closed etc.)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The system should be easy to use; preferably with an option to turn off unneeded features.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;It should be installable on a server with no command line access.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;... And, yes, it should be free.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;So far I played with two systems that my hosting provider could install automatically: &lt;a href="http://www.phprojekt.com/"&gt;phprojekt&lt;/a&gt; and &lt;a href="http://www.dotproject.net/"&gt;dotproject&lt;/a&gt;. I didn't like both of them. PHProjekt was just too huge for me,  with no way to turn unneeded modules off (I do not need timecards, chat or helpdesk features, thank you). Dotproject was somewhat better – at least it allowed me to hide all unused modules, and provided more help on its configuration screens. But then I discovered that creating new tickets (“tasks”) was possible only from  the project screen, and I decided that this is too inconvenient to be useful.&lt;br /&gt;&lt;br /&gt;From my other projects I have experience with &lt;a href="http://www.atlassian.com/software/jira/"&gt;Jira&lt;/a&gt; (love it, but it's not free), &lt;a href="http://bestpractical.com/rt/"&gt;RT&lt;/a&gt; (not again, thank you!), &lt;a href="http://trac.edgewall.org/"&gt;Trac&lt;/a&gt; (pretty cool, and free – but, alas, requires command line access to install), and &lt;a href="http://www.fogcreek.com/FogBUGZ/"&gt;FogBugz&lt;/a&gt; (also not free). So, now I am at loss – is there any software at all which fits my needs?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-1219219800637634504?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/1219219800637634504/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=1219219800637634504' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/1219219800637634504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/1219219800637634504'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2009/02/in-search-of-ticketing-system.html' title='In search of a ticketing system'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-6827454781448995901</id><published>2009-02-17T14:02:00.001-05:00</published><updated>2009-02-17T14:09:12.303-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='ma.gnolia'/><title type='text'>Sad story of ma.gnolia</title><content type='html'>Well, well, well... Seems like it takes a really sad story to bring me out of my hibernation. &lt;br /&gt;&lt;br /&gt;The story in short: very popular bookmarks-management service ma.gnolia recently suffered a major data loss – I mean, really, REALLY major. So major that it lost ALL data for ALL users. Now the users are crying over the loss of all their precious bookmarks, and the service owners (or owner?) are inventing some desperate ways of recovering at least parts of users' data (like combing through Google cache) and saying “We are sorry!”.&lt;br /&gt;&lt;br /&gt;This story not only brings the feeling of compassion to poor ma.gnolia users – it also raises some interesting questions.&lt;br /&gt;&lt;br /&gt;For example, the question about the service itself. I absolutely cannot understand, how it could happen that there were no good backups – even a month old backup would be a real salvation here. Even more, it seems that ma.gnolia was a one-man-shop (or, to be more precise, two men shop – this is how many official representatives of ma.gnolia are talking to the frustrated users on some getsatisfaction.com page. Which means one simple fact: hundreds of thousands of people trusted their data to two incompetent and irresponsible guys. The outcome is no wonder. &lt;br /&gt;&lt;br /&gt;But here is the next question: what do we really know about the services we are using on a daily basis? We are storing picture on Flickr, build communities on Facebook and LiveJournal, write our wise thoughts on Blogger – but do we know much about these tools? Who runs them? How well do they protect our data? What will happen if they, like ma.gnolia, screw up big time – can we, the users, get some compensation for the data lost? And what happens if they will just decide to pull the plug – will there be a way for us to reclaim what's ours?&lt;br /&gt;&lt;br /&gt;What I would like to have is the ability to get some sort of verified answers to these questions. I no longer want to hear “we are top of the line technology company staffed with brightest people and using the best hardware and software”. I want somebody to actually go and tell me: “ This Web2.0 service is run by Sam and Bob  from their father's garage; they backup data once in a blue moon and store the only backup on an old DVD-RW disk”. &lt;br /&gt;&lt;br /&gt;In other words, I want to have a centralized online service certification authority. This authority will inspect the company, and, if the company follows certain reasonable rules (have a process for daily data backup in place; use services of professional sysadmins; have hot-swappable backup servers etc.) the authority will issue a certificate, which the company can proudly display on their site. And I, the customer, will definitely prefer the certified services, just because I do not want to lose any more of my data.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-6827454781448995901?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/6827454781448995901/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=6827454781448995901' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/6827454781448995901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/6827454781448995901'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2009/02/sad-story-of-magnolia.html' title='Sad story of ma.gnolia'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-3328799517563260193</id><published>2008-05-19T12:46:00.002-04:00</published><updated>2008-05-19T12:49:31.217-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><category scheme='http://www.blogger.com/atom/ns#' term='social networks'/><title type='text'>MySpace doesn’t like me…</title><content type='html'>Now this is getting ridiculous. After spending some time working on  &lt;a href="http://www.facebook.com/home.php"&gt;Facebook&lt;/a&gt; applications, I decided to have a look at &lt;a href="http://www.myspace.com"&gt;MySpace&lt;/a&gt;, which recently has opened its &lt;a href="http://code.google.com/apis/opensocial/"&gt;OpenSocial&lt;/a&gt; - based developer platform. Since I didn't have a MySpace account, I've created one - did all the steps:  filled in my profile, verified e-mail etc.  Two days later I tried to log-in, but with no success: MySpace didn't even want to help me recover my password, telling me that my e-mail address is not in the system. Okay, I thought, probably just a glitch. I created my account again - and again everything worked smoothly, and I applied for an access to MySpace developer platform. My application was approved, and today I decided to give it a try. And guess what - the same story happens again! My account is not there, and MySpace doesn't even recognize my e-mail. &lt;br /&gt;&lt;/p&gt;&lt;p&gt;Probably MySpace just doesn't' like me…  Oh well, now I have no warm feelings towards it either. But since I might have to do some work with its API, I guess I have no other choice but to learn how to love it…&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-3328799517563260193?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/3328799517563260193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=3328799517563260193' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/3328799517563260193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/3328799517563260193'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2008/05/myspace-doesnt-like-me.html' title='MySpace doesn’t like me…'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-2254825847420700655</id><published>2008-03-03T18:55:00.002-05:00</published><updated>2008-03-03T19:03:23.233-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='game development'/><category scheme='http://www.blogger.com/atom/ns#' term='GDC'/><title type='text'>GDC 2008 recap.</title><content type='html'>A week has passed since I returned from GDC 2008. Here I just want to jot down a brief summary of some things that got my attention. Of course, most of them are related to casual games – since I’m mostly interested in casual games development, I tried to concentrate in this area; it’s simply impossible to get to each interesting event and presentation at GDC!&lt;br /&gt;&lt;br /&gt;1. At one of the panel sessions, several participating casual game developers unanimously agreed that the “try before you buy” business model for downloadable games is totally broken and should die. Since it used to be one of the most popular models, if this is true, then, probably, some radical shift in casual games distribution is coming. Also, on the same note, many people from the casual games industry expressed an opinion that now it is extremely difficult for new developers to successfully bring their titles on the market. &lt;br /&gt;&lt;br /&gt;2. “Casual MMOs” became a hot topic. I suppose that partially the interest is ignited by the different business model, which might turn out to be more stable and reliable than “try before you buy”.&lt;br /&gt;&lt;br /&gt;3. Facebook as a platform for game building and distribution was also mentioned in many discussions. The idea of “marriage” between casual games and social networks seems to be very innovative and promising – the only problem is, as for now, there are no good way to monetize this sort of games. I personally think that the Facebook gaming, at least in its present form, will be a short-lived phenomenon – people will simply get tired of the “viral distribution”, which, essentially, leads to increase of spam.&lt;br /&gt;&lt;br /&gt;4. There is an observable trend to move away from the traditional match-3 style of casual games into a not-yet-explored territory between casual and hardcore. Designers, definitely, desire it – I am not so sure about the players.&lt;br /&gt;&lt;br /&gt;5. Community game design. Microsoft and EA presented somewhat similar ideas – make creation of casual games easy and open publishing for everybody. Microsoft in the keynote announced &lt;a href="http://blogs.msdn.com/xna/archive/2008/02/20/announcing-xbox-live-community-games.aspx"&gt;“Xbox live community games”&lt;/a&gt; , and EA presented &lt;a href="https://www.simscarnival.com/portal/signin"&gt;“Sims Carnival”&lt;/a&gt;. Microsoft called their service “A Youtube for the games”. It sounds appropriate, and, I think, the landscape of casual (and not only casual) gaming will be significantly changed by this sort of services.&lt;br /&gt;&lt;br /&gt;6.  &lt;a href="http://emotiv.com/corporate/2_0/2_2.htm"&gt;Emotiv Epoc Neuroheadset &lt;/a&gt; – control games with your mind! This sounds like some cyberpunk idea, but the device presented by Emotiv worked (though a little bit uncertain), and they’re promising to bring it to the consumer market in less than a year!  (Several other companies presented similar devices – I don’t remember their names.)&lt;br /&gt;&lt;br /&gt;7. Now, one thing that really disappointed me was the Developer Choice Awards. Not the awards themselves - rather, the selection of the games that were nominated. Of 24 games, nominated for different awards (technology, sound, graphics etc.), 9 (more than a third part!) were shooters, 5 – arcades. Other genres were either not present at all, or represented by 1-2 titles.  No simulations, no strategy – neither turn-base, nor RTS, no quests, no sports (!). Either the selection was somehow skewed, or something very wrong is going on with the game industry as a whole. &lt;br /&gt;&lt;br /&gt;Technorati tags: &lt;a href="http://technorati.com/tag/GDC" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=GDC" alt=" " /&gt;GDC&lt;/a&gt;, &lt;a href="http://technorati.com/tag/gaming" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=gaming" alt=" " /&gt;gaming&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-2254825847420700655?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/2254825847420700655/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=2254825847420700655' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/2254825847420700655'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/2254825847420700655'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2008/03/gdc-2008-recap.html' title='GDC 2008 recap.'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-8745805500520236010</id><published>2007-12-11T17:17:00.000-05:00</published><updated>2007-12-11T17:31:39.720-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>8 rules for documenting your product</title><content type='html'>This year I’ve had some really frustrating experience working with several new libraries and tools. In most cases, the reason for the frustration was related to the abysmal quality of the documentation for the products I've used. I do not want to point fingers and name the companies – from what I’ve seen, the problems I’ve encountered are not specific to these particular vendors, but, rather, plague the whole industry. Instead,  I’ve tried to summarize my experience into some do’s and don’ts. So, if you want the user to have a good time working with your product…&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Provide documentation in a well-known format. Make sure users can easily print all documentation, or selected parts. Avoid custom help browsers, exotic file formats and all this kind of garbage.&lt;/li&gt;&lt;li&gt;Provide all types of documents. Generally, a good set of documents should include Setup Guide, Manual, Reference and Examples. Each document here has its own purpose, and cannot be replaced with another. For some reason in many cases I’ve seen API reference provided as both Reference and Manual documents. Don’t do it. In the best case, user spends extra time trying to understand from the reference the right way to do something. In the worst, user has no other choice but to use Google.&lt;/li&gt;&lt;li&gt;Do not “crowdsource” your documentation. Forums, wikis, mailing lists, FAQs are wonderful, very useful tools – but they can’t replace a normal, “static” documentation.&lt;/li&gt;&lt;li&gt;Document all the relevant concepts. If the product introduces a new concept (algorithm, data structure etc.), it definitely should be described and explained as thorough as possible. If the concept is not new and is already used at least in some part of an industry, a reference should be placed to the available description and explanation. (Of course, a good judgment should be applied here. Definitely, there is no need to explain the idea of, say, mouse cursor. )  Specify all differences of your product with the existing standards.&lt;/li&gt;&lt;li&gt;Provide a 100% complete API reference. Even the trivial calls, like getters and setters should have descriptions. There reason for this rule is quite simple: it’s much easier to just document everything, than to try and correctly divide methods into trivial and non-trivial. Besides, pretty often a seemingly trivial method turns out to be much more complex than you initially thought.&lt;/li&gt;&lt;li&gt;Give each user access to all documentation. I’ve seen some companies allowing users to access only documentation for the products they purchased, and in my point of view it is absolutely ridiculous.&lt;/li&gt;&lt;li&gt;With each new release provide a “What’s new in this release” document, or at least a changelog. The document should not only highlight new features, but also specify most prominent bug fixes, and tell user about all cases when the new release is not backwards-compatible with the previous one.&lt;/li&gt;&lt;li&gt;Constantly maintain all dynamic online resources. Forum should be moderated and questions posed there should be answered, some popular questions should be added to FAQ, wiki should be cleaned etc.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Technorati tags: &lt;a href="http://technorati.com/tag/software" rel="tag"&gt;&lt;img style="border: 0pt none ; vertical-align: middle; margin-left: 0.4em;" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=software" alt=" " /&gt;software&lt;/a&gt;, &lt;a href="http://technorati.com/tag/programming" rel="tag"&gt;&lt;img style="border: 0pt none ; vertical-align: middle; margin-left: 0.4em;" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=programming" alt=" " /&gt;programming&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-8745805500520236010?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/8745805500520236010/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=8745805500520236010' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/8745805500520236010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/8745805500520236010'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2007/12/8-rules-for-documenting-your-product.html' title='8 rules for documenting your product'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-3168314863931783525</id><published>2007-12-03T12:10:00.000-05:00</published><updated>2007-12-03T12:19:07.212-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DS'/><title type='text'>R4DS and homebrew</title><content type='html'>Recently I’ve got my hands on a cool little add-on for &lt;a href="http://en.wikipedia.org/wiki/Nintendo_DS"&gt;Nintendo DS&lt;/a&gt;. It is called &lt;a href="http://www.r4ds.com/r4ds.htm"&gt;R4DS (Revolution for DS)&lt;/a&gt;, and, basically, is a device which allows you to run DS &lt;a href="http://en.wikipedia.org/wiki/Homebrew_%28video_games%29"&gt;homebrew applications&lt;/a&gt; from a standard &lt;a href="http://en.wikipedia.org/wiki/MicroSD"&gt;MicroSD&lt;/a&gt; card. The device has a form factor of a standard DS game card, and acts as an adapter for MicroSD card. It has some sort of a shell software onboard, which allows you to easily access data on the flash card, to start programs etc. It is really an extremely cool gadget.&lt;br /&gt;&lt;br /&gt;Well, it seems that Nintendo is not happy about the device at all. Nintendo spokesman is being quoted to say &lt;a href="http://technology.timesonline.co.uk/tol/news/tech_and_web/gadgets_and_gaming/article2933237.ece"&gt;“We are keeping a close eye on the products and studying them. But we cannot smash all of them”&lt;/a&gt;. This, I think, in general summarizes the feelings of all closed-platform device producers towards homebrew. &lt;br /&gt;&lt;br /&gt;On one hand, I can understand the reasons behind their position. R4DS and similar devices are being considered to be used mostly for game pirating – and, I have to admit, running “backup ROMs” is extremely easy with R4DS. So, the device seems to pose a threat to Nintendo and to all companies who officially develop games for DS.&lt;br /&gt;&lt;br /&gt;But let’s look at this issue from a little bit different angle. DS is an amazing device, which is capable of many things (it has touchscreen, stereo sound, built-in WiFi), but currently locked almost exclusively to games. If you look at a homebrew directory, you will see a multitude of useful applications there – IM messengers, mediaplayers, email readers, communication tools - all written by enthusiasts. Just think – how all these applications would increase the appeal of DS to the customers, would they be officially accepted by Nintendo! Instead of alienating the enthusiast programmers crowd, Nintendo could help them, and, by doing this, simultaneously improve its public image and significantly increase their customer base. They could manufacture and sell devices like R4DS by themselves - another stream of revenue for them! Yes, the number of pirated game users will, probably, go up. But I strongly doubt that the change would be a significant one. After all, as all experience shows us, people who would run pirated games will do it this way or that, regardless of the existence of the official tools.&lt;br /&gt;&lt;br /&gt;Situation with Nintendo is not unique. Generally speaking, homebrew scene for all platforms is always being frowned upon by the official platform producer. But I think that it’s time to change this attitude. Instead of fighting the enthusiasts, the manufacturers should join forces with them. This will lead to more and better software on better devices, which, in the end, is beneficial for all. &lt;br /&gt;&lt;br /&gt;Technorati tags: &lt;a href="http://technorati.com/tag/nintendo" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=nintendo" alt=" " /&gt;nintendo&lt;/a&gt;, &lt;a href="http://technorati.com/tag/ds" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=ds" alt=" " /&gt;ds&lt;/a&gt;, &lt;a href="http://technorati.com/tag/r4ds" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=r4ds" alt=" " /&gt;r4ds&lt;/a&gt;, &lt;a href="http://technorati.com/tag/homebrew" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=homebrew" alt=" " /&gt;homebrew&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-3168314863931783525?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/3168314863931783525/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=3168314863931783525' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/3168314863931783525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/3168314863931783525'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2007/12/r4ds-and-homebrew.html' title='R4DS and homebrew'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-3886290066892749269</id><published>2007-05-15T15:52:00.000-04:00</published><updated>2007-05-15T16:02:53.829-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='copyright'/><category scheme='http://www.blogger.com/atom/ns#' term='DMCA'/><title type='text'>Intellectual Property Protection Act of 2007</title><content type='html'>A new legislative proposal was introduced yesterday to U.S. Congress by Attorney General Alberto Gonzales. The new law, called “Intellectual Property Protection Act of 2007” not only increases penalties for copyright violations and makes it easier for the government to perform searches and seizures, but also includes something new: criminalizing “attempts” to violate copyright laws.&lt;br /&gt;&lt;br /&gt;From the document:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;“… an attempt to violate the criminal copyright statute should be counted an offence whether it is successful or not.”&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;I am not a lawyer, but this sounds scary. The document does not specify anywhere what constitutes an “attempt”. For example, imagine that I mistakenly configured my home web server so that my music collection became accessible from outside. No one ever downloaded anything – but it was an attempt, wasn’t it?&lt;br /&gt;&lt;br /&gt;There is more interesting stuff in this proposal. For example, how do you like this one:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;“…Because prosecutors work for public good, they should be able to institute an infringement prosecution even if the copyright has not yet been registered.”&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Or this:&lt;br /&gt;&lt;blockquote&gt;“…penalties that apply when the offense "consists of' reproduction or distribution, also apply when reproduction or distribution is intended but not completed.”&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Or:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;“Currently, a Federal court may issue an order authorizing the use of a voice intercept (otherwise known as a "wiretap") in the investigations of a host of Federal crimes; copyright and trademark counterfeiting crimes are not among them. This is unacceptable.”&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;You can read the whole text of the bill &lt;a href="http://politechbot.com/docs/doj.intellectual.property.protection.act.2007.051407.pdf"&gt;here&lt;/a&gt; (PDF), and some analysis &lt;a href="http://news.com.com/8301-10784_3-9719339-7.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I do hope that this bill will never become a law. DMCA is bad enough without this sort of enhancements. Giving the government ability to sue people for attempts and intents to share a file is stupid and dangerous.&lt;br /&gt;&lt;br /&gt;Technorati tags: &lt;a href="http://technorati.com/tag/copyright" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=copyright" alt=" " /&gt;copyright&lt;/a&gt;, &lt;a href="http://technorati.com/tag/law" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=law" alt=" " /&gt;law&lt;/a&gt;, &lt;a href="http://technorati.com/tag/DMCA" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=DMCA" alt=" " /&gt;DMCA&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-3886290066892749269?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/3886290066892749269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=3886290066892749269' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/3886290066892749269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/3886290066892749269'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2007/05/intellectual-property-protection-act-of.html' title='Intellectual Property Protection Act of 2007'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-3131080829072062668</id><published>2007-05-07T12:15:00.001-04:00</published><updated>2007-05-07T14:11:50.240-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='game development'/><category scheme='http://www.blogger.com/atom/ns#' term='translation'/><title type='text'>S.T.A.L.K.E.R  - localization disaster.</title><content type='html'>Yesterday I’ve managed at last to get my hands on &lt;a href="http:/www.stalker-game.com"&gt;S.T.A.L.K.E.R.&lt;/a&gt; I was extremely interested in this game since the day it was announced (November 2001) for several reasons. &lt;br /&gt;First, the game is loosely based on a sci-fi novel &lt;a href="http://en.wikipedia.org/wiki/Roadside_Picnic"&gt;“The Roadside Picnic”&lt;/a&gt;, which is one of my favorite sci-fi novels of all the time. In Russia it was (and, probably, is) a cult novel, read by almost everyone. A &lt;a href="http://en.wikipedia.org/wiki/Stalker_%28film%29"&gt;masterpiece movie&lt;/a&gt; by Andrei Tarkovsky, also loosely based on this book, added to its popularity. (By the way, do yourself a favor and &lt;a href="http://www.russiansifiction.com/translated/strugazckie/picnic/index.php"&gt;read&lt;/a&gt; it – not only will you treat yourself to one of the finest works of science fiction, but also, if you are playing S.T.A.L.K.E.R, you will get some insights on nature of the game world). The setting of the novel seemed to be amazingly well-suited for a computer game, and I dare say that it was a dream of many Russian programmers to create such a game. (I did one, very primitive, for a programmable calculator when I was in school). So, the news about a full-scale game based on the “Roadside Picnic” immediately caught my attention.&lt;br /&gt;&lt;br /&gt;Second, I am very interested in the state of the game development market in Russia – partially because of my general interest in game design/development, partially because of myself being of Russian origin, and partially, because I am somewhat puzzled with the fact that Russian programmers, artists and game designers, having tremendous potential, still didn’t realize it in any significant number of world-class games.&lt;br /&gt;&lt;br /&gt;And third… Well, as I said, the project was announced in November 2001. The original release date was sometime in 2003, but the game was delayed so many times that I thought the project eventually will be sacked to cut losses. So, when I’ve heard that the game is being released at last, I was all curios as to what is the result of the over-ambitious and over-delayed project.&lt;br /&gt;&lt;br /&gt;Well, I am not going to write a game review here. It will be enough to say that the game is a resource hog, but is definitely worth playing. It looks beautiful, and it sounds… &lt;br /&gt;&lt;br /&gt;Here we came right to the point I was going to talk about. It’s not the quality of the sound – it’s the fact that the sounds in the game were not localized at all. The game features a lot of speech – and in the version I’ve bought 3 days ago from a US retail store, all the speech is still Russian. (Well, to be more precise, all but the speech of some main characters.)  It’s not only bad that the amazing ambiance effect is totally lost for non-Russian speaking players (I’ve spent 10 minutes just listening to a random conversations of non-player characters sitting around a campfire: they were discussing their lives, telling jokes and even playing a guitar! This is so cool – but 100% in Russian, without even subtitles). Some quite important phrases are left in Russian too. For example, if you approach certain characters with a gun in your hands, they will react by saying: “Uberi pushku!” which is Russian for “Put away your gun”. If you don’t understand this, too bad for you. Or, early in the game a helicopter appears above your head, and you can hear a radio conversation of military men in the ship, which goes something like the following:&lt;br /&gt;-What’s this jerk doing down there? Let’s kill him.&lt;br /&gt;-Let him be, he’s not that important to waste ammo on him…&lt;br /&gt;&lt;br /&gt;And, as you could guess, the conversation is also in pure Russian, without any subtitles. So without knowing the language the player misses an important bit of information – the attitude of military towards him. &lt;br /&gt;&lt;br /&gt;I feel really sorry for the developers and designers of S.T.A.L.K.E.R. It seems like someone was trying to cut some corners in localization. But as a result, not only the corners were cut – foreign players were also cut off the game. Such a stupidity!&lt;br /&gt;&lt;br /&gt;Technorati tags: &lt;a href="http://technorati.com/tag/S.T.A.L.K.E.R." rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=S.T.A.L.K.E.R." alt=" " /&gt;S.T.A.L.K.E.R.&lt;/a&gt;, &lt;a href="http://technorati.com/tag/localization" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=localization" alt=" " /&gt;localization&lt;/a&gt;, &lt;a href="http://technorati.com/tag/gaming" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=gaming" alt=" " /&gt;gaming&lt;/a&gt;, &lt;a href="http://technorati.com/tag/games" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=games" alt=" " /&gt;games&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-3131080829072062668?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/3131080829072062668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=3131080829072062668' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/3131080829072062668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/3131080829072062668'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2007/05/stalker-localization-disaster_07.html' title='S.T.A.L.K.E.R  - localization disaster.'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-2422812240481228085</id><published>2007-05-03T16:41:00.000-04:00</published><updated>2007-05-03T16:55:59.422-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DMCA'/><category scheme='http://www.blogger.com/atom/ns#' term='Digg'/><title type='text'>Digg and the magic number</title><content type='html'>The story of the &lt;a href="http://tinyurl.com/2c7gnw"&gt;magic number&lt;/a&gt; which is claimed to be the HD-DVD production key is quite amusing. In short: the key somehow leaked, someone put it onto their blog and then published the story on &lt;a href="http://digg.com/"&gt;Digg&lt;/a&gt;. &lt;a href="http://www.aacsla.com/home"&gt;The company which produced the key&lt;/a&gt; started sending cease and desist letters to all blogs that published this number. Digg got one of those letters, and the owners of Digg decided to comply and removed the article. This action infuriated Digg users  - they started writing incredible number of comments containing the number, and the bloggers all around the world started writing posts about it. And, as a result, Digg owners gave in. Kevin Rose, the founder of Digg, put a &lt;a href="http://blog.digg.com/?p=74"&gt;post&lt;/a&gt; on his blog with the key number in the title, admitting that he heard the voice of the crowd, and that Digg will no longer remove the articles with the key. He said:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;But now, after seeing hundreds of stories and reading thousands of comments, you’ve made it clear. You’d rather see Digg go down fighting than bow down to a bigger company. We hear you, and effective immediately we won’t delete stories or comments containing the code and will deal with whatever the consequences might be.&lt;br /&gt;If we lose, then what the hell, at least we died trying.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;The whole story in more detail is described, for example, &lt;a href="http://searchengineland.com/070502-071132.php"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Just some of my thoughts on the topic:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;This is probably the first case which shows the real power of the sites with user-generated content; or, to be more precise, of the users of such sites. This case might become an important turning point in the relations between users and site owners.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;If the protection of HD-DVDs relies on a single number, then it’s in a sorry state indeed. I can’t believe that the developers of the protection thought the number will remain a mystery for any significant time.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The behavior of the AACS (the company developing the protection and requesting the removal of the key from blogs) is an example of total stupidity. Frankly, they couldn’t do more to promote publishing of the key in thousands of blogs. This is similar to the story of &lt;a href="http://en.wikipedia.org/wiki/Herostratus"&gt;Herostratus&lt;/a&gt;. One can think that by now people should learn: issuing a decree to forget Herostratus isn’t the best way to make people forget him. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;If someone needs another proof that DMCA went a little bit too far - here it is.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Technorati tags: &lt;a href="http://technorati.com/tag/HD-DVD" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=HD-DVD" alt=" " /&gt;HD-DVD&lt;/a&gt;, &lt;a href="http://technorati.com/tag/Digg" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=Digg" alt=" " /&gt;Digg&lt;/a&gt;, &lt;a href="http://technorati.com/tag/DMCA" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=DMCA" alt=" " /&gt;DMCA&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-2422812240481228085?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/2422812240481228085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=2422812240481228085' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/2422812240481228085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/2422812240481228085'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2007/05/digg-and-magic-number.html' title='Digg and the magic number'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-4649702837695863461</id><published>2007-04-13T15:28:00.000-04:00</published><updated>2007-04-13T15:41:59.452-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Business rules: hard-coding or soft-coding</title><content type='html'>Couple of days ago &lt;a href="http://worsethanfailure.com/"&gt;“Worse Than Failure”&lt;/a&gt; published (instead of a usual daily IT horror story) a very interesting &lt;a href="http://worsethanfailure.com/Articles/Soft_Coding.aspx"&gt;article dedicated to “Soft Coding”&lt;/a&gt;. The article discussed a problem known to anyone who ever did some business-related software design: dealing with business rules. &lt;br /&gt;&lt;br /&gt;The problem with business rules is that they are almost impossible to generalize, often follow some odd logic and are subject to frequent and unpredictable changes. Usually business rules involve some arbitrary values, which programmers are reluctant to hard-code. The article gives quite a good example of the situation, but let me give here one of my own.&lt;br /&gt;&lt;br /&gt;Let’s suppose that one of the business rules is:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;“If a user account is inactive for more than 180 days it should be deleted, except for the cases when the user is located in New York or New Jersey, or when the user is an employee of XYZ Corp.”&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The most straightforward way to implement the rule is just to write a couple lines of a code:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;if (account.getInactiveTime() &gt; 180 ) {&lt;br /&gt;  if (   account.getUser().getState()!=”NY” &lt;br /&gt;      &amp;&amp; account.getUser().getState()!=”NJ” &lt;br /&gt;      &amp;&amp; account.getUser().getCompany()!=”XYZ”) {&lt;br /&gt;&lt;br /&gt;     account.delete();&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The classic approach tells us that this code is bad: it has hard-coded values, which means that changing one of those values will require code change. The obvious solution is to move the values somewhere outside the source code, for example to a configuration file. But the logic of the rule itself is also subject to unexpected changes; so it will seem natural that the logic should be somehow generalized and the concrete details should also be moved out. Unfortunately, this almost always leads to creation of some monstrous home-brew scripting languages, which turn the maintenance of such projects into a nightmare.&lt;br /&gt;&lt;br /&gt;The article suggests that it’s much better to just leave the logic in the code: this way it’s easy to read and it’s implemented in a well-known programming language. &lt;br /&gt;&lt;br /&gt;In my opinion, both approaches are equally good – or equally bad, depending upon the circumstances. &lt;br /&gt;&lt;br /&gt;Having business logic in the code has some very serious disadvantages. Yes, the build process is no longer as expensive as it used to be some time ago; however, the necessity to change code when a business rule changes is still unpleasant:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Builds themselves are cheap now; however, the deployment might be quite expensive. If you need to re-deploy application to one or two servers – it’s easy; however, if the application runs in a complex environment with multiple server groups and clusters, that might be quite a different story. And if the application is actually deployed on the users’ desktops…&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Changing code might cause ripple effects, and requires regression testing – which also might be expensive.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Frequent minor code changes under time pressure usually cause a code quality to deteriorate. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;The last, but not least: with this approach, the developers become forever responsible for implementing rule changes. &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;In my experience, the right solution for the problem lies (as usual) somewhere between those two approaches. There is no silver bullet, and each group of business rules (and, sometimes, even each rule) has to be addressed separately. Here are the principles I try to follow when dealing with applications with business rules.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Try to identify as many business rules as possible in the project you are working on. The purpose is to understand, which part of the requirements (or implementation) deals with core business logic, and which with some arbitrary business rules. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Estimate which elements of business rules are going to change and how often? It’s never possible to get an absolutely precise answer to this question; however, surprisingly often one can get a good estimate just by asking for it: “The states in this rule change constantly – last year we had 4 states, then two months ago we added two more, and a week ago a new regulation came out…” or “XYZ was always a special case – it’s our largest partner”.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Frequently changing values should go into an external location (file, database…) &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Rarely changing values might also go there, or can be implemented as constants, whichever will make the code easier to maintain. Just do not leave them as “magic numbers”!&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The business rules logic should be moved to separate classes, and, possibly, to separate modules. There are quite many ways to achieve it. &lt;a href="http://en.wikipedia.org/wiki/Observer_pattern"&gt;Observer&lt;/a&gt; pattern can be used when the rules are to be triggered by some events. &lt;a href="http://en.wikipedia.org/wiki/Decorator_pattern"&gt;Decorator&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Strategy_pattern"&gt;Strategy&lt;/a&gt; patterns are also helpful here. Another possible approach would be using aspect-oriented programming and moving some business rules to aspects. It might also be a good idea to implement certain groups of business rules as plugins, and to make the core system automatically discover them. (I did something similar to this in one of my projects, and it worked pretty well). The basic idea behind all of this is to minimize ripple effect and make required change as small as possible.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;If the business rules logic is subject to frequent changes, the situation becomes more serious. The design approaches suggested above will, definitely, somewhat alleviate the pain, but in general this type of situation calls for more drastic measures. Usually this involves adding some sort of scripting support and giving the users ability to write some simple scripts and script snippets. One advice for those who will go down this path: do not invent new scripting languages – first try to use an existing one. It’s also a good idea to provide some UI which will help with writing snippets and putting them in a right place. Adding scripting support and providing is, definitely, quite an effort. So, before doing this, it always makes sense to look outside of the project: sometimes frequent business rules logic changes might be prevented by fixing some business processes, or by working with users and stakeholders. It may sound unrealistic, but there are occasions when just explaining the fact that the requested changes are not as minor as the requestor thinks and do not come free of charge helps significantly reduce the frequency of change requests.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;While following those principles, try to keep the system from turning into chaos of different techniques applied. Group similar or related business rules together, and use for each group the technique needed for the rules with maximal volatility. For example, if you have 10 similar rules, and two of them are changing frequently enough to validate usage of external configuration file for them – use it for all 10 rules. Just make sure your grouping is fine-grained enough.&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;Technorati tags: &lt;a href="http://technorati.com/tag/programming" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=programming" alt=" " /&gt;programming&lt;/a&gt;, &lt;a href="http://technorati.com/tag/software+design" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=software+design" alt=" " /&gt;software design&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-4649702837695863461?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/4649702837695863461/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=4649702837695863461' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/4649702837695863461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/4649702837695863461'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2007/04/business-rules-hard-coding-or-soft.html' title='Business rules: hard-coding or soft-coding'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-7827018268793229617</id><published>2007-03-23T16:13:00.000-04:00</published><updated>2007-03-23T16:38:18.996-04:00</updated><title type='text'>Use one editor? I prefer three...</title><content type='html'>Recently I finished reading "The Pragmatic Programmer". The book is amazing, and, probably, is worth a separate article. In short, it contains wisdom and experience of veteran programmers in condensed and purified form. I wholeheartedly agree with most of suggestions and advices the book gives; however, there are several topics on which I disagree with the authors. One such topic is the use of text editors.&lt;br /&gt;&lt;br /&gt;The authors give the following advice: &lt;br /&gt;&lt;blockquote&gt;"We think it is better to know one editor very well, and use it for all editing tasks: code, documentation, memos, system administration and so on." &lt;/blockquote&gt;&lt;br /&gt;In my daily work, however, I discovered that I get maximal productivity when I use not one, but three editors. Here is my setup.&lt;br /&gt;&lt;br /&gt;1. &lt;span style="font-weight:bold;"&gt;IDE.&lt;/span&gt;  I know some people who claim that they don’t need an IDE, and that they can achieve the same result using their favorite editor (EMACS, vi or some other). I think that those developers either never got their hands on a really good IDE, or have never done any more or less complex project. Besides simple – though also convenient – features like syntax highlighting, integrated build support, project support etc, a good IDE can provide much more complex language –oriented features. For example, my IDE of choice currently is &lt;a href="http://www.eclipse.org/"&gt;Eclipse&lt;/a&gt; (I’m doing mostly Java now), and it provides me with such incredibly useful features as automated refactoring, language-oriented search, class hierarchy navigation, code generation helpers and many others. And for aspect-oriented programming having IDE with support for aspects (I use &lt;a href="http://www.eclipse.org/ajdt/"&gt;AJDT&lt;/a&gt; plugin for Eclipse) is vital. In my opinion, trying to program using AOP without an IDE support is a pure suicide: how would you find out that the line of the code you are about to change is, in fact, augmented by three aspects, and your change will have unnecessary side effects?&lt;br /&gt;&lt;br /&gt;2. &lt;span style="font-weight:bold;"&gt;Programmer’s editor.&lt;/span&gt; Besides writing Java code, I often need to work with some other files, which do not belong to my current project. I have to analyze logs, edit data files, write some short scripts in other languages… For this tasks I use one of so-called "programmer’s editors". These are complex and powerful text editors. They usually offer syntax support of multiple languages (usually meaning "syntax highlighting", integrated FTP and, sometimes, version control support, file comparison, hex editing, built-in powerful macro languages and many other useful features. The reason why I use separate editor for those tasks instead of IDE is that (a) I don’t want to pollute my IDE workspace with unrelated files – I want to have only program-related stuff there, and (b) I don’t want to start IDE every time I need to edit a file. For some time I was a big fan of &lt;a href="http://www.multiedit.com/"&gt;Multi-Edit&lt;/a&gt;; then I switched to &lt;a href="http://www.ultraedit.com/"&gt;UltraEdit&lt;/a&gt; and &lt;a href="http://www.crimsoneditor.com/"&gt;Crimson Editor&lt;/a&gt;. (The latter is less feature-rich than UltraEdit, but is free).&lt;br /&gt;3. &lt;span style="font-weight:bold;"&gt;Notepad replacement. &lt;/span&gt;The third editor in my setup would be Notepad, if it wouldn’t be that crippled. The idea behind having this third editor type is that I want to have something extremely lightweight and fast, so I can instantly do some simple editing on any file. I don’t have any favorite here. Any replacement will do, as long as it supports arbitrarily large files, has support for both Windows and Unix line styles and has decent search/replace capabilities.&lt;br /&gt;&lt;br /&gt;This is my setup. All comments and suggestions are more than welcome.&lt;br /&gt;&lt;br /&gt;Technorati tags:&lt;a href="http://technorati.com/tag/programming" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=programming" alt=" " /&gt;programming&lt;/a&gt;, &lt;a href="http://technorati.com/tag/text+editor" rel="tag"&gt;&lt;img style="border:0;vertical-align:middle;margin-left:.4em" src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=text+editor" alt=" " /&gt;text editor&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-7827018268793229617?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/7827018268793229617/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=7827018268793229617' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/7827018268793229617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/7827018268793229617'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2007/03/use-one-editor-i-prefer-three.html' title='Use one editor? I prefer three...'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-7095697857378377488</id><published>2007-02-01T17:44:00.000-05:00</published><updated>2007-02-01T18:13:36.248-05:00</updated><title type='text'>Joke becomes true...</title><content type='html'>Quite some time ago I’ve heard a computer joke:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Bill Gates was demonstrating his latest speech-recognition software. He was just about ready to start the demonstration and asked everyone in the room to quiet down.&lt;br /&gt;&lt;br /&gt;Just then someone in the back of the room yelled, "Format C: Return."&lt;br /&gt;&lt;br /&gt;Someone else chimed in: "Yes, Return!"&lt;br /&gt;&lt;br /&gt;Unfortunately, the software worked.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;I thought it to be hilarious, though highly improbable. Certainly anyone designing this kind of system would introduce some sort of protection against this kind of “accidents”, right?...&lt;br /&gt;&lt;br /&gt;Well, today I’ve read the following:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Vista can respond to vocal commands and concern has been raised about malicious audio on websites or sent via e-mail. &lt;br /&gt;In one scenario outlined by users an MP3 file of voice instructions was used to tell the PC to delete documents. &lt;br /&gt;Microsoft said the exploit was "technically possible" but there was no need to worry.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;The full text of the article is &lt;a href="http://news.bbc.co.uk/1/hi/technology/6320865.stm"&gt;here&lt;/a&gt;, and &lt;a href="http://blogs.technet.com/msrc/archive/2007/01/31/issue-regarding-windows-vista-speech-recognition.aspx"&gt;here&lt;/a&gt; is a response posted on The Microsoft Security Response Center Blog.&lt;br /&gt;&lt;br /&gt;Now I am trying to recall other computer jokes – I have to know what to be prepared for, after all…&lt;br /&gt;&lt;br /&gt;Technorati tags: &lt;a href="http://technorati.com/tag/microsoft" rel="tag"&gt;microsoft&lt;/a&gt;, &lt;a href="http://technorati.com/tag/vista" rel="tag"&gt;vista&lt;/a&gt;, &lt;a href="http://technorati.com/tag/humor" rel="tag"&gt;humor&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-7095697857378377488?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/7095697857378377488/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=7095697857378377488' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/7095697857378377488'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/7095697857378377488'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2007/02/joke-becomes-true.html' title='Joke becomes true...'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-5705418317568480158</id><published>2007-01-12T15:02:00.000-05:00</published><updated>2007-01-12T15:08:21.061-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='game development'/><category scheme='http://www.blogger.com/atom/ns#' term='casual games'/><title type='text'>Vista and downloadable games</title><content type='html'>Couple of days ago &lt;a href="http://"&gt;Gamasutra&lt;/a&gt; published quite &lt;a href="http://www.gamasutra.com/php-bin/news_index.php?story=12314"&gt;an interesting article&lt;/a&gt; by Alex St. John,  founder and CEO of &lt;a href="http://www.wildtangent.com/"&gt;WildTangent&lt;/a&gt;.  In the article (called “Vista Casts a Pall on PC Gaming”), he describes serious problems which &lt;a href="http://www.microsoft.com/windowsvista/"&gt;Vista&lt;/a&gt; will present to independent game developers (and casual game developers in general).&lt;br /&gt;&lt;br /&gt;Two main problem areas outlined by Alex are program installation and parental control. &lt;br /&gt;&lt;br /&gt;Installation. According to Alex, the enhanced security system of Vista might require users to enter administrative login and password every time they try to download and install game. This might sharply reduce the number of installs (and, therefore, purchases), since people might just get tired and frustrated by all the hoops they have to jump through in order to just try out a game, and, therefore, try less games. &lt;br /&gt;&lt;br /&gt;Parental Control. It turns out that Vista has something called Game Explorer – some place where the games are being registered, which allows parents to define the allowed &lt;a href="http://www.esrb.org/index-js.jsp"&gt;ESRB&lt;/a&gt; rating level  for the games the kids are allowed to play, and which blocks the attempts to start the registered games from outside of Game Explorer. The problem here – again, according to Alex – is that since ESRB grading process is expensive, most small and indie developers cannot afford it, therefore making their games “Not Rated”. Since from the protection standpoint all “Not Rated” material is not safe, most parents will probably block it, thus locking out all small developers.&lt;br /&gt;&lt;br /&gt;I didn’t install Vista yet (and not going to, until the time when I would have no other choice!), so I cannot validate Alex’s statements. But, assuming he is right, this might indeed have very unpleasant consequences for game developers. I have no doubt that it will be possible to turn off all these extra-protecting features, or to circumvent them. The problem, however, is that target audience for most casual games are not technical-savvy people, who will, most probably, have Vista running with default settings.&lt;br /&gt;&lt;br /&gt;Interesting fact is that the parental control system does not apply to web games. So, if the downloadable games might lose in popularity – the web games might gain, and that, in turn, might lead to some quite interesting market shifts.&lt;br /&gt;&lt;br /&gt;Technorati tags: &lt;a href="http://technorati.com/tag/vista" rel="tag"&gt;Vista&lt;/a&gt;, &lt;a href="http://technorati.com/tag/games" rel="tag"&gt;games&lt;/a&gt;, &lt;a href="http://technorati.com/tag/casual+games" rel="tag"&gt;casual games&lt;/a&gt;, &lt;a href="http://technorati.com/tag/game+development" rel="tag"&gt;game development&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-5705418317568480158?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/5705418317568480158/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=5705418317568480158' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/5705418317568480158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/5705418317568480158'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2007/01/vista-and-downloadable-games.html' title='Vista and downloadable games'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-9026158544967491063</id><published>2007-01-10T14:40:00.000-05:00</published><updated>2007-01-10T14:48:28.311-05:00</updated><title type='text'>iPhone craze</title><content type='html'>It seems like everyone suddenly went crazy over &lt;a href="http://www.apple.com/iphone/"&gt;iPhone&lt;/a&gt;. The new gadget is being discussed in multitude of blogs, newspapers publish articles on it, and the &lt;a href="http://finance.google.com/finance?q=AAPL"&gt;stock prices for Apple&lt;/a&gt; skyrocketed over the past two days. My coworkers show each other web pages with photos of the new device…&lt;br /&gt;&lt;br /&gt;Well, I knew for quite some time that, when it comes to marketing, no one can beat the Apple guys. They are geniuses. And I am sure that the craze over this new gizmo will just increase over time, and, most probably, it will become one of the most wanted and hyped devices of this year.&lt;br /&gt;&lt;br /&gt;But, frankly, I don’t understand what’s so great or special about this new thingy. Let’s cool down a little bit, and look at the device more attentively. Yes, there are many nice touches about it: stylish design, more or less decent on-board storage size (up to 8 Gigs), camera, Wi-Fi, Bluetooth, GPS – everything is included. You can take pictures, surf the web, play music and movies, may be even play games. There are interesting new features, such as:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;multi-touch UI;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;different built-in sensors which, for example, detect when the phone is rotated and switch automatically between portrait and landscape mode (though I assume sometimes that might be annoying);&lt;/li&gt;&lt;br /&gt;&lt;li&gt;visual voicemail – a list of voice messages (I applaud Apple for this one!)&lt;br /&gt;integration with Google maps.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;But there are also quite many drawbacks:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;operating touchscreen with fingers means having grease, scratches and fingerprints all over it. A reporter from NY Times &lt;a href="http://bits.blogs.nytimes.com/2007/01/09/some-hands-on-time-with-the-iphone/"&gt;states&lt;/a&gt; that “You still get finger streaks, but they’re relatively subtle and a quick wipe on your sleeve takes care of them”. The reporter was playing with the phone in an office, with clean hands. I hate to thing what will happen to the screen on a hot and humid day.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The same reporter admits that “Typing is difficult. The letter keys are just pictures on the glass screen, so of course there’s no tactile feedback.”. The difficulty is somewhat relieved by some ultra-smart installed software – but, still, it’s not the same as having a real keyboard.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Speaking of the software – according to &lt;a href="http://www.engadget.com/2007/01/09/the-iphone-is-not-a-smartphone/"&gt;Engadget&lt;/a&gt;, the phone is first-party software only. In my view, that diminishes the appeal of the phone tenfold.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;No removable battery&lt;/li&gt;&lt;br /&gt;&lt;li&gt;No expandable memory&lt;/li&gt;&lt;br /&gt;&lt;li&gt;No Exchange support&lt;/li&gt;&lt;br /&gt;&lt;li&gt;And a hefty price tag!  600 dollars for a phone (as far as I understand, with a 2-year contract) – isn’t it too much?&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;And, except the visual voicemail, there are no real phone innovations in this product! (though this seems to be a problem of the mobile phone industry in general – all new features have nothing to do with telephony.) Blacklisting and whitelisting of the callers, scheduling of the notification sound types (automatically switch to vibration only at night) – those and similar features existed in crude russian Caller ID phones in mid-1990s, but none of the features is present in the ultra-modern devices.&lt;br /&gt;&lt;br /&gt;I will not rush for the iPhone. No doubt it will have an owerwhelming success – but not with me.&lt;br /&gt;&lt;br /&gt;Technorati tags: &lt;a href="http://technorati.com/tag/iPhone" rel="tag"&gt;iPhone&lt;/a&gt;, &lt;a href="http://technorati.com/tag/apple" rel="tag"&gt;apple&lt;/a&gt;, &lt;a href="http://technorati.com/tag/cellphones" rel="tag"&gt;cellphones&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-9026158544967491063?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/9026158544967491063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=9026158544967491063' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/9026158544967491063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/9026158544967491063'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2007/01/iphone-craze.html' title='iPhone craze'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-1858683410483687238</id><published>2007-01-02T10:22:00.000-05:00</published><updated>2007-01-02T10:29:00.873-05:00</updated><title type='text'>Happy New Year!</title><content type='html'>&lt;span style="font-style:italic;"&gt;(Yes, I know it's a little bit late - but better late than never, right?)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Happy New Year to all who read my blog! All the best wishes to you and your families. &lt;br /&gt;&lt;br /&gt;One of my New Years resolutions is to blog more often - and I do hope I will be able to carry out this one.&lt;br /&gt;&lt;br /&gt;Enjoy the life - and stay tuned!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-1858683410483687238?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/1858683410483687238/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=1858683410483687238' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/1858683410483687238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/1858683410483687238'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2007/01/happy-new-year.html' title='Happy New Year!'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-8349601705912750739</id><published>2006-12-11T13:14:00.000-05:00</published><updated>2006-12-11T14:14:48.134-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='funny'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>Yet another idiot - and some other stuff...</title><content type='html'>First - after almost three weeks of silence I'm back.  I was pretty busy, and not only had no time to post something interesting - I've also had no time even to read comments.  When yesterday I've got at last a couple of minutes to check what's going on, I discovered that my blog was infested with spam comments. Speaking frankly, I don't understand the purpose of spamming blogs with totally unrelated comments - most probably they will be deleted almost immediately, and would only annoy people. (One of the comments I deleted was from "a 15 y.o. Sandra from Arabia" who learns English and wants to talk to boys - I have no clue what was the idea of this, since the comment had no other information). Anyway, I tried to delete as much of this garbage as possible, and I've turned CAPTCHA on - sorry for the inconvenience, but I need no more spam, thank you very much.&lt;br /&gt;&lt;br /&gt;Now, about an idiot. Here's a funny story: a blogger received an e-mail from somebody with quite a request:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;p&gt;I have been running the site for over two years and we have been ranked very highly for the search term [edited].&lt;/p&gt; &lt;p&gt;On Thursday morning I checked our google positions and your site is now above us for this term. I haev checked your blog and it has nothing to do with [edited], so I think it would be best all round if you remove your blog from google for this search term.&lt;/p&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;You can read the rest of the e-mail &lt;a href="http://deanhunt.com/bizzare-google-request/"&gt;here&lt;/a&gt;, and a follow-up &lt;a href="http://deanhunt.com/bizarre-google-request-update"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Well, of course we have an exemplary case of an idiot here. Funny, amusing - but not too interesting. What is interesting, though, is the entire situation with businesses (both large and small) striving for the first place in Google searches. It's obvious that the first place is extremely valuable in terms of business. However, this precious commodity is not for sale (which is good!), and  is being granted by Google's system based on some mysterious factors. For example, as for today, if you try to search Google for "buy computers", the first place will be occupied by BestBuy. It is followed by buy.com - and CompUSA is on the tenth place, last on the first page. Google in this case becomes something like a blind force of nature - powerful and unpredictable. I am not saying that this is bad - or good - I just find it to be curious and thought-provoking...&lt;br /&gt;&lt;br /&gt;Technorati tag: &lt;a href="http://technorati.com/tag/google" rel="tag"&gt;google&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-8349601705912750739?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/8349601705912750739/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=8349601705912750739' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/8349601705912750739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/8349601705912750739'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/12/yet-another-idiot-and-some-other-stuff.html' title='Yet another idiot - and some other stuff...'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-116414864218674684</id><published>2006-11-21T17:26:00.000-05:00</published><updated>2006-11-21T17:44:09.016-05:00</updated><title type='text'>PS3 and Wii  - first impressions not that euphoric...</title><content type='html'>So, at last, it has happened! Both PS3 and Wii were released in US. It was fun to read about &lt;a href="http://www.tgdaily.com/2006/11/10/ps3_bestbuy_burbank_line/"&gt;extremes&lt;/a&gt; &lt;a href="http://www.engadget.com/2006/11/16/easiest-job-ever-dentist-hires-60-temps-to-wait-in-ps3-lines/"&gt;some people&lt;/a&gt; &lt;a href="http://www.engadget.com/2006/11/16/ps3-hopefuls-shot-with-bbs-at-kentucky-best-buy/"&gt;would go to&lt;/a&gt; just to get the box on the first day of the sales. However, according to the multitude of articles and blog posts published in the last couple of days, the first impressions about those two next-gen consoles are not all euphoric. There are &lt;a href="http://www.engadget.com/2006/11/20/wii-being-hit-by-fatal-error-110213-could-be-funky-firmware/"&gt;bugs&lt;/a&gt;, problems with the new Wii controllers (&lt;a href="http://slate.com/id/2154157"&gt;some people find them poorly suited for games&lt;/a&gt;, while some other claim that the &lt;a href="http://www.engadget.com/2006/11/21/errant-wiimote-claims-second-tvs-life/"&gt;motion-sensitive Wii controller broke off during play and cracked their TV screen&lt;/a&gt; (!)), and some &lt;a href="http://www.engadgethd.com/2006/11/16/ps3-doesnt-do-1080i/"&gt;incompatibility issues&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;However, for me the most interesting was the &lt;a href="http://www.nytimes.com/2006/11/20/arts/20game.html?_r=1&amp;oref=slogin"&gt;article in NY Times called “A Weekend Full of Quality Time With PlayStation 3”&lt;/a&gt;. The author is disappointed in PS3 usability, and summarizes his feelings:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;And so it is a bit of a shock to realize that on the video game front Microsoft and Sony are moving in exactly the opposite directions one might expect given their roots. Microsoft, the prototypical PC company, has made the Xbox 360 into a powerful but intuitive, welcoming, people-friendly system. Sony’s PlayStation 3, on the other hand, often feels like a brawny but somewhat recalcitrant specialized computer. (Sony is even telling users to wait for future software patches to fix some of the PS3’s deficiencies.) The thing is, if people want to use a computer, they’ll use a computer.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Goes surprisingly well with &lt;a href="http://grumpytech.blogspot.com/2006/07/consoles-vs-pc-article-about-ps3.html"&gt;my thoughts&lt;/a&gt;… &lt;br /&gt;&lt;br /&gt;Technorati tags:&lt;a href="http://technorati.com/tag/ps3" rel="tag"&gt;ps3&lt;/a&gt;, &lt;a href="http://technorati.com/tag/wii" rel="tag"&gt;wii&lt;/a&gt;, &lt;a href="http://technorati.com/tag/Video+Games" rel="tag"&gt;Video Games&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-116414864218674684?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/116414864218674684/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=116414864218674684' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/116414864218674684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/116414864218674684'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/11/ps3-and-wii-first-impressions-not-that.html' title='PS3 and Wii  - first impressions not that euphoric...'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-116379535044647056</id><published>2006-11-17T15:21:00.000-05:00</published><updated>2006-11-17T15:29:10.456-05:00</updated><title type='text'>Web 3.0</title><content type='html'>Here is a new buzzword: Web 3.0! &lt;br /&gt;&lt;br /&gt;Well, the word itself  is, probably, not that new – it seems  it was used for quite some time; but almost always it was used to describe just “something beyond web 2.0”. However, &lt;a href="http://www.nytimes.com/2006/11/12/business/12web.html"&gt;an article was published recently in NY Times&lt;/a&gt; which caught some attention. The article is written by John Markov, and it, basically, puts an equality sign between this new buzzword and something called &lt;a href="http://en.wikipedia.org/wiki/Semantic_Web"&gt;“semantic Web”&lt;/a&gt;.  The idea of the semantic web is simple, but powerful: to make data stored on WWW not only human-readable, but also machine-readable; to enhance the markup so that automated processors would be able to “understand” the meaning of each piece of data and its relation to other pieces. It will be possible, thus, to do many exciting things with the data found on the web: to analyze and aggregate data from multiple unrelated sources and to do extensive data mining.&lt;br /&gt;&lt;br /&gt;Here are several more links to some quite interesting texts about semantic web:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://novaspivack.typepad.com/nova_spivacks_weblog/2006/11/minding_the_pla.html"&gt;“Minding The Planet -- The Meaning and Future of the Semantic Web” &lt;/a&gt;and a follow-up to Markov’s article &lt;a href="http://novaspivack.typepad.com/nova_spivacks_weblog/2006/11/what_is_the_sem.html"&gt;“What is the Semantic Web, Actually?”&lt;/a&gt; written by Nova Spivack, a founder of &lt;a href="http://www.radarnetworks.com/"&gt;Radar Networks&lt;/a&gt;, one of a few companies that are working on semantic web technologies. &lt;br /&gt;&lt;br /&gt;So, should we say goodbye to Web 2.0 and switch to Web 3.0? Obviously, not! The two concepts are quite orthogonal, so the name “Web 3.0” is, probably, as misleading as it gets. (It’s funny to try and &lt;a href="http://en.wikipedia.org/wiki/Web_3.0"&gt;search WikiPedia for “Web 3.0”&lt;/a&gt; – the article is removed, &lt;a href="http://en.wikipedia.org/wiki/Talk:Web_3.0"&gt;because there is still no consensus about what “Web 3.0” is&lt;/a&gt;.)  &lt;br /&gt;&lt;br /&gt;Personally, I am quite happy about the development of the semantic web. New tools will mean more capabilities for Internet users; and new paradigm will mean more work for programmers – clearly, a win-win situation for me!&lt;br /&gt;&lt;br /&gt;Technorati tags: &lt;a href="http://technorati.com/tag/web+2.0" rel="tag"&gt;web 2.0&lt;/a&gt;, &lt;a href="http://technorati.com/tag/web+3.0" rel="tag"&gt;web 3.0&lt;/a&gt;, &lt;a href="http://technorati.com/tag/semantic+web" rel="tag"&gt;semantic web&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-116379535044647056?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/116379535044647056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=116379535044647056' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/116379535044647056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/116379535044647056'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/11/web-30.html' title='Web 3.0'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-116258855651715706</id><published>2006-11-03T16:10:00.000-05:00</published><updated>2006-11-03T16:15:56.556-05:00</updated><title type='text'>More on interactive storytelling: Ernest Adams</title><content type='html'>While writing my &lt;a href="http://grumpytech.blogspot.com/2006/11/chris-crawford-on-interactive.html"&gt;previous post&lt;/a&gt; I totally forgot to mention an extremely interesting talk on interactive storytelling presented at GDC 2006 by Ernest Adams. Unfortunately, my notes on the lecture – which, by the way, was called “A New Vision for Interactive Stories” -  are very brief, and I couldn’t find a full text of his speech on the web. (On &lt;a href="http://www.designersnotebook.com/"&gt;his own site&lt;/a&gt; Ernest has a full text of his &lt;a href="http://www.designersnotebook.com/Lectures/Interactive_Narratives_Revisit/interactive_narratives_revisit.htm"&gt;previous presentation on the same topic&lt;/a&gt; – but just a short paragraph about his last one). However, &lt;a href="http://onlyagame.typepad.com/only_a_game/2006/03/gdc_a_new_visio.html"&gt;here&lt;/a&gt; you can read a pretty good summary of Ernest’s speech.  It’s interesting to compare his ideas with the ones of Chris Crawford – similar and yet different at the same time (at least, according to what I’ve read at the &lt;a href="http://www.storytron.com/"&gt;Storytron site&lt;/a&gt;).  &lt;br /&gt;&lt;br /&gt;Technorati tags: &lt;a href="http://technorati.com/tag/game+design" rel="tag"&gt;game design&lt;/a&gt;, &lt;a href="http://technorati.com/tag/interactive+storytelling" rel="tag"&gt;interactive storytelling&lt;/a&gt;, &lt;a href="http://technorati.com/tag/ernest+adams" rel="tag"&gt;ernest adams&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-116258855651715706?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/116258855651715706/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=116258855651715706' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/116258855651715706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/116258855651715706'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/11/more-on-interactive-storytelling.html' title='More on interactive storytelling: Ernest Adams'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-116240154906032193</id><published>2006-11-01T12:11:00.000-05:00</published><updated>2006-11-01T12:19:09.083-05:00</updated><title type='text'>Chris Crawford on Interactive Storytelling and Storytron</title><content type='html'>In September Dr. Dobbs Journal published a very interesting &lt;a href="http://www.ddj.com/dept/ai/192503697"&gt;interview with Chris Crawford.&lt;/a&gt; (I’ve discovered this interview just yesterday). &lt;a href="http://en.wikipedia.org/wiki/Chris_Crawford_%28game_designer%29"&gt;Chris Crawford&lt;/a&gt;, a prominent game designer and writer, talks about interactive storytelling. Chris shares his views on game design in general, but the bulk of the article is dedicated to his new brainchild: &lt;a href="http://en.wikipedia.org/wiki/Interactive_storytelling"&gt;interactive storytelling&lt;/a&gt; technology called Storytronics. I was excited when I found this conversation, for I am very interested in game design and &lt;a href="http://en.wikipedia.org/wiki/Interactive_fiction"&gt;interactive fiction&lt;/a&gt;. With discussions of the way the narrative in the games should be designed being all over the place, I was anxious to hear what the famous game design guru will disclose. &lt;br /&gt;&lt;br /&gt;Well, after reading the article I was somewhat disappointed. In the beginning of the conversation Chris told that&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;The Sims is neither interactive storytelling nor a game. Will [Wright] considers himself a toy designer. It's the finest toy anybody ever developed, but it's not interactive storytelling.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;But the more he was telling about his new system, the more I felt that he actually is building something very similar to &lt;a href="http://en.wikipedia.org/wiki/The_sims"&gt;“The Sims”&lt;/a&gt;. And, at the end, I thought that now he plainly contradicts himself:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Basically, it's a social interaction simulator. In fact [it might be] better to think of it as a simulator, because the stories it generates are very different from conventional stories. They don't have plots.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Personally, I think that stories with no plot just aren’t stories. And Storytronics – at least, as Chris described it – seems to be no different from “The Sims”. I was also surprised that Chris didn’t mention the whole genre of Interactive Fiction. Even in the page called &lt;a href="http://www.storytron.com/overview/ov_approaches.html"&gt;“Different Approaches in the Quest for Interactive Storytelling”&lt;/a&gt; on his site he never mentions it – which is really strange, because IF is all about interactive storytelling, and can provide a humongous amount of useful information, experience and insights. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.storytron.com/"&gt;The Storytron site&lt;/a&gt; allows everyone to download a pre-alpha version of their software. I definitely will do it, because I respect Chris, and I don’t want to judge his ideas based on just one interview. As soon as I try his software, I will post my impressions.&lt;br /&gt;&lt;br /&gt;Technorati tags: &lt;a href="http://technorati.com/tag/game+design" rel="tag"&gt;game design&lt;/a&gt;, &lt;a href="http://technorati.com/tag/interactive+fiction" rel="tag"&gt;interactive fiction&lt;/a&gt;, &lt;a href="http://technorati.com/tag/interactive+storytelling" rel="tag"&gt;interactive storytelling&lt;/a&gt;, &lt;a href="http://technorati.com/tag/chris+crawford" rel="tag"&gt;chris crawford&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-116240154906032193?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/116240154906032193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=116240154906032193' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/116240154906032193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/116240154906032193'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/11/chris-crawford-on-interactive.html' title='Chris Crawford on Interactive Storytelling and Storytron'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-116120029512074243</id><published>2006-10-18T15:29:00.000-04:00</published><updated>2006-10-18T15:38:15.226-04:00</updated><title type='text'>EA goofs up with ads embedded in a game</title><content type='html'>The idea of embedding advertisements in software is not a new one. For quite some time it was used by developers of shareware programs to help them getting paid for their work while keeping the product "free" (at least, with no payments required from the user). Somehow for a long time the idea was not introduced into the world of computer games; but recently the topic of "embedded ads" became a hot one.  Many factors made the idea of putting ads on vacant places in the game world a lucrative one: growing time people are spending playing games, growth of gamers’ population, expanding demographics of players, availability of internet connectivity…  The interest to this topic is constantly growing, especially in the area of casual games. For example, on GDC 2006 &lt;a href="http://www.wildtangent.com/index.html?pageID=home"&gt;WildTangent&lt;/a&gt; &lt;a href="http://"&gt;introduced their own platform for embedding advertisements&lt;/a&gt;, oriented on downloadable games.  &lt;br /&gt;&lt;br /&gt;So, I’m not surprised that Electronic Arts decided to join the fun and released two games with built-in ads: &lt;span style="font-style:italic;"&gt;Battlefield 2142&lt;/span&gt; and &lt;span style="font-style:italic;"&gt;Need for Speed: Carbon&lt;/span&gt;. But I’m still surprised at the total lack of market understanding which EA demonstrated with this launch. EA decided to get the best of both worlds – they’re charging a regular price for the game and make you watch their ads. It’s no wonder people become frustrated with this: usually it’s one or another: I can pay for the game; I also can support a developer of a free game by watching ads instead of paying cash. But I really don’t understand why do I have to do both?!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.joystiq.com/"&gt;"Joystiq"&lt;/a&gt; (from which I’ve got the information) in two posts (&lt;a href="http://www.joystiq.com/2006/10/17/battlefield-2142-employ-spies-in-your-pc/"&gt;post1&lt;/a&gt; and &lt;a href="http://www.joystiq.com/2006/10/18/ea-clarifies-iga-spyware/"&gt;post2&lt;/a&gt;) provides a transcript of the letter, which, as I understand, comes with the game. Here is the most interesting part from this letter:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;IF YOU DO NOT WANT IGA TO COLLECT, USE, STORE OR TRANSMIT THE DATA DESCRIBED IN THIS SECTION, DO NOT INSTALL OR PLAY THE SOFTWARE ON ANY PLATFORM THAT IS USED TO CONNECT TO THE INTERNET.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Basically, love it – or leave it. I am speechless… &lt;br /&gt;&lt;br /&gt;I hope that EA will listen to the voice of the gamers and will reconsider its policy. Basically, it has to do a very simple thing: let the users choose, whether they want a free game (or, at least, deeply discounted) with ads, or a fully priced one – but with no ads. &lt;br /&gt;&lt;br /&gt;Technorati tags: &lt;a href="http://technorati.com/tag/ea" rel="tag"&gt;ea&lt;/a&gt;, &lt;a href="http://technorati.com/tag/Games" rel="tag"&gt;Games&lt;/a&gt;, &lt;a href="http://technorati.com/tag/Advertising" rel="tag"&gt;Advertising&lt;/a&gt;, &lt;a href="http://technorati.com/tag/adware" rel="tag"&gt;adware&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-116120029512074243?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/116120029512074243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=116120029512074243' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/116120029512074243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/116120029512074243'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/10/ea-goofs-up-with-ads-embedded-in-game.html' title='EA goofs up with ads embedded in a game'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-116077537242457361</id><published>2006-10-13T17:30:00.000-04:00</published><updated>2006-10-13T17:36:12.530-04:00</updated><title type='text'>Second Life: cyberpunk becomes real?</title><content type='html'>&lt;a href="http://www.secondlife.com/"&gt;Second Life&lt;/a&gt; is a 3D online virtual world, created by Linden Lab. According to Wikipedia, currently it has more than 300000 active users and total of more than 800000 user accounts. Nothing spectacular – there are much more densely populated virtual worlds. So why am I writing about it? Well, because it seems that more and more people start realizing that the virtual worlds can be used for more than just killing monsters and leveling up characters. And not just people – huge companies are paying close attention to Second Life. Here are three stories that I’ve discovered today:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.internetnews.com/dev-news/article.php/3637411"&gt;Sun Microsystems plans to hold a press-conference in Second Life&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://news.zdnet.com/2100-1040_22-5868030.html"&gt;Wells Fargo Bank has launched a financial educational game in Second Life&lt;/a&gt; &lt;i&gt;(game within a game – are we crazy enough yet?)&lt;/i&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www-03.ibm.com/press/us/en/pressrelease/20411.wss"&gt;IBM holds an Alumni block party in Second Life&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;I have a feeling that the thrilling cyberpunk stories by Gibson and Stephenson turn into reality much faster that anyone would think…&lt;br /&gt;&lt;br /&gt;Technorati tags:&lt;a href="http://technorati.com/tag/Second+Life" rel="tag"&gt;Second Life&lt;/a&gt;,&lt;a href="http://technorati.com/tag/Virtual+world" rel="tag"&gt;Virtual world&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-116077537242457361?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/116077537242457361/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=116077537242457361' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/116077537242457361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/116077537242457361'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/10/second-life-cyberpunk-becomes-real.html' title='Second Life: cyberpunk becomes real?'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-116059222218886345</id><published>2006-10-11T14:37:00.000-04:00</published><updated>2006-10-11T14:43:42.220-04:00</updated><title type='text'>Office 2.0 is coming</title><content type='html'>Couple of interesting developments happened in the area of web-based office productivity applications (so-called "Office 2.0"). First, &lt;a href="http://zoho.com/"&gt;Zoho&lt;/a&gt; just launched its &lt;a href="http://zohox.com/"&gt;"Virtual office"&lt;/a&gt; – an integrated online suite of collaboration tools. Second, Google launched an integrated version of Writely and Google Spreadsheet products called &lt;a href="http://docs.google.com/"&gt;"Docs and Spreadsheets"&lt;/a&gt;. I didn’t use Zoho yet – but I’ve used Google Spreadsheets, and can tell that the application is nothing short of amazing. On the other hand, the list of applications offered by Zoho is absolutely overwhelming. I think one can say that Office 2.0 is almost here. &lt;br /&gt;&lt;br /&gt;More information about Office 2.0 can be found &lt;a href="http://itredux.com/blog/office-20/"&gt;here&lt;/a&gt;. Especially interesting for me was a section called &lt;a href="http://itredux.com/blog/office-20/my-office-20-setup/"&gt;"My office 2.0 setup"&lt;/a&gt;, which provides a list of Office 2.0 tools together with their alternatives. I should confess that I didn’t know about half of the tools mentioned there!&lt;br /&gt;&lt;br /&gt;With the new developments come new concerns. As usual, I am concerned about the security of Office 2.0. Here is a very interesting article called &lt;a href="http://www.net-security.org/article.php?id=949&amp;p=1"&gt;“Top 10 Web 2.0 attack vectors”&lt;/a&gt; – a must read for anyone building Web 2.0 applications. This article, however, deals mostly with developer-side issues. As for user-side security, I have nothing specific to say yet – just some uneasy feeling about it.&lt;br /&gt;&lt;br /&gt;Technorati tags: &lt;a href="http://technorati.com/tag/web2.0" rel="tag"&gt;web2.0&lt;/a&gt;, &lt;a href="http://technorati.com/tag/office2.0" rel="tag"&gt;office2.0&lt;/a&gt;, &lt;a href="http://technorati.com/tag/security" rel="tag"&gt;security&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-116059222218886345?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/116059222218886345/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=116059222218886345' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/116059222218886345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/116059222218886345'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/10/office-20-is-coming.html' title='Office 2.0 is coming'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-116008632462928891</id><published>2006-10-05T17:55:00.000-04:00</published><updated>2006-10-05T18:12:04.740-04:00</updated><title type='text'>JavaScript Intranet Scanner</title><content type='html'>In &lt;a href="http://otherthingsnow.blogspot.com/"&gt;"Other Things" blog&lt;/a&gt; I've found a link to a &lt;a href="http://www.spidynamics.com/assets/documents/JSportscan.pdf"&gt;PDF document which describes a very disturbing security issue with JavaScript&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Imagine visiting a blog on a social site or checking your email on a portal like Yahoo’s Webmail. While you are reading the Web page JavaScript code is downloaded and executed by your Web browser. It scans your entire home network, detects and determines your Linksys router model number, and then sends commands to the router to turn on wireless networking and turn off all encryption. Now imagine that this happens to 1 million people across the United States in less than 24 hours.&lt;br /&gt;This scenario is no longer one of fiction.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;The document provides more information on how this can be achieved (though the link to their demo page doesn't work, so I can't guarantee that this is not another joke). If the approach, described in this paper, works - then it's scary. It seems like the only possible solution is to turn off JavaScript support in browser and turn it on only for selected sites, which will make Ajax and other modern Web technologies significantly less appealing. &lt;br /&gt;&lt;br /&gt;Again, I didn't check the information yet - but the explanation in the document seems  realistic enough.&lt;br /&gt;&lt;br /&gt;Technorati tags: &lt;a href="http://technorati.com/tag/security" rel="tag"&gt;security&lt;/a&gt;, &lt;a href="http://technorati.com/tag/JavaScript" rel="tag"&gt;JavaScript&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-116008632462928891?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/116008632462928891/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=116008632462928891' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/116008632462928891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/116008632462928891'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/10/javascript-intranet-scanner.html' title='JavaScript Intranet Scanner'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-115955805418628209</id><published>2006-09-29T15:25:00.000-04:00</published><updated>2006-09-29T15:27:34.203-04:00</updated><title type='text'>Agile</title><content type='html'>For some reason agile methodology became a hot topic last week. Many new postings in many blogs were discussing the merits and the shortcomings of agile development, and many old posts on the same topic got promoted to the first page on sites like &lt;a href="http://www.dzone.com/"&gt;DZone &lt;/a&gt;. Many people were criticizing Agile, and many were defending it. &lt;br /&gt;&lt;br /&gt;I, personally, have no experience doing Agile, and, therefore, I am in no position to criticize it (though I find many of ideas and methods of Agile contradicting my own experience and common sense in general). But I also want to add my 2 cents to the discussion. &lt;br /&gt;&lt;br /&gt;I will not talk about Agile being better or worse than Waterfall or any other methodologies. I will start with one simple statement: methodology is a tool. It’s not a religion, not a science – it’s merely a way to organize production. But there isn’t such a thing as “universal tool” – every tool is good for something, and is bad for something else. There are exceptions – tools that are bad for everything, but in case of Agile this is not the case, since we’ve read some success storied, and I don’t have any reason to call the inventors of Agile liars.  &lt;br /&gt;&lt;br /&gt;What that means is – it’s absolutely useless to discuss whether Agile is good or bad; instead Agile users (both haters and lovers) should spend their effort on analysis of their stories, in order to understand when Agile is good, and when it is bad. I am absolutely sure that for certain types of projects (or teams, or environments, or combination of those factors) Agile is a blessing – and for certain others it’s a curse.&lt;br /&gt;&lt;br /&gt;Technorati tags: &lt;a href="http://technorati.com/tag/Agile" rel="tag"&gt;Agile&lt;/a&gt;, &lt;a href="http://technorati.com/tag/Software+Development" rel="tag"&gt;Software Development&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-115955805418628209?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/115955805418628209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=115955805418628209' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/115955805418628209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/115955805418628209'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/09/agile.html' title='Agile'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-115945985215931964</id><published>2006-09-28T10:30:00.000-04:00</published><updated>2006-09-28T12:15:29.646-04:00</updated><title type='text'>Windows tips</title><content type='html'>Just found today a great discussion thread in &lt;a href="http://www.joelonsoftware.com/"&gt;The Joel on Software&lt;/a&gt; &lt;a href="http://discuss.joelonsoftware.com/default.asp?joel"&gt;Discussion Group&lt;/a&gt;: &lt;a href="http://discuss.joelonsoftware.com/default.asp?joel.3.394956"&gt;Best tips that no one seems to know about&lt;/a&gt;. Basically, the whole thread is a collection of various simple Windows tips and tricks - mostly some interesting hotkey combinations. The conversation also mentions several quite useful links:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.mozilla.org/support/firefox/keyboard"&gt;Firefox keyboard shortcuts&lt;/a&gt;&lt;br /&gt;&lt;a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;301583"&gt;Windows XP keyboard shortcuts&lt;/a&gt;&lt;br /&gt;&lt;a href="http://smartbro.blogspot.com/2006/09/117-run-commands-in-windows-xp.html"&gt;117 run commands in Windows XP&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now, the only question I have is: how should I memorize all of these cool key combinations - or, at least, the most useful ones? Probably I should create some kind of printable list of my favorites and put it on my wall.&lt;br /&gt;&lt;br /&gt;Technorati tags: &lt;a href="http://technorati.com/tag/tips" rel="tag"&gt;tips&lt;/a&gt;, &lt;a href="http://technorati.com/tag/Windows+XP" rel="tag"&gt;Windows XP&lt;/a&gt;, &lt;a href="http://technorati.com/tag/productivity" rel="tag"&gt;productivity&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-115945985215931964?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/115945985215931964/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=115945985215931964' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/115945985215931964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/115945985215931964'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/09/windows-tips.html' title='Windows tips'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-115867465152075514</id><published>2006-09-19T10:04:00.000-04:00</published><updated>2006-09-19T10:04:11.536-04:00</updated><title type='text'>PS3: a hidden computer.</title><content type='html'>Yesterday CNN published an &lt;a href="http://www.cnn.com/2006/TECH/fun.games/09/18/playstation.folding/index.html"&gt;article about using PS3 for distributed calculations&lt;/a&gt;. The scientists at Stanford University worked with Sony to port their Folding@home project to PS3. The idea is that the users will download a program to the hard drive of their PS3, and the program will perform some complex scientific calculations while the console is not being used for games. It will upload results to some central location, helping to find a cure to a number of diseases.&lt;br /&gt;&lt;br /&gt;The article left me with mixed feelings. On one hand, this is definitely a creative use of PS3, and the project is, no doubt, beneficial for all mankind. I applaud the scientists at Stanford and the people (tehchies and business folks) at Sony.&lt;br /&gt;&lt;br /&gt;On the other hand, this new project demonstrates one very important thing: PS3 is a device which has very powerful processor, local storage and connectivity capabilities. It can go online, download software, run it (maybe even in a background mode), and send data back. In other terms - yes, it is a full-scale computer, as we were told already. The question is - what about security? &lt;br /&gt;&lt;br /&gt;I do believe that Sony did its best to implement various security features. But I know also that PSP, for example, was hacked in a very short time. In a contest between Sony and hackers I wouldn't bet on Sony. &lt;br /&gt;&lt;br /&gt;You may say: "So what? Normal computers are also being hacked into daily; there are tons of malware out there - but no one panics because of that." The problem here is not a technical one - it's, rather, a psychological issue. Majority of users know now that the computers have to be protected against viruses, trojans and other dangers. People are learning to be attentive to unusual behavior of their computers; and they also learn to protect their PCs by installing automatically updating antiviruses, firewalls and all sorts of protective software (to say nothing about regular automated updates of OS). They learn it about computers - but &lt;span style="font-weight:bold;"&gt;almost no one will ever perceive their gaming console - a toy - to be a computer that requires an equal amount of protection.&lt;/span&gt; I strongly doubt that anyone will buy and install a firewall or antivirus for their PS3. &lt;br /&gt;&lt;br /&gt;Next question is - what is a danger of compromising PS3 security? Yes, it doesn't have any sensitive data stored (though it might have account numbers and passwords for some subscription-based online games). But it has exactly what was used by people at Stanford: free horsepower and connectivity. So, I can clearly see a botnet of infected PS3s used for distributed calculations (breaking keys, for example), spamming, or DDoS attacks. And, even if the source of the problem will be traced to PS3s, it might be incredibly difficult to make people install some patches or run cleaning software.&lt;br /&gt;&lt;br /&gt;Maybe Sony already addressed this problem somehow - I don't have enough information yet. But I can see an interesting and dangerous trend here. I am talking about having powerful computers in an ordinary gadgets and not even thinking about their true capabilities. It's not a new idea, but it seems less and less fantastic to me: we are close to times when one might discover that his coffee maker is being infected by a virus, and his vacuum cleaner is being used to crack some Pentagon codes...&lt;br /&gt;&lt;br /&gt;Technorati tags:&lt;a href="http://technorati.com/tag/PS3" rel="tag"&gt;PS3&lt;/a&gt;, &lt;a href="http://technorati.com/tag/security" rel="tag"&gt;security&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-115867465152075514?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/115867465152075514/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=115867465152075514' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/115867465152075514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/115867465152075514'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/09/ps3-hidden-computer.html' title='PS3: a hidden computer.'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-115835614520463479</id><published>2006-09-15T15:09:00.000-04:00</published><updated>2006-09-15T17:42:23.036-04:00</updated><title type='text'>Advice to interviewers</title><content type='html'>Lately on several blogs I've seen posts discussing different aspects of hiring. Most posts were giving advice to candidates - so, I thought I might also take part in this. However, instead of giving advice to candidates on how to survive an interview, I'd rather give some advice to interviewers. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt; Phone interview. &lt;/span&gt; Couple of times I've discovered that the person who is interviewing me over the phone has some speech defect or some extremely heavy accent. I'm not a native speaker myself, and, probably, I shouldn't complain about it, but still - the fact that I was unable to understand questions from the first time (and sometimes from the second and from the third times as well) made those interviews extremely - and unnecessary - stressful. So, advice number one is: make sure that the person who does phone screening speaks clearly.&lt;br /&gt;&lt;br /&gt;Also, do not make candidates read or listen to large pieces of code. It's inconvenient, ineffective and, speaking frankly, pretty stupid.&lt;br /&gt;&lt;br /&gt;And the last one about phone screening: be flexible about who calls whom. I've encountered once a person who insisted on calling me - in the middle of a working day in my office! &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Pre-screening.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Do not ask the candidate to submit code examples from his (or her) previous job. This might be illegal, and it puts the candidate in an awkward position. &lt;br /&gt;&lt;br /&gt;Test projects and on-line tests - well, I, personally, strongly dislike those practices. Nothing prevents candidate from cheating - and serious professional wouldn't like to spend his time on doing some bogus project.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;On-site interview.&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;Always give your business card to the candidate. When going through an interview with 5 or six people in a row it's hard to remember everyone's name and title - and it's so embarrassing later to admit that you've forgot whom did you talk with!&lt;br /&gt;&lt;br /&gt;Don't turn the interview into your ego-booster. Don't ask questions the only purpose of which is to prove you that you know something better than the candidate. As an example: in a list of "General SQL knowledge interview questions" in one company I've seen a question based on a strange, and, probably, incorrect behavior of MS SQL server under some circumstances. Do you think this is an appropriate question to measure general knowledge of SQL? I don't think so.&lt;br /&gt;&lt;br /&gt;And, please, try to give a feedback. I remember one of my interviews. A man asked me questions, I answered, he said "OK..." and continued with the next question. At some moment, I felt uncertain about my answer. The man said "OK...." and I asked him: "Was    it the answer you expected?" He calmly replied: "No. As a matter of fact, it was a completely wrong answer."  I asked for a clarification, and discovered that I misunderstood his question. So, if the candidate answers your question incorrectly, tell him (or her) so - maybe they know the right answer, but just didn't get you right.&lt;br /&gt;&lt;br /&gt;Technorati tags: &lt;a href="http://technorati.com/tag/Recruiting" rel="tag"&gt;Recruiting&lt;/a&gt;, &lt;a href="http://technorati.com/tag/interviewing" rel="tag"&gt;interviewing&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-115835614520463479?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/115835614520463479/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=115835614520463479' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/115835614520463479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/115835614520463479'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/09/advice-to-interviewers.html' title='Advice to interviewers'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-115800709514095459</id><published>2006-09-11T16:04:00.000-04:00</published><updated>2006-09-11T16:38:15.203-04:00</updated><title type='text'>Microformats</title><content type='html'>I've discovered an idea of microformats quite recently, and I was immediatelty charmed by its simplicity and elegance. Simply put, microformats are about formatting semantically united blocks of data so it will be easily understandable both by machines and by humans. Examples of the data which will benefit from this approach are numerous. &lt;a href = "http://microformats.org/"&gt;Microformats.org&lt;/a&gt; - a site dedicated to microformats - lists almost a dozen already existing formats, including &lt;a href="http://microformats.org/wiki/hcard"&gt;hCard - format for representing people and organizations&lt;/a&gt;, &lt;a href="http://microformats.org/wiki/hcalendar"&gt;hCalendar - format for events and calendar entries&lt;/a&gt; and others. Microformats are based on XHTML - which allows them, on one hand, to be easily integrated into a web page, and, on the other hand, to be easily extracted from the page and processed by any program. &lt;br /&gt;&lt;br /&gt;There are already several tools - most of them are stil beta versions, though - that are able to detect the presense of microformatted data on a web page and extract it. One of the examples of a freal-world usage of microformats is the way &lt;a href="http://www.technorati.com/"&gt;Technorati&lt;/a&gt; processes tags from blogs - &lt;a href="http://microformats.org/wiki/rel-tag"&gt; rel-tag &lt;/a&gt; is one of the microformats!&lt;br /&gt;&lt;br /&gt;One thing I am afraid of, however, is an uncontrollable proliferation of incompatible microfomats once the idea becomes popular. It's so easy to come up with your own format! This might render the whole idea unusable - but I do hope that it will not happen, and I am watching with interest all the new development in this area.&lt;br /&gt;&lt;br /&gt;Technorati tags: &lt;a href="http://technorati.com/tag/microformats" rel="tag"&gt;microformats&lt;/a&gt;, &lt;a href="http://technorati.com/tag/web2.0" rel="tag"&gt;web2.0&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-115800709514095459?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/115800709514095459/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=115800709514095459' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/115800709514095459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/115800709514095459'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/09/microformats.html' title='Microformats'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-115764767542775435</id><published>2006-09-07T11:31:00.000-04:00</published><updated>2006-09-07T12:47:55.496-04:00</updated><title type='text'>Back from hiatus</title><content type='html'>Being silent for a month is not a good thing for a blog. For a blogger, that's not a good thing either. It's even more difficult to write a first entry after such a long pause - somehow it seems that this particular entry should be very important, extremely informative, and should somehow justify the long silence. Since coming up with something having this level of perfection is definitely far beyond my capabilities, I decided just to write this simple "I'm back!" piece. &lt;br /&gt;&lt;br /&gt;Last month has been a hectic time for me. I've changed my job - and while doing that I positively had no time to produce anything interesting enough of my readers. I want to take this opportunity to say "Thank you" to everyone who is reading my blog.&lt;br /&gt;&lt;br /&gt;So, thank you - and stay tuned! I'm back.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-115764767542775435?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/115764767542775435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=115764767542775435' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/115764767542775435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/115764767542775435'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/09/back-from-hiatus.html' title='Back from hiatus'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-115507466927406919</id><published>2006-08-08T18:04:00.000-04:00</published><updated>2006-08-08T18:04:29.373-04:00</updated><title type='text'>I hate eVite!</title><content type='html'>Somehow it happens that many of my friends got the habit of using eVite as a tool for organizing their birthday parties and similar events. I do not want to say anything bad about my friends - but &lt;b&gt;I HATE EVITE!&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;Actually, it's not eVite - it's the idea of using such tools in general. I can imagine that it might be extremely useful when somebody organizes a party with one hundred participants. But using it for a meeting of ten - or even twenty - friends? That's definitely an overkill. &lt;br /&gt;&lt;br /&gt;There are several reasons why I feel in such a way. First, I think an eVite invitation just purely lacks a personal touch. Everybody sees the same text, and - even if the text is written in the most warm and personal words - it's lost among all other elements on the eVite page. &lt;br /&gt;&lt;br /&gt;Another reason:  I am not sure why do I have to be able to see other guests' responses - or why other guests should read my response? Again, in case of some semiofficial event it's, probably, perfectly OK - but not in case of a small birthday party! &lt;br /&gt;&lt;br /&gt;But the invitees replies are not the worst element of the eVite page. The worst - for me - is advertising. (It's also yet another reason why I do hate this tool!) I really don't see why I should get all this garbage when opening a birthday party invitation. Yuck!&lt;br /&gt;&lt;br /&gt;I know that most of my friends do not share my point of view. Maybe it's just me - but every time I have to open an eVite page I feel that I long for good old times when invitation were written individually for each guest on pieces of substance called "paper"...&lt;br /&gt;&lt;br /&gt;Technorati tags: &lt;a href="http://technorati.com/tag/eVite" rel="tag"&gt;eVite&lt;/a&gt;, &lt;a href="http://technorati.com/tag/rant" rel="tag"&gt;rant&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-115507466927406919?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/115507466927406919/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=115507466927406919' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/115507466927406919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/115507466927406919'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/08/i-hate-evite.html' title='I hate eVite!'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-115497339629437792</id><published>2006-08-07T13:56:00.000-04:00</published><updated>2006-08-07T13:56:36.356-04:00</updated><title type='text'>"White hamster" projects</title><content type='html'>&lt;i&gt;Since the company I worked in decided to lay me off (together with several other people), now is a good time to review some of my experience and try to learn from it something important...&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;So, what is a "white hamster" project? Before I answer the question, let me tell you an old joke.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;A man enters a pet store, pulling behind him on a leash a huge, dangerously looking polar bear.&lt;br /&gt;- Hey, what's the deal with this bear?! - asks storekeeper.&lt;br /&gt;- Oh, I just want to talk to the guy who sold me a year ago a cute little white hamster...&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;White hamster project (I invented the term for my own usage - but everyone is welcome to use it) is a project that starts as an innocuous small tool or utility, but soon unexpectedly grows into something large. It happened to me a couple of times: I've got a request to write a small utility. Because it was small and easy, I've got a couple of days to do it - and I did it in a very simple and straightforward way. Then a couple of requests for small additional features arrived - then two or three small enhancements - then a special case popped up... Each time I spent a minimal time on the change, because, after all, it was still a simple tool. Half a year later I was dealing with a monster which had a complex web UI, maze-like control flow, and was a nightmare to work with, because of its design - or, to be more precise, a lack of one.&lt;br /&gt;&lt;br /&gt;Of course, the best solution would be to do everything right from the very beginning - but quite often it's hard to justify the necessity of spending much more resources on a very simple program which can be coded in just a couple of hours. For example, one of my "white hamster projects"  started with a request for a web form where the user enters five or six values and the tool populates HTML template with the values entered and saves the result as a new file. A task for two or three hours of programming - and who could know that it would turn into such a beast...&lt;br /&gt;&lt;br /&gt;It's very important to know how to tell a real white hamster from a polar bear cub. Most times it's impossible to do in the very beginning - but, once the developer receives first  requests for new features and enhancements, there are certain signs which can help recognize a potential danger. Here are some of those signs:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Surprisingly high attention to the project.&lt;/b&gt;Sometimes it happens that the management misrepresents (and/or misunderstands) the scope and significance of the project. So, if, what was initially described to you as a simple utility, becomes all of a sudden a topic of a heated discussion, beware!&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Request for a new feature which seems almost unrelated to the existing ones. &lt;/b&gt;For example, after doing the template population tool I was asked to make the tool save some details about the template and the data in the database.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Discovery of "special cases".&lt;/b&gt;In my situation, I was told soon after I released the first version of the tool that one specific type of data requires a different template. I've implemented it blindly. At the end of the project I had eight or ten different types of templates which were selected using unbelievably entangled logic. That's the danger of special cases - you may start with just one, but inevitably you will end with a bunch. Usually the special cases are, in fact, pieces of some business logic which was not properly identified at the analysis time.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Urge to use some "hack"&lt;/b&gt;That's pretty basic, but still... If, while implementing a new feature, you feel an urge to use some trick to fit it into the existing application structure, it's a sign that something is wrong.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Enhancement requires a significant change in the control flow.&lt;/b&gt; For example, in web-based applications, this might be a necessity for a new page, or necessity to divide the flow into two separate branches. This is a sign that the complexity of the project grows beyond original expectations, and it's time to re-evaluate the project.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;So, what should be done once the potential bear cub is discovered? Of course, the project design should be changed with a high potential complexity in mind. But - and this is even more important - in this situation one should investigate the business reasons for this project. In my experience, almost always "white hamster projects" are, in fact, attempts to automate some business process. Very often these attempts happen without fully understanding what is being done. In my case everyone  - the business users, my manager, and me - believed that the users just need a simple tool to help them create HTML snippets. What they &lt;b&gt;&lt;i&gt;actually needed&lt;/i&gt;&lt;/b&gt; was a system for working with a new type of web ads. At last I understood it - but it was too late; my cute little hamster had already turned into an ugly beast.&lt;br /&gt;&lt;br /&gt;Technorati tags: &lt;a href="http://technorati.com/tag/software+design" rel="tag"&gt;software design&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-115497339629437792?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/115497339629437792/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=115497339629437792' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/115497339629437792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/115497339629437792'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/08/white-hamster-projects.html' title='&quot;White hamster&quot; projects'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-115383749148371111</id><published>2006-07-25T10:24:00.000-04:00</published><updated>2006-07-25T10:24:51.866-04:00</updated><title type='text'>Consoles vs PC: Article about PS3</title><content type='html'>&lt;i&gt;(This topic just doesn't want to let me go...) &lt;/i&gt;&lt;br /&gt;A very interesting article was published recently on &lt;a href="http://www.gamasutra.com/"&gt;Gamasutra&lt;/a&gt;:&lt;a href="http://www.gamasutra.com/php-bin/news_index.php?story=10122"&gt;Analyst: PS3 To Slow Industry Growth, Nintendo &amp; Microsoft Could Capitalize&lt;/a&gt;.  Recently I talked about &lt;a href="http://grumpytech.blogspot.com/2006/07/fading-glory-of-pc-games.html"&gt;the advantages consoles have over PCs in terms of gaming.&lt;/a&gt; When I read the article in Gamasutra, I was really puzzled: it seems like Sony in PS3 is going to forfeit all these advantages. PS3 isn't going to be cheap - I knew that. I would even say it is going to be absurdly expensive. But now the CEO of Sony Computer Entertainment (SCE) states that &lt;br /&gt;&lt;blockquote&gt;"we don't say it's a game console, the PS3 is clearly a computer unlike PlayStations so far." &lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;He explains further:&lt;br /&gt;&lt;blockquote&gt;Since PS3 is a computer there are no 'models' but configurations. We'll want to upgrade the hard drive size very soon. If new standards appear on the PC, we will want to support them. We may want the Blu-ray drive to write. In the PC business, if you fix the spec for two years you'll be caught by competitors. Computers should be changing, right? It's inevitable that 60GB hard drive will become too small, and memory may become too small as well"&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Wow! So, in other terms, the buyers of PS3 should be ready for spending even more money on upgrades. And the developers should be ready for much harder QA, because now the testing of the new game should have to be done on all possible "configurations". Which, in turn, means  that the users should be ready for more bugs in the games. &lt;br /&gt;&lt;br /&gt;And why would I (or anyone) want to spend money on a contraption like this instead of buying normal PC - which might be in a long run just a little bit more expensive than PS3, but which can do so much more? I don't know the answer to this question. It seems likeanalysts the analysts from "DFC Intelligence" (whose report  is a base for this article) are also puzzled. They predict: &lt;br /&gt;&lt;blockquote&gt;1) the high price of the PlayStation 3 is going to slow overall industry growth, especially for software and 2) if Sony does not change its current strategy for the PS3 the system will probably end up in third place in installed base.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;I agree with those analysts. Either people at SCE are geniuses, and can see some things in the future which neither I nor the analysts from DFC can see - or we should prepare for a huge change in consoles game market in the nearest future.&lt;br /&gt;&lt;br /&gt;Technorati tags: &lt;a href="http://technorati.com/tag/PS3" rel="tag"&gt;PS3&lt;/a&gt;, &lt;a href="http://technorati.com/tag/consoles" rel="tag"&gt;consoles&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-115383749148371111?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/115383749148371111/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=115383749148371111' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/115383749148371111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/115383749148371111'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/07/consoles-vs-pc-article-about-ps3.html' title='Consoles vs PC: Article about PS3'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-115289815471006031</id><published>2006-07-14T13:29:00.000-04:00</published><updated>2006-07-14T13:29:14.780-04:00</updated><title type='text'>Some business database design rules</title><content type='html'>A short disclaimer: These rules are coming from my own experience. The list is not complete, and, actually, it's not a list - rather a reminder for myself and an advice for all others. Most of the rules might seem obvious, but I have spent several nightmarish days recently fixing the consequences of not following those rules.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. Every item of business data which enters the database should have the information about the source of the data and the time when the data was inserted. &lt;/b&gt; The source should be as atomic as possible (not "one of mail servers", but "server mail05.mycompany.com"; not "a user input", but "Entered by user Joe Schmoe"). Of course, this does not have to be a text field - a source ID will do.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. All changes to business-impacting data items should be recorded in corresponding history tables, together with the information about the time and the source of the changes (ID of the user who performed editing, name of the process that changed the data etc.).&lt;/b&gt;  A note - this rule doesn't state that changes of &lt;b&gt;&lt;i&gt;all&lt;/i&gt;&lt;/b&gt; data items should be archived - just the ones that might be important for the business. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;3. All changes to the database that are not done according to standard operation procedures should be documented.&lt;/b&gt; If there is some problem with the data, and there is no other solution but to fix it manually, the script used to perform the fix (even if it is a single SQL statement!), together with the description of the change and the time the change was performed, should be stored in some archive.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;4. For each and every table in the database there should be a documentation describing how the data in this table can be changed, and what are the procedures  for fixing the incorrect data.&lt;/b&gt; And, I will add, the designer of the database should take into consideration the fact that sometimes some data in each table might  need to be fixed. For some tables, the documentation would be very simple: "Use UI to modify data". Some tables might require more complex procedures -for example, an error in financial transaction requires creation of a reverse transaction (and transaction types should include reverse transaction in this case!). Another example would be a table which somehow aggregates data from other tables - in this case incorrect data in this table might require changing data in some other table and, for example,  running some update script. &lt;br /&gt;&lt;br /&gt;Following these rules is not always easy - but in the long run it will save you from some extremely unpleasant experiences. Trust me - I've been through that!&lt;br /&gt;&lt;br /&gt;Technorati tags: &lt;a href="http://technorati.com/tag/database+design" rel="tag"&gt;database design&lt;/a&gt;, &lt;a href="http://technorati.com/tag/software+design" rel="tag"&gt;software design&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-115289815471006031?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/115289815471006031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=115289815471006031' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/115289815471006031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/115289815471006031'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/07/some-business-database-design-rules.html' title='Some business database design rules'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-115255749861663461</id><published>2006-07-10T14:51:00.000-04:00</published><updated>2006-07-10T14:51:38.746-04:00</updated><title type='text'>PC vs Console: an example</title><content type='html'>Last Sunday I've decided to spend some time playing games on my PC. I've started "F.E.A.R.",  which I didn't touch for several months. &lt;br /&gt;&lt;br /&gt;First of all, I've spent some time trying to find which of 5 nearly identical CDs the game wants to have in the drive. The game just kept telling me "Wrong disk inserted". At last I've found out that it wanted disk number 5. Then the game started, and immediately suggested me to download and update. I agreed - and the game immediately quit, starting some downloader instead, which told me that it will take 20 minutes to get the update. (by the way, I have cable - I hate to think for how long the people with dialup would wait...) Well, It was a surprise, because I was in the mood of playing right now - but, after all, I had some other stuff to do, so I just let it run.&lt;br /&gt;&lt;br /&gt;In 20 minutes the update was downloaded and installed. I've started the game again, and it again suggested me to download yet another update. Again I agreed, and again the downloader was started - but this time it couldn't locate the file on the server. I decided to run the game without getting the latest patches and features. Alas, I couldn't do it, because the game just crashed when trying to load any of my saved games. I've rebooted a couple of times, and, when it didn't help, I went to the Internet for the help. Very soon I discovered that there was a bug in the first patch I've installed, and that I have to download and install the latest patch. Luckily I found the required file manually pretty soon, and in less than ten more minutes I finally started playing.&lt;br /&gt;&lt;br /&gt;And, by the way, while searching for the patch I've accidentally discovered, that another game I've played not so long ago installed some driver on my system for some incredibly advanced copy-protection lock. Now I have to remove this driver, because I do not want some unknown drivers on my PC. The funny thing is, that I've discovered this fact while reading the message on how to install the cracked version of this game!&lt;br /&gt;&lt;br /&gt;So, just to add to my writings about what PC games should do to regain market from consoles: these are good examples of what the PC games &lt;b&gt;shouldn't do!&lt;/b&gt; For any console gamer, starting the game is a matter of inserting one disk and pressing one button. And the console games just do not download patches - neither they modify the firmware of consoles.&lt;br /&gt;&lt;br /&gt;Technorati tags: &lt;a href="http://technorati.com/tag/Gaming" rel="tag"&gt;Gaming&lt;/a&gt;, &lt;a href="http://technorati.com/tag/usability" rel="tag"&gt;usability&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-115255749861663461?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/115255749861663461/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=115255749861663461' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/115255749861663461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/115255749861663461'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/07/pc-vs-console-example.html' title='PC vs Console: an example'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-115212372739121692</id><published>2006-07-05T14:22:00.000-04:00</published><updated>2006-07-06T09:06:15.483-04:00</updated><title type='text'>Fading glory of PC games</title><content type='html'>&lt;i&gt;(David - thank you for suggesting this topic).&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;As I mentioned earlier, I grew up on PC games. I've always considered consoles as being inferior to PCs.  But now it seems like PC games are being aggressively pushed out of the market by consoles. Just 5-6 years ago in most video gaming stores the majority of space was occupied by PC games, with just a couple of shelves dedicated to consoles. Now the situation is just the opposite: I've seen already couple of stores that do not carry PC titles at all! In other stores you have to work hard to locate one or two tiny shelves with PC boxes - all the rest are games for PS2, Xbox and GameCube.&lt;br /&gt;&lt;br /&gt;I don't like this at all. I also think that having a healthy market for PC games is essential for the development of video gaming industry and video games as a cultural phenomenon. Consoles are much less flexible than PCs in terms of game genres and game mechanics they can support. &lt;br /&gt;&lt;br /&gt;So, can anything be done to reverse this market takeover and bring the market to some kind of a healthy balance? In order to answer this question we have to understand why the consoles became so popular.&lt;br /&gt;&lt;br /&gt;A quick disclaimer: I am absolutely sure that some research has been done already regarding those questions. However, I don't know anything about the results of those researches. So, whatever I say now is just my own opinion, based strictly on my own perception. If anyone would point me to any materials on that issue, I will be extremely grateful.&lt;br /&gt;&lt;br /&gt;What made consoles so popular in recent years? The answer is very simple: the consoles just got better! One of the major problems with consoles was lack of horsepower - in computing, graphics, sound. The consoles of the current generation are powerful enough to run complex 3D games similar to the PC games. Of course, the most complex 3D games - "Half Life 2", "F.E.A.R.", "FarCry" are still beyond the power limits of PS2s and Xboxes, but look at the next generation - PS3, Xbox360, Wii... The have multi-core processors, capable of running several processes in parallel and tremendous graphics power. This comes very close to the current gaming PCs. So, with the lack of power being out of the way, the other advantages of consoles begin to shine. It's important to understand those advantages in order to come with a working strategy for PC games to regain their market share. The most important advantages of consoles are, as I see it, price and simplicity.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Price&lt;/b&gt;. Even though the prices for the next generation of consoles are simply outrageous (except Wii, probably), a console is still far less expensive than a decent gaming PC. And - another related issue - a console ages much better than a PC. A console becomes obsolete only when the next version of the device saturates the market. Until then, the console is as good as new. Different situation with PCs: a capable high-end gaming PC in two years becomes mediocre, and will not play any modern game. &lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Simplicity&lt;/b&gt;. Consoles are really "plug and play" - you plug the cables, and you are ready to play. Compare this with setting up a new PC...  With console, it's easier also to start playing: you insert DVD (or cartridge), turn the device on - and there you are! With PC, you have to install the game, configure it, sometimes download a patch...&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;So, what happened is: for quite some time parents bought consoles to kids, because they were cheap and easy to use, and to keep them off their parents' computers. Now the kids grew up, they are used to playing on consoles, and the gap between PCs and consoles is almost closed.&lt;br /&gt;Is there any hope for PC games? I think, yes. First of all, the situation might improve in some not-so-distant future when having a computer will become a requirement for school. With kids already having their own computers, the parents might be more inclined towards buying them a PC game than towards buying them a separate gaming device. Thus a new generation of kids raised on PC games will appear. But, speaking frankly, this will happen only in several decades - and this is a tremendously long time for an industry which is hardly forty years old. And what can be done now?&lt;br /&gt;&lt;br /&gt;Well, PCs still have several advantages over consoles, which can be used to regain public's interest in PC games:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Controls.&lt;/b&gt; Mouse is still far better as an aiming and selection device than any joysticks. And a keyboard is much more versatile control device than any gamepad. Besides that, a keyboard can be used for text input - meaning, for example, chats for multiplayer games.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Graphics&lt;/b&gt; Since consoles are hooked up to TVs, the quality of image is limited by the capabilities of TV screen. Displays are still far ahead - but, alas, the lack of resolution is compensated by the size of the screen. Playing a console game in front of a large TV is definitely an intense experience. Still, this advantage can be used.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Storage.&lt;/b&gt; This is where computers are still far ahead of consoles. How this can be used in games? Well, for example, a game might feature a complex and large world, which requires constant downloading of new parts. Or the game might produce some useful artifacts (images, movie clips etc.) which will be stored on a computer's hard drive. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Native environment&lt;/b&gt; People are, generally, using computers not only for games - but for surfing the web, reading and sending emails, sending instant messages and so on. A game can be integrated with these activities - which makes Alternate Reality Games (ARGs)  an important part of re-capturing the market. &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;There is one more advantage of PCs - now from the point of view of game developer and designer. It's much easier for an independent game studio to develop a PC game than a console one. The prices for console SDKs are still very high. Which means that PCs as a platform are much more open to innovations than console. And, as we know, innovation is one thing the computer games industry needs desperately.&lt;br /&gt;&lt;br /&gt;To summarize: in order to regain their market share, the PC games should capitalize on the strengths of PCs as a gaming platform, should be innovative and should target all ages of the audience (including the youngest kids). Not sure whether this will help - but this is the only direction I can see.&lt;br /&gt;&lt;br /&gt;Technorati tags: &lt;a href="http://technorati.com/tag/game+design" rel="tag"&gt;game design&lt;/a&gt;, &lt;a href="http://technorati.com/tag/Gaming" rel="tag"&gt;Gaming&lt;/a&gt;, &lt;a href="http://technorati.com/tag/consoles" rel="tag"&gt;consoles&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-115212372739121692?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/115212372739121692/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=115212372739121692' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/115212372739121692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/115212372739121692'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/07/fading-glory-of-pc-games.html' title='Fading glory of PC games'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-115100363903092758</id><published>2006-06-22T15:13:00.000-04:00</published><updated>2006-06-22T17:10:48.890-04:00</updated><title type='text'>Save: commit, bookmark or suspend?</title><content type='html'>The semantic of a "Save" operation in UI is not as simple as one might think. While thinking about &lt;a href="http://grumpytech.blogspot.com/2006/06/why-saving-game-is-problem.html" title="Why saving a game is a problem"&gt;the problem with the "save" operation in computer games&lt;/a&gt;, I came to the conclusion  that there are actually three different operations which are usually represented in the UI with a single "Save" command. These operations are: &lt;b&gt;commit&lt;/b&gt;, &lt;b&gt;bookmark&lt;/b&gt; and &lt;b&gt;suspend&lt;/b&gt;.  For the sake of simplicity I will call whatever the user is working on "the project" - be that document, image, configuration data or even a state of a game.&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Commit&lt;/b&gt;. The user finished his work, and the project is ready to be used (released to public, reviewed by peers, put into production etc.) Several examples: saving user profile after editing it, saving changes to configuration of some program, saving a shared document.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Bookmark&lt;/b&gt;. The better name for this one would be "create a snapshot". The user wants to preserve the current state of the project to be able to return to this state later. Examples: saving the game, backing up the project before doing some risky changes. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Suspend&lt;/b&gt;. The user wants to stop working now, and to be able to resume work later from the same point. There are not many examples of explicitly doing this operation, but many programs are doing this implicitly when being closed. The difference with "bookmark" is that the user intends to restore the project from the suspended state only once, when returning to work, whereas the "bookmark" is intended to be used indefinite number of times.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;The operations seem very similar - but in fact the differences between them are important enough to be considered when designing UI and software in general. It may sound strange, but quite a few applications address those differences correctly. In most cases the users are emulating different operations using just the standard "Save" command.&lt;br /&gt;&lt;br /&gt;To illustrate this, let's consider an example well known to everyone - Microsoft Word. This program, actually, does quite a poor job of recognizing the different cases of "Save" operation. You want to create a snapshot of a complex document you're working on, before  performing some global changes in formatting? The only way (unless you are using some version control software) is to save a copy with a different name, which is not elegant and just add clutter to your hard drive. You are editing a shared document, and want to suspend your work? Save it with different name in a non-shared location; otherwise you will provide others with an incorrect version of the document. It may seem that the only "Save" operation supported by Word is committing - but even that is not supported as it should, because Word tends to store some leftovers from the previous edits in the file, so, to commit in a clean way you have to save the file under a different name with the "Save as..." command.&lt;br /&gt;&lt;br /&gt;Returning to the original question about problem with saving the games - I think that, when game designers realize the difference between different save operations, they will add "Suspend" operation to the game, and make happy many players - including myself.&lt;br /&gt;&lt;br /&gt;Technorati tags: &lt;a href="http://technorati.com/tag/GUI" rel="tag"&gt;GUI&lt;/a&gt;,&lt;a href="http://technorati.com/tag/usability" rel="tag"&gt;usability&lt;/a&gt;, &lt;a href="http://technorati.com/tag/software+design" rel="tag"&gt;software design&lt;/a&gt;,&lt;a href="http://technorati.com/tag/game+design" rel="tag"&gt;game design&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-115100363903092758?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/115100363903092758/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=115100363903092758' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/115100363903092758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/115100363903092758'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/06/save-commit-bookmark-or-suspend.html' title='Save: commit, bookmark or suspend?'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-115092531814639756</id><published>2006-06-21T17:28:00.000-04:00</published><updated>2006-06-22T17:13:20.883-04:00</updated><title type='text'>Why "saving the game" is a problem?</title><content type='html'>There is one thing in computer games that puzzles me a lot - both as a player and as a game designer/developer. I am talking about "saving the progress". For some reason in many games this supposedly straightforward operation is not straightforward at all. Especially prone to this are console games. No, seriously, I really don't understand why the game designers cannot give the player a possibility to save his progress whenever he wants it? Why do the console games use complex systems of "saving locations", checkpoints, savepoints and who know what else instead of simple "save" command in a menu?&lt;br /&gt;&lt;br /&gt;I grew up on PC games - and when I started playing console games this peculiarity was a complete surprise for me - and an unpleasant one. Alas, being an adult I cannot play for as long as I want. I have to stop sometimes - and what a disappointment it is when I have to forfeit all the achievements I've made in the last hour just because I cannot save game in the middle of a level. &lt;br /&gt;&lt;br /&gt;I tried to come up with any plausible explanation of this phenomenon:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Technical difficulties. Well, I don't buy it. I can't imagine what kind of technical difficulty can prevent a game on a modern console (like PS2 - or PSP, for example) from saving data at any given moment. There is plenty of horsepower to do this, and storage shouldn't be a problem either. Of course, maybe I don't know something...&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Game design decision. I know that some game designers tend to think that giving the player opportunity to cheat (save - try to hit monster - miss it - load - repeat) might break level design. This could be true - but, for some reason, similar games on PC allow players to do it, and are still fun. For example, look at "Half Life 2" or "F.E.A.R". And, at the same time, "Call of duty" on PS2, being also a First Person Shooter, doesn't allow saves in the middle of a level.&lt;br /&gt;&lt;br /&gt;And, even if there is a problem with level design being broken in such a way, there is a brilliant solution to this problem - separate "temporary save", which ends the game, and which is destroyed after restoring. I've seen this design in "Wario Land 4" on Game Boy Advance - it works like a charm, and I really enjoyed the possibility to suspend the game at any time.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Legacy of arcade games. Yes, in a video arcade players cannot save their progress - that's the whole idea! That's what makes them play - and pay - more and more. And yes, old consoles didn't have the capability to save game at all - hence the "level passwords" and other solutions of the same kind. But this was a long time ago - the mode of playing had changes since then. Portable gaming devices are used in many circumstances, and people often simply must stop playing at certain time. The preservation of arcade spirit shouldn't compromise the usability of the game.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;So, I can find no decent answer. But, while thinking about this problem, I've suddenly understood that "Save" operation might have different meaning in different applications. The semantic difference is subtle, but important for a good design of application UI - and application in general. But that's a topic for another post...&lt;br /&gt;&lt;br /&gt;Technorati tag: &lt;a href="http://technorati.com/tag/game+design" rel="tag"&gt;game design&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-115092531814639756?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/115092531814639756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=115092531814639756' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/115092531814639756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/115092531814639756'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/06/why-saving-game-is-problem.html' title='Why &quot;saving the game&quot; is a problem?'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-115075022409525388</id><published>2006-06-19T16:50:00.000-04:00</published><updated>2006-06-19T16:51:04.323-04:00</updated><title type='text'>Progress or activity?</title><content type='html'>I missed the point in time when this change happened. Probably it started ten years ago - or, maybe more...  I am talking about using "activity indicators" in place of good old progress bars.  &lt;br /&gt;&lt;br /&gt;Of course, activity indicator is much easier to implement than progress bar. With progress bar, you have to update it meaningfully - and to have some general idea of the ratio of performed work to the total amount of it. Activity indicator is just a breeze - you slap an animation widget on your UI - and wham! You have it!&lt;br /&gt;&lt;br /&gt;But from the usability point of view, it's a disaster (at least, I prefer to view it as such). Not only you have no clue about the speed of the operation, the approximate time left and all such nuances. You also have no idea whether the application is running as it should.  The cool progress animation can play by itself, making you think that the application is working hard - when, in fact, it doesn't.&lt;br /&gt;&lt;br /&gt;I understand that under some circumstances making full-fledged progress bar may be tough. One situation is when you don't know beforehand how many operations the program will have to perform. For example, the last time I've encountered activity indicator where a progress bar should be was in the utility called &lt;a href="http://www.ccleaner.com/" title="CCleaner home page"&gt;CCleaner&lt;/a&gt; (a really good freeware program, which removes temporary files and other garbage from the disk). The program didn't know how many files it will have to remove. The author decided to use a fake progress bar - the one which starts from the beginning once it reaches 100%. A better solution would be to add display of the name of the file currently being deleted, or a counter of deleted files. This simple change would make the UI better - by looking at the growing number of deleted files I would always know that the application is running, and not just waiting for some locked file to become released.&lt;br /&gt;&lt;br /&gt;The same principle is applicable to web applications as well. Don't just use "AJAX activity indicators" - in case of potentially long operations show some real progress information to the user.&lt;br /&gt;&lt;br /&gt;And I have to admit that replacement of progress indicators with activity indicators is a problem not only in the world of computers, but also in the society as well. But this goes far beyond the scope of this post.&lt;br /&gt;&lt;br /&gt;Technorati tags: &lt;a href="http://technorati.com/tag/GUI+design" rel="tag"&gt;GUI design&lt;/a&gt;, &lt;a href="http://technorati.com/tag/rant" rel="tag"&gt;rant&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-115075022409525388?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/115075022409525388/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=115075022409525388' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/115075022409525388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/115075022409525388'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/06/progress-or-activity.html' title='Progress or activity?'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-114986868588475342</id><published>2006-06-09T11:58:00.000-04:00</published><updated>2006-06-09T11:59:50.760-04:00</updated><title type='text'>Again on piracy and copyrights</title><content type='html'>Yesterday I've had a curious conversation with one young gentleman. In two days he made two postings in one forum. In the first post, he was talking about some anti-piracy lawsuit, totally supporting it. The very next day he posted a review of some movie and offered to share a copy of the movie he downloaded from one of these services where you pay thirty bucks a year and have access to tons of "not-so-legal" music and video files. I was curious and asked him to clarify his position on copyrights and piracy. His answer totally shocked me:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;" Well - &lt;/i&gt;said he&lt;i&gt; - since I am giving the movie for free - that's not a piracy. It's like giving a book to a friend; you wouldn't call it a piracy, would you? If it's a piracy, then the whole eDonkey network is a great piracy act with millions of pirates. And, speaking of the place from where I've downloaded the movie, they charge for access, not for content, so that's not a piracy either. "&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;As I said, I was flabbergasted. I never thought that in our time so naive people would still exist. Of course, I did my best to explain the real situation to this gentleman, and then I had several thoughts. &lt;br /&gt;&lt;br /&gt;First - it seems like the idea of copyright education  (&lt;a href="http://www.captaincopyright.ca/Default.aspx"&gt;"Captain Copyright" &lt;/a&gt;etc.) is not as useless as I thought. This guy badly needed some kind of copyright education. &lt;br /&gt;&lt;br /&gt;And second - the position of this gentleman has its own logic. And, alas, it seems to me much more reasonable and natural than the current copyright laws. And the copyright laws themselves become more and more absurd: it seems that merely having a shared folder on your computer might become a reason for a lawsuit against you (&lt;a href="http://lifehacker.com/software/top/ask-the-law-geek-install-kazaa-get-fined-750-the-riaas-newest-plan-of-attack--179336.php"&gt;here is a very interesting Lifehacker  article about it&lt;/a&gt;). The copyright laws are long overdue to be replaced with something realistic and reasonable. &lt;br /&gt;&lt;br /&gt;Technorati tags: &lt;a href="http://technorati.com/tag/copyright" rel="tag"&gt;copyright&lt;/a&gt;, &lt;a href="http://technorati.com/tag/piracy" rel="tag"&gt;piracy&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-114986868588475342?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/114986868588475342/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=114986868588475342' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/114986868588475342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/114986868588475342'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/06/again-on-piracy-and-copyrights.html' title='Again on piracy and copyrights'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-114909860911791318</id><published>2006-05-31T14:03:00.000-04:00</published><updated>2006-05-31T14:03:29.180-04:00</updated><title type='text'>Blogwise</title><content type='html'>I've just stumbled upon a blog search/directory site called&lt;a href="http://www.blogwise.com/"&gt; "Blogwise"&lt;/a&gt;, and, of course, decided to add my humble blog into their system. The process was easy - and after hitting "Submit", I've got the following message:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Your site has been added to the submission queue. Thank you for adding your site to Blogwise.&lt;br /&gt;&lt;br /&gt;It is important to us that all entries are checked for consistency before approval, however Blogwise is run by volunteers contributing their spare time. There may be a small delay before your blog is added to the directory.&lt;br /&gt;&lt;br /&gt;There are currently 46415 blog(s) in the queue. Your blog is expected to be added within 156 day(s).&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Well, this isn't what I would call a "small" delay. Though I am in no hurry, I think that the guys at Blogwise should do something with the waiting time.&lt;br /&gt;&lt;br /&gt;Technorati tags: &lt;a href="http://technorati.com/tag/blogging" rel="tag"&gt;blogging&lt;/a&gt;, &lt;a href="http://technorati.com/tag/blogwise" rel="tag"&gt;blogwise&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-114909860911791318?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/114909860911791318/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=114909860911791318' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/114909860911791318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/114909860911791318'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/05/blogwise.html' title='Blogwise'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-114866431366802021</id><published>2006-05-26T13:25:00.000-04:00</published><updated>2006-05-26T13:25:13.780-04:00</updated><title type='text'>Java vs .NET on TSS</title><content type='html'>Couple of days ago an interesting thread was started on &lt;a href="http://www.theserverside.com/"&gt;TheServerSide.com&lt;/a&gt;. &lt;a href="http://www.theserverside.com/news/thread.tss?thread_id=40611"&gt;The thread &lt;/a&gt;is titled &lt;a href="http://www.theserverside.com/news/thread.tss?thread_id=40611"&gt;"Java Succumbing to .NET in my Organization"&lt;/a&gt;.  The author  of the original post discovered that not only his management, who are non-techies, decided to move to .NET, but many of the programmers were quite happy to do it. The author offered some explanations of why developers might want to discard Java in favor of .NET, and all those explanations boiled down to one complain: Java offers too many choices in frameworks, servers, components and architectures. &lt;br /&gt;&lt;br /&gt;The thread, quite predictable, became extremely popular, and soon the discussion turned into a small-scale religious war (Java vs. .NET). The whole thread is quite interesting to read, the most interesting and informative post, in my opinion, being&lt;a href="http://www.theserverside.com/news/thread.tss?thread_id=40611#209803"&gt; "can Java do a lot of things that .NET cannot?"&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;However, it seems that the discussion had entirely missed the point. After all, it makes little sense to discuss which technology is better in case of two almost equally powerful technologies. Much more interesting is the question of perception: why do the developers perceive Java as being inferior to .NET?&lt;br /&gt;&lt;br /&gt;And here I totally agree with the answer suggested in the original post. Too many choices, without any clear way to chose. The number of J2EE frameworks, technologies, components and ideologies is overwhelming and intimidating, and it seems like new items are being added to this mile-long list almost daily. Not that I am saying that it's bad to have a choice; but if the problem of choice starts to divert developers from Java, it's definitely an unhealthy sign.&lt;br /&gt;&lt;br /&gt;Unfortunately, I don't have any solution to this problem, or even a slightest idea of where this solution might be. But  it at least anyone will read my post and will recognize this situation as a problem, I will be happy. And if no solution will be found, Java soon can be pushed out of market by .NET - and that would be a very sad thing.&lt;br /&gt;&lt;br /&gt;Technorati tags: &lt;a href="http://technorati.com/tag/Java" rel="tag"&gt;Java&lt;/a&gt;, &lt;a href="http://technorati.com/tag/J2EE" rel="tag"&gt;J2EE&lt;/a&gt;, &lt;a href="http://technorati.com/tag/TheServerSide" rel="tag"&gt;TheServerSide&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-114866431366802021?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/114866431366802021/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=114866431366802021' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/114866431366802021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/114866431366802021'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/05/java-vs-net-on-tss.html' title='Java vs .NET on TSS'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-114833819581466230</id><published>2006-05-22T18:49:00.000-04:00</published><updated>2006-05-22T18:49:55.866-04:00</updated><title type='text'>Don Spamleone</title><content type='html'>Fact: the company called "Blue Security" gave in to spammers and hackers and shut down their anti-spam service. I think this is the first time spammers achieved victory of this kind.&lt;br /&gt;&lt;br /&gt;Story (as far as I got it from various sources): Blue Security came up with a controversial method of fighting spam. Basically, its software called "Blue frog"  was installed on the users' computers and was flooding websites of spammers with opt-out messages, thus performing a typical DDoS attack. Then, some (allegedly, Russian) spammer/hacker PharmaMaster declared a war on Blue Securityand staged a real DDoS attack on their servers, disabling their site completely. Blue Security attempted to evade the attack by redirecting the users to its TypePad-hosted blog, but then PharmaMaster stroke Six Apart (the company which hosts TypePad), causing a lot of additional damage along the way. As a result, the company's co-founder Eran Reshef stated (according to &lt;a href="http://www.washingtonpost.com/wp-dyn/content/article/2006/05/16/AR2006051601873.html"&gt;"Washington Times"&lt;/a&gt;)  that "It's clear to us that [quitting] would be the only thing to prevent a full-scale cyber-war that we just don't have the authority to start..."- and the service was shut down.&lt;br /&gt;&lt;br /&gt;This story is a sorry and disturbing one. Speaking frankly, I don't feel any real sympathy towards Blue Security: fighting crime with criminal methods is not such a great idea. Besides that, their floding caused unnecessary load on the servers and communication channels, and thus was not much better than the spam itself. There is a russian proverb which seems to perfectly describe this conflict: "A thug stole a club from another thug" (my translation is not perfect, but it shows the idea). By the way, there are some attempts to recreate Blue Frog in a P2P way - and I think these attempts are &lt;b&gt;extremely&lt;/b&gt; foolish and dangerous, because it definitely &lt;b&gt;will&lt;/b&gt; lead to a full-scale cyberwar. &lt;br /&gt;&lt;br /&gt;I am also worried by the fact that, as I discovered from some articles, Blue Security got several million dollars from its investors - which menas that, besides some hard-core anti-spam extremists, there are some people with money who support the idea of fighting criminals with their own methods. Basically, this is equivalent to investing money in weapons for guerrillas and rebels. We all know too well where this policy leads to.&lt;br /&gt;&lt;br /&gt;And I am disturbed - and enraged - by the fact that one outlaw hacker was able to declare a war on a legitimate company, which resides in a civilized country, and had won the war without anybody being able to protect the victim. This is &lt;b&gt;really&lt;/b&gt; scary, because it means that a person with some knowledge of cyber underground, and some money is able to bring down any legitimate company. Some mesures definitely should be taken to protect people and companies from such fate - but, I am afraid, those measures most probably will turn out to be more harmful to Internet that spammers and hackers together. &lt;br /&gt;&lt;br /&gt;Technorati tags: &lt;a href="http://technorati.com/tag/spam" rel="tag"&gt;spam&lt;/a&gt;, &lt;a href="http://technorati.com/tag/security" rel="tag"&gt;security&lt;/a&gt;, &lt;a href="http://technorati.com/tag/Blue+Security" rel="tag"&gt;Blue Security&lt;/a&gt;, &lt;a href="http://technorati.com/tag/Blue+Frog" rel="tag"&gt;Blue Frog&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-114833819581466230?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/114833819581466230/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=114833819581466230' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/114833819581466230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/114833819581466230'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/05/don-spamleone.html' title='Don Spamleone'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-114686184466095910</id><published>2006-05-05T16:44:00.000-04:00</published><updated>2006-05-05T16:44:04.710-04:00</updated><title type='text'>Ma.Gnolia API</title><content type='html'>Yesterday &lt;a href="http://ma.gnolia.com/"&gt;Ma.Gnolia&lt;/a&gt; announced that the first version of their API is in production. The details of the API can be found here: &lt;a href="http://ma.gnolia.com/support/api"&gt;http://ma.gnolia.com/support/api&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;I think this is a very important milestone for Ma.Gnolia. The API opens a multitude of new possibilities: plug-ins and extensions for browsers, mashups, stand-alone application that will either provide more ways to work with Ma.Gnolia database, or even use the database for some other purposes.&lt;br/&gt;&lt;br/&gt;As soon as I have time I will go and play with the API – I like new toys!&lt;br/&gt;&lt;br/&gt;Technorati tags: &lt;a href="http://technorati.com/tag/ma.gnolia" rel="tag"&gt;ma.gnolia&lt;/a&gt;, &lt;a href="http://technorati.com/tag/web+2.0" rel="tag"&gt;web 2.0&lt;/a&gt;, &lt;a href="http://technorati.com/tag/bookmarking" rel="tag"&gt;bookmarking&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-114686184466095910?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/114686184466095910/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=114686184466095910' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/114686184466095910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/114686184466095910'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/05/magnolia-api.html' title='Ma.Gnolia API'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-114668912173095117</id><published>2006-05-03T16:44:00.000-04:00</published><updated>2006-05-03T16:45:21.743-04:00</updated><title type='text'>On Error Resume Next</title><content type='html'>Maybe I am wrong – but I think that I’ve never seen any programming statement more stupid and more evil than the notorious Basic line:&lt;br /&gt;&lt;br /&gt;ON ERROR RESUME NEXT&lt;br /&gt;&lt;br /&gt;I never could understand what made someone to introduce such an abomination into the language. Was it a momentary lapse of reason, a stupid joke or just an act of pure and random malice? Anyway, it’s horrible – but even more horrible are the two facts:&lt;br /&gt;&lt;br /&gt;a) This thing is still in the language, and&lt;br /&gt;b) Some people are still using it!&lt;br /&gt;&lt;br /&gt;I’ve just spent several long hours looking at an ASP page and trying to understand why it behaves so strangely? I usually don’t use ASP – and totally forgot about this little gem. Finally when I discovered that whoever created the page put “ON ERROR RESUME NEXT” in the very beginning. I removed it – and immediately the true source of errors became obvious. It’s good that this page was just a part of an online store – and not of something more important…&lt;br /&gt;&lt;br /&gt;Technorati tags: &lt;a href="http://technorati.com/tag/programming" rel="tag"&gt;programming&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-114668912173095117?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/114668912173095117/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=114668912173095117' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/114668912173095117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/114668912173095117'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/05/on-error-resume-next.html' title='On Error Resume Next'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-114599249518369864</id><published>2006-04-25T15:14:00.000-04:00</published><updated>2006-04-25T15:14:55.240-04:00</updated><title type='text'>New digital copyright bill</title><content type='html'>News.com published &lt;a href="http://news.com.com/Congress%20readies%20new%20digital%20copyright%20bill/2100-1028_3-6064016.html?tag=nefd.top"&gt; an article &lt;/a&gt; about the new digital copyright bill, which is currently being prepared by Congress.&amp;nbsp;&amp;nbsp;According to the information from News.com the new bill is nothing else but the DMCA on steroids. Instead of scaling down the controversial DMCA, as was requested many times by computer scientists, security experts and technology folks in general, the Congress wants to give more freedom to law enforcement structures in “fighting the IP crimes”. And, of course, this bill is already widely supported by RIAA and others.&lt;br/&gt;&lt;br/&gt;I really do hope that this bill will not go through. Generally speaking, there is nothing to be afraid of: the digital future is coming anyway, whether the lawmakers want this or not. Looking at the trends and the general direction of the development of the “technology world”, one can easily see that the current copyright-based business models do not belong to that future.&lt;br/&gt;&lt;br/&gt;What this bill might change, however, is the price we would have to pay for entering this brave new world. And it depends on the lawmakers whether the road to the Tomorrow will be an easy and fast one, or bloody and hard one. I hope (though, probably, without any reason) that the intelligent and educated people in Senate will overcome the narrow-minded conservatives, and that the money would be spent on development of the new business models rather than on enforcing a law which protects old ones.&lt;p&gt;Technorati tags: &lt;a href="http://technorati.com/tag/DMCA" rel="tag"&gt;DMCA&lt;/a&gt;, &lt;a href="http://technorati.com/tag/Copyright" rel="tag"&gt;Copyright&lt;/a&gt;, &lt;a href="http://technorati.com/tag/Politics" rel="tag"&gt;Politics&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-114599249518369864?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/114599249518369864/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=114599249518369864' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/114599249518369864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/114599249518369864'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/04/new-digital-copyright-bill.html' title='New digital copyright bill'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-114539497726813237</id><published>2006-04-18T17:16:00.000-04:00</published><updated>2006-04-18T17:17:29.906-04:00</updated><title type='text'>Office 2.0</title><content type='html'>It’s funny – quite recently I &lt;a href="http://grumpytech.blogspot.com/2006/04/web-desktop-and-ale.html"&gt;wrote&lt;/a&gt; about “Web Desktop” being a new concept, and today I’ve stumbled upon a whole &lt;a href="http://itredux.com/blog/office-20/"&gt;blog&lt;/a&gt; dedicated to this very idea – but it’s called there “Office 2.0”. Well, I never was able to coin a catchy phrase or name – so, I have to admit, “Office 2.0” is much better as a buzzword than “Web Office”. Anyway,  &lt;a href="http://itredux.com/blog/office-20/"&gt;the blog&lt;/a&gt; is extremely interesting - doesn't matter whether you support the idea of moving totally to online space, oppose it or just interested in new and useful web applications.&lt;p&gt;Technorati tags: &lt;a href="http://technorati.com/tag/Office+2.0" rel="tag"&gt;Office 2.0&lt;/a&gt;, &lt;a href="http://technorati.com/tag/Web+2.0" rel="tag"&gt;Web 2.0&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-114539497726813237?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/114539497726813237/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=114539497726813237' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/114539497726813237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/114539497726813237'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/04/office-20.html' title='Office 2.0'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-114504577781058916</id><published>2006-04-14T16:16:00.000-04:00</published><updated>2006-04-14T16:16:17.866-04:00</updated><title type='text'>Web Clipboard</title><content type='html'>Here is a small, simple, but quite useful tool - web clipboard: &lt;a href="http://cl1p.net/"&gt;http://cl1p.net&lt;/a&gt; The idea of the tool is also very simple: you pick any URL that starts with &lt;a href="http://cl1p.net/"&gt;http://cl1p.net&lt;/a&gt; (for example: &lt;a href="http://cl1p.net/myclips"&gt;http://cl1p.net/myclips&lt;/a&gt;) , and it gives you a place to store some text or upload some file (up to 2 MB). Then from another computer you use the same URL to access your data. The data can be password-protected to prevent others from modifying and/or reading you record. And that’s it!&lt;br/&gt;&lt;br/&gt;While definitely not fully functional clipboard (you cannot paste OLE objects there. Hmmm, and what about ALE? That might be interesting…), this tool might be very useful – especially if you work behind a firewall. Another interesting thing is that cl1p&amp;nbsp;&amp;nbsp;provides a URL to directly download data (without getting through a web-page). This might help people write some utilities, which will use cl1p for data exchange – maybe even a full-scale web clipboard will become possible.&lt;br/&gt;&lt;br/&gt;Nice and useful tool.&lt;br&gt;Technorati tags: &lt;a href="http://technorati.com/tag/cl1p" rel="tag"&gt;cl1p&lt;/a&gt;, &lt;a href="http://technorati.com/tag/web+2.0" rel="tag"&gt;web 2.0&lt;/a&gt;, &lt;a href="http://technorati.com/tag/tools" rel="tag"&gt;tools&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-114504577781058916?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/114504577781058916/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=114504577781058916' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/114504577781058916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/114504577781058916'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/04/web-clipboard.html' title='Web Clipboard'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-114418547776535048</id><published>2006-04-04T17:17:00.000-04:00</published><updated>2006-04-04T17:17:57.820-04:00</updated><title type='text'>"Web Desktop" and ALE</title><content type='html'>It seems like the whole Web 2.0 world goes faster and faster towards creation of a “Web Desktop”. All basic desktop applications are already there, for example: &lt;br/&gt;&lt;ul&gt;&lt;li&gt;All internet applications (browsing is &lt;strong&gt;obviously there&lt;/strong&gt;, email, rss-readers, instant messengers (&lt;a href="http://meebo.com/"&gt;Meebo&lt;/a&gt;))&lt;/li&gt;&lt;br/&gt;&lt;li&gt;Word processing, spreadsheets – even PowerPoint presentations editing: &lt;a href=http://online.thinkfree.com/&gt;ThinkFree Office Online&lt;/a&gt;,&lt;a href=http://writely.com/&gt;Writely&lt;/a&gt; and others.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;PIMs, organizers – &lt;a href=http://www.hipcal.com/&gt;HipCal&lt;/a&gt;&lt;/li&gt;&lt;br/&gt;&lt;li&gt;Collaboration - &lt;a href="http://basecamphq.com/"&gt;BaseCamp&lt;/a&gt;,&lt;a href="http://www.zimbra.com/"&gt;Zimbra &lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br/&gt;One thing missing from this “Web Desktop” equation is application integration. On Windows I can easily embed images into spreadsheets, spreadsheets and images into documents and so on. Web 2.0 applications were missing this functionality – but now Zimbra  came with a solution for this problem, called &lt;a href=http://www.zimbra.com/blog/archives/2006/04/zimbra_ale-ajax_linking_and_embedding.html&gt;ALE (Ajax Linking and Embedding)&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;I think this is a very important, even fundamental step in the development of Web 2.0 and “Web Desktop”, and I am sure that the new generation of web applications, utilizing ALE, will appear soon, and will begin competing with the traditional office desktop applications. (And I want to play with this cool new technology too!)&lt;br/&gt;&lt;br/&gt;Great job, guys at Zimbra! Technorati tags: &lt;a href="http://technorati.com/tag/web+2.0" rel="tag"&gt;web 2.0&lt;/a&gt;, &lt;a href="http://technorati.com/tag/Ajax" rel="tag"&gt;Ajax&lt;/a&gt;,&lt;a href="http://technorati.com/tag/Zimbra" rel="tag"&gt;Zimbra&lt;/a&gt;, &lt;a href="http://technorati.com/tag/ALE" rel="tag"&gt;ALE&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-114418547776535048?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/114418547776535048/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=114418547776535048' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/114418547776535048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/114418547776535048'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/04/web-desktop-and-ale.html' title='&quot;Web Desktop&quot; and ALE'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-114374472690891347</id><published>2006-03-30T13:52:00.000-05:00</published><updated>2006-03-30T13:52:13.730-05:00</updated><title type='text'>SEOmoz's Web 2.0 awards</title><content type='html'>Two days ago &lt;a href="http://www.seomoz.org/"&gt;SEOmoz.org&lt;/a&gt; announced their &lt;a href="http://web2.0awards.org/"&gt;Web 2.0 &lt;/a&gt; awards. Speaking frankly, I have no idea how representative these awards are – or what exactly SEOmoz is? (SEO stands for Search Engine Optimization – but what that has to do with Web 2.0 I am not sure). The list of applications, however, is long and quite interesting. While I definitely do not agree with some of the awards, I enjoyed reading the list, and discovered quite many new applications there (well, new for me at least). &lt;p&gt;Technorati tag: &lt;a href="http://technorati.com/tag/web+2.0" rel="tag"&gt;web 2.0&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-114374472690891347?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/114374472690891347/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=114374472690891347' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/114374472690891347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/114374472690891347'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/03/seomozs-web-20-awards.html' title='SEOmoz&apos;s Web 2.0 awards'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-114356906303636528</id><published>2006-03-28T13:04:00.000-05:00</published><updated>2006-03-29T10:31:23.323-05:00</updated><title type='text'>GDC 2006</title><content type='html'>Just returned from &lt;a href="http://www.gdconf.com/"&gt;GDC 2006&lt;/a&gt;. That was my first GDC, and I was overwhelmed with almost every aspect of the conference. Crowds of interesting people, booths of multitude of companies, famous ones and unknown ones, having to chose from several equally interesting lectures and having only three days to enjoy this event… &lt;br/&gt;&lt;br/&gt;Here are some of my impressions from GDC. This is not my notes – just some disjointed musings.&lt;br/&gt;&lt;br/&gt;The biggest disappointment of GDC for me was Will Wright’s keynote speech. Everyone was waiting for the speech by the cult game designer on “What’s next in game design” (at least, that’s how it was declared in the conference schedule). He was assigned the largest auditorium – and the line of people wishing to attend his speech wrapped around the building. But, instead of sharing his ideas on game design, Will spent an hour talking about astrobiology and research he had done for his next game, &lt;a href="http://www.spore.com/"&gt;“Spore”&lt;/a&gt;. I was angry because of the wasted hour and the lack of respect that Will demonstrated towards his audience.&lt;br/&gt;&lt;br/&gt;“Spore” was, in some sense, one of the most talked about games in the conference. Several lectures were dedicated to different aspects of this game – which was strange for me, since the game was not released yet. &lt;br/&gt;&lt;br/&gt;One of the hot topics of the conference was prototyping. There were several lectures directly dedicated to prototyping (I’ve listened to one – “Advanced Prototyping” – it was really good); and it also was discussed in many other lectures, from all possible angles – what to prototype, how, when and why?&lt;br/&gt;&lt;br/&gt;A curious session named “Burn, baby, burn!” was led by Eric Zimmerman from &lt;a href = "http://www.gamelab.com/"&gt;GameLab&lt;/a&gt; and was nothing else but game developers ranting about different issues. Funny, but most rants were about ranting too much!&lt;br/&gt;&lt;br/&gt;The indie games presented at the &lt;a href="http://www.igf.com/"&gt; Independent Games Festival&lt;/a&gt; were really impressive. Several games that caught my eye: &lt;br/&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.igf.com/php-bin/entries2006.php?entry_id=59"&gt;"Braid"&lt;/a&gt; - a game exploiting the idea of "rewinding time", but adding some very unusual twists. &lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;a href="http://www.ominousdev.com/games.htm"&gt;"Strange Attractors"&lt;/a&gt; - a game with one- button control. The game reminds a pinball table, where the player can control the gravitational forces between objects on the field.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;a href="http://www.pistachioproductions.com/dart/"&gt;"Ocular Ink "&lt;/a&gt; -gesture- controlled game with interesting system of gestures.&lt;/li&gt;&lt;/ul&gt;&lt;br/&gt;Another hot topic at the conference was emotional game design. It seems like emotions in the games are the next “big thing. It’s too sad that, while pursuing emotional aspect, designers often forget that the game, first of all, should be fun. Some of “emotional” games, presented at GDC, were quite boring (for me, at least).&lt;br/&gt;&lt;br/&gt;Conference ended on Friday with a perfect finishing touch: &lt;a href="http://www.videogameslive.com/index.php?s=home"&gt;“Video Games Live” &lt;/a&gt;show, where a symphonic orchestra was playing music from different video games, both old and new, while some video clips from the games were projected on a huge screen on the stage. This was truly a memorable event! &lt;br/&gt;&lt;br/&gt;I am very happy that I went to GDC this year – and ready to go there next year!&lt;br/&gt;&lt;br/&gt;Technorati tags: &lt;a href="http://technorati.com/tag/GDC" rel="tag"&gt;GDC&lt;/a&gt;, &lt;a href="http://technorati.com/tag/GDC+2006" rel="tag"&gt;GDC 2006&lt;/a&gt;, &lt;a href="http://technorati.com/tag/Game+development" rel="tag"&gt;Game development&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://technorati.com/tag/Game+design" rel="tag"&gt;Game design&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-114356906303636528?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/114356906303636528/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=114356906303636528' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/114356906303636528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/114356906303636528'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/03/gdc-2006.html' title='GDC 2006'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-114236762147807300</id><published>2006-03-14T15:20:00.000-05:00</published><updated>2006-03-14T15:20:21.513-05:00</updated><title type='text'>Ma.gnolia - impressions</title><content type='html'>So, I spent significant time last week sorting my bookmarks in ma.gnolia. Here are my impressions so far.&lt;br/&gt;&lt;br/&gt;What is good:&lt;br/&gt;&lt;ul&gt;&lt;li&gt;Overall page design. Nice colors, clean, easy to read and navigate. The ads are pretty unobtrusive.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;Ability to have private bookmarks.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;Import feature.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;Nice auto-suggestions when adding tags. &lt;/li&gt;&lt;br/&gt;&lt;li&gt;If I got it right, the site uses some king of fuzzy search when selecting tagged items, and this is good – it helps when I have accidentally created similar tags (reference and references, for example)&lt;/li&gt;&lt;br/&gt;&lt;li&gt;Nice bookmarklet for FireFox – and Google toolbar add-on for IE!&lt;/li&gt;&lt;br/&gt;&lt;li&gt;Community features seem to be good – though I don’t use them as much.&lt;/li&gt;&lt;/ul&gt;&lt;br/&gt;Now, what I think can be improved:&lt;br/&gt;&lt;ul&gt;&lt;li&gt;Bookmark layout. Each bookmark occupies too much space – it would be great to have (at least, as an option) more condensed mode.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;Too many page loads. To edit details of a bookmark, I need to go to the “Edit bookmark” page, then, after saving, I’m getting “Bookmark details” page – and if I was working on some tag, I have to go to “Tags” page again, and select the necessary tag. In-place editor would help a lot.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;Tag list is not present on every page. As a result, an extra page load is needed when I want to open another tag.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;Limited search options. No support for NOT, OR operators. AND operator is supported (represented by comma), but not documented (information from &lt;a href="http://weblog.zerokspot.com/posts/605/"&gt;http://weblog.zerokspot.com/posts/605/&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;br/&gt;And some more notes:&lt;br/&gt;&lt;ul&gt;&lt;li&gt;Currently Ma.gnolia has no API – but, according to the site, it is in works.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;The “Page thumbnail” feature is cool, and there is an example of creative usage of this feature (&lt;a href="http://mongoo.se/articles/2006/03/07/ma-gnolia-bookmarks-picture-linkroll"&gt;http://mongoo.se/articles/2006/03/07/ma-gnolia-bookmarks-picture-linkroll&lt;/a&gt;), but, unfortunately, quite many screenshots are incorrect or outdated. In the FAQ, Ma.gnolia team explains: “Ma.gnolia uses a third-party service to create the small images of saved copies of web pages. Sometimes the service gives us an out of date image of a web page, or an image from another part of the web site.”&lt;/li&gt;&lt;/ul&gt;&lt;br/&gt;Overall, I am happy with ma.gnolia – but, probably, will check out some other services, too.&lt;p/&gt;Technorati tags: &lt;a href="http://technorati.com/tag/ma.gnolia" rel="tag"&gt;ma.gnolia&lt;/a&gt;, &lt;a href="http://technorati.com/tag/Social+Bookmarking" rel="tag"&gt;Social Bookmarking&lt;/a&gt;, &lt;a href="http://technorati.com/tag/Bookmarking" rel="tag"&gt;Bookmarking&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-114236762147807300?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/114236762147807300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=114236762147807300' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/114236762147807300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/114236762147807300'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/03/magnolia-impressions.html' title='Ma.gnolia - impressions'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-114200895538730828</id><published>2006-03-10T11:42:00.000-05:00</published><updated>2006-03-10T11:42:35.396-05:00</updated><title type='text'>Ma.gnolia team is great!</title><content type='html'>Wow, I’m really impressed by &lt;a href="http://ma.gnolia.com/"&gt;Ma.gnolia&lt;/a&gt;! When I posted &lt;a href="http://grumpytech.blogspot.com/2006/03/in-search-of-bookmarking-tool.html"&gt;my previous post&lt;/a&gt;, I didn’t expect that people from Ma.gnolia will react to it (hey, I didn’t even think they will read it!). So, imagine how I was surprised when a couple of hours after posting I found a reply to my post in my mailbox. The reply was from Ma.gnolia, and they offered me help with my import problem. &lt;br/&gt;&lt;br/&gt;So, I wrote a message to them, and for two days the guys worked with me trying to troubleshoot my import process. At last they found the reason for the import failure (it turned out that Linkman produced incorrect bookmark file), and suggested another way to import my bookmarks.&lt;br/&gt;&lt;br/&gt;And so, now I am a happy Ma.gnolia user! I am busy sorting and organizing my bookmarks now – not an easy thing to do, though the import process converted my folders into tags, so I’m not starting it from scratch.&lt;br/&gt;&lt;br/&gt;I’ve never seen such a level of attention to users! Thank you, Ma.gnolia team!&lt;p/&gt;Technorati tags: &lt;a href="http://technorati.com/tag/Ma.gnolia" rel="tag"&gt;Ma.gnolia&lt;/a&gt;, &lt;a href="http://technorati.com/tag/Social+Bookmarking" rel="tag"&gt;Social Bookmarking&lt;/a&gt;, &lt;a href="http://technorati.com/tag/bookmarking" rel="tag"&gt;bookmarking&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-114200895538730828?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/114200895538730828/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=114200895538730828' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/114200895538730828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/114200895538730828'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/03/magnolia-team-is-great.html' title='Ma.gnolia team is great!'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-114177076182101058</id><published>2006-03-07T17:32:00.000-05:00</published><updated>2006-03-07T17:32:41.853-05:00</updated><title type='text'>In search of bookmarking tool</title><content type='html'>Well, well, well… I am definitely not an early adopter – on the contrary, usually I wait for quite some time before trying some new technology. It happened already with RSS and with blogging – now I am ready to try social bookmarking!&lt;br/&gt;&lt;br/&gt;To be more precise, I am not that excited with the social bookmarking – I just need some online application to store and organize my bookmarks. And the only reason I want it online is because I want my bookmarks collection to be accessible from both my home and my office computer.&lt;br/&gt;&lt;br/&gt;So, what exactly am I looking for? I want the tool to:&lt;br/&gt;&lt;ul&gt;&lt;li&gt;Let me easily add bookmarks from any browser&lt;/li&gt;&lt;br/&gt;&lt;li&gt;Let me organize, annotate and search my bookmarks&lt;/li&gt;&lt;br/&gt;&lt;li&gt;Provide some reasonable level of privacy&lt;/li&gt;&lt;br/&gt;&lt;li&gt;Provide a way to export bookmarks – if I will decide later to change the tool&lt;/li&gt;&lt;br/&gt;&lt;li&gt;Allow importing my existing bookmarks – I have more than 500 of them!&lt;/li&gt;&lt;/ul&gt;&lt;br/&gt;For beginning, I decided to try two services: &lt;a href="http://del.icio.us/"&gt;del.icio.us&lt;/a&gt; and &lt;a href="http://ma.gnolia.com/"&gt;ma.gnolia&lt;/a&gt;. I’ve created accounts in both. In del.icio.us, I found out that their import tool is currently disabled – so I didn’t go any further. Ma.gnolia allowed me to upload my bookmarks file, but then it told me that my bookmarks would be added soon. Six hours later my bookmarks are still not added – which I don’t understand at all. I understand that there might be some kind of queue, and that parsing a file takes some time – but not six hours!&lt;br/&gt;&lt;br/&gt;So, I will wait a little longer – but, probably, I will try something else. After all, social bookmarking is so hot now – there should be some working tool out there!&lt;br/&gt;&lt;br/&gt;Technorati tags: &lt;a href="http://technorati.com/tag/bookmarking" rel="tag"&gt;bookmarking&lt;/a&gt;, &lt;a href="http://technorati.com/tag/Del.icio.us" rel="tag"&gt;Del.icio.us&lt;/a&gt;, &lt;a href="http://technorati.com/tag/ma.gnolia" rel="tag"&gt;ma.gnolia&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-114177076182101058?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/114177076182101058/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=114177076182101058' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/114177076182101058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/114177076182101058'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/03/in-search-of-bookmarking-tool.html' title='In search of bookmarking tool'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-114124906777636756</id><published>2006-03-01T16:37:00.000-05:00</published><updated>2006-03-01T16:37:47.806-05:00</updated><title type='text'>Why people like creating tools?</title><content type='html'>Call me a slow thinker, but it didn’t occur to me until today how beneficial for a career might be working on company’s internal management/organizing tools. (Not that I am doing such a work – I was just pondering about the fact that the management added yet another request/ticketing application to the existing zoo).&lt;br/&gt;&lt;br/&gt;The work on such applications (ticketing, document management, request tracking etc) has some great advantages over any other development work:&lt;br/&gt;&lt;br/&gt;&lt;ul&gt;&lt;li&gt;The work is highly visible, especially to the management.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;The work is not mission-critical: a bug in the ticketing application will cause just some trouble. The same bug in a user-visible application might become a disaster.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;Management usually just loves this kind of tools (probably because the tools provide them with feeling of control and organizing power).&amp;nbsp;&amp;nbsp;Managers pretty soon become dependent on the tools, and the person who creates and maintains them swiftly becomes a VIP.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;There is always a space for improvement – so you can work on the same application for as long as you like.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;Deadlines and schedules are usually quite flexible.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;You can use any cool technologies you like – as long as the application works, no one really cares how it was implemented.&lt;/li&gt;&lt;/ul&gt;&lt;br/&gt;This revelation helped me to get answer to a question which was intriguing me for some time: How come that the number of such systems in my company keeps growing despite all attempts to reduce it? And it also sheds some light on another question, which might seem totally unrelated, but, as I see now, touches the same principle: why people around the globe spend so much effort on creating and improving GTD and other so-called “productivity tools and systems”? The same reason: working on the systems and tools which purpose is to help us doing some work is infinitely more pleasant than actually doing the work… &lt;p/&gt;Technorati tags: &lt;a href="http://technorati.com/tag/Rants" rel="tag"&gt;Rants&lt;/a&gt;, &lt;a href="http://technorati.com/tag/Productivity" rel="tag"&gt;Productivity&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-114124906777636756?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/114124906777636756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=114124906777636756' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/114124906777636756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/114124906777636756'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/03/why-people-like-creating-tools.html' title='Why people like creating tools?'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-113950756583991219</id><published>2006-02-09T12:52:00.000-05:00</published><updated>2006-02-09T12:52:45.870-05:00</updated><title type='text'>JavaBlackBelt</title><content type='html'>Following &lt;a href="http://www.theserverside.com/news/thread.tss?thread_id=38711"&gt; a post on TheServerSide.com&lt;/a&gt;, I found a very interesting site: &lt;a href="http://javablackbelt.com/"&gt;JavaBlackBelt.com&lt;/a&gt;. The site is a community for Java &amp; open source skills assessment.&amp;nbsp;I joined it, took couple of tests, and it’s cool!&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;The site uses a very interesting (and, I would say, unusual) system to promote participation and, at the same time, prevent cheating. All tests are free – in terms of “real world” money. But most of the tests cost some “contribution points”. Members of the site get contribution points for submitting new questions and commenting on the existing ones.&amp;nbsp;The price for the tests is realistic, but it will definitely require quite some involvement in order to achieve high degrees of certification. &lt;br/&gt;&lt;br/&gt;Of course, it will require some time for JavaBlackBelt to become as recognized as &lt;a href="http://www.brainbench.com/"&gt;BrainBench&lt;/a&gt;. Most of the tests are still in beta stage, and even stable tests have some errors. But, since the site is community-driven, it will get power very soon. Definitely a “must-visit” for any Java programmer.&lt;p/&gt;Technorati tags: &lt;a href="http://technorati.com/tag/Java" rel="tag"&gt;Java&lt;/a&gt;, &lt;a href="http://technorati.com/tag/Programming" rel="tag"&gt;Programming&lt;/a&gt;, &lt;a href="http://technorati.com/tag/Certification" rel="tag"&gt;Certification&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-113950756583991219?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/113950756583991219/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=113950756583991219' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/113950756583991219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/113950756583991219'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/02/javablackbelt.html' title='JavaBlackBelt'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-113874810755023273</id><published>2006-01-31T17:53:00.000-05:00</published><updated>2006-01-31T17:55:07.566-05:00</updated><title type='text'>Pocket PC - impressions after the first week</title><content type='html'>So, I spent the first week (or a little more) with my new Pocket PC, and here are my impressions.&lt;p&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Good:&lt;/b&gt;&lt;/u&gt;&lt;p&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;The screen:  it is nothing short of gorgeous. Reading from this screen is a pure pleasure; games look just great. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;File system: it’s good to have at last a normal file system, to be able to easily put any files on my handheld (Palm didn’t want to work with unknown file types – at least, without some special utilities. I’ve heard that it’s no longer an issue with more recent Palms – but I had to live with this).&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Bad:&lt;/b&gt;&lt;/u&gt;&lt;p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;No vibration. I don't understand this - it always seemed to me that vibration alert is one of the most useful features for a PDA. I just loved being able to switch my Palm T2 to vibration mode, and safely get my alerts while being at some long meeting. Why didn't Dell include this feature? Anyway, I miss it. And with the standard reminder sounds being soft and short, this becomes a real problem for me.&lt;/li&gt;&lt;br /&gt;&lt;li&gt; Synchronization. I think my situation should be pretty common: I use Outlook as an organizer at home and in the office. I want to be able to synchronize my PDA to both of them - but I want to be able to prevent some of my items from being copied to the office Outlook. With Palm that was easy. With my PPC, I didn't find a good solution yet.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Stability. I don't remember having so many glitches with my Palm. Nothing serious - I mean, nothing which can't be fixed with a soft reset - but annoying. Though I am currently in search for PPC equivalents of my favorite Palm programs, so I'm installing and removing a lot of software, and not all of the programs work well with WM5 - that might be the reason. But still, overall feeling is shaky.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;ActiveSync. I don't know what made Microsoft switch to using TCP for syncing PDA with desktop. Probably, they had their own reasons. But as a result ActiveSync causes problems with firewalls - I was unable to make Sygate firewall work with ActiveSync.&lt;/li&gt;&lt;br /&gt;&lt;li&gt; Responsiveness. I know, this is a common problem of people converting from Palm to PPC - but I have to say it: Palm was much more responsive! Sometimes the slight pause between click on a control and the reaction just drives me crazy.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Don't get me wrong - I am not going to discard my new PDA just because of those issues. I probably will find solution for some of them, and will get used to others. But, still, the impression after one week is less than excellent.&lt;br /&gt;&lt;br /&gt;Technorati tag: &lt;a href="http://technorati.com/tag/Pocket+PC" rel="tag"&gt;Pocket PC&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-113874810755023273?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/113874810755023273/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=113874810755023273' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/113874810755023273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/113874810755023273'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/01/pocket-pc-impressions-after-first-week.html' title='Pocket PC - impressions after the first week'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-113769522678381776</id><published>2006-01-19T13:27:00.000-05:00</published><updated>2006-01-19T13:27:54.173-05:00</updated><title type='text'>Good bye, Palm! Hello, Pocket PC!</title><content type='html'>Ok, so, at last, it happened! After using Palms for 8 years (or even more – I’ve bought the very first model, the one without the backlight) I betrayed them and switched to the Pocket PC. The reasons for this heinous act were multiple, but they all boiled down to one: for last couple of years I was looking for a new Palm, and was completely disappointed with the new Palm devices. &lt;br/&gt;&lt;br/&gt;I remember several years ago I was making fun of my PPC-enthusiastic friends. I laughed when they were carefully putting their bulky devices into special cases, while I easily and elegantly slipped my sleek Palm into my shirt pocket. I laughed sarcastically at the stories about registry problems. I criticized ugly and cumbersome Windows CE interface, showing my friends the simple beauty of Palm.&lt;br/&gt;&lt;br/&gt;But time flies – and soon I’ve noticed that PPCs are becoming thinner and smaller; that the screen of the newest devices supports VGA resolution; that the UI becomes more and more elegant. Then my friend bought a Pocket PC which had both WiFi and Bluetooth (my palm had only Bluetooth), slots for both SD and CompactFlash cards (mine had only SD slot – and at the same time the dimensions of his new machine were just a little bit larger than the size of my beloved Palm. &lt;br/&gt;&lt;br/&gt;And Palm Inc…. Well, I don’t know what they were thinking about. Probably, they were too preoccupied with Treo – which is really a nice device, but I don’t like combining phones and PDAs together. Anyway, for quite some time their newest and most powerful devices didn’t support WiFi (all but a few models), didn’t provide dual flash card slots… And slowly, I stopped believing in Palm.&lt;br/&gt;&lt;br/&gt;Well, now I’ve got Dell Axim x51v. I know, that quite recently Palm has released Palm TX – the model which has both WiFi and Bluetooth. It still has only 320 x 480 display, supports only SD cards – but I hope that people at Palm recognized their faults and soon will release new models which will be on par with Pocket PCs. Then maybe I will come back… And meanwhile I will have to learn how to use my new gadget.&lt;br /&gt;&lt;P&gt;&lt;br /&gt;Technorati tags: &lt;a href="http://technorati.com/tag/Pocket+PC" rel="tag"&gt;Pocket PC&lt;/a&gt;, &lt;a href="http://technorati.com/tag/Axim" rel="tag"&gt;Axim&lt;/a&gt;, &lt;a href="http://technorati.com/tag/PDAs" rel="tag"&gt;PDAs&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-113769522678381776?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/113769522678381776/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=113769522678381776' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/113769522678381776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/113769522678381776'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/01/good-bye-palm-hello-pocket-pc.html' title='Good bye, Palm! Hello, Pocket PC!'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-113708396753727683</id><published>2006-01-12T11:39:00.000-05:00</published><updated>2006-01-12T11:39:27.580-05:00</updated><title type='text'>Design flaws + unneeded creativity = trouble</title><content type='html'>Two examples, found in the same day:&lt;br/&gt;&lt;br/&gt;In the database, a record for some object has a field for its name. At some moment, some developer wanted to add comments for these objects (“generated automatically…” or something like this). Unfortunately, there were no field for notes and comments. A burst of creative thinking&amp;nbsp;&amp;nbsp;– and the comments are now appended to the end of the name. Which means that, since the users usually do not want to see the comments, the results returned by a SQL query should now be post-processed. Which is not always easy – sometimes there is no good place to insert this post-processing.&lt;br/&gt;&lt;br/&gt;Another one: the same database, but different table. The table holds data for some objects, which are divided into several categories (actually, a hierarchy of categories). The categorization feature was added later than the table was designed, so the table doesn’t have any field to mark the place of each object in the hierarchy of categories. The developer didn’t think about the necessity of such a field. The users needed it, but, instead of asking the developer to add it, they decided to be creative and invented their own naming convention, so that the name of each object now has some keywords embedded. Everyone was happy – until I had to design a report, where the data from this table would be sorted according to the categories…&lt;br/&gt;&lt;br/&gt;Creativity is a great thing. But sometimes I just want people to stop being creative, and simply ask for help instead.&lt;br/&gt;Technorati tag: &lt;a href="http://technorati.com/tag/rant" rel="tag"&gt;rant&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-113708396753727683?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/113708396753727683/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=113708396753727683' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/113708396753727683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/113708396753727683'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/01/design-flaws-unneeded-creativity.html' title='Design flaws + unneeded creativity = trouble'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-113647898650213651</id><published>2006-01-05T11:36:00.000-05:00</published><updated>2006-01-05T11:36:26.533-05:00</updated><title type='text'>Testing Lexxe</title><content type='html'>Emily Chang in her &lt;a href="http://www.emilychang.com/go/ehub/"&gt;eHub&lt;/a&gt; blog posted a link to the new search engine called &lt;a href="http://www.lexxe.com/"&gt;Lexxe&lt;/a&gt;. The unusual thing about this engine is that it claims to be able to answer questions written in a natural language. To be more precise, it searches the web and extracts the answers from the pages it found.&lt;br/&gt;&lt;br/&gt;I gave it a shot, and it kinda works – sometimes. More often, however, it produces answers that are far from being precise.&lt;br/&gt;&lt;br/&gt;Q: Who was Lenin?&lt;br/&gt;A: leader of the bolsheviks a violent&lt;br/&gt;&lt;i&gt;(I don’t know why it picked such a strange fragment, but this is true)&lt;/i&gt;.&lt;br/&gt;&lt;br/&gt;Q: What was the real name of Mark Twain?&lt;br/&gt;A: Samuel Clemens&lt;br/&gt;&lt;i&gt;(Bingo!)&lt;/i&gt;&lt;br/&gt;&lt;br/&gt;But the same question about O’Henry caused a problem – the answer was marked as “not reliable”, and contained some words related to the “Seinfeld” show.&lt;br/&gt;&lt;br/&gt;Q: Who discovered America?&lt;br/&gt;A: China&lt;br/&gt;&lt;i&gt;(What?!)&lt;/i&gt;&lt;br/&gt;&lt;br/&gt;Q: When was America discovered?&lt;br/&gt;A:1492&lt;br/&gt;&lt;i&gt;(Ok…)&lt;/i&gt;&lt;br/&gt;&lt;br/&gt;Q: What is the size of proton?&lt;br/&gt;A: 1 Million&lt;br/&gt;&lt;i&gt;(1 Million of what? Hmmm… Let me try again…)&lt;/i&gt;&lt;br/&gt;&lt;br/&gt;Q: What is the size of a proton?&lt;br/&gt;A: 10-18 Meters One&lt;br/&gt;&lt;i&gt;(Too scientific for me…)&lt;/i&gt;&lt;br/&gt; &lt;br/&gt;Q:What is the weight of the Earth?&lt;br/&gt;A: 150 Million Km&lt;br/&gt;&lt;i&gt;(…no comments…)&lt;/i&gt;&lt;br/&gt;&lt;br/&gt;Q: Who invented radio?&lt;br/&gt;A: Horzepa Stan Surfin’…&lt;br/&gt;&lt;i&gt;(Huh?!)&lt;/i&gt;&lt;br/&gt;&lt;br/&gt;Q:What do butterflies eat?&lt;br/&gt;A: Nectar&lt;br/&gt;&lt;i&gt;(Correct.)&lt;/i&gt;&lt;br/&gt;&lt;br/&gt;Q:What do elephants eat?&lt;br/&gt;A: Pounds of Food&lt;br/&gt;&lt;i&gt;(Great answer!)&lt;/i&gt;&lt;br/&gt;&lt;br/&gt;My last question was: What is Lexxe? And the system proudly answered: 3rd generation search engine. &lt;br/&gt;&lt;br/&gt;The answers are not the only output of the system: it also produces clusterized search results, links to the definitions of the key words in the question etc. And these features look good. The engine is still in the alpha stage, so we can hope for improvement.&lt;br/&gt;&lt;br/&gt;I like the idea of the search based on natural language requests. I definitely will keep an eye on Lexxe, and will add it to my bookmarks. But for the time being to get answers I’d rather use Google+Wikipedia.&lt;br/&gt;Technorati tags: &lt;a href="http://technorati.com/tag/web2.0" rel="tag"&gt;web2.0&lt;/a&gt;, &lt;a href="http://technorati.com/tag/search" rel="tag"&gt;search&lt;/a&gt;, &lt;a href="http://technorati.com/tag/Lexxe" rel="tag"&gt;Lexxe&lt;/a&gt;, &lt;a href="http://technorati.com/tag/Natural+language" rel="tag"&gt;Natural language&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-113647898650213651?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/113647898650213651/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=113647898650213651' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/113647898650213651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/113647898650213651'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/01/testing-lexxe.html' title='Testing Lexxe'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-113632199468550492</id><published>2006-01-03T15:59:00.000-05:00</published><updated>2006-01-03T16:05:16.213-05:00</updated><title type='text'>How to find a human</title><content type='html'>One of my friends recently sent me a link to &lt;a href="http://www.paulenglish.com/ivr/"&gt; “The IVR Cheat Sheet"&lt;/a&gt;, which is a list of companies together with instructions on how to bypass their phone-answering computers and get directly to human. The list definitely goes straight to my bookmarks collection – I prefer talking to human being whenever it is possible (though, I have to admit it, couple of times I’ve encountered really helpful answering systems). At the same time, the mere existence of this list points out a couple of interesting things:&lt;br/&gt;&lt;br/&gt;1. A very simple idea: not everything that can be automated should be automated. Deciding what can be done by a computer and what should be left to human is an important part of the design process. &lt;br/&gt;2. The question itself: “How to get past a computer to a human being” is a disturbing one. Sounds like something from a sci-fi book – maybe we live in one already?&lt;br/&gt;&lt;br/&gt;Technorati tag: &lt;a href="http://technorati.com/tag/Lifehacks" rel="tag"&gt;Lifehacks&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-113632199468550492?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/113632199468550492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=113632199468550492' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/113632199468550492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/113632199468550492'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2006/01/how-to-find-human.html' title='How to find a human'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-113607332874723235</id><published>2005-12-31T18:55:00.000-05:00</published><updated>2005-12-31T18:55:29.180-05:00</updated><title type='text'>Happy New Year!</title><content type='html'>As always – in the very last minute.&lt;br/&gt;&lt;br/&gt;I wish all my readers a Happy New Year! May all your dreams come true! In the coming year I will try to blog more often and more interesting – at least that’s one of my resolutions. So, Happy New Year – and hope to see you all in 2006!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-113607332874723235?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/113607332874723235/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=113607332874723235' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/113607332874723235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/113607332874723235'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2005/12/happy-new-year.html' title='Happy New Year!'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-113528414054499057</id><published>2005-12-22T15:42:00.000-05:00</published><updated>2005-12-22T15:43:55.970-05:00</updated><title type='text'>Digg - first impressions</title><content type='html'>Today I’ve tried using &lt;a href="http://digg.com/"&gt;Digg&lt;/a&gt; – and I am not very impressed. I mean, the site as an application is great, and the content is present in abundance, but I still cannot understand the right way of using it. &lt;br/&gt;&lt;br/&gt;The main problem that I have is filtering out the right news. There are just too many news out there. As far as I understand the system, I can read either front page, or top news, or news by category. The categories are very coarse-grained for me: for example, I do not want to read all programming news, since I do not program in C# or Python. I would greatly appreciate the capability to sort the news by some other criteria (tags, for example – this seems like an ideal place to use them!). I can’t even sort the news inside one category by their ranking. &lt;br/&gt;&lt;br/&gt;The top news section is a mixture of all categories – and I am not interested in half of them. The same goes for the front page.&lt;br/&gt;&lt;br/&gt;So, I will probably make another attempt – but for now, I think that Digg severely lacks the filtering capabilities, and for me this is crucial.&lt;br/&gt;&lt;br/&gt;Technorati tags: &lt;a href="http://technorati.com/tag/Digg" rel="tag"&gt;Digg&lt;/a&gt;,&lt;a href="http://technorati.com/tag/Web+2.0" rel="tag"&gt;Web 2.0&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-113528414054499057?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/113528414054499057/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=113528414054499057' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/113528414054499057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/113528414054499057'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2005/12/digg-first-impressions.html' title='Digg - first impressions'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-113502549444347556</id><published>2005-12-19T15:51:00.000-05:00</published><updated>2005-12-19T15:52:54.433-05:00</updated><title type='text'>Best of Web 2.0: two lists</title><content type='html'>Two lists of the best Web 2.0 applications of 2005. The lists give pretty good idea of what Web 2.0 is and what are the most prominent directions of its development. &lt;br/&gt;&lt;br/&gt;The first list was compiled by Mark Millerton and can be found here: &lt;a href="http://www.articledashboard.com/Article/Top-10-Innovative-Web-2-0-Applications-of-2005/10891"&gt;http://www.articledashboard.com/Article/Top-10-Innovative-Web-2-0-Applications-of-2005/10891&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;The second list comes courtesy of Dion Hinchcliffe and is located here: &lt;a href="http://web2.wsj2.com/the_best_web_20_software_of_2005.htm"&gt;http://web2.wsj2.com/the_best_web_20_software_of_2005.htm&lt;/a&gt; This list breaks Web 2.0 applications in categories, and, besides naming the best, provides also several runners-up for each category. The discussion that follows this article is also quite interesting as one can find there even more interesting applications and sites.&lt;br/&gt;&lt;br/&gt;A curious thing: it seems to me that only &lt;a href="http://digg.com/"&gt;Digg&lt;/a&gt; has made it into both lists. I’ve checked Digg out as soon as it was mentioned by &lt;a href="http://www.emilychang.com/go/ehub/"&gt;eHub&lt;/a&gt; – but I definitely cannot consume more news now, so I still didn’t try and use it. But now I think about giving it a shot – since both lists recommend it.&lt;br&gt;&lt;br&gt;Technorati tag: &lt;a href="http://technorati.com/tag/Web+2.0" rel="tag"&gt;Web 2.0&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-113502549444347556?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/113502549444347556/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=113502549444347556' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/113502549444347556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/113502549444347556'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2005/12/best-of-web-20-two-lists.html' title='Best of Web 2.0: two lists'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-113468322003061585</id><published>2005-12-15T16:47:00.000-05:00</published><updated>2005-12-15T22:21:13.933-05:00</updated><title type='text'>Wikipedia trouble</title><content type='html'>On Monday O’Reilly Radar reported about a &lt;a href="http://www.wikipediaclassaction.org/"&gt;website which orchestrates a preparation to a class action lawsuit against Wikipedia (http://www.wikipediaclassaction.org/)&lt;/a&gt;. The basic idea is the accusation of Wikipedia that the information posted there is inaccurate and leads to defamation of some people. &lt;br/&gt;&lt;br/&gt;The story behind this case is a long one. The summary of events (from the Wikipedia’s point of view) can be found &lt;a href="http://en.wikipedia.org/wiki/QuakeAID"&gt;here&lt;/a&gt;. It seems – at least after reading the Wikipedia’s version – that the whole “class action suit” is just an attempt of retaliation, made by some people, whose dubious business practices were accidentally uncovered by Wikipedia members. The case itself – if it will ever reach the court – might become a precedent, particularly important as we enter the world of Web 2.0 and user-generated contents.&lt;br/&gt;&lt;br/&gt;But there is another aspect of this case, which interests me, probably, even more – and it is a question of Wikipedia’s accuracy in general. The &lt;a href="http://radar.oreilly.com/archives/2005/12/nature_magazine_checks_out_wik.html"&gt;next post on O’Reilly Radar&lt;/a&gt; is also dedicated to this question, since it talks about &lt;a href="http://www.nature.com/nature/journal/v438/n7070/full/438900a.html"&gt;an experiment carried out by the “Nature” journal&lt;/a&gt;. They run 42 science articles in Britannica and in Wikipedia by a team of experts. It turned out that Britannica has on average about 3 inaccuracies per article, and Wikipedia – about 4.&lt;br/&gt;&lt;br/&gt;Though it may seem as an impressive achievement for a team of voluntary unpaid editors, I am still not convinced in the quality of Wikipedia. The problem which concerns me lies in the area of “common misconceptions”.&amp;nbsp;&amp;nbsp;Since the editing process is open to everybody, I am afraid that the real facts that contradict with some popular belief will be edited out in favor of incorrect, but widespread opinions.&lt;br/&gt;&lt;br/&gt;Which, in turn, brings in a discussion of the changes to the process of acquiring knowledge that are brought by the Internet. Not so long ago, the answer to the question “Where do I get knowledge about X?” was “Go read a book” or “Go ask an expert”. No the answer is “Ask Google”, or “Check the Wikipedia”. The knowledge of the experts is slowly being replaced by the knowledge of the crowd. The consequences of this process for our life and our society may be quite deep, and, I am afraid, quite negative.&lt;br /&gt;&lt;br /&gt;Technorati tag: &lt;a href="http://technorati.com/tag/Wikipedia" rel="tag"&gt;Wikipedia&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-113468322003061585?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/113468322003061585/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=113468322003061585' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/113468322003061585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/113468322003061585'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2005/12/wikipedia-trouble.html' title='Wikipedia trouble'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-113442743339826618</id><published>2005-12-12T17:43:00.000-05:00</published><updated>2005-12-12T17:54:09.456-05:00</updated><title type='text'>Humane Interfaces</title><content type='html'>Martin Fowler has recently published on his “bliki” (a hybrid between a blog and a wiki) a very interesting &lt;a href="http://martinfowler.com/bliki/HumaneInterface.html"&gt;article &lt;/a&gt; regarding two different approaches to API design: “Humane Interface” and “Minimal Interface”.&amp;nbsp;&amp;nbsp;The article spurred quite a discussion – the links to different follow-ups are at the end of the original post. A summary of the debate may be found &lt;a href="http://farm.tucows.com/blog/_archives/2005/12/9/1443435.html"&gt; here&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Personally, I incline towards Humane Interfaces. No doubt it’s harder to come up with just the right set of methods when you design such API, and the maintenance is more difficult, but for the user it is a real blessing. It goes very well with my principle: everything should be possible to do, and common tasks should be simple to do. Basically, this is the same idea I was talking about when &lt;a href="http://grumpytech.blogspot.com/2005/11/lesson-of-java-date-and-time-classes.html"&gt;writing on Java date and time classes&lt;/a&gt;. &lt;br/&gt;&lt;br/&gt;According to Fowler, the term “Humane Interface” is very popular among the rubyists – one more reason to learn Ruby! I have more than enough of the reasons to do it now – the only remaining question is where to find the time for it…&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-113442743339826618?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/113442743339826618/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=113442743339826618' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/113442743339826618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/113442743339826618'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2005/12/humane-interfaces.html' title='Humane Interfaces'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-113398436668842277</id><published>2005-12-07T14:39:00.000-05:00</published><updated>2005-12-07T15:07:24.283-05:00</updated><title type='text'>Jacob Nielsen: AJAX sucks. Is he right?</title><content type='html'>Jacob Nielsen has written an article called &lt;a href="http://www.usabilityviews.com/ajaxsucks.html"&gt;“Why Ajax Sucks”&lt;/a&gt;. He is, definitely, one of the grumpiest tech guys in the world – but, as usual, I have to agree with most of his statements. But at the same time, he completely misses the point. He is so concerned with the usability issues that he just can’t see the forest for the trees.&lt;br/&gt;&lt;br/&gt;The problem is not Ajax – or frames, or Flash… The problem is the Web itself. It has evolved from the hypertext model (the original design, which had the page as the main unit – see the beginning of Nielsen’s article) into the application platform model. The paradigm had changed – but the tools remained mostly the same, and that’s the source of most of the usability problems, which Nielsen attributes to Ajax.&lt;br/&gt;&lt;br/&gt;The tools, which we are using to work with the web are obsolete and outdated, because they still tend to work with the pages. But most of the page attributes have little to no sense in the context of an application:&lt;br/&gt;&lt;br/&gt;&lt;ul&gt;&lt;li&gt;URLs don’t work for applications, because the application either simply cannot restore its state to the one “specified” by URL, or it can – but the URL becomes such a monstrosity, that we now have specialized on-line services which can replace unwholesome long URLs with a short alias. The same goes for bookmarks.&lt;/li&gt;&lt;br/&gt;&lt;li&gt;“Back” button, that bane of web application designers, also has no place in the application world. (And “Forward”, and “Reload” too).&lt;/li&gt;&lt;br/&gt;&lt;li&gt;Search engines cannot work with applications correctly.&lt;/li&gt;&lt;/ul&gt;&lt;br/&gt;So, the right – and the only – way to go is not to try and force the new paradigm into the Procrustes’ bed of old tools and metaphors, but to adapt the tools for the new world.&lt;br/&gt;&lt;br/&gt;Here is what, in my opinion, should be done:&lt;br/&gt;1. There should be a way for the client to tell old-fashioned web site from the application. Of course this will be a responsibility of the site designer to mark it correctly – but the server should somehow tell the browser (maybe with a new header?): “You are entering an application – switch to the app mode”.&lt;br/&gt;2. URLs as we know them should be replaced by a more generic object, which can hold more data in a better format. This object – let’s call it a “neolink”-&amp;nbsp;&amp;nbsp;should be used to tell the browser where to go, and provide enough data for the application so it can restore the required state (if possible). Under the hood a neolink may be just an XML file. The bookmark managers will hold neolinks instead of URLs; neolink may be sent in the mail as well. The URLs will be used only to address old web segments and to point browsers to the applications’ entry points.&lt;br/&gt;3. Browser buttons should be customizable, and should interact with the application. The easiest way – the button should just call a JavaScript handler.&lt;br/&gt;4. A special protocol should be designed defining the interaction between an application and a search engine. Maybe the application can provide special pages for search engines, which will hold the new information and links, or provide a “search engine” login.&lt;br/&gt;&lt;br/&gt;If – or, rather, &lt;em&gt;when – &lt;/em&gt;these changes will happen, the usability problems described by Jacob Nielsen will simply disappear. Of course, some new problems will arise – but we will know about them only from Jacob Nielsen’s future articles.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-113398436668842277?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/113398436668842277/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=113398436668842277' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/113398436668842277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/113398436668842277'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2005/12/jacob-nielsen-ajax-sucks-is-he-right.html' title='Jacob Nielsen: AJAX sucks. Is he right?'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-113389909119250214</id><published>2005-12-06T14:56:00.000-05:00</published><updated>2005-12-06T14:58:11.203-05:00</updated><title type='text'>Trick: Getting the Name of Enclosing Form (JS)</title><content type='html'>Here is a small Javascript function which returns the name of the enclosing form for an element. I found it quite useful in refactoring and supporting an old web application – some old JS code required a form name to access some input fields, so I created this JS snippet to be able to use the old code in a more generic way.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;pre&gt;&lt;br /&gt;function getEnclosingFormName(field_name){&lt;br /&gt; var obj = document.getElementById(field_name);&lt;br /&gt; var node = obj.parentNode;&lt;br /&gt;    var i=0;&lt;br /&gt;          while (node.tagName !='FORM' &amp;&amp; node !=null &amp;&amp; node.tagName!='HTML'){&lt;br /&gt;           node = node.parentNode;&lt;br /&gt;          }&lt;br /&gt;         if (node.tagName == 'HTML') {&lt;br /&gt;          return '';&lt;br /&gt;         } &lt;br /&gt;        return node.name;&lt;br /&gt; }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-113389909119250214?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/113389909119250214/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=113389909119250214' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/113389909119250214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/113389909119250214'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2005/12/trick-getting-name-of-enclosing-form.html' title='Trick: Getting the Name of Enclosing Form (JS)'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-113381023929478894</id><published>2005-12-05T14:17:00.000-05:00</published><updated>2005-12-05T14:17:19.440-05:00</updated><title type='text'>Knowledge coordination</title><content type='html'>From time to time I find myself looking for an answer to what may be called a “knowledge coordination question”. For example:&lt;br/&gt;&lt;ul&gt;&lt;li&gt;Does my company have a vector drawing tool?&lt;/li&gt;&lt;br/&gt;&lt;li&gt;Do we have a Java library which implements SFTP protocol?&lt;/li&gt;&lt;br/&gt;&lt;li&gt;Had anyone implemented already a JSP tag, which generates a date picker tied to our database?&lt;/li&gt;&lt;/ul&gt;Getting answers to these questions may be very tricky – that is, there are people in the company, who know answers (“Yes, we have a copy of Adobe Illustrator”), but finding them may be a royal pain. Quite often people just make couple of feeble attempts to find the right “expert”, and then make their own decision – buy another tool, get a new library, implement the tag themselves (this one was my sin!). The results are obvious: waste of money, waste of time and a whole zoo of libraries, tools and components in the company – a nightmare for support.&lt;br/&gt;&lt;br/&gt;It may sound strange, but the most companies I’ve worked in didn’t address this problem in any way. So, the following are just my thoughts – or, my plan, since I am going to try and implement this solution.&lt;br/&gt;&lt;br/&gt;A good solution for this problem is a centralized repository for different types of knowledge. Wiki seems to be a good platform for implementing “company-wide knowledge bank”. It is easy to create a separate page for each knowledge area, the most important being:&lt;br/&gt;&lt;ul&gt;&lt;li&gt;Existing software – to catalog the tools which are currently used by the company;&lt;/li&gt;&lt;br/&gt;&lt;li&gt;Libraries – to catalog currently used libraries;&lt;/li&gt;&lt;br/&gt;&lt;li&gt;Reusable components – to track different in-house developed components, which are intended for reuse.&lt;/li&gt;&lt;/ul&gt;Initially filling this database is an enormous endeavor; however, if everyone will just list his or her assets, the task will be much less intimidating. An incentive provided by the management can be a great help. Something like “The best knowledgebase contributor” monthly award might motivate people (especially if it will come with some prize) – but selling ideas to the management is, unfortunately, not what I’m good at…&lt;br/&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-113381023929478894?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/113381023929478894/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=113381023929478894' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/113381023929478894'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/113381023929478894'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2005/12/knowledge-coordination.html' title='Knowledge coordination'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-113321382669804310</id><published>2005-11-28T16:37:00.000-05:00</published><updated>2005-11-28T16:37:06.716-05:00</updated><title type='text'>80 percent by convention</title><content type='html'>In an &lt;a href="http://www.eweek.com/article2/0,1759,1880280,00.asp?kc=CZRSS03129TX1K0000612"&gt;interview&lt;/a&gt; published recently by eWeek, David Hansson (creator of Ruby on Rails) made a statement, which wonderfully summarizes my ideas on the way APIs, libraries and frameworks should be designed. It can also be considered an addition to my previous post – I was trying to say the same thing, but was unable to put it into such an elegant phrasing:&lt;br/&gt;&lt;br/&gt;&lt;blockquote&gt;&lt;i&gt;“As long as you do what most people want to do most of the time, you get a free ride. No configuration necessary. So get the 80 percent by convention, tailor the last 20 percent by hand.”&lt;/i&gt;&lt;/blockquote&gt;&lt;br/&gt;&lt;br/&gt;I definitely should try Ruby on Rails: it is always a great pleasure to use a tool when you and the tool’s designer share the same ideas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-113321382669804310?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/113321382669804310/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=113321382669804310' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/113321382669804310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/113321382669804310'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2005/11/80-percent-by-convention.html' title='80 percent by convention'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-113210409216789341</id><published>2005-11-15T20:21:00.000-05:00</published><updated>2005-11-15T20:21:32.180-05:00</updated><title type='text'>Lesson of Java date and time classes</title><content type='html'>It happened so that I didn’t use Java date- and time-related classes for a long time. I didn’t like them, and I was lucky enough that I didn’t need them, too. Well, sooner or later that should have happened – today I needed to use some date arithmetic. I opened the Javadoc, and spent next half-an-hour trying to understand, how these classes should be used. &lt;br/&gt;&lt;br/&gt;I succeeded, and the result was not as ugly as I expected. The question is, why these classes are so counterintuitive and overcomplicated? I had to use 3 different classes to do a relatively simple thing: Date class to store date in milliseconds; Calendar class to perform arithmetic; and SimpleDateFormatter class to print the date and to parse string input. &lt;br/&gt;&lt;br/&gt;There are many classes, they are complex – but still some of the most mundane tasks are not that easy to do. How difficult is for us to answer a question: “What date is the next Saturday?” Easy, right (if we have calendar at hand, of course)? Then try doing it using Java classes. Yes, it is possible – and not that difficult – but, still, it is much more complex process than it should be. &lt;br/&gt;&lt;br/&gt;The lesson here is simple: create façade for complex classes so that simple common tasks can be easily done – and for more challenging things (what if I need to print a Hebrew calendar in Klingon?)&amp;nbsp;&amp;nbsp;there are always more powerful tools.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-113210409216789341?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/113210409216789341/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=113210409216789341' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/113210409216789341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/113210409216789341'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2005/11/lesson-of-java-date-and-time-classes.html' title='Lesson of Java date and time classes'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-113174022327444498</id><published>2005-11-11T15:17:00.000-05:00</published><updated>2005-11-11T15:17:03.286-05:00</updated><title type='text'>Sony's DRM malware and Well-Mannered Software</title><content type='html'>Today I’ve stumbled upon a very interesting article called &lt;a href="http://www.sysinternals.com/blog/2005/10/sony-rootkits-and-digital-rights.html"&gt;“Sony, Rootkits and Digital Rights Management Gone Too Far” &lt;/a&gt;. The story is simple: a DRM software coming on a musical CD produced by Sony behaves exactly as a malware program: it silently installs on a PC, hides itself from the user, intercepts system calls, monitors running processes and provides no way to uninstall it. I do not want to discuss now how methods like this should attract users to buy legitimate CDs – though I personally will never ever buy a CD with that kind of protection.&lt;br/&gt;&lt;br/&gt;I want to discuss another thing – a concept of&amp;nbsp;&amp;nbsp;“well-mannered software”. The idea came to my mind when recently I was installing several programs on my PC. All of a sudden my firewall told me that the installer wants to connect to the Internet. There was no reason why the installer was supposed to do it – it never told me about “looking for updates” or “downloading additional components”, so I blocked the connection. Surprise, surprise – the installer didn’t complain about that, it just quietly completed the installation with no error messages. Well, actually, it quietly made an attempt to make something run on startup, which was detected by SpyBot, and also forbidden by me. The same happened with other programs I’ve installed – I just had to sit, watch the installers and keep slapping their hands when they tried to do something they were not supposed to.&lt;br/&gt;&lt;br/&gt;It seems to be the current state of things: the software considers itself to be smarter than the user, and doesn’t bother to tell the user about its actions. If a computer can be considered as a house for the software, then the user is its landlord, and the applications are tenants. So now the tenants run the house, and the landlord is pushed aside. This makes some people angry, some people miserable, and it definitely makes all of us very insecure.&lt;br/&gt;&lt;br/&gt;So, here I suggest the new trend, the new direction – “Well-Mannered Software” (WMS).&lt;br/&gt;WMS should follow just one simple rule&lt;br/&gt;&lt;strong&gt;WMS should not do anything, which is not necessary for its normal functions without explaining the action to the user and getting the user’s permission.&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;An installer should not go online without telling the user “I am going to check for updates – will connect to the site blah.com. Is it OK?”&lt;br/&gt;&lt;br/&gt;An image viewer should not add an item to your startup sequence without asking “I will install color manager to run on startup. OK?”&lt;br/&gt;&lt;br/&gt;And a music CD should not install a poorly written piece of malware on your computer without…. No, it just shouldn’t do it at all.&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-113174022327444498?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/113174022327444498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=113174022327444498' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/113174022327444498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/113174022327444498'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2005/11/sonys-drm-malware-and-well-mannered.html' title='Sony&apos;s DRM malware and Well-Mannered Software'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-112906807808547254</id><published>2005-10-11T18:01:00.000-04:00</published><updated>2005-10-11T18:01:18.103-04:00</updated><title type='text'>Web 2.0 apps - too similar to each other</title><content type='html'>I am really amazed with the number of Web 2.0 sites (or should I say – applications?) that appear daily. There is a great site (&lt;a href="http://www.emilychang.com/go/ehub/"&gt;eHub &lt;/a&gt;) which hosts a constantly updated list of almost everything related to Web 2.0 – and almost every day some new resources are being added.&amp;nbsp;&amp;nbsp;While being amazed with the execution and design of the majority of these sites, I am at the same time surprised with their similarity. It seems like the developers are just remixing a few ideas, waiting that somehow they will eventually stumble upon the winning combination.&amp;nbsp;&amp;nbsp;“Friendster meet epinions”, “mashup between del.icio.us, flickr and yahoo news”,&amp;nbsp;&amp;nbsp;“sex offender data with google maps”… Every idea by itself sounds exciting and promising – but all together they give an impression of the same pattern being repeated over and over again and again. &lt;br/&gt;I do not see this as a fundamental problem with Web 2.0 concept – I just think that for too many developers it’s still just an opportunity to play with new toys and to create a cool-looking modern web application. &lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-112906807808547254?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/112906807808547254/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=112906807808547254' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/112906807808547254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/112906807808547254'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2005/10/web-20-apps-too-similar-to-each-other.html' title='Web 2.0 apps - too similar to each other'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-112862949794338227</id><published>2005-10-06T16:11:00.000-04:00</published><updated>2005-10-07T11:01:23.416-04:00</updated><title type='text'>HBO poisons BitTorrent</title><content type='html'>O’Reilly Radar &lt;a href="http://radar.oreilly.com/archives/2005/10/hbo_attacking_bittorrent.html"&gt;writes about HBO poisoning BitTorrent downloads of the show “Rome”&lt;/a&gt;. It sounds to me like a near-criminal way of stopping an “officially criminal” activity, and, thus, is really disturbing. From the formal point of view, HBO probably does not violate any law, and BitTorrent downloaders are, definitely, pirates. But from a position of a common sense, I cannot wholeheartedly call the BitTorrent users criminals. If I just watch the show – I’m not a criminal. And if I record the show on my DVR – I am also not a criminal. And if I remember that they taught me at school “Sharing is caring” and will share the record with a couple of my friends – will I become a criminal then? Where is the thin line that separates caring people from pirates?&lt;br /&gt;&lt;br /&gt;And looking at the actions of HBO, I would say that they are almost indistinguishable from hacking into a network and disrupting the data transfer, which is a crime. They’d better spend their resources on developing a new distribution / business model – this, and not the poisoning, may help reduce pirating of their shows.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-112862949794338227?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/112862949794338227/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=112862949794338227' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/112862949794338227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/112862949794338227'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2005/10/hbo-poisons-bittorrent.html' title='HBO poisons BitTorrent'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-112837116775928241</id><published>2005-10-03T16:26:00.000-04:00</published><updated>2005-10-03T16:26:07.780-04:00</updated><title type='text'>Trick: "Report a problem" button</title><content type='html'>Today, I think, is a good time to stop being grumpy for a while. I want to share a trick I found very useful when I was working on a small application.&lt;br/&gt;&lt;br/&gt;So, here is the problem: there is a small application, which works like a “wizard” – i.e. the users fill in some data on several pages, and, at the end, the application does something quite complex with the data (writes it to the database, creates some content – it doesn’t matter). The requirements are poorly specified, the business logic is changing often, and there are not enough QA resources to thoroughly test the application. As a result, the application sometimes behaves strangely – sometimes because of a bug, sometimes as a result of user actions. The question is – how to troubleshoot the application? The users being mostly non-technical people, it became a tough problem for me, how to find out what exactly caused the application to misbehave? I was getting several calls per week– and quite often I had to spend a lot of time trying to re-create the bug and interrogating the user – what exactly did she entered on all pages before the problem became evident.&lt;br/&gt;&lt;br/&gt;Then I came with a solution. On the top of each page I’ve placed a button “Report a problem”. When clicked, the button opened a pop-up with a textbox for the description of the problem and a “Send report” button. The users were instructed, that in case of trouble they should click on the button, type in the description of the problem and submit the form. Behind the scenes this small pop-up did a very useful job: it dumped all the relevant data (session variables, URL, request data etc.) and appended the data to the problem description. I’ve also added a small piece of code to every page, which recorded the visit of the page in a session variable, so I could get a trace of which pages were visited in this session and in which order. The message was then e-mailed to me. &lt;br/&gt;&lt;br/&gt;This little hack – as simple as it is – made the troubleshooting a lot easier. The users were also happy – they liked the simple way to submit a bug report and the speed at which the issues were resolved. Of course this solution will not, probably, work so well for huge applications (too much data to dump), but for small-to-medium applications it’s definitely worth trying.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-112837116775928241?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/112837116775928241/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=112837116775928241' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/112837116775928241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/112837116775928241'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2005/10/trick-report-problem-button.html' title='Trick: &quot;Report a problem&quot; button'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-112811677646776964</id><published>2005-09-30T17:46:00.000-04:00</published><updated>2005-09-30T17:46:16.490-04:00</updated><title type='text'>A Server of Babel</title><content type='html'>Recently I’ve caught myself thinking more and more about the proliferation of languages in enterprise Java projects. If you look at a typical J2EE project you will notice that, besides obvious Java and JSP, the project contains a huge amount of code written is many “configuration” languages: tag library descriptions, WSDL, XSL, Hibernate… All these languages are XML-based – but still, each is a language in its own, with its own syntax and semantics. It seems to me that there is a tendency here: the frameworks (platforms, technologies…) become more and more generic – and the more and more of actual logic moves from Java code to the “configuration” files. Initially, maybe, that was not a bad idea – but now it turned J2EE into a monstrosity. The source files in those languages are hard to read, they are extremely error-prone, and, since they do not require compiling, quite often the problems may go undetected until the run-time. Compare it to how Java sources are handled – and you will see the difference immediately.&lt;br/&gt;&lt;br/&gt;Personally, I am getting tired of this “server of Babel” situation. I feel I am ready to look for some other platform, which will be simpler and more elegant than modern J2EE. And – judging by the speed at which Ruby on Rails is gaining popularity – I am not the only one who is ready to move.&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-112811677646776964?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/112811677646776964/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=112811677646776964' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/112811677646776964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/112811677646776964'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2005/09/server-of-babel.html' title='A Server of Babel'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-112725220273318555</id><published>2005-09-20T17:36:00.000-04:00</published><updated>2005-09-20T17:36:42.736-04:00</updated><title type='text'>Do people need privacy?</title><content type='html'>Recently the company I’m working in encountered a problem with one of our web sites – for some reason the cookies were rejected by the client browsers. After short investigation we found the reason: incorrectly configured P3P policy on one of our servers. The problem was quickly fixed – but somehow I keep thinking about this small incident.&lt;br/&gt;&lt;br/&gt;The topic of online privacy is a hot one – and was a hot one for quite some time. Users of the Internet – and I’m not an exception – were worried about the data that different sites collected about them. Several utilities were created at different times to address these worries (I myself had at some time installed a program called IDCide to block tracking cookies). And I’ve read a multitude of articles in different online and offline magazines – all talking about the necessity to protect an innocent Internet user against data collection and privacy violation. It seemed like everybody wanted something to be done.&lt;br/&gt;&lt;br/&gt;And then the issue was addressed by W3C, and a Platform for Privacy Preferences (AKA P3P) was created. Now almost all major sites and the major browsers support P3P. The sites tell you their policy on data collection and retention, and the browser is able to allow or deny certain actions based on how your preferences match the site’s profile. Terrific!&lt;br/&gt;&lt;br/&gt;The only question is – how many people know about it? I’ve asked several of my friends and colleagues – most of them never heard about this. Somehow P3P and everything that’s related to it got past the majority of people who need it most. There is something unwholesome about the situation; it shows us that people do not need privacy and security – they just need to talk about privacy and security.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-112725220273318555?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/112725220273318555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=112725220273318555' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/112725220273318555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/112725220273318555'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2005/09/do-people-need-privacy.html' title='Do people need privacy?'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16689853.post-112691302468709825</id><published>2005-09-16T19:07:00.000-04:00</published><updated>2005-09-16T19:34:03.093-04:00</updated><title type='text'>AJAX - new technology or a neat trick?</title><content type='html'>AJAX took the Web by storm and quickly became a buzzword of the day. On almost all sites that has anything to do with web-oriented development there are discussions about AJAX technology, tutorials on how to use AJAX technology, new libraries that support AJAX technology... But, after discarding all that buzz around AJAX, one can easily see that there is nothing new in this "technology". There were several ways to asynchronously call server without reloading the page long before AJAX appeared. One way was to use a hidden frame as a container for the results returned by the server - I used it 6 years ago. Another way was to utilize for the same purpose an invisible IFRAME (used 3 years ago).&lt;br /&gt;&lt;br /&gt;Yes, yes - both of these ways are much less elegant than AJAX, and there are certain things possible with AJAX which were impossible with these old tricks (for example, retrieving some data from another site which supports REST). But still, the basic functionality was the same, and the famous example that started the AJAX craze - Google Suggest - could be easily implemented using any of these methods.&lt;br /&gt;&lt;br /&gt;So why the old methods did not get that popularity? One reason is, of course, the timing. AJAX appeared at a very right time, and was popularized by Google itself. But there is another reason - maybe more important. It is very simple: "AJAX" is a catchy word, "technology" is a very important-sounding word. "AJAX technology" - this combination just doomed to success.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16689853-112691302468709825?l=grumpytech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://grumpytech.blogspot.com/feeds/112691302468709825/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16689853&amp;postID=112691302468709825' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/112691302468709825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16689853/posts/default/112691302468709825'/><link rel='alternate' type='text/html' href='http://grumpytech.blogspot.com/2005/09/ajax-new-technology-or-neat-trick.html' title='AJAX - new technology or a neat trick?'/><author><name>Aleksey Linetskiy</name><uri>http://www.blogger.com/profile/05988449371728586396</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry></feed>
