<?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-3163024798412466597</id><updated>2011-07-30T21:08:04.453+07:00</updated><category term='techtalk'/><category term='j2me'/><category term='randomrant'/><category term='java'/><category term='tips'/><category term='family'/><category term='tutorial'/><category term='gags'/><category term='image galleries'/><category term='music'/><category term='gadget'/><category term='yahoo messenger'/><category term='game'/><category term='image asset'/><category term='game art'/><category term='life'/><title type='text'>BhimZ's Four Corners Of A Geek</title><subtitle type='html'>Tech Talk, Games, Stuff &amp; Gadgets, or Simply Babbling.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://bhimz.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://bhimz.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>BhimZ</name><uri>http://www.blogger.com/profile/13310359494949667528</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://img.photobucket.com/albums/v337/BhimZ/avatar-1.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>23</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3163024798412466597.post-1005304303881615321</id><published>2011-02-21T09:31:00.006+07:00</published><updated>2011-02-21T10:06:26.790+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='yahoo messenger'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><title type='text'>Error: Blackberry Yahoo Messenger Invalid Yahoo ID/Password</title><content type='html'>Beberapa hari yang lalu, saya sempat dipusingkan oleh pesan error di layar BB saya setiap kali saya mencoba login ke Yahoo Messenger. Pesannya berbunyi: "Invalid Yahoo ID/Password". Hal ini sempat membuat saya bingung, karena setahu saya ID dan password yang saya input sudah benar. Saya melakukan double-check dengan login via PC, ternyata berhasil dan tidak ada masalah sama sekali; sehingga kecurigaan saya akan password saya di-hack terhapus sudah. Saya cek ulang YM di BB saya, mencoba mencari update terbaru, namun ternyata versi di BB saya sudah yang terbaru.&lt;div&gt;Sementara saya masih belum tahu apa penyebab sebenarnya (hasil googling tidak menemukan topik tentang error di server BB atau Yahoo),  namun hasil googling tadi menunjukkan bahwa banyak orang mengalami kasus yang sama. Berikut saya share solusi yang saya dapatkan, in case masih ada rekan-rekan yang mengalami kasus yang sama:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Solusi #1:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Buka Yahoo Mail anda (http://mail.yahoo.com)&lt;/li&gt;&lt;li&gt;Di pojok kiri atas -- di bawah nama anda -- kliksekali, kemudian klik "Account Info" (bila diminta password, isi dengan password Yahoo anda)&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-Q-w4dZuGbMk/TWHS0cG_USI/AAAAAAAAAJ8/r2uKRoS-UTI/s1600/pic-01.bmp"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 235px;" src="http://4.bp.blogspot.com/-Q-w4dZuGbMk/TWHS0cG_USI/AAAAAAAAAJ8/r2uKRoS-UTI/s320/pic-01.bmp" border="0" alt="" id="BLOGGER_PHOTO_ID_5575969612001923362" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Pada halaman Account Info, pilih "Manage Apps and Website Connection" di bawah menu "Security Settings"&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-CnqEVm3YWt0/TWHUNIyWxII/AAAAAAAAAKE/f-jnpaw-Xgo/s1600/pic-02.bmp"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 185px;" src="http://2.bp.blogspot.com/-CnqEVm3YWt0/TWHUNIyWxII/AAAAAAAAAKE/f-jnpaw-Xgo/s320/pic-02.bmp" border="0" alt="" id="BLOGGER_PHOTO_ID_5575971135823463554" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Pada halaman berikutnya, klik "Remove" untuk semua item yang mengandung kata Blackberry (Jangan khawatir, setelah anda terkoneksi item-item ini akan digenerate ulang secara otomatis)&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-uj5LnBEQaPk/TWHVaIRFEoI/AAAAAAAAAKM/v0u3ISrpsxw/s1600/pic-03.bmp"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 166px;" src="http://1.bp.blogspot.com/-uj5LnBEQaPk/TWHVaIRFEoI/AAAAAAAAAKM/v0u3ISrpsxw/s320/pic-03.bmp" border="0" alt="" id="BLOGGER_PHOTO_ID_5575972458533819010" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Login YM dari BB anda. Sekarang YM seharusnya sudah bisa diakses kembali.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;Solusi #2&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Ini cara kedua yang saya coba sebelumnya dan berhasil:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Login ke Yahoo Mail&lt;/li&gt;&lt;li&gt;Masuk ke Account Info (ikuti cara di atas)&lt;/li&gt;&lt;li&gt;Pada Account Info, ganti password Yahoo anda&lt;/li&gt;&lt;li&gt;Login via Yahoo Messenger di PC anda&lt;/li&gt;&lt;li&gt;Selagi YM di PC terbuka, login via YM di BB anda. YM di BB anda kini sudah bisa diakses.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Semoga tips ini cukup membantu rekan-rekan ;)&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3163024798412466597-1005304303881615321?l=bhimz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bhimz.blogspot.com/feeds/1005304303881615321/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3163024798412466597&amp;postID=1005304303881615321' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/1005304303881615321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/1005304303881615321'/><link rel='alternate' type='text/html' href='http://bhimz.blogspot.com/2011/02/error-blackberry-yahoo-messenger.html' title='Error: Blackberry Yahoo Messenger Invalid Yahoo ID/Password'/><author><name>BhimZ</name><uri>http://www.blogger.com/profile/13310359494949667528</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://img.photobucket.com/albums/v337/BhimZ/avatar-1.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-Q-w4dZuGbMk/TWHS0cG_USI/AAAAAAAAAJ8/r2uKRoS-UTI/s72-c/pic-01.bmp' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3163024798412466597.post-2419908179051638149</id><published>2010-11-01T13:50:00.008+07:00</published><updated>2010-11-01T14:01:45.258+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='image asset'/><category scheme='http://www.blogger.com/atom/ns#' term='j2me'/><category scheme='http://www.blogger.com/atom/ns#' term='game art'/><title type='text'>A Guide To Building Mobile Game Image Assets II: Resource File &amp; Animation</title><content type='html'>&lt;span style="font-family:arial;"&gt;We've talked about how to break down image assets for mobile games on the &lt;a href="http://bhimz.blogspot.com/2010/11/guide-to-building-mobile-game-image.html"&gt;previous part&lt;/a&gt;. In this part, we'll continue on how to create resource files and preparing animation assets.&lt;/span&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0cm; font-style: normal;" align="JUSTIFY" lang="en-US"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;Creating A Resource File&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0cm; font-style: normal;" align="JUSTIFY" lang="en-US"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;Loading image files takes process time, plus each image files actually have headers which can actually mean additional file sizes. If you have a lot of small images, it's best to combine the images into one single image file instead. In our previous example we have 3 files; the background, paper and pencil; just combine those files using image manipulation applications like Photoshop or GIMP into a single file called resources.png (file name is not a standard, you can think of any other name).&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; font-style: normal;" align="JUSTIFY" lang="en-US"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_qPCJW7e37n4/TM5j3DKzW2I/AAAAAAAAAJU/NTUZ_MmWpeU/s1600/sample-resource.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 107px; height: 95px;" src="http://4.bp.blogspot.com/_qPCJW7e37n4/TM5j3DKzW2I/AAAAAAAAAJU/NTUZ_MmWpeU/s320/sample-resource.png" alt="" id="BLOGGER_PHOTO_ID_5534470789479488354" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;" align="JUSTIFY"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;&lt;span lang="en-US"&gt;&lt;span style="font-style: normal;"&gt;Try to have as few empty space as you can to reduce the file size to minimum, but &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;&lt;span lang="en-US"&gt;&lt;i&gt;&lt;b&gt;don't&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;&lt;span lang="en-US"&gt;&lt;span style="font-style: normal;"&gt; break apart the resource image – say, the paper image – into smaller parts and then mix 'em up with other resources like the background image for the sake minimizing empty spaces; this will only confuse the programmers. Keep a sense of 'boxed' or image grouping. Lastly write down the position of each image groups (starting x and y, width, height) to help the programmers split the images into different images again later in the codes.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;" align="JUSTIFY" lang="en-US"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm; font-style: normal;" align="JUSTIFY" lang="en-US"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;Animation Sprite&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;" align="JUSTIFY" lang="en-US"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm; font-style: normal;" align="JUSTIFY" lang="en-US"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;Animation is done in 2 ways: programmatically, or by image sequence (actually, 3 if you count a combination of both). For example, if you want to animate a dragonfly flying across the screen, then the animation of it moving across the screen is done programmatically inside the code. But the animation of the dragonfly fluttering its wing while moving is done by scrolling several frames of images in a sequence.&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0cm; font-style: normal;" align="JUSTIFY" lang="en-US"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;The image are stored as a single image, ordered in series frames from left to right or top to bottom; from the beginning of the animation to the end.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_qPCJW7e37n4/TM5kI3zDSpI/AAAAAAAAAJc/qThk8sCXuGE/s1600/sample-anim-frames.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 440px; height: 221px;" src="http://3.bp.blogspot.com/_qPCJW7e37n4/TM5kI3zDSpI/AAAAAAAAAJc/qThk8sCXuGE/s320/sample-anim-frames.png" alt="" id="BLOGGER_PHOTO_ID_5534471095664724626" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;" align="JUSTIFY"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;&lt;span lang="en-US"&gt;&lt;span style="font-style: normal;"&gt;One thing to note is; and the one thing the artist often forget or doesn't know; is that the image arrangement &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;&lt;span lang="en-US"&gt;&lt;i&gt;&lt;b&gt;MUST&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;&lt;span lang="en-US"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt; maintain the width and height of animation frame. Notice the difference between these two images:&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_qPCJW7e37n4/TM5kmcwxaiI/AAAAAAAAAJk/pBP9OPNV9zM/s1600/sample-wrong-anim.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 120px; height: 52px;" src="http://3.bp.blogspot.com/_qPCJW7e37n4/TM5kmcwxaiI/AAAAAAAAAJk/pBP9OPNV9zM/s320/sample-wrong-anim.png" alt="" id="BLOGGER_PHOTO_ID_5534471603803482658" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: center;"&gt; &lt;p style="margin-bottom: 0cm;" align="CENTER"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;&lt;span lang="en-US"&gt;&lt;i&gt;&lt;span style="font-weight: normal;"&gt;I&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;&lt;span lang="en-US"&gt;&lt;i&gt;&lt;b&gt;ncorrent&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;&lt;span lang="en-US"&gt;&lt;i&gt;&lt;span style="font-weight: normal;"&gt; Goalkeeper.png: &lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0cm; font-weight: normal;" align="CENTER" lang="en-US"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;&lt;i&gt;The spaces between each frames varies from each other&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; font-weight: normal;" align="CENTER" lang="en-US"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; font-weight: normal;" align="CENTER" lang="en-US"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_qPCJW7e37n4/TM5lE-_zb6I/AAAAAAAAAJs/kAKtD0_tqNU/s1600/sample-correct-anim.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 77px;" src="http://3.bp.blogspot.com/_qPCJW7e37n4/TM5lE-_zb6I/AAAAAAAAAJs/kAKtD0_tqNU/s320/sample-correct-anim.png" alt="" id="BLOGGER_PHOTO_ID_5534472128389410722" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;&lt;div style="text-align: center;"&gt; &lt;p style="margin-bottom: 0cm;" align="CENTER"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;&lt;span lang="en-US"&gt;&lt;i&gt;&lt;b&gt;C&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;&lt;span lang="en-US"&gt;&lt;i&gt;&lt;b&gt;orrected &lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;&lt;span lang="en-US"&gt;&lt;i&gt;&lt;span style="font-weight: normal;"&gt;Goalkeeper.png&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm; font-weight: normal;" align="CENTER" lang="en-US"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;&lt;i&gt;Spaces between each frame is the same&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; font-weight: normal; text-align: justify;" lang="en-US"&gt; &lt;/p&gt;&lt;p style="margin-bottom: 0cm; font-style: normal; font-weight: normal;" align="JUSTIFY" lang="en-US"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;Also when creating moving animation such as jumping, consider communicating with the programmer on making the movement path of the sprite to minimize empty spaces.&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm; font-style: normal; font-weight: normal;" align="JUSTIFY" lang="en-US"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm; font-style: normal;" align="JUSTIFY" lang="en-US"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;&lt;b&gt;Additional Tips:&lt;/b&gt;&lt;/span&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm; font-style: normal; font-weight: normal;" align="JUSTIFY" lang="en-US"&gt;  &lt;span style="font-family:Arial,sans-serif;"&gt;Use png files with transparent  background.&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm; font-style: normal; font-weight: normal;" align="JUSTIFY" lang="en-US"&gt;  &lt;span style="font-family:Arial,sans-serif;"&gt;Don't use too much colors, if  possible use web colors instead. Chances are some of those colors  won't show in the phone anyway (although some phones nowadays  support more colors, but still it's a good optimization practice).&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm; font-style: normal; font-weight: normal;" align="JUSTIFY" lang="en-US"&gt;  &lt;span style="font-family:Arial,sans-serif;"&gt;Don't use smooth gradients; I can't  emphasize this enough.&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm; font-style: normal; font-weight: normal;" align="JUSTIFY" lang="en-US"&gt;  &lt;span style="font-family:Arial,sans-serif;"&gt;If you're animating large sprites,  it's a good idea to break down the spite into several smaller parts  and animate just the important part rather than animating the whole  thing. That way you don't end up with plenty of big image files and  bloat the jar file. You can also try breaking it down into several  small animations.&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm; font-style: normal; font-weight: normal;" align="JUSTIFY" lang="en-US"&gt;  &lt;span style="font-family:Arial,sans-serif;"&gt;You can use third party png file  compressor such as OptiPNG to make the image file size a lot  smaller, just don't over compress the files as they may cause the  image to not show on the phone itself. Personally, if find using  OptiPNG with just the default setting works fine.&lt;/span&gt;&lt;/p&gt; &lt;/li&gt;&lt;/ul&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3163024798412466597-2419908179051638149?l=bhimz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bhimz.blogspot.com/feeds/2419908179051638149/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3163024798412466597&amp;postID=2419908179051638149' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/2419908179051638149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/2419908179051638149'/><link rel='alternate' type='text/html' href='http://bhimz.blogspot.com/2010/11/guide-to-building-mobile-game-image_01.html' title='A Guide To Building Mobile Game Image Assets II: Resource File &amp; Animation'/><author><name>BhimZ</name><uri>http://www.blogger.com/profile/13310359494949667528</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://img.photobucket.com/albums/v337/BhimZ/avatar-1.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_qPCJW7e37n4/TM5j3DKzW2I/AAAAAAAAAJU/NTUZ_MmWpeU/s72-c/sample-resource.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3163024798412466597.post-315704270700738694</id><published>2010-11-01T13:13:00.012+07:00</published><updated>2010-11-01T14:02:44.946+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='image asset'/><category scheme='http://www.blogger.com/atom/ns#' term='j2me'/><category scheme='http://www.blogger.com/atom/ns#' term='game art'/><title type='text'>A Guide To Building Mobile Game Image Assets I : Image Breakdown</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_qPCJW7e37n4/TM5a3zJDUwI/AAAAAAAAAIM/81ONmyFEdZ8/s1600/phase-03.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 176px; height: 220px;" src="http://3.bp.blogspot.com/_qPCJW7e37n4/TM5a3zJDUwI/AAAAAAAAAIM/81ONmyFEdZ8/s320/phase-03.png" alt="" id="BLOGGER_PHOTO_ID_5534460906752398082" border="0" /&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;In creating mobile games, I seldom have problem communicating with the graphic artist on how the art assets should be. I found out that most of the time we are going back and forth on not how the game should be displayed, but on how the artist should prepare the image asset itself. Make sense, since most of the artist I work with never really had experiences with mobile games (while the ones that does are really hard to find).&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Learning from that experience, I decided to compile a small guide on how to prepare image assets for a mobile game. This guide is dedicated for graphic artists, though I'm not exactly one (I only do some digital art once a while) I hope that it's quite useful. We'll start on how to break down a screen into image assets for the coder to use.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-family:arial;"&gt;Note:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;The image assets used in this article is created by me, taken from one of my games. Feel free to use them if you like, but don't forget to give me some credits.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;p style="margin-bottom: 0cm;" lang="en-US"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;Breaking Down A Screen&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; font-family: arial;" lang="en-US"&gt;To enable the screen to be animated (and for optimizing purposes), a screen needs to be broken into several bits of images. Take this screen below as an example:&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_qPCJW7e37n4/TM5eNJ9LW3I/AAAAAAAAAIc/cidFgQc3Nks/s1600/sample-guess-that-number.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 176px; height: 220px;" src="http://4.bp.blogspot.com/_qPCJW7e37n4/TM5eNJ9LW3I/AAAAAAAAAIc/cidFgQc3Nks/s320/sample-guess-that-number.png" alt="" id="BLOGGER_PHOTO_ID_5534464572188744562" border="0" /&gt;&lt;/a&gt; &lt;p style="margin-bottom: 0cm;" lang="en-US"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;The first step is to split the dynamic elements with the static ones.  We wanted to apply animation to the paper and pencil; let's say, adding a sliding into the screen effect at the beginning of the screen.&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;" lang="en-US"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;Therefor, the paper and pencil are dynamic elements and should be separated. The turn indicator and the writings on the paper are also dynamic elements, but we'll disregard them for now. Thus now we have three images: The background, the paper and the pencil.&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;" lang="en-US"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_qPCJW7e37n4/TM5fjyhrcII/AAAAAAAAAI0/Buvkj0Szu98/s1600/sample-pencil.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 41px; height: 79px;" src="http://3.bp.blogspot.com/_qPCJW7e37n4/TM5fjyhrcII/AAAAAAAAAI0/Buvkj0Szu98/s320/sample-pencil.png" alt="" id="BLOGGER_PHOTO_ID_5534466060548010114" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_qPCJW7e37n4/TM5fjrMZYHI/AAAAAAAAAIs/4qsA1ehkaUc/s1600/sample-paper.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 147px; height: 176px;" src="http://4.bp.blogspot.com/_qPCJW7e37n4/TM5fjrMZYHI/AAAAAAAAAIs/4qsA1ehkaUc/s320/sample-paper.png" alt="" id="BLOGGER_PHOTO_ID_5534466058579697778" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_qPCJW7e37n4/TM5fjQWGUAI/AAAAAAAAAIk/TTe2LiMo6zs/s1600/sample-bg.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 176px; height: 220px;" src="http://4.bp.blogspot.com/_qPCJW7e37n4/TM5fjQWGUAI/AAAAAAAAAIk/TTe2LiMo6zs/s320/sample-bg.png" alt="" id="BLOGGER_PHOTO_ID_5534466051372634114" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p style="margin-bottom: 0cm; font-style: normal;" align="JUSTIFY" lang="en-US"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;The next step is to identify which element we need to optimize. In mobile games, it's generally not a very good idea to have large or full screen images; as we always need to remember that mobile phone has a limited memory heap size and/or processor. That's why the background image should be optimized. The trick is to find a repeatable pattern of the image, so rather than using a full image, we could instead use bits of the image and tile them using codes inside the game. Looking at our background image, we can see that it's actually just a single pattern repeating itself over and over, so let's just remove the rest. Now we have a smaller image for the background, shown below:&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; font-style: normal;" align="JUSTIFY" lang="en-US"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_qPCJW7e37n4/TM5gGvCV0NI/AAAAAAAAAI8/uvUAQqeLUiI/s1600/wood.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 39px; height: 40px;" src="http://4.bp.blogspot.com/_qPCJW7e37n4/TM5gGvCV0NI/AAAAAAAAAI8/uvUAQqeLUiI/s320/wood.png" alt="" id="BLOGGER_PHOTO_ID_5534466660906684626" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p style="margin-bottom: 0cm; font-style: normal;" align="JUSTIFY" lang="en-US"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;Taking the step further, we can also break down the paper image. By looking at the pattern, we could break the image into the following part, while the straight line on the paper can probably done by code so we can just remove that.&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_qPCJW7e37n4/TM5gt26RIeI/AAAAAAAAAJE/vibF4zfz01s/s1600/sample-paper-breakdown.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 160px; height: 193px;" src="http://1.bp.blogspot.com/_qPCJW7e37n4/TM5gt26RIeI/AAAAAAAAAJE/vibF4zfz01s/s320/sample-paper-breakdown.png" alt="" id="BLOGGER_PHOTO_ID_5534467333035205090" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; font-style: normal;" align="JUSTIFY" lang="en-US"&gt; &lt;/p&gt;&lt;p style="margin-bottom: 0cm; font-style: normal;" align="JUSTIFY" lang="en-US"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;&lt;b&gt;Tips:&lt;/b&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm; font-weight: normal;" align="JUSTIFY" lang="en-US"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;&lt;i&gt;Not every image can be broken down like this, for example, the pencil images. That's why you should always try to keep the images simple, and as much as possible avoid using gradient fill so it can later be broken down if necessary. Gradient fill especially smooth ones also use a lot colors, which means bigger file size, and it probably won't show much on the phone since the screen size is usually small.&lt;/i&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;" align="JUSTIFY" lang="en-US"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm; font-style: normal;" align="JUSTIFY" lang="en-US"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;Removing the duplicates, this is what's left from the paper image:&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm; font-style: normal;" align="JUSTIFY" lang="en-US"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_qPCJW7e37n4/TM5hDjXHNII/AAAAAAAAAJM/aCv7LXoYnv4/s1600/sample-paper-opt.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 66px; height: 54px;" src="http://2.bp.blogspot.com/_qPCJW7e37n4/TM5hDjXHNII/AAAAAAAAAJM/aCv7LXoYnv4/s320/sample-paper-opt.png" alt="" id="BLOGGER_PHOTO_ID_5534467705744602242" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p style="margin-bottom: 0cm;" align="JUSTIFY"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;&lt;span lang="en-US"&gt;&lt;span style="font-style: normal;"&gt;L&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;&lt;span lang="en-US"&gt;&lt;span style="font-style: normal;"&gt;ast step is write down the size of each image parts, so the programmer can know how to replicate the image from the code (this is something the artist sometimes forget to do, and takes a lot of time for the programmer to figure out):&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;" align="JUSTIFY" lang="en-US"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm; font-style: normal;" align="JUSTIFY" lang="en-US"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;background = 176 pixel * 220 pixel&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm; font-style: normal;" align="JUSTIFY" lang="en-US"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;tile_background = 40 pixel * 40 pixel&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;" align="JUSTIFY" lang="en-US"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm; font-style: normal;" align="JUSTIFY" lang="en-US"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;paper=147 pixel * 176 pixel&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm; font-style: normal;" align="JUSTIFY" lang="en-US"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;tile_paper_left_border = 33 pixel * 11 pixel&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm; font-style: normal;" align="JUSTIFY" lang="en-US"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;tile_paper_hole_border = 33 pixel * 33 pixel&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm; font-style: normal;" align="JUSTIFY" lang="en-US"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;tile_paper_top_border = 11 pixel * 33 pixel&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm; font-style: normal;" align="JUSTIFY" lang="en-US"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;tile_paper_right_border = 11 pixel * 33 pixel&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm; font-style: normal;" align="JUSTIFY" lang="en-US"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;tile_paper_body = 33 pixel * 33 pixel&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;" align="JUSTIFY" lang="en-US"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;" align="JUSTIFY" lang="en-US"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;&lt;i&gt;Note: the sample above is not a coding standard, just something I came up. If you're an artist and working together with a programmer to make the game, try talking with him to see what standards you should use.&lt;/i&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;" align="JUSTIFY" lang="en-US"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm; font-style: normal;" align="JUSTIFY" lang="en-US"&gt; &lt;span style="font-family:Arial,sans-serif;"&gt;Of course, it's much easier if you can break down the images into equal sized parts and then just tell the programmer the size of each tile parts.&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm; font-style: normal;" align="JUSTIFY" lang="en-US"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;Now that we're done with this part, on the &lt;a href="http://bhimz.blogspot.com/2010/11/guide-to-building-mobile-game-image_01.html"&gt;next part&lt;/a&gt; we will continue on building resource file and preparing animation sprites.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;     &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3163024798412466597-315704270700738694?l=bhimz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bhimz.blogspot.com/feeds/315704270700738694/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3163024798412466597&amp;postID=315704270700738694' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/315704270700738694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/315704270700738694'/><link rel='alternate' type='text/html' href='http://bhimz.blogspot.com/2010/11/guide-to-building-mobile-game-image.html' title='A Guide To Building Mobile Game Image Assets I : Image Breakdown'/><author><name>BhimZ</name><uri>http://www.blogger.com/profile/13310359494949667528</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://img.photobucket.com/albums/v337/BhimZ/avatar-1.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_qPCJW7e37n4/TM5a3zJDUwI/AAAAAAAAAIM/81ONmyFEdZ8/s72-c/phase-03.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3163024798412466597.post-2135245169262396959</id><published>2007-07-10T11:33:00.000+07:00</published><updated>2007-07-10T17:37:31.963+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='game'/><title type='text'>Nasi Rames, Bu! Demo Version -- The Street Cuisine Game</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight: bold;"&gt;Title: Nasi Rames, Bu! Demo Version&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Type: Java Mobile Game / Casual&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Supported Platform: Nokia S60 Series, Nokia NGage / NGage QD, Sony Erricson W-Series&lt;/span&gt;&lt;br /&gt;Download: &lt;a href="http://rapidshare.com/files/42082449/NasiRames.jar"&gt;Here!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_qPCJW7e37n4/RpMNvHyWJLI/AAAAAAAAAFI/VfxagC4SQkg/s1600-h/nasirames-scrschot.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp3.blogger.com/_qPCJW7e37n4/RpMNvHyWJLI/AAAAAAAAAFI/VfxagC4SQkg/s400/nasirames-scrschot.jpg" alt="" id="BLOGGER_PHOTO_ID_5085423507426649266" border="0" /&gt;&lt;/a&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;"Nasi Rames&lt;/span&gt; - &lt;span style="font-style: italic;"&gt;A Traditional Cuisine from Indonesia, consist of rice with various toppings of fish, meat, vegetables and spices of choice. Usually sold by female street peddlers or traditional diners in Java."&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Nasi Rames, Bu!&lt;/span&gt; is a unique casual game, where you play a part as a traditional food peddler. Your job is to complete your customers orders, by matching items in the order with items on the menu. Careful though, the longer it takes for you to complete an order, the customer might get impatient and decided to leave without paying. In each level, there's a certain number of score that you have to fulfill, or else you'll lose the game.&lt;br /&gt;&lt;br /&gt;The demo version currently only allows you to play until level 1-3, but a full version game will come soon enough. Here's what to expect from the full version game:&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;More menu item, more order, more mayhem&lt;/li&gt;&lt;li&gt;Color Coded Order - finish orders with the same colors to add some combo bonus!&lt;/li&gt;&lt;li&gt;Out of this world orders - serve rice with the most unthinkable toppings ever: pizzas, cactuses, cell phones -- even rockets!&lt;br /&gt;&lt;/li&gt;&lt;li&gt;21 wacky levels&lt;/li&gt;&lt;li&gt;Better graphics&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3163024798412466597-2135245169262396959?l=bhimz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bhimz.blogspot.com/feeds/2135245169262396959/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3163024798412466597&amp;postID=2135245169262396959' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/2135245169262396959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/2135245169262396959'/><link rel='alternate' type='text/html' href='http://bhimz.blogspot.com/2007/07/nasi-rames-bu-demo-version-street.html' title='Nasi Rames, Bu! Demo Version -- The Street Cuisine Game'/><author><name>BhimZ</name><uri>http://www.blogger.com/profile/13310359494949667528</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://img.photobucket.com/albums/v337/BhimZ/avatar-1.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_qPCJW7e37n4/RpMNvHyWJLI/AAAAAAAAAFI/VfxagC4SQkg/s72-c/nasirames-scrschot.jpg' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3163024798412466597.post-1488462611972301441</id><published>2007-07-09T09:18:00.000+07:00</published><updated>2007-07-09T09:56:22.905+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='game'/><title type='text'>CrestBreaker v1.8 Demo Version</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Type: Mobile Game&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;Supported Platform: Nokia s60 Series - Up, Sony Erricson with Nokia UI API&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Download: &lt;/span&gt;&lt;a style="font-weight: bold; font-style: italic;" href="http://rapidshare.com/files/41833430/CrestBreaker.jar"&gt;CrestBreaker.jar&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;CrestBreakers is a revamped version of the classic game, Mastermind. In this game, you played as a commander of Mozzarella Country, who's an eternal enemy to the Oregano Country. Your job&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_qPCJW7e37n4/RpGhE3yWJGI/AAAAAAAAAEg/V9x6btx1c48/s1600-h/cbreak-01.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp0.blogger.com/_qPCJW7e37n4/RpGhE3yWJGI/AAAAAAAAAEg/V9x6btx1c48/s400/cbreak-01.jpg" alt="" id="BLOGGER_PHOTO_ID_5085022559344665698" border="0" /&gt;&lt;/a&gt; is &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_qPCJW7e37n4/RpGhFHyWJHI/AAAAAAAAAEo/riqFKu2yrE0/s1600-h/cbreak-02.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp1.blogger.com/_qPCJW7e37n4/RpGhFHyWJHI/AAAAAAAAAEo/riqFKu2yrE0/s400/cbreak-02.jpg" alt="" id="BLOGGER_PHOTO_ID_5085022563639633010" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_qPCJW7e37n4/RpGhFXyWJJI/AAAAAAAAAE4/e76HzNCMxuA/s1600-h/cbreak-06.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp2.blogger.com/_qPCJW7e37n4/RpGhFXyWJJI/AAAAAAAAAE4/e76HzNCMxuA/s400/cbreak-06.jpg" alt="" id="BLOGGER_PHOTO_ID_5085022567934600338" border="0" /&gt;&lt;/a&gt;simple, direct missiles towards the enemy &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_qPCJW7e37n4/RpGhFHyWJII/AAAAAAAAAEw/gLmQSimMzrM/s1600-h/cbreak-03.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp1.blogger.com/_qPCJW7e37n4/RpGhFHyWJII/AAAAAAAAAEw/gLmQSimMzrM/s400/cbreak-03.jpg" alt="" id="BLOGGER_PHOTO_ID_5085022563639633026" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_qPCJW7e37n4/RpGhFXyWJKI/AAAAAAAAAFA/h4x5xyE32wo/s1600-h/cbreak-07.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp2.blogger.com/_qPCJW7e37n4/RpGhFXyWJKI/AAAAAAAAAFA/h4x5xyE32wo/s400/cbreak-07.jpg" alt="" id="BLOGGER_PHOTO_ID_5085022567934600354" border="0" /&gt;&lt;/a&gt;territory by inputting the attack codes, consisting of four unique digits matching the enemy defense codes. The catch is, the enemy codes is hidding, so you'd have to guess those codes by yourself by evaluating the attack results after each attack phase. To make matters worse, the enemy is doing the exact thing, and the UN is watching each civilian casualties you made for every wrong guesses. If the casualties has gone too great, they will cut in the fight and take over your goverment's military priviledge. So it's a race between you, the neighbour, or the UN peace troops.&lt;br /&gt;&lt;br /&gt;The demo version will only allow one type of game, but the full version will have 3 types of game:&lt;br /&gt;&lt;/div&gt;&lt;ol style="text-align: justify;"&gt;&lt;li&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Story Mode&lt;/span&gt; : Play all the levels starting from easy to hard.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Free Mode&lt;/span&gt; : Play a single game against the computer.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Multiplayer Mode&lt;/span&gt; : Play head-to-head with a friend.&lt;/li&gt;&lt;/ol&gt;&lt;div style="text-align: justify;"&gt;The demo version also allows only one difficulty level, and only Nokia phones model support. Please stay tuned for the full version where there'll be more phone support and features.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Any comments or bugs on this game? Please let me know ;)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3163024798412466597-1488462611972301441?l=bhimz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bhimz.blogspot.com/feeds/1488462611972301441/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3163024798412466597&amp;postID=1488462611972301441' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/1488462611972301441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/1488462611972301441'/><link rel='alternate' type='text/html' href='http://bhimz.blogspot.com/2007/07/crestbreaker-v18-demo-version.html' title='CrestBreaker v1.8 Demo Version'/><author><name>BhimZ</name><uri>http://www.blogger.com/profile/13310359494949667528</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://img.photobucket.com/albums/v337/BhimZ/avatar-1.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_qPCJW7e37n4/RpGhE3yWJGI/AAAAAAAAAEg/V9x6btx1c48/s72-c/cbreak-01.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3163024798412466597.post-8513071429358495077</id><published>2007-06-27T15:57:00.000+07:00</published><updated>2007-06-27T17:13:55.471+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='techtalk'/><title type='text'>Safari 3 Public Beta for Windows - A Safari On The Internet Jungle</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_qPCJW7e37n4/RoI4OHyWJFI/AAAAAAAAAEY/_LKky9SB2iE/s1600-h/safari.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp2.blogger.com/_qPCJW7e37n4/RoI4OHyWJFI/AAAAAAAAAEY/_LKky9SB2iE/s400/safari.png" alt="" id="BLOGGER_PHOTO_ID_5080685144886879314" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Not so long ago (June 11, 2007), Apple Inc. announced the release of Safari 3 - the originally MacOS X web browser - on PC platform. In spite of being released as public beta, the browser is boasted to be the fastest and most appealing web browser compared to the others such as IE, Mozilla or Opera. The presentation on &lt;a href="http://www.apple.com/safari/"&gt;Safari's website&lt;/a&gt; shows exactly how fast: about 2x faster than Opera on loading HTML pages, a bit faster than Opera on Javascript operations and application launch. Safari also uses tabbed browsing, which I loved so much in Mozilla, and is equipped with several other features such as SnapBack: the ability to return to your previous search result prior result link click, a feature I find quite useful sometimes (although not too often) when browsing through google.&lt;br /&gt;&lt;br /&gt;It was a colleague of mine from work actually, who inspired me to try out the new Safari 3 for Windows. He said his web browsing experience improved drastically, with loading speed as the main factor. So based on his suggestion, I downloaded and installed Safari 3 on my laptop. Yet apparrently, his experience seems to be quite different than mine.&lt;br /&gt;&lt;br /&gt;Just as a started Safari 3, the browser appears with absolutely no text on it. Not in the title bar - it's there, I can focus my mouse on it, but there's just no text in it. The same thing happened to the address bar and the search field. After browsing the forum to find out the problem(on a different browser of couse, luckily I didn't remove my Firefox), I found out that it was caused of a corrupted/missing fonts.plist file (the Safari font list). So I downloaded the valid file, and copy them to my computer. When I restarted Safari, the texts are reappeared.&lt;br /&gt;&lt;br /&gt;To test the speed, I tried opening one of the slowest page to load - oracle.com. A few seconds after pressing enter, the page appears. It seems that Safari has a different mechanism upon rendering pages, allowing them to load page faster. But what about streaming data, such as videos? I tried opening a youtube movie for the answer. Yet another problem appears - my youtube movie plays without sound. Also, the browser crashes randomly - yet another flaw. Nevertheless, it does prove to be faster the other browsers at some point. And it's animated features does seemed appealing - It looks exactly like iTunes, all text fields and text areas are draggable, and I had some mindless fun dragging the tabs, just to seem them slide :) But it seems there's still plenty of bugs to patch before we can say it's a decent competitor for other PC web browsers. Here are a few bugs I experienced during the test:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Missing fonts, solution: replace the fonts.plist file&lt;/li&gt;&lt;li&gt;Browser crashes randomly, solution: turn auto complete off (doesn't solve the problem completely though, but it's a bit more stable)&lt;/li&gt;&lt;li&gt;Browser crashes when opening bookmark&lt;/li&gt;&lt;li&gt;No sound&lt;/li&gt;&lt;li&gt;Memory tends to bloat after awhile&lt;/li&gt;&lt;li&gt;Plugins are missing - no clue on how to install plugins&lt;/li&gt;&lt;/ul&gt;The verdict? Well, it's too soon to say, but the Public Beta release still have a long wat to go there.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3163024798412466597-8513071429358495077?l=bhimz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bhimz.blogspot.com/feeds/8513071429358495077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3163024798412466597&amp;postID=8513071429358495077' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/8513071429358495077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/8513071429358495077'/><link rel='alternate' type='text/html' href='http://bhimz.blogspot.com/2007/06/safari-3-public-beta-for-windows-safari.html' title='Safari 3 Public Beta for Windows - A Safari On The Internet Jungle'/><author><name>BhimZ</name><uri>http://www.blogger.com/profile/13310359494949667528</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://img.photobucket.com/albums/v337/BhimZ/avatar-1.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_qPCJW7e37n4/RoI4OHyWJFI/AAAAAAAAAEY/_LKky9SB2iE/s72-c/safari.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3163024798412466597.post-5223368851560854950</id><published>2007-03-07T10:39:00.000+07:00</published><updated>2007-06-27T14:33:33.384+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='music'/><category scheme='http://www.blogger.com/atom/ns#' term='randomrant'/><title type='text'>Drifting Around With Andy</title><content type='html'>Before reading anything else, just take a look at this.&lt;br /&gt;&lt;br /&gt;&lt;object height="350" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Ddn4MGaS3N4"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/Ddn4MGaS3N4" type="application/x-shockwave-flash" wmode="transparent" height="350" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;If you can't see the movie, see it &lt;a href="http://www.youtube.com/v/Ddn4MGaS3N4"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Andy McKee was born in Topeka, Kansas, 1979. Played his first guitar at the age of 13, he is now wellknown as "just this guy from Kansas who kind of blew up on the Internet about a week before Christmas". The song you've just heard was titled &lt;span style="font-style: italic;"&gt;Drifting&lt;/span&gt;, and has become one of the hottest sensation over YouTube, which also massively voted by users at Diggs. Since then, even a larger number of video was submitted by YouTube users, showing people attempting to play the same song.&lt;br /&gt;&lt;br /&gt;Andy McKee started his carreer at 2001, when he released his first album &lt;span style="font-style: italic;"&gt;Nocturne&lt;/span&gt;. At the same year, he placed third at the National Fingerstyle Guitar Competition in Winfield, Kansas, and dubbed the youngest competitor to ever place so highly in such competition. What's so special about Andy was, well, the previous says it all -- his unique and complex fingerstyle guitar technique. In 2003, McKee toured in Taiwan with Jacques Stotzem, Isato Nakagawa, and Masaaki Kishibe, and earned first place in Kansas' Miscellaneous Acoustic Instrument contest with a Ron Spillers harpguitar he purchased from Steven Bennett in 2002. 2 years later, he released his second album &lt;span style="font-style: italic;"&gt;Dreamcatcher&lt;/span&gt;, where he features several tracks which uses the same harpguitar. His recent CD, &lt;span style="font-style: italic;"&gt;Art Of Motion&lt;/span&gt; was released on CandyRAT Records in 2005, featuring several songs from his recent album such as Drifting, Practice Is Perfect and several new and wonderful songs such as RyLynn and For My Father. The album has also earned considerable praise from established acoustic guitarists such as Don Ross, whom McKee is currently on the same label with and has noted as one of his favorite artists.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3163024798412466597-5223368851560854950?l=bhimz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bhimz.blogspot.com/feeds/5223368851560854950/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3163024798412466597&amp;postID=5223368851560854950' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/5223368851560854950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/5223368851560854950'/><link rel='alternate' type='text/html' href='http://bhimz.blogspot.com/2007/03/drifting-around-with-andy.html' title='Drifting Around With Andy'/><author><name>BhimZ</name><uri>http://www.blogger.com/profile/13310359494949667528</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://img.photobucket.com/albums/v337/BhimZ/avatar-1.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3163024798412466597.post-6485089243786159052</id><published>2007-02-14T10:12:00.000+07:00</published><updated>2007-02-14T13:34:55.873+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='game'/><title type='text'>Crest Breaker Is On The Way</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;br /&gt;A bit behind from schedule, but the game is progressing nicely. CrestBreaker is re-scheduled for end of February 2007. Here are the new screenshots, enjoy :)&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://photobucket.com/" target="_blank"&gt;&lt;img src="http://img.photobucket.com/albums/v337/BhimZ/logo.png" alt="Photobucket - Video and Image Hosting" border="0" /&gt;&lt;/a&gt;&lt;a href="http://photobucket.com/" target="_blank"&gt;&lt;img src="http://img.photobucket.com/albums/v337/BhimZ/playing.jpg" alt="Photobucket - Video and Image Hosting" border="0" /&gt;&lt;/a&gt;&lt;a href="http://photobucket.com/" target="_blank"&gt;&lt;img src="http://img.photobucket.com/albums/v337/BhimZ/FIRE.jpg" alt="Photobucket - Video and Image Hosting" border="0" /&gt;&lt;/a&gt;&lt;a href="http://photobucket.com/" target="_blank"&gt;&lt;img src="http://img.photobucket.com/albums/v337/BhimZ/sumarryreport.jpg" alt="Photobucket - Video and Image Hosting" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3163024798412466597-6485089243786159052?l=bhimz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bhimz.blogspot.com/feeds/6485089243786159052/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3163024798412466597&amp;postID=6485089243786159052' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/6485089243786159052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/6485089243786159052'/><link rel='alternate' type='text/html' href='http://bhimz.blogspot.com/2007/02/crest-breakers-is-on-way.html' title='Crest Breaker Is On The Way'/><author><name>BhimZ</name><uri>http://www.blogger.com/profile/13310359494949667528</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://img.photobucket.com/albums/v337/BhimZ/avatar-1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3163024798412466597.post-4636572164339640050</id><published>2007-02-09T10:15:00.000+07:00</published><updated>2007-02-09T09:54:30.960+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='image galleries'/><title type='text'>Just Play It</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img.photobucket.com/albums/v337/BhimZ/msflightsimulator.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px;" src="http://img.photobucket.com/albums/v337/BhimZ/msflightsimulator.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3163024798412466597-4636572164339640050?l=bhimz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bhimz.blogspot.com/feeds/4636572164339640050/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3163024798412466597&amp;postID=4636572164339640050' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/4636572164339640050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/4636572164339640050'/><link rel='alternate' type='text/html' href='http://bhimz.blogspot.com/2007/02/just-play-it.html' title='Just Play It'/><author><name>BhimZ</name><uri>http://www.blogger.com/profile/13310359494949667528</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://img.photobucket.com/albums/v337/BhimZ/avatar-1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3163024798412466597.post-8012647777773362767</id><published>2007-02-09T09:23:00.000+07:00</published><updated>2007-06-27T14:29:17.014+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='game'/><title type='text'>Pong.. In First Person Mode</title><content type='html'>&lt;div style="text-align: justify;"&gt;Stumbled upon this online flash game, I can help remembering the old days when Atari consoles are still in. Allthingsflash.com's Curveball is somewhat a remake/clone of the classic Pong game, with a new perspective. What makes this game unique is that the game's perspective is in first person mode, the ball can bounce up/down/left/right compared to the 2D original game. There is also a special Accuracy Bonus and Curve Bonus, which occurs when you hit the ball with certain parts of your racket. The graphics are pretty basic, being a simple flash game an all, but the idea is fresh. Definitely worth a try during boring office hours, or just passing some leisure time. Too bad the high score feature doesn't seem to work, all I got was an empty sheet when I clicked on it.&lt;br /&gt;&lt;br /&gt;You can try the game at &lt;a href="http://allthingsflash.com/files/games/curveball.swf"&gt;http://allthingsflash.com/files/games/curveball.swf&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3163024798412466597-8012647777773362767?l=bhimz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bhimz.blogspot.com/feeds/8012647777773362767/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3163024798412466597&amp;postID=8012647777773362767' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/8012647777773362767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/8012647777773362767'/><link rel='alternate' type='text/html' href='http://bhimz.blogspot.com/2007/02/pong-in-first-person-mode.html' title='Pong.. In First Person Mode'/><author><name>BhimZ</name><uri>http://www.blogger.com/profile/13310359494949667528</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://img.photobucket.com/albums/v337/BhimZ/avatar-1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3163024798412466597.post-7842317585390776447</id><published>2007-02-06T08:44:00.000+07:00</published><updated>2007-06-27T14:32:33.668+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='j2me'/><title type='text'>Bitwise State Setting: It Ain't Wise, It's Bitwise</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight: bold;"&gt;[Techie's Tech Babble]&lt;/span&gt;&lt;br /&gt;When dealing with OOP, it's quite certain that we'll be facing with boolean states. In most cases, we commonly create a boolean field, and assign then with a getter and setter method. For example, we want to set a form to be visible or hidden by the click of a button. We create a boolean field called visible, and then a getter and setter method for the field.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;&lt;span style="font-style: italic;font-family:verdana;" &gt;boolean visible = false;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:verdana;" &gt;public void setVisible(boolean visible) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:verdana;" &gt;    this.visible = visible;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:verdana;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:verdana;" &gt;public boolean clickButton() {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:verdana;" &gt;    if(visible == true) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:verdana;" &gt;        // sets the form visible here&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:verdana;" &gt;    } else {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:verdana;" &gt;        // sets the form hidden here&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:verdana;" &gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:verdana;" &gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Things are just peachy from here, but what happens when we have a lot of boolean states to set here? For instance, we want the form to visible, centered and enabled that just hidden/visible. Well be looking at a lot of boolean fields and probably several getter/setter methods.&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;boolean visible = false;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;boolean centered = false;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;boolean enabled = false;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;public void setVisible(boolean visible) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;    this.visible = visible;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;span style="font-weight: bold; font-style: italic;"&gt; public void setCentered(boolean centered) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;     this.centered= centered;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt; }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt; public void setEnabled(boolean enabled) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;     this.enabled= enabled;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt; }&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And if that's not enough, try imagining how these setting are called from another class.&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;MyForm form = new MyForm();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;form.setVisible(true);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;form.setCentered(true);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;form.setEnabled(true);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As you can see, it's not very pretty. I have to write three lines of code just to set my form's appearance. What happens if I put more states in it? Even worse, what if it was a code for setting the positions for a text string in a form? We could be facing with a long line of codes here, just to set those states.&lt;br /&gt;&lt;br /&gt;Fortunately, this is where bitwise state setting comes to the rescue. Instead of setting those states as boolean states, we could alternately set them as a single int state, and then use bitwise operation to set those states. Confused? Let's just try them, by altering the previous codes.&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;public final static int VISIBLE_STATE = 2; // the states' value must be the power of 2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;public &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;final static &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;int CENTERED_STATE = 4;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;public&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;span style="font-weight: bold; font-style: italic;"&gt; final static &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;span style="font-weight: bold; font-style: italic;"&gt; int DEFAULT_STATE = 8;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;public int state = 0;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;public void setState(int state) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;    this.state = state;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;public void clickButton() {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;    if((state &amp; VISIBLE_STATE) == VISIBLE_STATE) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;       //sets the form as visible&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;    } else {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;        //sets the form as hidden&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;    if((state &amp; CENTERED_STATE) == CENTERED_STATE) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;        //sets the form centered&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;     } else {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;         //sets the form left-aligned&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;     }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;    if((state &amp; DEFAULT_STATE) == DEFAULT_STATE) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;        //sets the form as default&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;     } else {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;         //sets the form inactive&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;     }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now I'm not going to explain much, you'll probably get more from you mathematics about bitwise operation -- just browse your mathemathic books, or google around. I'll skip to the good stuff. It seems that if you have an integer value by the power of 2 (2,4,8,16,32 etc), joins them with a bitwise OR, then joins them again with the original value with a bitwise AND, the result is the original value itself. For instance, ( 2|4 ) &amp; 2 = 2. This gives us an advantage in our state setting. Have a look how the invocating method is now optimized:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;font-size:85%;" &gt;&lt;span style="font-family:verdana;"&gt;MyForm form = new MyForm();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;form.setState(MyForm.VISIBLE_STATE|MyForm.CENTERED_STATE);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Isn't it more convenient that way? Try experimenting more with bitwise operations. If you find something new, or find some problem upon implementation, do let me know ;)&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3163024798412466597-7842317585390776447?l=bhimz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bhimz.blogspot.com/feeds/7842317585390776447/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3163024798412466597&amp;postID=7842317585390776447' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/7842317585390776447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/7842317585390776447'/><link rel='alternate' type='text/html' href='http://bhimz.blogspot.com/2007/02/bitwise-state-setting-it-aint-wise-its.html' title='Bitwise State Setting: It Ain&apos;t Wise, It&apos;s Bitwise'/><author><name>BhimZ</name><uri>http://www.blogger.com/profile/13310359494949667528</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://img.photobucket.com/albums/v337/BhimZ/avatar-1.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3163024798412466597.post-99702182789736328</id><published>2007-01-24T10:00:00.000+07:00</published><updated>2007-06-27T14:30:28.806+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='j2me'/><title type='text'>J2ME Basics: Sounds Please..</title><content type='html'>&lt;span style="font-weight: bold;"&gt;[Techie's Tech Babble]&lt;/span&gt;&lt;br /&gt;This is  my first J2ME tutorial,  so  I'd like to appologize first for any  unclarity  on  any  other mistakes.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Playing a sound was one of my problems when I started developing J2ME games. How do I play a wav sound in J2ME? It was not long after I browse Nokia's API documentation that I found out how. In MIDP 1.0, playing sounds was mainly decided by the platform itself. Nokia seems to provide a good implementation with it's Sound class. Here is a sample of it's implementation:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:verdana;font-size:85%;"  &gt;&lt;span style="font-style: italic;"&gt;Sound sound;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;byte[] buffer = new byte[1644] ; //set buffer to the size of the wav sound's filesize&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;InputStream tune = this.getClass().getResourceAsStream("ding.wav"); //grabs the wav file from a jar file, through an InputStream&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;try {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    tune.read(buffer, 0, buffer.length); // reads the data to a byte array&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    sound = new Sound(buffer, Sound.FORMAT_WAV); //create a new Sound object with buffer, with wav format&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    sound.init(buffer, Sound.FORMAT_WAV); //initialize the Sound object&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    sound.play(1); //plays the sound once, if set to 0 the sound with loop continuously&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;} catch (IOException e) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    e.printStackTrace();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It is a good practice to stop the sound first before playing it again, since it will reduce memory usage for one thing. This can be done simply by calling the sound.stop() method.&lt;br /&gt;&lt;br /&gt;One of the problem with using Nokia's Sound class, is that you have to know the exact size of the wav file being played, since it will only accept byte arrays. Another problem is, of course, portability. This class' implementation is limited to Nokia phones only. However, things are changed with the presence of MIDP 2.0.&lt;br /&gt;&lt;br /&gt;In MIDP 2.0, playing sounds -- and videos as well! -- are handled with a new class called Manager. The class resides under javax.microedition.media of the Mobile Media API (JSR-135). Manager class puts the implementations of sound manipulations above the native phone platform's, giving more portability. So if your phone platform or your SDK support MIDP 2.0, you should try code instead:&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Player sound; //this is the Player object, used to represent the sound/video media&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div  style="text-align: justify; font-weight: bold; font-style: italic;font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;InputStream tune = this.getClass().getResourceAsStream("ding.wav"); //grabs the wav file from a jar file, through an InputStream&lt;br /&gt;try{&lt;br /&gt;  sound = Manager.createPlayer(tune, "audio/x-wav"); // create a wave object from the InputStream of the type wav file&lt;br /&gt;       sound.prefecth(); //initialize the sound&lt;br /&gt;       sound.setMediaTime(0L); //set the media time, just to make sure it's accurate enough&lt;br /&gt;       sound.play(); //play the sound&lt;br /&gt;} catch (Exception e)  {&lt;br /&gt;  e.printStackTrace();&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Creating a sound player through the Manager class does not require the knowledge of the media bytesize, providing easier changes in the media without having to alter the code once again. Also, it can accept streaming media by inserting the URI of the media:&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;sound = Manager.createPlayer("http://bhimz.blogspot.com/ding.wav");&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It is up to you which implementation that you'll use, well actually, dependant to the phone platform you'll developed the game on. But as I am informed, there are many new phones released today with MIDP 2.0 embedded on them. Do experiment on them, and let me know if there are some differences or problems on specific types. ;)&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3163024798412466597-99702182789736328?l=bhimz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bhimz.blogspot.com/feeds/99702182789736328/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3163024798412466597&amp;postID=99702182789736328' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/99702182789736328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/99702182789736328'/><link rel='alternate' type='text/html' href='http://bhimz.blogspot.com/2007/01/j2me-basics-sounds-please.html' title='J2ME Basics: Sounds Please..'/><author><name>BhimZ</name><uri>http://www.blogger.com/profile/13310359494949667528</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://img.photobucket.com/albums/v337/BhimZ/avatar-1.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3163024798412466597.post-5353945693558728936</id><published>2007-01-09T15:27:00.000+07:00</published><updated>2007-01-09T15:56:07.884+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='image galleries'/><category scheme='http://www.blogger.com/atom/ns#' term='gags'/><title type='text'>New Ways Of Using Your Laptop</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_qPCJW7e37n4/RaNXulPjEHI/AAAAAAAAACA/wCL_MQpKJfE/s1600-h/toilet.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp2.blogger.com/_qPCJW7e37n4/RaNXulPjEHI/AAAAAAAAACA/wCL_MQpKJfE/s400/toilet.jpg" alt="" id="BLOGGER_PHOTO_ID_5017950867603787890" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;See more of this at &lt;a href="http://content.techrepublic.com.com/2346-10877_11-6523-3.html"&gt;Tech Republic's Gallery&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3163024798412466597-5353945693558728936?l=bhimz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bhimz.blogspot.com/feeds/5353945693558728936/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3163024798412466597&amp;postID=5353945693558728936' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/5353945693558728936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/5353945693558728936'/><link rel='alternate' type='text/html' href='http://bhimz.blogspot.com/2007/01/new-ways-of-using-your-laptop.html' title='New Ways Of Using Your Laptop'/><author><name>BhimZ</name><uri>http://www.blogger.com/profile/13310359494949667528</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://img.photobucket.com/albums/v337/BhimZ/avatar-1.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_qPCJW7e37n4/RaNXulPjEHI/AAAAAAAAACA/wCL_MQpKJfE/s72-c/toilet.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3163024798412466597.post-7814658002417071015</id><published>2007-01-09T12:16:00.000+07:00</published><updated>2007-06-27T14:34:41.761+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='j2me'/><title type='text'>RCP-like Wizard Page in J2ME</title><content type='html'>&lt;span style="font-weight: bold;"&gt;[Techie's Tech Babble]&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;I get the idea from when I was developing with RCP. It was then, when I saw RCP wizard page concept, in which a base class is defined as a controller, while all the wizard pages are defined inside the class, making them easier to manage. You simply add the pages inside the definition, and then handle them at the exit points. Then I though, why not try adopt this to J2ME canvas pages? I always have problem in maintaining them, as I ussually arrange them into a sequence -- from WelcomePage to GameSelection, then to BattleScreen, to Animation1 or Animation2 etc. So here is my attemp to mimic them in J2ME.&lt;br /&gt;&lt;br /&gt;First of all, let's make the pages class. Here is the source code for the class, which we will call PageCanvas.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold; font-style: italic;font-family:verdana;" &gt;public abstract class PageCanvas extends Canvas {&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold; font-style: italic;font-family:verdana;" &gt;protected abstract void paint(Graphics g);&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold; font-style: italic;font-family:verdana;" &gt;public abstract int exit();&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold; font-style: italic;font-family:verdana;" &gt;public abstract void initialSettings();&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold; font-style: italic;font-family:verdana;" &gt;}&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;There are two methods to note here. First of all, the exit() method. This method returns an exit code, which will be handled by the page handler class to direct the flow of the program to another page. While initialSetting method sets the PageCanvas object before it is displayed. we'll disscuss it's actual implementation later.&lt;br /&gt;&lt;br /&gt;Next is the page handler. I call this class PageSequence class, which is a self managing thread. Here are the codes below:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;font-size:85%;" &gt;&lt;span style="font-family:verdana;"&gt;public class PageSequence {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;private MIDlet midlet;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;private boolean switchPage = true;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;private boolean isRunning = true;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;private PageCanvas[] page;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;private int pageIndex = -1;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;private int pageExitCode = 0;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;public PageSequence(MIDlet midlet) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;    this.midlet = midlet;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;    display = Display.getDisplay(midlet);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;    initPages();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;    try {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;        Thread t = new Thread(this);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;        t.start();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;    } catch (Exception e) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;        e.printStackTrace();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;protected void initPages() {}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;protected void firstPageController() {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;    //this is to initialize the first page, since the pageIndex is still -1.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;    //It will only be called once.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;    page[0].initialSetting();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;    pageIndex = 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;public void run() {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;    try {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;        while (isRunning) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;            if(switchPage) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;            if (pageIndex == -1)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;                firstPageController();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;            else&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;                pageController();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;            display.setCurrent(page[pageIndex]);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;            switchPage = false;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;            }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;            page[pageIndex].repaint();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;            if((pageExitCode = page[pageIndex].exit()) !=0){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;                switchPage = true;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;            }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;            //you can add a thread sleep method here, for the sake of sanity.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;        midlet.notifyDestroyed();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;    } catch (Exception e) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;        e.printStackTrace();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;protected void pageController() {}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Let me explain a bit of how this works. At the initPages() method, we declare all the PageCanvas which we'll use. Next, we put and run PageSequence in a thread, which it will continously check wether a page switch is assigned. Since it is the first time run, it is set to true. At first run, it will run firstPageController(), where the first page is initialized. Page switch is then turned of once more, then the cycle is continued.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Yes, I know. But when does it decides to switch page? The answer lies in the pageController() method, but to understand that lets try to create some sample.&lt;br /&gt;&lt;br /&gt;First, let's create 2 PageCanvas, one is HelloPage that says hello, and ByePage that says goodbye.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold; font-style: italic;font-family:verdana;" &gt;public class HelloPage extends PageCanvas {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;font-family:verdana;" &gt;private exitCode = 0;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;font-family:verdana;" &gt;public void paint(Graphics g) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;font-family:verdana;" &gt;    g.drawString("Hello World",10,10,Graphics.LEFT|Graphics.TOP);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;font-family:verdana;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;font-family:verdana;" &gt;protected void keyPressed(int keyCode) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;font-family:verdana;" &gt;    if (keyCode == KEY_POUND)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;font-family:verdana;" &gt;        exitCode = 1;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;font-family:verdana;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;font-family:verdana;" &gt;public int exit() {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;font-family:verdana;" &gt;    return exitCode;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;font-family:verdana;" &gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;public void initialSetting() {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;    exitCode = 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;public class ByePage extends PageCanvas {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;private exitCode = 0;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;public void paint(Graphics g) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;    g.drawString("Goodbye World",10,10,Graphics.LEFT|Graphics.TOP);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;protected void keyPressed(int keyCode) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;    if (keyCode == KEY_POUND)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;        exitCode = 1;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;public int exit() {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;    return exitCode;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;public void initialSetting() {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;    exitCode = 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;I've added a keyPressed method, so that the page will wait on user input before it switches page. An exit code 1 is returned upon it's invocation, since the main loop will wait until the exit code is changed (initially 0 at every start) before decided to switch page.&lt;br /&gt;&lt;br /&gt;Now make some changes in the initPages() method:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;public void initPages() {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;    page = new PageCanvas[2];&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;    page[0] = new HelloPage();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;    page[1] = new Byepage();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;and finally, the pageSequence() method:&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;protected void pageController() {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;    //control at the end of each page&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;    if (pageIndex==0) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;        page[1].initialSettings();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;        pageIndex = 1;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;        return;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;    if (pageIndex==1) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;        page[0].initialSettings();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;        pageIndex = 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;        return;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Did you spot the trick? When entering pageController, the code check the pageIndex value, then direct the page to the corresponding index of the PageCanvas array. It might not be the most powerful technique, but this trick helps me manage better my code flow upon pages since now I'll only have to lookup PageSequence, add a page in initPages, create a logic for branching simply by making PageCanvas return different exit codes and handle them in pageController. Plus the pages are only created once in PageSequence, giving me more space in memory.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Now let's implement them on a midlet.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;public class HelloMidlet extends MIDlet {&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;protected void startApp() throws MIDletStateChangeException {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;    new PageSequence(this);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;protected void pauseApp() {}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;protected void destroyApp(boolean destroy) throws MIDletStateChangeException {}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;And that's that! You can run the midlet now and see the result. You can expand this method further, like return different exit codes for branching them into different pages. Here is an example:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;protected void pageController() {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;//control at the end of each page&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;if (pageIndex==0) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;if (pageExitCode == 1){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;    page[1].initialSettings();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;    pageIndex = 1;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;else if (pageExitCode == 2){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;    page[2].initialSettings();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;    pageIndex = 2;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;return;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Go ahead and experiment. Hope this been helpful to you, as it was to me ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3163024798412466597-7814658002417071015?l=bhimz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bhimz.blogspot.com/feeds/7814658002417071015/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3163024798412466597&amp;postID=7814658002417071015' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/7814658002417071015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/7814658002417071015'/><link rel='alternate' type='text/html' href='http://bhimz.blogspot.com/2007/01/rcp-like-wizard-page-in-j2me.html' title='RCP-like Wizard Page in J2ME'/><author><name>BhimZ</name><uri>http://www.blogger.com/profile/13310359494949667528</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://img.photobucket.com/albums/v337/BhimZ/avatar-1.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3163024798412466597.post-158876943058771395</id><published>2007-01-05T09:39:00.000+07:00</published><updated>2007-06-27T14:37:05.350+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='techtalk'/><title type='text'>Do You Know Your Jar?</title><content type='html'>To most of us Java programmers, we're probably most familiar with the term jar files, which is where we pack our classes into. But how well do we know our jars? Do we create our own META-INF, or let our IDE creates them by default? &lt;a href="http://articles.techrepublic.com.com/5100-3513_11-6144835.html?tag=nl.e027"&gt;Here&lt;/a&gt; is a review by Peter V. Mikhalenko in TechRepublic on jar file structure, and the META-INF definition.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3163024798412466597-158876943058771395?l=bhimz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bhimz.blogspot.com/feeds/158876943058771395/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3163024798412466597&amp;postID=158876943058771395' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/158876943058771395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/158876943058771395'/><link rel='alternate' type='text/html' href='http://bhimz.blogspot.com/2007/01/do-you-know-your-jar.html' title='Do You Know Your Jar?'/><author><name>BhimZ</name><uri>http://www.blogger.com/profile/13310359494949667528</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://img.photobucket.com/albums/v337/BhimZ/avatar-1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3163024798412466597.post-9063744124268139539</id><published>2006-12-13T09:04:00.000+07:00</published><updated>2007-06-27T14:38:13.703+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gadget'/><title type='text'>Nintendo Wii Uncovered</title><content type='html'>&lt;div style="text-align: justify;"&gt;While waiting for Nintendo Wii's release in Indonesia, I searched the web for any info I can find about the anticipated console and found some of this shots of the console being taken apart for examination. Too bad they didn't open the Wii remote -- I'd love to see how it works.&lt;br /&gt;&lt;br /&gt;Here are the  &lt;a href="http://content.techrepublic.com.com/2346-10877_11-38683.html?tag=nl.e138"&gt;image gallery&lt;/a&gt;, courtesy of Tech Republic.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3163024798412466597-9063744124268139539?l=bhimz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bhimz.blogspot.com/feeds/9063744124268139539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3163024798412466597&amp;postID=9063744124268139539' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/9063744124268139539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/9063744124268139539'/><link rel='alternate' type='text/html' href='http://bhimz.blogspot.com/2006/12/nintendo-wii-uncovered.html' title='Nintendo Wii Uncovered'/><author><name>BhimZ</name><uri>http://www.blogger.com/profile/13310359494949667528</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://img.photobucket.com/albums/v337/BhimZ/avatar-1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3163024798412466597.post-8457498384005725310</id><published>2006-12-13T08:44:00.000+07:00</published><updated>2007-06-27T14:38:57.890+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='techtalk'/><title type='text'>Bruce Eckel About Misconducted Code Reuse</title><content type='html'>&lt;div style="text-align: justify;"&gt;The author of the Thinking In Java series, Bruce Eckel, wrote on his blog about the problem of misconducted code reuse in development, and the resulting 'framework-itis' dilemma. He quoted,&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="font-style: italic;"&gt;"Framework-itis in general is one way, and probably the most highly-criticized way, that attempts to reuse code go bad."  &lt;p&gt;&lt;/p&gt;&lt;p&gt;"I postulate that most of the corruption in code resue comes when someone decides ahead of time that we should reuse code. That is, when it is driven by perception rather than need. I have personally found reusable code at the point when I need it a second time, as a process of discovery. And usually it's something I can't anticipate, or at least don't anticipate it in exactly the way that I need it."&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Read the whole article in his blog &lt;a href="http://www.artima.com/weblogs/viewpost.jsp?thread=167168"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3163024798412466597-8457498384005725310?l=bhimz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bhimz.blogspot.com/feeds/8457498384005725310/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3163024798412466597&amp;postID=8457498384005725310' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/8457498384005725310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/8457498384005725310'/><link rel='alternate' type='text/html' href='http://bhimz.blogspot.com/2006/12/bruce-eckel-about-misconducted-code.html' title='Bruce Eckel About Misconducted Code Reuse'/><author><name>BhimZ</name><uri>http://www.blogger.com/profile/13310359494949667528</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://img.photobucket.com/albums/v337/BhimZ/avatar-1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3163024798412466597.post-4351324352770931991</id><published>2006-12-12T14:39:00.000+07:00</published><updated>2006-12-12T16:40:18.490+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><category scheme='http://www.blogger.com/atom/ns#' term='family'/><title type='text'>A Cup Of My Morning Cofee</title><content type='html'>&lt;div style="text-align: justify;"&gt;For some personal health reasons, namely, my unco-operative stomach, I haven't been able to take my sip of my regular doze of coffe lately. The ol' mug is presently filled with nothing but tea or plain water, though a couple of times I manage to sneak in some coffee from my personal stash :D But nevertheless, I dearly misses starting my day with a cup of good coffee.&lt;br /&gt;&lt;br /&gt;What is it about this black compound, made with black aromatic beans that is so special? Is it it's fine fragrance, or it's bitter but rather energizing smell? In on of her books, Filosofi Kopi, Dewi Lestari (also known as Dee) describes coffee through the eyes of one of her characters in the story. Through many detailed events, she describes the taste of coffee as one of many other things, a taste that brought many memories. A sip of coffee can bring you a tale of your success, or a familiar taste of friendship. But in my own conclusion after reading her short story, there is no complex philosophy under a cup of coffee, rather than it gives you warmth.&lt;br /&gt;&lt;br /&gt;No, in case you haven't figure it out, this is not about the drink. The coffee I'm implying here is our lifelong experience. Have we really taken it, like a cup of coffee every morning? Life is filled with many memories, some are bitter, others are somewhat sweet. Some people take their coffee with sugar and milk, while some others prefer them plain black. Some like them thick as an esspresso, while some like latte. People like and have their coffe in more than a thousand ways. But when it's all drunk up, do we linger on the taste, or simply return to our daily life? Or do we ask for seconds? Does life have a second helping? You know, as I thought about it, not many of us ever take a time to stop and think back what we've been through. Do we ever give time to think about our childhood, or yesterday's chat with a friend? Or do we ever give time to stop and simply feel our surrounding? Yes, life nowadays is like driving in the fast lane, but are we getting somewhere, of are we just passing through? These are question that maybe we rarely ask ourselves, and as a cup of coffee that is taken merely as a daily routine, it has lost it's taste.&lt;br /&gt;&lt;br /&gt;Yet if we linger too long, would we still enjoy it's taste? What if we hold on to something to dearly, and afterwards lose it? Would we still enjoy our cup in the days to come? Would we still want another cup of coffee? Memories can bare scars so deep, that even in the years to come, it would still hurt as hell. But again, if we look at them as nothing but another cup of cofee, the easiest way to lose a bad aftertaste is not by destroying the next cup by adding so much milk and sugar, but to just let go of the taste. Have a piece of candy, you can have your next coffee afterwards. Just don't ruin your teeth in the process.&lt;br /&gt;&lt;br /&gt;So what is it that I'm trying to say? Pretty much that life is not to different than your cup of morning coffee. You can take them or not if you like, but cherish them. And right now, even though I not taking my morning coffee literally, but I still get my cup daily.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Dedicated to my dearest sister, have a good cup of cofee.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3163024798412466597-4351324352770931991?l=bhimz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bhimz.blogspot.com/feeds/4351324352770931991/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3163024798412466597&amp;postID=4351324352770931991' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/4351324352770931991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/4351324352770931991'/><link rel='alternate' type='text/html' href='http://bhimz.blogspot.com/2006/12/cup-of-my-morning-cofee.html' title='A Cup Of My Morning Cofee'/><author><name>BhimZ</name><uri>http://www.blogger.com/profile/13310359494949667528</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://img.photobucket.com/albums/v337/BhimZ/avatar-1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3163024798412466597.post-5566926414629585222</id><published>2006-12-11T13:54:00.000+07:00</published><updated>2007-06-27T14:51:02.779+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='randomrant'/><title type='text'>Aa' Gym, UU Poligami &amp; Yahya Zaini</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight: bold;"&gt;[Nagger's Note]&lt;/span&gt;&lt;br /&gt;What does those three has in common, except a name that rhymes? Well for starters, tiga hal itu nampaknya topik yang paling sering dibicarakan  masyarakat &amp;amp; media akhir-akhir ini. Dan tiga-tiganya sama-sama menimbulkan kontroversi. Yang pertama, da'i kondang yang dipuja banyak orang, mendadak melakukan poligami -- sebuah tindakan yang "diharamkan" oleh kebanyakan, kalau tidak semua, pengikut wanitanya. Yang kedua, UU poligami yang segera dikeluarkan pemerintah setelah itu, yang konon mengatur keberadaan dan pelaksanaan poligami. Yang terakhir tidak terlalu berhubungan, tapi bikin cukup banyak orang ribut karena setiap orang lain bercerita, selalu ada versi yang baru dan berbeda.&lt;br /&gt;&lt;br /&gt;Gw sebenernya agak heran kenapa hal seperti ini dibahas dengan sangat heboh dan segitu besar-besarannya, sedang setahu gw, baik ketiga-tiganya sebetulnya bukan masalah yang baru di sekeliling kita. Praktek poligami sudah berlangsung cukup lama di negeri ini -- sebut saja pelawak Qomar, atau pemilik rumah makan Wong Solo. Kenapa bisa sampai blow up seperti ini? Satu sisi berkata, Aa adalah seorang public figure. Sebagai seorang public figure, dia bertanggung jawab kepada umatnya, dan segala tindak tanduknya haruslah bisa menjadi contoh yang baik kepada para pengikutnya. Tapi kalau demikian, kenapa harus Aa Gym? Kenapa tidak ketika Qomar atau yang lainnya? Atau better yet, kenapa harus issue poligami yang harus dibuat UU? Ketika dulu salah satu seleb muda kita mengadakan pesta ulang tahun yg besar-besaran, tidak dibuat UU anti kemewahan? Padahal kalau menurut hemat gw, itu lebih 'menohok' masyarakat kita, mengingat banyak rakyat kita yang masih di bawah garis kemiskinan.&lt;br /&gt;&lt;br /&gt;Hey, don't get me wrong. Gw bukannya mendukung poligami, atau memusuhi kemewahan. Gw jg berkeyakinan bahwa satu pasangan aja udah cukup, orang satu aja dapetnya udah susah kok.. hehehe.. :D Tapi gw juga don't really have anything against poligami, selama itu dilakukan dengan fair, dalam arti dengan persetujuan dari si istri. Bukan udah nikah, trus baru ngomong sama istrinya.. itu mah ke-'gap' namanya. Gw cuma menanyakan satu pertanyaan sederhana -- why now? Dan jawabannya gw dapet jumat kemaren, di sebuah kotbah jumat. Si penceramah berceramah dengan sangat berapi-api, jujur aja gak semua gw dengerin :D tapi satu kata-kata dia yang gw tangkep dan sangat gw setujui: "Kita semua terlalu mengidolakan seorang Aa Gym". Benar-benar kata-kata yang sangat tepat. Gw merasa, bahwa kebanyakan dari kita selama ini mencari-cari, dan bahkan masih terus mencari, seseorang yang dapat kita jadikan panutan. Seseorang yang bisa kita gugu dan tiru, seorang guru. Tapi apakah sepanjang pencarian itu, kita beralih dari tujuan kita sebenarnya? Mungkinkan kita berubah, dari seorang guru, kita beralih mencari seorang juru selamat? Seorang nabi, mungkin nabi terakhir di zaman ini? Pertanyaan terakhir ini terasa begitu kontradiktif, karena meskipun bukan seorang ahli kitab, tapi gw inget diajarin oleh guru agama kita bahwa nabi sudah tidak ada lagi. Tapi apa benar kita menerimanya? Semua terasa makin make sense ketika gw melihat sinetron2 yang ada di TV kita. Kita semua menyaksikan bagaimana ibu peri menggoyangkan tongkat sihir, menghukum yang jahat dan me-reward yang baik, dan mungkin saja, kita mengharapkan ibu peri ada di tengah kita. Oh, don't laugh. Biarpun kamu tertawa, perlu kamu ketahui acara itu memiliki rating yang cukup tinggi, sehingga bertahan begitu lama. So, am I just babbling, atau mungkinkah memang itu ada benarnya?&lt;br /&gt;&lt;br /&gt;Dunia manusia ini memang cukup aneh. Kita bisa melihat bagaimana pengakuan Aa segera berubah menjadi sebuah rancangan UU, atau bagaimana pengakuan Maria Eva berubah menjadi perang lawyer terkemuka. Semua itu mengalir secara lancar seperti sebuah tayangan TV, mendadak ada yg bilang gini, ada yang bilang gitu, dan gw ada di bangku penonton, menonton dengan bengong. Lucunya, sampai saat ini gw masih belum bisa tahu, "Who's the hero?" "Who's the bad guy?" "Where's the popcorn?" "Why should I care?" Aah.. betapa susahnya mencari film yang bagus akhir-akhir ini..&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3163024798412466597-5566926414629585222?l=bhimz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bhimz.blogspot.com/feeds/5566926414629585222/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3163024798412466597&amp;postID=5566926414629585222' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/5566926414629585222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/5566926414629585222'/><link rel='alternate' type='text/html' href='http://bhimz.blogspot.com/2006/12/aa-gym-uu-poligami-yahya-zaini.html' title='Aa&apos; Gym, UU Poligami &amp; Yahya Zaini'/><author><name>BhimZ</name><uri>http://www.blogger.com/profile/13310359494949667528</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://img.photobucket.com/albums/v337/BhimZ/avatar-1.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3163024798412466597.post-6561727019008659913</id><published>2006-12-08T11:36:00.000+07:00</published><updated>2007-06-27T14:51:54.364+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gadget'/><title type='text'>USB Missile Launcher - Fire Away!</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_qPCJW7e37n4/RXkHEIlq9EI/AAAAAAAAAAk/VtXu7cIrcBM/s1600-h/usbmissile.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp1.blogger.com/_qPCJW7e37n4/RXkHEIlq9EI/AAAAAAAAAAk/VtXu7cIrcBM/s400/usbmissile.jpg" alt="" id="BLOGGER_PHOTO_ID_5006040228405376066" border="0" /&gt;&lt;/a&gt;Now this is an interesting gadget.. I'd definitely want one.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.kleargear.com/5004.html"&gt;Klear Gear&lt;/a&gt; telah mengeluarkan sebuah gadget baru yang cukup unik -- sebuah missile launcher bertenaga USB. Mainan yg mereka label sebagai &lt;span style="font-style: italic;"&gt;Office Toy&lt;/span&gt; ini dapat dihubungkan dengan komputer, berputar, dan menembakkan 3 peluru soft-foam ke teman-teman kantor anda (or anyone you just don't like) lewat aplikasi yang diinstall.&lt;br /&gt;&lt;br /&gt;Biarpun dibilang USB powered, tapi mainan ini tetap perlu 3 batere AA buat ngejalaninnya. Sayang pelurunya soft-foam, coba kalau hard plastic atau metal (mwahahahaha.... &gt;:)))&lt;br /&gt;&lt;br /&gt;As far as I know, gadget ini blum ada di Indonesia. Tapi kalo mau, coba aja beli di websitenya seharga $39.99. Kapan yah masuknya? Pingin....&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3163024798412466597-6561727019008659913?l=bhimz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bhimz.blogspot.com/feeds/6561727019008659913/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3163024798412466597&amp;postID=6561727019008659913' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/6561727019008659913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/6561727019008659913'/><link rel='alternate' type='text/html' href='http://bhimz.blogspot.com/2006/12/usb-missile-launcher-fire-away.html' title='USB Missile Launcher - Fire Away!'/><author><name>BhimZ</name><uri>http://www.blogger.com/profile/13310359494949667528</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://img.photobucket.com/albums/v337/BhimZ/avatar-1.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_qPCJW7e37n4/RXkHEIlq9EI/AAAAAAAAAAk/VtXu7cIrcBM/s72-c/usbmissile.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3163024798412466597.post-5835112646116011095</id><published>2006-12-08T08:43:00.000+07:00</published><updated>2007-06-27T14:25:54.127+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='randomrant'/><title type='text'>Life After The M-Day</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_qPCJW7e37n4/RXjHT4lq9DI/AAAAAAAAAAU/Z1EiBKrHah4/s1600-h/mrd.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp3.blogger.com/_qPCJW7e37n4/RXjHT4lq9DI/AAAAAAAAAAU/Z1EiBKrHah4/s400/mrd.jpg" alt="" id="BLOGGER_PHOTO_ID_5005970130244138034" border="0" /&gt;&lt;/a&gt;Life is never the same after marriage. Sebelum nikah, gw orangnya boros. Setelah nikah, lebih boros lagi. Damn, no one told me pengeluaran buat keluarga itu banyak buanget! But not that I complain though, di balik disadvantage-nya ada banyak hal baik yang gw dapet. Satu contoh sederhana, gw sebelum nikah orangnya jorok. Berhubung suka begadang dan banyak kerjaan, personal hygiene biasanya berada di bawah list kewajiban gw. Sekarang setelah nikah, setiap pagi mau berangkat ke kantor gw selalu nemuin sikat gigi yg udah dikasih odol, sampo yg udah dibalik, dan pisau cukur di sisi bak mandi yang secara gak langsung bilang, "For the love of God, use them!!" Walhasil gw jadi lebih bersih, wangi dan rapi -- ini dibuktikan dengan ucapan keluarga gw, tante dan bude2 gw bahkan temen2 kantor gw, "Waa.. Bimbim jadi wangi!" (Really, they do)&lt;br /&gt;&lt;br /&gt;Tapi sebenernya how much does one marriage change a guy's life? How does a marriage serve us? Gw rasa ini pertanyaan yang memiliki banyak interpretasi bagi semua orang, kaum adam in particular. Beberapa orang, pernikahan itu menyatukan visi dari dua orang yang berbeda. Beberapa lagi secara ekstrim mengumpamakan sebagai memasang rantai di kaki kita. Yang terakhir ini umumnya orang yang sudah lama atau masih menikmati kehidupan mereka sebagai bujangan. Well, I'm not married long enough to make any conclusion, tapi sejauh gw bisa bilang, ternyata kehidupan menikah itu gak semengerikan yang gw kira.&lt;br /&gt;&lt;br /&gt;Gw dulu sering berpikir, bahwa kalo nikah itu kita harus siap semua, khususnya secara finansial. Artinya, mesti sedia duit banyak. Ini gak sepenuhnya salah sih, buktinya gw skr harus strict dengan keuangan gw. Tapi the strange thing is, gw ternyata fine-fine aja. Stiap hari gw makan minum dengan baik, dan setiap kita perlu sesuatu, gw dan istri selalu menemukan cara untuk memenuhinya. Dan gw masih bisa nabung, padahal gaji gw juga gak gede2 banget. Lalu masalah kesiapan mental. Gw dulu mikir bahwa gw harus belajar bertanggung jawab, harus bener2 disiplin dengan diri gw, bla-bla-bla lainnya -- pokoknya jadi bapak-bapak lah.  Tapi ternyata gak juga tuh, di balik banyak hal yg gw belajar untuk adjust, gw tetep diri gw -- better even. Dan antara gw dan istri gw masih tetep kayak waktu kita pacaran (Well, maybe not exactly, but close) Jadi, apa yg sebenernya salah dalam perhitungan gw? Later I found out, bahwa gw menghitung untuk satu orang, sementara seharusnya gw menghitung dua.&lt;br /&gt;&lt;br /&gt;Jadi apa kesimpulannya? Ya belum ada. Khan sudah gw bilang tadi, gw kawin masih baru -- belum waktunya gw ngasih kesimpulan apa-apa. Tapi being married is just another process in life yang kita pasti (unless under certain conditions) kita lewati. And I'm sure deep down inside, every man wants to. But to do that, I personally harus keluar dari pola pikir lama gw sebagai seorang bujangan, dan mungkin mengorbankan beberapa hal. Tapi in my own conclusion, I am glad to be married.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3163024798412466597-5835112646116011095?l=bhimz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bhimz.blogspot.com/feeds/5835112646116011095/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3163024798412466597&amp;postID=5835112646116011095' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/5835112646116011095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/5835112646116011095'/><link rel='alternate' type='text/html' href='http://bhimz.blogspot.com/2006/12/life-after-m-day.html' title='Life After The M-Day'/><author><name>BhimZ</name><uri>http://www.blogger.com/profile/13310359494949667528</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://img.photobucket.com/albums/v337/BhimZ/avatar-1.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_qPCJW7e37n4/RXjHT4lq9DI/AAAAAAAAAAU/Z1EiBKrHah4/s72-c/mrd.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3163024798412466597.post-1964474349682159963</id><published>2006-12-07T11:39:00.000+07:00</published><updated>2007-06-27T14:24:49.531+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='randomrant'/><title type='text'>Smack Up - Smack Down</title><content type='html'>&lt;span style="font-weight: bold;"&gt;[Nagger's Note]&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Yup folks, setelah wabah flu burung dan sapi gila, Indonesia  kembali diserang wabah baru. Namanya adalah "TV Violence", atau lebih dikenal sebagai wabah Smackdown (Smackius Mbonjrotikus).  Berbeda dengan wabah2 sebelumnya yang banyak makan korban jiwa, wabah satu ini cuma memakan satu korban jiwa -- and a hard slap in our faces. Bagaimana mungkin kita baru sadar sekarang akan bahayanya, sedang acara tersebut sudah ada sekitar satu dekade. It's amazing that one life is necessary for making us think.&lt;br /&gt;&lt;br /&gt;Belakangan ini, gw melihat di berita bagaimana pemerintah menangani masalah ini dengan 'serius'. CD-CD game/film Smackdown dirazia. Penjual mainannya juga dirazia. Acara TV-nya distop. Masyarakat juga melakukan tindakan yg senada, dengan merusak dan mainan-mainan/gambar Smackdown. But is it really the answer? Is it really making effects? What kind of effects?&lt;br /&gt;&lt;br /&gt;Gw bukan ahli dalam hal ini, cuman seorang cynic yg melihat masalah dari sisi lainnya. These past years, the world has changed a lot. Informasi sudah berjalan dengan begitu cepat dan mudahnya, sehingga bisa didapat dengan sebuah click dari mouse saja. Begitu pula dunia anak-anak. Kini dunia anak-anak sudah tidak sepolos yang kita kira. Baru lebaran kemaren-kemaren,  ponakan  gw yg masih SD udah ngomongin  soal pacarnya yg segambreng -- sesuatu yang bahkan gw gak pernah pikirkan sampe saat gw udah jerawatan dulu. How do they know all these stuff? Who's to blame for that? Tidak lain adalah diri kita sendiri (Keep reading, I'll tell you why in a minute).&lt;br /&gt;&lt;br /&gt;Setelah mengamati cukup lama, I can help but wonder. Bagaimana seorang anak bisa begitu agresif? Namun belakangan sebuah pertanyaan menganggu gw: Kalau emang Smackdown segitu kerasnya, kenapa juga kita biarkan anak kecil nonton? Kalau emang karena main game-nya, kenapa kita bolehin main? Pertanyaan ini menyadarkan gw betapa sebenernya kita itu begitu ignorant, begitu gak perduli. Sebuah komentar yg lucu keluar dari pengakuan salah seorang ibu yg anaknya dibeliin mainan Smackdown, "Abis kalo gak dibeliin gak mau belajar." Let me ask you, apa kalau anakmu nangis karena minta dibeliin pisau, apa iya kamu beliin? Don't get me wrong, gw mengakui klo Smackdown acara yg sangat keras, dan gak ada satupun nilai moral di dalamnya kecuali entertainment semata. Tapi kita berantas game-nya, filmnya, stop tayangan TV-nya, lalu apa? Masih ada Smackdown2 lainnya di masa depan. Buser ada di TV siang-siang, pas anak-anak di rumah. Menampilkan sisi kriminalitas yg keras dan terkadang kejam, apa gak bahaya bu? Bredel juga? Klo semua dibredel, gw rasa acara TV yg sisa nanti tinggal Dora The Explorer aja.&lt;br /&gt;&lt;br /&gt;Kita selalu mencari jalan keluar yang mudah. Blame someone, destroy something, wait for the next one to come lalu ulangi lagi prosesnya. Gw malah lebih takut lagi ngeliat anak2 diajarin agresif dengan merobek2 gambar Smackdown. Berhentilah berpikir pendek. C'mon, use your head and look deeper. Masalah yang sebenarnya adalah kita tidak mau mengikuti perkembangan jaman, dan anak-anak pada khususnya. Berapa kali kita menemani anak kita nonton, atau mungkin main game? Bila kita membeli buku untuk anak, pernahkah kita membaca buku itu dulu, melihat apa ceritanya? Kalau beli game, pernah gak kita lihat tulisan kecil di ujungnya, apakah itu PG13 atau bukan? Tahukah anda kalau anda tekan menu di remote TV, ada option di dalamnya yg bertulisan "Parental Lock"? It's time kita lebih mengambil tanggung jawab, dan menyelami dunia anak-anak lebih jauh. Seperti iklan Cap Lang bilang, "Buat anak kok coba-coba?"&lt;br /&gt;&lt;br /&gt;Again, don't get me wrong. Gw bukannya melindungi stasiun TV berkait, atau acara tersebut. The have their share on this as well. Tapi di zaman seperti ini, menunjukkan jari mencari siapa yang salah, atau demo dsb hanya menambal lubang di saringan saja -- kamu tutup yang satu, keluar lagi dari satunya. It's time we really get our hands dirty, dan menyelesaikan masalah dari pusat yang sebenarnya -- rumah kita sendiri.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3163024798412466597-1964474349682159963?l=bhimz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bhimz.blogspot.com/feeds/1964474349682159963/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3163024798412466597&amp;postID=1964474349682159963' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/1964474349682159963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/1964474349682159963'/><link rel='alternate' type='text/html' href='http://bhimz.blogspot.com/2006/12/smack-up-smack-down.html' title='Smack Up - Smack Down'/><author><name>BhimZ</name><uri>http://www.blogger.com/profile/13310359494949667528</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://img.photobucket.com/albums/v337/BhimZ/avatar-1.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3163024798412466597.post-5666418012980571365</id><published>2006-12-06T17:24:00.000+07:00</published><updated>2007-06-27T14:23:36.950+07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='randomrant'/><category scheme='http://www.blogger.com/atom/ns#' term='game'/><title type='text'>Ahh.. The Ol' RPG Book</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img.photobucket.com/albums/v337/BhimZ/fighter-color2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 677px; height: 191px;" src="http://img.photobucket.com/albums/v337/BhimZ/fighter-color2.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Bongkar - bongkar file lama gw, ternyata gw menemukan beberapa file lama dari proyek RPG Gamebook gw dulu. It brings back olf memories, waktu gw masih terobsesi bikin &lt;a href="http://www.geocities.com/bhimz2001"&gt;buku rpg ala D&amp;amp;D&lt;/a&gt; dulu.. sebelum gw ikut training Java. Semua bikin sendiri, mulai dari ruleset, story, sampe ilustrasi. Gw merasa lebih mirip kayak graphic artist ketimbang programmer at that time :)) Gw akan melanjutkan lagi ini nanti, mudah2an setelah punya cukup banyak waktu dan resource yang lebih memadai. Feel free to see the old work though, termasuk illustrasi-illustrasi gw di &lt;a href="http://bhimz.deviantart.com/"&gt;sini&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3163024798412466597-5666418012980571365?l=bhimz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bhimz.blogspot.com/feeds/5666418012980571365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3163024798412466597&amp;postID=5666418012980571365' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/5666418012980571365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3163024798412466597/posts/default/5666418012980571365'/><link rel='alternate' type='text/html' href='http://bhimz.blogspot.com/2006/12/ahh-ol-rpg-book.html' title='Ahh.. The Ol&apos; RPG Book'/><author><name>BhimZ</name><uri>http://www.blogger.com/profile/13310359494949667528</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://img.photobucket.com/albums/v337/BhimZ/avatar-1.jpg'/></author><thr:total>0</thr:total></entry></feed>
