<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>misanthropic nonsense</title>
	<atom:link href="http://www.andreybutov.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.andreybutov.com/blog</link>
	<description>life and business and such</description>
	<lastBuildDate>Wed, 16 Jun 2010 02:05:58 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>My video interview with Untether.tv</title>
		<link>http://www.andreybutov.com/blog/2010/06/11/my-video-interview-with-untether-tv/</link>
		<comments>http://www.andreybutov.com/blog/2010/06/11/my-video-interview-with-untether-tv/#comments</comments>
		<pubDate>Sat, 12 Jun 2010 00:01:52 +0000</pubDate>
		<dc:creator>Andrey Butov</dc:creator>
				<category><![CDATA[BlackBerry Development]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.andreybutov.com/blog/?p=679</guid>
		<description><![CDATA[
Link to video.
]]></description>
			<content:encoded><![CDATA[<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="600" height="290" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://blip.tv/play/hYwigeW6VAA%2Em4v" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="600" height="290" src="http://blip.tv/play/hYwigeW6VAA%2Em4v" allowfullscreen="true"></embed></object></p>
<p><a href="http://untether.tv/ellb/?p=1385">Link to video</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreybutov.com/blog/2010/06/11/my-video-interview-with-untether-tv/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Clear-cut pricing in the 1930&#8217;s</title>
		<link>http://www.andreybutov.com/blog/2010/03/29/clear-cut-pricing-in-the-1930s/</link>
		<comments>http://www.andreybutov.com/blog/2010/03/29/clear-cut-pricing-in-the-1930s/#comments</comments>
		<pubDate>Mon, 29 Mar 2010 12:47:44 +0000</pubDate>
		<dc:creator>Andrey Butov</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.andreybutov.com/blog/?p=671</guid>
		<description><![CDATA[Smart retailers always understood the benefits of clear-cut pricing. Even during the depression.

(image from Ken Burns&#8217; Jazz)
]]></description>
			<content:encoded><![CDATA[<p>Smart retailers always understood the benefits of clear-cut pricing. Even during the depression.</p>
<p><img class="alignnone size-full wp-image-673" title="hungry" src="http://www.andreybutov.com/blog/wp-content/uploads/2010/03/hungry.jpg" alt="hungry" width="500" height="376" /></p>
<p>(image from <a href="http://www.pbs.org/jazz/">Ken Burns&#8217; </a><em><strong><a href="http://www.pbs.org/jazz/">Jazz</a>)</strong></em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreybutov.com/blog/2010/03/29/clear-cut-pricing-in-the-1930s/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A long road indeed.</title>
		<link>http://www.andreybutov.com/blog/2010/03/18/a-long-road-indeed/</link>
		<comments>http://www.andreybutov.com/blog/2010/03/18/a-long-road-indeed/#comments</comments>
		<pubDate>Fri, 19 Mar 2010 04:29:29 +0000</pubDate>
		<dc:creator>Andrey Butov</dc:creator>
				<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.andreybutov.com/blog/?p=663</guid>
		<description><![CDATA[Came across this blog post from last year. Found the stack trace mesmerizing, and more than a little disturbing.
The stack trace for a J2EE web app call &#8212; from the initial web server request to the final database call.
Just look at it! And that&#8217;s just the one way trip.

]]></description>
			<content:encoded><![CDATA[<p>Came across <a href="http://ptrthomas.wordpress.com/2006/06/06/java-call-stack-from-http-upto-jdbc-as-a-picture/">this blog post</a> from last year. Found the stack trace mesmerizing, and more than a little disturbing.</p>
<p>The stack trace for a J2EE web app call &#8212; from the initial web server request to the final database call.</p>
<p>Just look at it! And that&#8217;s just the one way trip.</p>
<p><img class="alignnone size-full wp-image-665" title="jtrac-callstack1" src="http://www.andreybutov.com/blog/wp-content/uploads/2010/03/jtrac-callstack1.png" alt="jtrac-callstack1" width="600" height="576" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreybutov.com/blog/2010/03/18/a-long-road-indeed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introducing Antair Headers</title>
		<link>http://www.andreybutov.com/blog/2010/03/12/introducing-antair-headers/</link>
		<comments>http://www.andreybutov.com/blog/2010/03/12/introducing-antair-headers/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 20:02:05 +0000</pubDate>
		<dc:creator>Andrey Butov</dc:creator>
				<category><![CDATA[BlackBerry Development]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[antair]]></category>
		<category><![CDATA[blackberry]]></category>
		<category><![CDATA[Headers]]></category>

		<guid isPermaLink="false">http://www.andreybutov.com/blog/?p=656</guid>
		<description><![CDATA[Today, we released a new tool for BlackBerry users. We call it Antair Headers, and it allows you to view the full e-mail headers of any e-mail message on your BlackBerry.
We&#8217;re making this application free of charge for everyone. Compliments of Antair. Enjoy.

]]></description>
			<content:encoded><![CDATA[<p>Today, we released a <a href="http://www.antair.com/blackberry/headers/">new tool</a> for BlackBerry users. We call it <strong><a href="http://www.antair.com/blackberry/headers/">Antair Headers</a></strong>, and it allows you to view the full e-mail headers of any e-mail message on your BlackBerry.</p>
<p>We&#8217;re making this application free of charge for everyone. Compliments of <a href="http://www.antair.com">Antair</a>. Enjoy.</p>
<p><a href="http://www.antair.com/blackberry/headers/"><img class="alignnone size-full wp-image-657" title="headers" src="http://www.andreybutov.com/blog/wp-content/uploads/2010/03/headers.jpg" alt="headers" width="400" height="390" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreybutov.com/blog/2010/03/12/introducing-antair-headers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Heavy Rain</title>
		<link>http://www.andreybutov.com/blog/2010/03/11/heavy-rain/</link>
		<comments>http://www.andreybutov.com/blog/2010/03/11/heavy-rain/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 04:42:57 +0000</pubDate>
		<dc:creator>Andrey Butov</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[video games]]></category>

		<guid isPermaLink="false">http://www.andreybutov.com/blog/?p=647</guid>
		<description><![CDATA[
Heavy Rain, from Quantic Dream, is, quite simply, the best video game ever made.
The visuals are absolutely stunning.
The control scheme and interaction is perfectly fluid; throwing everything that came before out of the window.
The attention to detail, from character gestures to interior design, is superb.
The amount of influence your choices have on the flow of [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-648" title="heavyrain" src="http://www.andreybutov.com/blog/wp-content/uploads/2010/03/heavyrain.jpg" alt="heavyrain" width="500" height="288" /></p>
<p><strong>Heavy Rain</strong>, from <strong>Quantic Dream</strong>, is, quite simply, the best video game ever made.</p>
<p>The visuals are absolutely stunning.</p>
<p>The control scheme and interaction is perfectly fluid; throwing everything that came before out of the window.</p>
<p>The attention to detail, from character gestures to interior design, is superb.</p>
<p>The amount of influence your choices have on the flow of the story is unprecedented in an adventure game.</p>
<p>Most importantly, the story is very deep, extremely emotionally engaging, and, without compromise, <em><strong>written for adults</strong></em>. This isn&#8217;t a game for the little ones. Firstly, they won&#8217;t get anything out of it, and secondly, there&#8217;s some nudity and other adult themes. But the adults will love it. Parents with small kids will especially feel the impact of the story line.</p>
<p>Forget &#8220;good for a video game&#8221;. Calling it a video game would be an insult. It is a brilliant, engaging, completely satisfying experience.</p>
<p><strong>Heavy Rain</strong> is what all future adventure games should strive to be. Anything less is no longer adequate.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreybutov.com/blog/2010/03/11/heavy-rain/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Debugging BlackBerry Applications: A Simple Debug Console Class</title>
		<link>http://www.andreybutov.com/blog/2010/03/05/debugging-blackberry-applications-a-simple-debug-console-class/</link>
		<comments>http://www.andreybutov.com/blog/2010/03/05/debugging-blackberry-applications-a-simple-debug-console-class/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 23:54:33 +0000</pubDate>
		<dc:creator>Andrey Butov</dc:creator>
				<category><![CDATA[BlackBerry Development]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[antair]]></category>
		<category><![CDATA[blackberry]]></category>
		<category><![CDATA[debugging]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.andreybutov.com/blog/?p=608</guid>
		<description><![CDATA[Debugging a BlackBerry application can be done on a simulator, when the bug permits that sort of thing, or on the device itself. If you&#8217;re in a situation where you must debug your code while it runs on a real device, your can sometimes take advantage of the tethering debugger provided by the JDE; connecting [...]]]></description>
			<content:encoded><![CDATA[<p>Debugging a BlackBerry application can be done on a simulator, when the bug permits that sort of thing, or on the device itself. If you&#8217;re in a situation where you must debug your code while it runs on a real device, your can sometimes take advantage of the tethering debugger provided by the JDE; connecting the device to the PC via a USB cable, and then hoping everything is stable enough for you to catch a breakpoint and find your bug.</p>
<p>This is all fine and good, but there are times when you find yourself in a situation where neither of these techniques gives good results.</p>
<p>At Antair, during development of our BlackBerry applications, we often include a debug console in the dev builds of our apps.</p>
<p>With the debug console, all debug output hits the output screen when the dev build is running in the simulator, and when the dev build runs on a physical test device, the debug output is automatically persisted and is available to view on a dedicated screen that can be pulled up via a menu option or button.</p>
<p>The code below is a stripped-down version of the debug console we use at our company.</p>
<p>Using the console is easy. Include the code in your project, fill out the <strong>PERSISTENCE_GUID</strong> for your application, set the <strong>TAGID</strong> string to identify your application name in the debug logs, and when you want to output a debug statement, simply call <strong>Debug.print(&#8221;<em>Something happened here&#8230;</em>&#8220;)</strong>;</p>
<p>Each line of the debug output, both in the output window when running in a simulator, and in the debug console screen when viewed on a device, will contain your debug message, the thread number on which the call was made (useful for thread/ui debugging), and the date/time of the log statement, with a millisecond timestamp for performance profiling.</p>
<p>To view the debug console on a real device, simple put in a call to <strong>pushScreen(new AntairLogScreen()).</strong> The screen has a built-in menu item to clear the persisted log messages, and will dismiss itself like a regular application screen.</p>
<p>If you&#8217;re running the RIM compiler preprocessor to switch between development, QA, and production builds, you can simply put in a call to set <strong>Debug.ENABLED = false</strong> for everything but the development builds, and the debug console will be there when you need to debug and go away quietly when you don&#8217;t need it.</p>
<p>The code is below.</p>
<p>Cheers!</p>
<p>Andrey.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// -----------------------------------------------------------------------------</span>
<span style="color: #666666; font-style: italic;">//</span>
<span style="color: #666666; font-style: italic;">// Antair Debug Log (for the BlackBerry API)</span>
<span style="color: #666666; font-style: italic;">// Copyright (c) 2005 - 2010, Antair Corporation. All Rights Reserved.</span>
<span style="color: #666666; font-style: italic;">// http://www.antair.com</span>
<span style="color: #666666; font-style: italic;">//</span>
<span style="color: #666666; font-style: italic;">// BlackBerry is a registered trademark of Research in Motion.</span>
<span style="color: #666666; font-style: italic;">//</span>
<span style="color: #666666; font-style: italic;">// -----------------------------------------------------------------------------</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">com.antair.examples.debug</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">net.rim.device.api.i18n.SimpleDateFormat</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.Date</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">net.rim.device.api.collection.util.BigVector</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">net.rim.device.api.system.PersistentObject</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">net.rim.device.api.system.PersistentStore</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">net.rim.device.api.ui.MenuItem</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">net.rim.device.api.ui.component.Menu</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">net.rim.device.api.ui.component.RichTextField</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">net.rim.device.api.ui.container.MainScreen</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">net.rim.device.api.util.Persistable</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">final</span> <span style="color: #000000; font-weight: bold;">class</span> Debug <span style="color: #000000; font-weight: bold;">implements</span> Persistable
<span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">final</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">boolean</span> ENABLED <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">final</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #003399;">String</span> TAGID <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;MY_PROJECT&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">final</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">long</span> PERSISTENCE_GUID <span style="color: #339933;">=</span> <span style="color: #666666; font-style: italic;">/* YOUR OWN PERSISTENCE GUID */</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">private</span> BigVector _messages <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> BigVector<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #003399;">String</span> print<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> str<span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span> Debug.<span style="color: #006633;">ENABLED</span> <span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            <span style="color: #003399;">StringBuffer</span> sb <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">StringBuffer</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            sb.<span style="color: #006633;">append</span><span style="color: #009900;">&#40;</span>TAGID<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	    sb.<span style="color: #006633;">append</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            sb.<span style="color: #006633;">append</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">Thread</span>.<span style="color: #006633;">currentThread</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">toString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	    sb.<span style="color: #006633;">append</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            sb.<span style="color: #006633;">append</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">SimpleDateFormat</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;MM/dd/yy HH:mm:ss:SSS&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">format</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Date</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	    sb.<span style="color: #006633;">append</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            sb.<span style="color: #006633;">append</span><span style="color: #009900;">&#40;</span>str<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> sb.<span style="color: #006633;">append</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            str <span style="color: #339933;">=</span> sb.<span style="color: #006633;">toString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
            <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>str<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">flush</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
            Debug d <span style="color: #339933;">=</span> load<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            d._messages.<span style="color: #006633;">addElement</span><span style="color: #009900;">&#40;</span>str<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            save<span style="color: #009900;">&#40;</span>d<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
&nbsp;
        <span style="color: #000000; font-weight: bold;">return</span> str<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">static</span> BigVector getPersistedMessages<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">return</span> load<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>._messages<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> clearPersistedMessages<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        save<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> Debug<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">static</span> Debug load<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        Debug d <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #000000; font-weight: bold;">try</span>
        <span style="color: #009900;">&#123;</span>
            PersistentObject po <span style="color: #339933;">=</span> PersistentStore.<span style="color: #006633;">getPersistentObject</span><span style="color: #009900;">&#40;</span>Debug.<span style="color: #006633;">PERSISTENCE_GUID</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
            <span style="color: #000000; font-weight: bold;">synchronized</span><span style="color: #009900;">&#40;</span>po<span style="color: #009900;">&#41;</span>
            <span style="color: #009900;">&#123;</span>
                <span style="color: #003399;">Object</span> obj <span style="color: #339933;">=</span> po.<span style="color: #006633;">getContents</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                d <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>obj <span style="color: #339933;">==</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">?</span> <span style="color: #000000; font-weight: bold;">new</span> Debug<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span> <span style="color: #009900;">&#40;</span>Debug<span style="color: #009900;">&#41;</span>obj<span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span>
&nbsp;
        <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span> <span style="color: #003399;">Exception</span> e <span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            d <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Debug<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
&nbsp;
        <span style="color: #000000; font-weight: bold;">return</span> d<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> save<span style="color: #009900;">&#40;</span>Debug d<span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">try</span>
        <span style="color: #009900;">&#123;</span>
            PersistentObject po <span style="color: #339933;">=</span> PersistentStore.<span style="color: #006633;">getPersistentObject</span><span style="color: #009900;">&#40;</span>Debug.<span style="color: #006633;">PERSISTENCE_GUID</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
            <span style="color: #000000; font-weight: bold;">synchronized</span><span style="color: #009900;">&#40;</span>po<span style="color: #009900;">&#41;</span>
            <span style="color: #009900;">&#123;</span>
                po.<span style="color: #006633;">setContents</span><span style="color: #009900;">&#40;</span>d<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                po.<span style="color: #006633;">commit</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span> <span style="color: #003399;">Exception</span> e <span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">final</span> <span style="color: #000000; font-weight: bold;">class</span> ClearAntairLogScreenMenuItem <span style="color: #000000; font-weight: bold;">extends</span> <span style="color: #003399;">MenuItem</span>
<span style="color: #009900;">&#123;</span>
    ClearAntairLogScreenMenuItem<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> position<span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">super</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Clear Log&quot;</span>, position, <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> run<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        Debug.<span style="color: #006633;">clearPersistedMessages</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">final</span> <span style="color: #000000; font-weight: bold;">class</span> AntairLogScreen <span style="color: #000000; font-weight: bold;">extends</span> MainScreen
<span style="color: #009900;">&#123;</span>
    AntairLogScreen<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">super</span><span style="color: #009900;">&#40;</span>MainScreen.<span style="color: #006633;">DEFAULT_CLOSE</span><span style="color: #339933;">|</span>MainScreen.<span style="color: #006633;">DEFAULT_MENU</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #003399;">StringBuffer</span> text <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">StringBuffer</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        BigVector logItems <span style="color: #339933;">=</span> Debug.<span style="color: #006633;">getPersistedMessages</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span> <span style="color: #000066; font-weight: bold;">int</span> i <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span> <span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> logItems.<span style="color: #006633;">size</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">;</span> <span style="color: #339933;">++</span>i <span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            text.<span style="color: #006633;">append</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span><span style="color: #009900;">&#41;</span>logItems.<span style="color: #006633;">elementAt</span><span style="color: #009900;">&#40;</span>i<span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
&nbsp;
        add<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> RichTextField<span style="color: #009900;">&#40;</span>text.<span style="color: #006633;">toString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">protected</span> <span style="color: #000066; font-weight: bold;">void</span> makeMenu <span style="color: #009900;">&#40;</span> <span style="color: #003399;">Menu</span> menu, <span style="color: #000066; font-weight: bold;">int</span> instance <span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        menu.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> ClearAntairLogScreenMenuItem<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">100000</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.andreybutov.com/blog/2010/03/05/debugging-blackberry-applications-a-simple-debug-console-class/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>StopTheHacker.com on the underground credit card market</title>
		<link>http://www.andreybutov.com/blog/2010/03/03/stopthehacker-com-on-the-underground-credit-card-market/</link>
		<comments>http://www.andreybutov.com/blog/2010/03/03/stopthehacker-com-on-the-underground-credit-card-market/#comments</comments>
		<pubDate>Wed, 03 Mar 2010 20:29:02 +0000</pubDate>
		<dc:creator>Andrey Butov</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.andreybutov.com/blog/?p=604</guid>
		<description><![CDATA[Good article from StopTheHacker.com on the underground credit card market.
If you&#8217;re an online retailer, you&#8217;ve probably been experiencing a small slice of this &#8212; the article gives you a look into a bit more.
A popular related article on this site. 
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.stopthehacker.com/2010/03/03/the-underground-credit-card-blackmarket/">Good article</a> from StopTheHacker.com on the underground credit card market.</p>
<p>If you&#8217;re an online retailer, you&#8217;ve probably been experiencing a small slice of this &#8212; the article gives you a look into a bit more.</p>
<p>A <a href="http://www.andreybutov.com/blog/2007/09/22/credit-card-fraud-perspective-of-an-online-merchant/">popular related article</a> on this site. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreybutov.com/blog/2010/03/03/stopthehacker-com-on-the-underground-credit-card-market/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Antair Releases BlackBerry Auto-Responder 1.4</title>
		<link>http://www.andreybutov.com/blog/2010/02/11/antair-releases-blackberry-auto-responder-1-4/</link>
		<comments>http://www.andreybutov.com/blog/2010/02/11/antair-releases-blackberry-auto-responder-1-4/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 01:36:03 +0000</pubDate>
		<dc:creator>Andrey Butov</dc:creator>
				<category><![CDATA[BlackBerry Development]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[antair]]></category>
		<category><![CDATA[blackberry]]></category>
		<category><![CDATA[auto-responder]]></category>

		<guid isPermaLink="false">http://www.andreybutov.com/blog/?p=589</guid>
		<description><![CDATA[We&#8217;ve just released version 1.4 of our Auto-Responder product for the BlackBerry.

This new version introduces more customer-requested features, such as an increased timeout for responses sent to the same e-mail address, and the ability to retain the subject line of the original message instead of using a custom subject line.
We&#8217;ve also updated the engine to [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve just released version 1.4 of our <a href="http://www.antair.com/blackberry/autoresponder/">Auto-Responder</a> product for the BlackBerry.</p>
<p><a href="http://www.antair.com/blackberry/autoresponder/"><img class="alignnone size-full wp-image-590" title="ar4" src="http://www.andreybutov.com/blog/wp-content/uploads/2010/02/ar4.jpg" alt="ar4" width="400" height="462" /></a></p>
<p>This new version introduces more customer-requested features, such as an increased timeout for responses sent to the same e-mail address, and the ability to retain the subject line of the original message instead of using a custom subject line.</p>
<p>We&#8217;ve also updated the engine to support all modern BlackBerry devices, including the Storm and Storm2 touch-screen models.</p>
<p>As usual, both the touch and non-touch screen editions of Antair Auto-Responder are built from the same code-base using a combination of RAPC-supported precompilation and Antair magic voodoo.</p>
<p>One thing to note is that implementing support for touch devices made it necessary to modify the control scheme a bit. And while we were at it, the design wizards insisted that we change the color scheme of the app to make it more &#8212; &#8220;friendly and modern&#8221;.</p>
<p>Here, in the screenshot of an earlier version of Antair Auto-Responder, you can see the shaded-blue color scheme. The main control scheme revolved around a set of HTML-like links. A scroll of the trackwheel or trackball underlined the control under focus, making each screen flow more like a web page rather than a typical mobile app screen.</p>
<p><img class="alignnone size-full wp-image-594" title="7290ar" src="http://www.andreybutov.com/blog/wp-content/uploads/2010/02/7290ar.jpg" alt="7290ar" width="410" height="601" /></p>
<p>In the new version, the control scheme has been modified to work better with touch-devices, with the links being replaced by large buttons. And, as you can see, the color scheme has been modified as well. The app does feel more modern, and, I must admit, more &#8220;friendly&#8221;.</p>
<p><a href="http://www.antair.com/blackberry/autoresponder/"><img class="alignnone size-full wp-image-596" title="1.4.0_screen_1" src="http://www.andreybutov.com/blog/wp-content/uploads/2010/02/1.4.0_screen_1.jpg" alt="1.4.0_screen_1" width="400" height="686" /></a></p>
<p>Cheers!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreybutov.com/blog/2010/02/11/antair-releases-blackberry-auto-responder-1-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>j1ck releases a wikipedia and a twitter app for the BlackBerry</title>
		<link>http://www.andreybutov.com/blog/2010/02/04/j1ck-releases-a-wikipedia-and-a-twitter-app-for-the-blackberry/</link>
		<comments>http://www.andreybutov.com/blog/2010/02/04/j1ck-releases-a-wikipedia-and-a-twitter-app-for-the-blackberry/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 21:57:08 +0000</pubDate>
		<dc:creator>Andrey Butov</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.andreybutov.com/blog/?p=578</guid>
		<description><![CDATA[If you own a BlackBerry, you owe it to yourself to check out two of the newest apps released by j1ck.
First, there&#8217;s the j1ck twitter app &#8212; one of the best twitter clients on the BlackBerry. I&#8217;ve been using it all day whilst running around midtown Manhattan.

Then there&#8217;s the j1ck wikipedia app &#8212; lovely! A [...]]]></description>
			<content:encoded><![CDATA[<p>If you own a BlackBerry, you owe it to yourself to check out two of the newest apps released by <a href="http://j1ck.com/">j1ck</a>.</p>
<p>First, there&#8217;s the <a href="http://j1ck.com/mobile-twitter.php">j1ck twitter app</a> &#8212; one of the best twitter clients on the BlackBerry. I&#8217;ve been using it all day whilst running around midtown Manhattan.</p>
<p><a href="http://j1ck.com/mobile-twitter.php"><img class="alignnone size-full wp-image-579" title="j1cktweet" src="http://www.andreybutov.com/blog/wp-content/uploads/2010/02/j1cktweet.jpg" alt="j1cktweet" width="589" height="155" /></a></p>
<p>Then there&#8217;s the <a href="http://j1ck.com/mobile-wikipedia.php">j1ck wikipedia app</a> &#8212; lovely! A great way to access Wikipedia stuff on the go.</p>
<p><a href="http://j1ck.com/mobile-wikipedia.php"><img class="alignnone size-full wp-image-580" title="j1ckwiki" src="http://www.andreybutov.com/blog/wp-content/uploads/2010/02/j1ckwiki.jpg" alt="j1ckwiki" width="589" height="243" /></a></p>
<p>Both apps are free, and both can be installed directly from your BlackBerry device. Now you have no excuse!</p>
<p><a href="http://j1ck.com/mobile-twitter.php"><br />
</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreybutov.com/blog/2010/02/04/j1ck-releases-a-wikipedia-and-a-twitter-app-for-the-blackberry/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DoubleTake for the iPhone</title>
		<link>http://www.andreybutov.com/blog/2010/02/04/doubletake-for-the-iphone/</link>
		<comments>http://www.andreybutov.com/blog/2010/02/04/doubletake-for-the-iphone/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 21:44:38 +0000</pubDate>
		<dc:creator>Andrey Butov</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.andreybutov.com/blog/?p=572</guid>
		<description><![CDATA[DoubleTake, an Antair game originally, has been ported over to the iPhone by the fine folks at RetroDreamer. You can check out a video of it at the RetroDreamer blog. And while you&#8217;re there, check out some of their other great games for the iPhone!

]]></description>
			<content:encoded><![CDATA[<p><strong>DoubleTake</strong>, an Antair game <a href="http://www.andreybutov.com/blog/2008/09/07/48/">originally</a>, has been ported over to the iPhone by the fine folks at <a href="http://www.retrodreamer.com">RetroDreamer</a>. You can <a href="http://retrodreamer.com/blog/2010/02/doubletake-first-look/">check out a video of it at the RetroDreamer blog</a>. And while you&#8217;re there, check out some of their <a href="http://www.retrodreamer.com">other great games for the iPhone</a>!</p>
<p><a href="http://retrodreamer.com/blog/2010/02/doubletake-first-look/"><img class="alignnone size-full wp-image-573" title="doubletake_iphone" src="http://www.andreybutov.com/blog/wp-content/uploads/2010/02/doubletake_iphone.jpg" alt="doubletake_iphone" width="590" height="519" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreybutov.com/blog/2010/02/04/doubletake-for-the-iphone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
