<?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-7318083042943213196</id><updated>2012-03-01T23:02:16.697+02:00</updated><category term='ruby'/><category term='silly'/><category term='actionbar'/><category term='N9'/><category term='skript kreator'/><category term='visual basic'/><category term='fedora 16'/><category term='shotwell'/><category term='development'/><category term='fedora'/><category term='wine'/><category term='code exchange'/><category term='gemrb'/><category term='freecol'/><category term='c#'/><category term='Meego'/><category term='grails'/><category term='fedora 14'/><category term='rawstudio'/><category term='gnome 3'/><category term='barcode scanner'/><category term='vim'/><category term='avengers movie'/><category term='linux'/><category term='jfokus'/><category term='shell script'/><category term='photo editing'/><category term='greg bear'/><category term='mapview'/><category term='java'/><category term='fluxbox'/><category term='Nokia'/><category term='programming'/><category term='games'/><category term='rvm'/><category term='lenovo thinkpad edge e320'/><category term='netbeans'/><category term='fedora 15'/><category term='android'/><category term='ruby on rails'/><category term='shoppinglist'/><category term='flac'/><category term='slim'/><category term='openttd'/><category term='halo:cryptum'/><category term='mp3'/><category term='maps'/><category term='mono'/><category term='todo list'/><category term='screencast'/><title type='text'>FWFAILL</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>47</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-6642968171323452715</id><published>2012-03-01T23:02:00.000+02:00</published><updated>2012-03-01T23:02:16.708+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shoppinglist'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>ShoppingList Build 2 released</title><content type='html'>Download the latest build of ShoppingList from the Android page. I added new feature to the map. See what happens when you tap a marker!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-6642968171323452715?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/6642968171323452715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2012/03/shoppinglist-build-2-released.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/6642968171323452715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/6642968171323452715'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2012/03/shoppinglist-build-2-released.html' title='ShoppingList Build 2 released'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-148169746501256463</id><published>2012-02-28T20:33:00.000+02:00</published><updated>2012-02-28T20:33:08.028+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mapview'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Adding markers to MapView from location name in Android</title><content type='html'>A few weeks ago I posted about using the MapView in Android but the map alone doesn't add much value to the app. Part 2 of &lt;a href="http://developer.android.com/resources/tutorials/views/hello-mapview.html"&gt;this tutorial&lt;/a&gt; explains how to add markers to the map and is detailed enough so that I don't have to go through it here. Adding a map marker requires a GeoPoint which is simply the latitude and longitude of the location. Usually though people know the locations by name instead of coordinates. Transforming street address or location name into coordinates is called geocoding (reverse geocoding transforms coordinates into a partial address) and the Android framework has a class called Geocoder (in android.location package) just for this.&lt;br /&gt;&lt;br /&gt;Geocoder's constructor takes a Context as an argument so the easiest way to use it would be in the map activity and passing the activity itself as the Context parameter. Once instantiated you can call getFromLocationName(String location, int maxResults) from the geocoder. The method returns a List of Address objects (Address is also part of android.locate package) and takes two arguments. The first argument is the location name or street address and the second is the maximum numbers of results the method will return, using small values (1-5) is recommended. The method will throw and IOException if geocoding service is not available.&lt;br /&gt;&lt;code&gt;Geocoder geocoder = new Geocoder(this);&lt;br /&gt;try {&lt;br /&gt;List&amp;lt;address&amp;gt; = geocoder.getFromLocationName("Mannerheimintie 12, Helsinki", 1);&lt;br /&gt;} catch (IOException e) { }&lt;/code&gt;&lt;br /&gt;Now we can iterate through the List or just use the first item (note that List has a zero based index) to get an Address object and call getLatitude() and getLongitude() from this object. Those methods will throw and IllegalStateException if no coordinates were assigned to the address. Before you do this though it's worth noting that the Geocoder does not throw an exception if there were no coordinates so you might end up with an empty List. Before we can create a new GeoPoint there's one more thing we need to fix.&lt;br /&gt;&lt;br /&gt;getLatitude() and getLongitude() returns a double while the GeoPoint constructor takes integers as arguments. Those arguments are actually microdegrees (degrees * 1E6). So a simple double to int conversion is needed.&lt;br /&gt;&lt;code&gt;int lat = (int) (address.get(0).getLatitude() * 1e6);&lt;br /&gt;int lon = (int) (address.get(0).getLongitude() * 1e6);&lt;br /&gt;GeoPoint point = new GeoPoint(lat, lon);&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-148169746501256463?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/148169746501256463/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2012/02/adding-markers-to-mapview-from-location.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/148169746501256463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/148169746501256463'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2012/02/adding-markers-to-mapview-from-location.html' title='Adding markers to MapView from location name in Android'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-4083113739391919108</id><published>2012-02-19T15:32:00.000+02:00</published><updated>2012-02-19T15:32:01.091+02:00</updated><title type='text'>Feelings after 24 hours of coding</title><content type='html'>So tired... Here are some photos from Windows Phone 7 Hackathon&amp;nbsp;&lt;a href="http://lightbox.com/postcard/eyDwj6qZVsCt5xKmxVmHCA"&gt;http://lightbox.com/postcard/eyDwj6qZVsCt5xKmxVmHCA&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-4083113739391919108?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/4083113739391919108/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2012/02/feelings-after-24-hours-of-coding.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/4083113739391919108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/4083113739391919108'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2012/02/feelings-after-24-hours-of-coding.html' title='Feelings after 24 hours of coding'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-441867715023014759</id><published>2012-02-12T17:07:00.001+02:00</published><updated>2012-02-12T17:09:07.603+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shoppinglist'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>ShoppingList now available for download</title><content type='html'>I've released an early version of ShoppingList. See the Android page for download link. The app will only work on Android version 2.3.3 and later.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-441867715023014759?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/441867715023014759/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2012/02/shoppinglist-now-available-for-download.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/441867715023014759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/441867715023014759'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2012/02/shoppinglist-now-available-for-download.html' title='ShoppingList now available for download'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-2067931207447906617</id><published>2012-02-09T20:58:00.000+02:00</published><updated>2012-02-09T20:58:29.038+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='barcode scanner'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Scanning barcodes in Android apps</title><content type='html'>The Android developers blog has a nice code snippet for adding&amp;nbsp;barcode&amp;nbsp;scanner to apps,&amp;nbsp;&lt;a href="http://android-developers.blogspot.com/2012/02/share-with-intents.html"&gt;http://android-developers.blogspot.com/2012/02/share-with-intents.html&lt;/a&gt;. The code is at the top of the post but the rest is good stuff too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-2067931207447906617?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/2067931207447906617/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2012/02/scanning-barcodes-in-android-apps.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/2067931207447906617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/2067931207447906617'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2012/02/scanning-barcodes-in-android-apps.html' title='Scanning barcodes in Android apps'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-4128340974351708083</id><published>2012-02-02T15:13:00.004+02:00</published><updated>2012-02-05T13:13:55.011+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='maps'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Using MapView in Android apps</title><content type='html'>Since adding a map view to ShoppingList I've been meaning to write about using it. Maps require the use of Google APIs (install with the SDK Manager) and a Maps API key. You can get an API key from &lt;a href="http://code.google.com/intl/fi-FI/android/maps-api-signup.html"&gt;http://code.google.com/intl/fi-FI/android/maps-api-signup.html&lt;/a&gt;. While developing you can use the debug certificate's MD5 fingerprint but if you're publishing the app you'll need to sign it (&lt;a href="http://developer.android.com/guide/publishing/app-signing.html"&gt;read more here&lt;/a&gt;). Open up a command line or terminal and navigate to your home folder where you should find .android folder (it will be hidden on Linux and OS X). Type keytool -list -keystore debug.keystore and the fingerprint will displayed that you'll need to get the API key. Note that if you have JDK 7, keytool -list will print SHA fingerprint by default so you'll need to add -v option. Don't lose the key!&lt;br /&gt;&lt;code&gt;keytool [-v] -list -keystore debug.keystore&lt;/code&gt;&lt;br /&gt;To create a MapView make a layout file with com.google.android.maps.MapView element and add the API key as the value of attribute android:apiKey.&lt;br /&gt;&lt;code&gt;&amp;lt;com.google.android.maps.MapView&lt;br /&gt;android:layout_width="match_parent"&lt;br /&gt;android:layout_height="match_parent"&lt;br /&gt;android:clickable="true"&lt;br /&gt;android:apiKey="apikey"/&amp;gt;&lt;/code&gt;&lt;br /&gt;Finally you have to edit the application's manifest file. Add the &amp;lt;uses-library&amp;gt; element as child of &amp;lt;application&amp;gt; and the &amp;lt;uses-permission&amp;gt; as child of &amp;lt;manifest&amp;gt;.&lt;br /&gt;&lt;code&gt;&amp;lt;uses-library android:name="com.google.android.maps" /&amp;gt;&lt;br /&gt;&amp;lt;uses-permission android:name="android.permission.INTERNET"/&amp;gt;&lt;/code&gt;&lt;br /&gt;Naturally you'll still have to make an activity that uses the layout. MapView activities extend the MapActivity. Below is an example of the onCreate method that also sets the built in zoom controls.&lt;br /&gt;&lt;code&gt;@Override&lt;br /&gt;public void onCreate(Bundle savedInstanceState) {&lt;br /&gt;super.onCreate(savedInstanceState);&lt;br /&gt;setContentView(R.layout.mapmain);&lt;br /&gt;mapView = (MapView) findViewById(R.id.mapview);&lt;br /&gt;mapView.setBuiltInZoomControls(true);&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;You can find more detailed info about the maps API as well as the API reference in &lt;a href="http://code.google.com/intl/fi-FI/android/add-ons/google-apis/maps-overview.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-4128340974351708083?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/4128340974351708083/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2012/02/using-mapview-in-android-apps.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/4128340974351708083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/4128340974351708083'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2012/02/using-mapview-in-android-apps.html' title='Using MapView in Android apps'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-6346140983124159388</id><published>2012-01-27T19:28:00.001+02:00</published><updated>2012-01-27T19:28:58.764+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='actionbar'/><category scheme='http://www.blogger.com/atom/ns#' term='shoppinglist'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Ready, Set, Action Bar!</title><content type='html'>I tweaked the ShoppingList a little to include an action bar when the app is run on ICS (Ice Cream Sandwich). Adding the action bar while retaining backwards compatibility is fairly simple. First create a menu XML file with the necessary items. The &lt;b&gt;&amp;lt;item&amp;gt;&lt;/b&gt; entries must have &lt;b&gt;android:showAsAction&lt;/b&gt; attribute. Next edit the activity source file's &lt;b&gt;onCreateOptionsMenu&lt;/b&gt; to inflate the menu from external XML. If you have implemented &lt;b&gt;onMenuItemSelected&lt;/b&gt; replace it with an implementation of &lt;b&gt;onOptionsItemSelected&lt;/b&gt; though I'm not sure if it makes any difference. Below are sample codes for the menu XML and the source file. A detailed guide on action bars can be found at&amp;nbsp;&lt;a href="http://developer.android.com/guide/topics/ui/actionbar.html"&gt;http://developer.android.com/guide/topics/ui/actionbar.html&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;lt;menu xmlns:android="http://schemas.android.com/apk/res/android"&amp;gt;&lt;br /&gt;&amp;lt;item android:id="@+id/item1" android:title="@string/list_menu_add_list" android:showAsAction="ifRoom|withText"&amp;gt;&amp;lt;/item&amp;gt;&lt;br /&gt;&amp;lt;/menu&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;private static final int INSERT_ID = R.id.item1;&lt;br /&gt;@Override&lt;br /&gt;public boolean onCreateOptionsMenu(Menu menu) {&lt;br /&gt;super.onCreateOptionsMenu(menu);&lt;br /&gt;MenuInflater inflater = getMenuInflater();&lt;br /&gt;inflater.inflate(R.menu.mainmenu, menu);&lt;br /&gt;return true;&lt;br /&gt;}&lt;br /&gt;@Override&lt;br /&gt;public boolean onOptionsItemSelected(MenuItem item) {&lt;br /&gt;switch (item.getItemId()) {&lt;br /&gt;case INSERT_ID:&lt;br /&gt;createList();&lt;br /&gt;return true;&lt;br /&gt;}&lt;br /&gt;return super.onOptionsItemSelected(item);&lt;br /&gt;}&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-6346140983124159388?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/6346140983124159388/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2012/01/ready-set-action-bar.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/6346140983124159388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/6346140983124159388'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2012/01/ready-set-action-bar.html' title='Ready, Set, Action Bar!'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-5324544806577311902</id><published>2012-01-21T22:35:00.000+02:00</published><updated>2012-01-21T22:35:35.689+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='silly'/><title type='text'>Extra! Saturday funnies</title><content type='html'>Found this page from Hacker News, &lt;a href="http://www.fang.ece.ufl.edu/reject.html"&gt;http://www.fang.ece.ufl.edu/reject.html&lt;/a&gt;. It's a good reminder that getting rejected is not the end of the world. All the people on the page have had an impact in the IT world and while we may not know it the chances are that we are using something they made every day. I recommend looking up the guys on&amp;nbsp;Wikipedia&amp;nbsp;or something simply out of respect. Then, when you see RIP&amp;nbsp;hash tags&amp;nbsp;with their names on twitter trends you'll know why they're there. At the top of the page is also a link for an annual performance review of one Albert Einstein. For those who are incapable of reading more than 160 characters, below are some quotes which even you should find funny.&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;"The author mentions computing machines, such as the recent ENIAC. Well, I guess one could connect such machines, but a recent IBM memo stated that a dozen or so such machines will be sufficient for all the computing that we'll ever need in the foreseeable future, so there won't be a whole lot of connecting going on with only a dozen ENIACs!"&lt;/i&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;i&gt;"Electronic mail on the Arpanet is indeed a nice gizmo, but it is unlikely it will ever be diffused outside academic circles and public laboratories—environments in which the need to maintain confidentiality is scarcely pressing."&lt;/i&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;i&gt;"Granted, we are seeing the appearance of so-called microcomputers, such as the recently announced Apple II, but their limitations are so great that neither they nor their descendants will have the power necessary to communicate through a network."&lt;/i&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-5324544806577311902?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/5324544806577311902/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2012/01/extra-saturday-funnies.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/5324544806577311902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/5324544806577311902'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2012/01/extra-saturday-funnies.html' title='Extra! Saturday funnies'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-2968085142431455410</id><published>2012-01-21T19:52:00.000+02:00</published><updated>2012-01-21T19:52:53.361+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='shoppinglist'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Adding another table to ShoppingList database</title><content type='html'>ShoppingList now supports creating items for lists but currently there's no way the view those items (except the adb shell). This sounds simple but there's a catch. The Android SQLiteDatabase class' execSQL() method can only execute one sql statement. Meaning that concatenating "create table...;" strings will not work. There are at least two solutions for this. One is to create a String for every statement and call execSQL() with those strings as arguments.&lt;br /&gt;&lt;br /&gt;I chose perhaps more complicated way but I think it will be more maintainable in the long run. First I moved the statements to the strings.xml file (create ONE new string). Be sure to put one statement per line and surround the statements with " signs (see sources for sample). Next I made a new method for executing multiple sql statements in DatabaseHelper (inner class of ShoppingListDbAdapter). Then in the onCreate and onUpgrade methods I parse a String[] array with the statements from strings.xml (you'll need a Context for this) and pass the array as argument to the new method.&lt;br /&gt;&lt;code&gt;private void execMultipleSQL(SQLiteDatabase db, String[] sql) {&lt;br /&gt;for (String s : sql) {&lt;br /&gt;if (s.trim().length() &gt; 0)&lt;br /&gt;db.execSQL(s);&lt;br /&gt;}&lt;br /&gt;}&lt;/code&gt;&lt;br /&gt;Parsing array from string resource.&lt;br /&gt;&lt;code&gt;String[] sql = context.getString(R.string.shoppinglistdb_onCreate).split("\n");&lt;/code&gt;&lt;br /&gt;One more thing worth noting is an issue that emerged when passing the id of a list to the EditItem activity. The problem is with this line of code.&lt;br /&gt;&lt;code&gt;mRowId = extras != null ? extras.getLong(ShoppingListDbAdapter.KEY_ROWID) : null;&lt;/code&gt;&lt;br /&gt;Because we passed the listId as an argument, extras won't be null but neither will it contain a value for key ShoppingListDbAdapter.KEY_ROWID and getLong() will return the default value 0. To counter this I added this line of code after the previous statement.&lt;br /&gt;&lt;code&gt;if (mRowId == 0) mRowId = null;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-2968085142431455410?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/2968085142431455410/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2012/01/adding-another-table-to-shoppinglist.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/2968085142431455410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/2968085142431455410'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2012/01/adding-another-table-to-shoppinglist.html' title='Adding another table to ShoppingList database'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-6683192512033209372</id><published>2012-01-17T23:41:00.001+02:00</published><updated>2012-02-28T20:39:24.652+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='greg bear'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='shoppinglist'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><category scheme='http://www.blogger.com/atom/ns#' term='halo:cryptum'/><title type='text'>Passing arguments to activity in Android</title><content type='html'>I've made some progress on ShoppingList and I must confess it feels good to push something to the code repository. Today I decided how items will be added to a list and made an activity for editing items on the list. At the moment it's not working but I'm confident I can make it work in the near future. This also revealed a new problem. How to tell the list item which list it belongs to? We need to pass the list id as an argument to the EditItem activity. That is done by calling putExtra() method in the Intent class. putExtra() has a lot of signatures for different purposes.&lt;br /&gt;&lt;code&gt;Intent i = new Intent(this, EditItem.class);&lt;br /&gt;// pass the id of the list as argument&lt;br /&gt;i.putExtra("listId", mRowId);&lt;/code&gt;&lt;br /&gt;On a completely different matter I'm currently reading &lt;a href="http://www.amazon.co.uk/Halo-Cryptum-Book-Forerunner-Trilogy/dp/0330545620/ref=sr_1_6?s=books&amp;amp;ie=UTF8&amp;amp;qid=1326836078&amp;amp;sr=1-6"&gt;Halo: Cryptum by Greg Bear&lt;/a&gt;. The novel takes place in the Halo universe and is the first part of Forerunner trilogy. I've read about a quarter of it and so far it's been pretty good. If you're into Halo or even sci-fi in general you should look into it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-6683192512033209372?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/6683192512033209372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2012/01/passing-arguments-to-activity-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/6683192512033209372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/6683192512033209372'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2012/01/passing-arguments-to-activity-in.html' title='Passing arguments to activity in Android'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-8954251029144738614</id><published>2012-01-11T16:35:00.001+02:00</published><updated>2012-01-11T16:35:56.665+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='shoppinglist'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Database operations for ShoppingList</title><content type='html'>I've committed a version of ShoppingList (to GitHub) that includes simple database operations. If you look closely you'll notice an uncanny resemblance between my db adapter and the db adapter of the Notepad tutorial on android.com. There's one thing though the tutorial neglects to do and that is close the database connection. This results in error messages like this "close() was never explicitly called on database" in the LogCat. I solved this problem by calling the close() method of the db adapter in the onDestroy() in the activity.&lt;br /&gt;&lt;code&gt;@Override&lt;br /&gt;protected void onDestroy() {&lt;br /&gt;super.onDestroy();&lt;br /&gt;mDbHelper.close();&lt;br /&gt;}&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-8954251029144738614?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/8954251029144738614/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2012/01/database-operations-for-shoppinglist.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/8954251029144738614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/8954251029144738614'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2012/01/database-operations-for-shoppinglist.html' title='Database operations for ShoppingList'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-1149458603397410961</id><published>2012-01-07T21:22:00.002+02:00</published><updated>2012-01-07T21:24:01.224+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='shoppinglist'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>First commit to ShoppingList</title><content type='html'>I've committed the first pieces of source code of ShoppingList to GitHub. So far the app doesn't really do anything. There's one menu entry called "Add List" and if you click (or tap) it a new activity opens where you can input the details of the list. The edit list activity has one button which takes you back to starting screen and that's it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-1149458603397410961?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/1149458603397410961/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2012/01/first-commit-to-shoppinglist.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/1149458603397410961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/1149458603397410961'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2012/01/first-commit-to-shoppinglist.html' title='First commit to ShoppingList'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-1040208941815760648</id><published>2012-01-05T16:36:00.000+02:00</published><updated>2012-01-05T16:36:43.732+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>ShoppingList application</title><content type='html'>Today I started developing an app called ShoppingList for Android. I also created a new page called Android on this blog where you can find information about the app.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-1040208941815760648?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/1040208941815760648/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2012/01/shoppinglist-application.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/1040208941815760648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/1040208941815760648'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2012/01/shoppinglist-application.html' title='ShoppingList application'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-8528793572497307980</id><published>2011-12-14T12:46:00.000+02:00</published><updated>2011-12-14T12:46:49.247+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Android device storage in Linux</title><content type='html'>I recently bought a new Samsung Android phone. However connecting it to my PC was not as simple as I had thought. The phone I have had something called MTP(Media Transfer Protocol) enabled by default that is Microsoft technology. So to access the flash memory on the device when plugged in I had to enable debugging mode on the device. To do this go to Settings&gt;Applications&gt;Development&gt;USB debugging. After that there should a notification that USB is connected. Tap that notification and a new activity should appear. Tap the connect to PC and auto mount should do the rest.&lt;br /&gt;&lt;br /&gt;Now to some sad news. I have to downgrade back to Windows 7. The reason to this is the experimental support for 3D in VirtualBox. 3D is needed to make XNA games and use the WP7 emulator. But with Windows comes better battery performance and working suspend state so it's not all that bad. So there won't be posts about Linux anymore but I'll still make coding updates. The Android address book app that I said I would be making is likely to be changed to another app on the Android platform. I'm little behind on my Android developing plans but I'm confident I'll manage to do something real soon now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-8528793572497307980?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/8528793572497307980/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2011/12/android-device-storage-in-linux.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/8528793572497307980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/8528793572497307980'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2011/12/android-device-storage-in-linux.html' title='Android device storage in Linux'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-3789394459882944783</id><published>2011-12-07T22:33:00.000+02:00</published><updated>2011-12-07T22:33:18.236+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='mp3'/><category scheme='http://www.blogger.com/atom/ns#' term='flac'/><title type='text'>Converting flac to mp3</title><content type='html'>I recently ripped a CD to flac files but since I didn't know if my new phone would play them (this would have been easy to test but I'll never turn away from "challenge" like this) I decided to convert them to mp3. The operation is relatively easy but converting files one by one is tedious. To start with you'll need &lt;b&gt;flac&lt;/b&gt; and &lt;b&gt;lame&lt;/b&gt;, note that you'll need &lt;a href="http://rpmfusion.org/"&gt;rpmfusion&lt;/a&gt; repos for lame. flac converts the flacs to wav and lame converts the wavs to mp3s. To help with the task I wrote this small script (with the help of &lt;a href="http://mamchenkov.net/wordpress/2010/07/08/flac2mp3/"&gt;http://mamchenkov.net/wordpress/2010/07/08/flac2mp3/&lt;/a&gt;).&lt;br /&gt;&lt;code&gt;#!/bin/bash&lt;br /&gt;dir=$1&lt;br /&gt;for f in "$dir"*.flac&lt;br /&gt;do&lt;br /&gt;base=`basename "$f" .flac`&lt;br /&gt;flac -d "$f"&lt;br /&gt;lame -V0 "$dir$base".wav "$dir$base".mp3&lt;br /&gt;rm "$dir$base".wav&lt;br /&gt;done&lt;/code&gt;&lt;br /&gt;When running the script you pass the directory as parameter. The script requires the '/' at the end of the directory to work. The -d option tells flac to decode the files (as opposed to encode). The -V0 option makes the mp3s high quality VBR. Finally the wav files are removed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-3789394459882944783?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/3789394459882944783/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2011/12/converting-flac-to-mp3.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/3789394459882944783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/3789394459882944783'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2011/12/converting-flac-to-mp3.html' title='Converting flac to mp3'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-6677525104887430141</id><published>2011-12-05T23:38:00.000+02:00</published><updated>2011-12-05T23:38:12.119+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='todo list'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Todo list</title><content type='html'>A todo list is something I've been meant to do for a while now and today I finally got one set up. To help me with it I downloaded an app called &lt;a href="http://todotxt.com/"&gt;Todo.txt&lt;/a&gt;. It's command line app but very easy to use. The website has a good 3 minute video on how to use the app. Once you've extracted the archive give &lt;b&gt;todo.sh&lt;/b&gt; executable rights with &lt;b&gt;chmod&lt;/b&gt;. To make it&amp;nbsp;usable&amp;nbsp;add the path to todo.sh to your &lt;b&gt;$PATH&lt;/b&gt;&amp;nbsp;and make an alias for it in &lt;b&gt;.bashrc&lt;/b&gt;. Below is a sample .bashrc file with the necessary statements.&lt;br /&gt;&lt;code&gt;PATH=$PATH:/home/aleksi/todotxt&lt;br /&gt;export PATH&lt;br /&gt;alias t='todo.sh -d /home/aleksi/todotxt/todo.cfg'&lt;/code&gt;&lt;br /&gt;The app is also available on the Android Market for a small fee. Currently it utilizes Dropbox to sync the todo.txt between your Android device and PC.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-6677525104887430141?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/6677525104887430141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2011/12/todo-list.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/6677525104887430141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/6677525104887430141'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2011/12/todo-list.html' title='Todo list'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-1242263343185169324</id><published>2011-11-14T14:34:00.000+02:00</published><updated>2011-11-14T14:34:45.776+02:00</updated><title type='text'>Busy, busy, busy...</title><content type='html'>I've been neglecting this blog for over 2 weeks but I assure you, it's not forgotten. Simply put I've been busy with school work and reading comic books. Enjoy these two links while you impatiently wait for updates.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.tlc-systems.com/babbage.htm"&gt;http://www.tlc-systems.com/babbage.htm&lt;/a&gt;&amp;nbsp;- programming language of the future, named after Charles Babbage&lt;br /&gt;&lt;a href="http://thedailywtf.com/"&gt;http://thedailywtf.com/&lt;/a&gt;&amp;nbsp;- contrary to the name it's not updated daily, read the sidebar WTF also&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-1242263343185169324?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/1242263343185169324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2011/11/busy-busy-busy.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/1242263343185169324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/1242263343185169324'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2011/11/busy-busy-busy.html' title='Busy, busy, busy...'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-4568898123623374101</id><published>2011-10-26T15:45:00.000+03:00</published><updated>2011-10-26T15:45:55.530+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='silly'/><title type='text'>Press the confuse key to continue</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-ouGK2aU0ozg/Tqf-OyIhOqI/AAAAAAAAAEk/JDHSIjosGxw/s1600/confuse_key.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://2.bp.blogspot.com/-ouGK2aU0ozg/Tqf-OyIhOqI/AAAAAAAAAEk/JDHSIjosGxw/s200/confuse_key.png" width="132" /&gt;&lt;/a&gt;&lt;/div&gt;The confuse key, nuff said.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-4568898123623374101?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/4568898123623374101/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2011/10/press-confuse-key-to-continue.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/4568898123623374101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/4568898123623374101'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2011/10/press-confuse-key-to-continue.html' title='Press the confuse key to continue'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-ouGK2aU0ozg/Tqf-OyIhOqI/AAAAAAAAAEk/JDHSIjosGxw/s72-c/confuse_key.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-5786939088849026682</id><published>2011-10-21T12:00:00.000+03:00</published><updated>2011-10-21T12:00:55.616+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jfokus'/><title type='text'>New books!</title><content type='html'>Received two new books from Amazon today, &lt;a href="http://www.amazon.co.uk/gp/product/1935182358"&gt;Spring in Action&lt;/a&gt; and &lt;a href="http://www.amazon.co.uk/gp/product/1449389694"&gt;Programming Android&lt;/a&gt;. The last book about Spring I ordered didn't do me any good so I have high hopes about this one. If you're still waiting for reviews about the last books I ordered you can read them at amazon.co.uk.&lt;br /&gt;&lt;br /&gt;Today I discovered an event or expo called &lt;a href="http://www.jfokus.se/jfokus/index.jsp?lang=en#page=page-1"&gt;Jfokus&lt;/a&gt;. Jfokus is held in Stockholm, Sweden. As you might now Sweden is very close to Finland which makes this event ideal to attend for people with my interests. Except it isn't. With ticket prices ranging from 1995 SEK to 4995 SEK (and that's only if you register before 15 November) attending would be a financial disaster for me.&lt;br /&gt;&lt;br /&gt;The exchange rate for EUR/SEK was 9,0978 at the moment of writing this post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-5786939088849026682?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/5786939088849026682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2011/10/new-books.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/5786939088849026682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/5786939088849026682'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2011/10/new-books.html' title='New books!'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-4342274583187282306</id><published>2011-10-19T15:51:00.000+03:00</published><updated>2011-10-19T15:51:39.034+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='grails'/><title type='text'>Metaprogramming magic</title><content type='html'>Some of posts ago I said that I'm learning the Grails web framework. That said, imagine you have a database table for storing all the crap on your&amp;nbsp;work desk. Two fields on that table are size and lastMovedDate. Now let's say we want to find all items that were moved yesterday. It's as simple as calling findAllByLastMovedDate() -method! If we wanted to find just one item that is certain size we call the findBySize() -method. Or we could call the findBySizeAndLastMovedDate() -method to find certain sized item that was moved yesterday. It's like magic!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-4342274583187282306?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/4342274583187282306/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2011/10/metaprogramming-magic.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/4342274583187282306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/4342274583187282306'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2011/10/metaprogramming-magic.html' title='Metaprogramming magic'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-1816053886586815484</id><published>2011-10-12T15:27:00.000+03:00</published><updated>2011-10-12T15:27:25.749+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='avengers movie'/><title type='text'>Avengers assemble!</title><content type='html'>Even at the risk of being seen as even bigger nerd than I already am, I simply have to point you reader(s) to the first Avengers trailer.&amp;nbsp;&lt;a href="http://www.youtube.com/watch?v=eOrNdBpGMv8"&gt;http://www.youtube.com/watch?v=eOrNdBpGMv8&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-1816053886586815484?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/1816053886586815484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2011/10/avengers-assemble.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/1816053886586815484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/1816053886586815484'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2011/10/avengers-assemble.html' title='Avengers assemble!'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-5766882267243318152</id><published>2011-10-10T23:43:00.000+03:00</published><updated>2011-10-10T23:43:07.125+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Future projects</title><content type='html'>I've started learning Android by making an address book app. I know phones already have one but I think it's a good starting point. I can't test the app with an actual Android phone (yet) so for now I've to rely on the emulator. Anyway you can expect a new page to appear on this blog &lt;a href="http://www.urbandictionary.com/define.php?term=real%20soon%20now"&gt;real soon now&lt;/a&gt;. Also, a tip for fellow Android developers who are just starting: pressing CTRL+F11 (or F12) will change the orientation of the screen.&lt;br /&gt;&lt;br /&gt;Link of the day:&amp;nbsp;&lt;a href="http://www.netmagazine.com/features/10-amazing-android-development-tips"&gt;http://www.netmagazine.com/features/10-amazing-android-development-tips&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-5766882267243318152?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/5766882267243318152/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2011/10/future-projects.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/5766882267243318152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/5766882267243318152'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2011/10/future-projects.html' title='Future projects'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-4940042163272777212</id><published>2011-10-06T17:14:00.000+03:00</published><updated>2011-10-06T17:14:25.759+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='fedora'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Setting up Android development</title><content type='html'>If you're on a 64-bit OS, starting developing for Android is not exactly and out-of-the-box experience. The Android SDK, which you'll need to develop to Android, is 32-bit so you'll need to install some i686 packages. &lt;a href="https://fedoraproject.org/wiki/HOWTO_Setup_Android_Development"&gt;This guide&lt;/a&gt; is a pretty good starting point but you might need add &lt;b&gt;SDL.i686&lt;/b&gt; to list of packages. Also I recommend downloading the Eclipse JEE version from&amp;nbsp;&lt;a href="http://www.eclipse.org/"&gt;http://www.eclipse.org/&lt;/a&gt;&amp;nbsp;just in case you'll do some JavaEE development. Also on some guides tell you to use the &lt;a href="http://www.oracle.com/technetwork/java/index.html"&gt;Oracle Java&lt;/a&gt; instead of OpenJDK.&lt;br /&gt;&lt;br /&gt;To do that first download and install the JDK and then use alternatives to change what implementation you use. Note that if you didn't use the default installation location you must specify that location on the arguments (instead of /usr/java/).&lt;br /&gt;&lt;code&gt;#alternatives --install /usr/bin/java java /usr/java/latest/bin/java 2000&lt;/code&gt;&lt;br /&gt;After this running java -version should display the following:&lt;br /&gt;&lt;code&gt;$java -version&lt;br /&gt;java version "1.7.0"&lt;br /&gt;Java(TM) SE Runtime Environment (build 1.7.0-b147)&lt;br /&gt;Java HotSpot(TM) 64-Bit Server VM (build 21.0-b17, mixed mode)&lt;/code&gt;&lt;br /&gt;If the output is something like this:&lt;br /&gt;&lt;code&gt;java version "1.6.0_22"&lt;br /&gt;OpenJDK Runtime Environment (IcedTea6 1.10.3) (fedora-59.1.10.3.fc16-x86_64)&lt;br /&gt;OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode)&lt;/code&gt;&lt;br /&gt;You'll need to configure the java alternative.&lt;br /&gt;&lt;code&gt;#alternatives --config java&lt;/code&gt;&lt;br /&gt;This should set you up quite nicely. &lt;a href="http://developer.android.com/index.html"&gt;The Android developer&lt;/a&gt; site is a good place to start learning. The resources section has some tutorials.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-4940042163272777212?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/4940042163272777212/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2011/10/setting-up-android-development.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/4940042163272777212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/4940042163272777212'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2011/10/setting-up-android-development.html' title='Setting up Android development'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-8473665205792732283</id><published>2011-10-01T21:47:00.001+03:00</published><updated>2011-10-01T21:50:18.965+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='screencast'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome 3'/><title type='text'>Screencast: Gnome 3 Application menu</title><content type='html'>I recorded screencast on how to add your own entries to the application menu in Gnome 3. There's no narration but I'm sure you'll cope just fine. Looking at existing .desktop files is also a great way to learn, especially about the category names. You can record screencasts in Gnome 3 by pressing ctrl+alt+shift+r and stop recording with the same key combination.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-934d56c762bd9016" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v20.nonxt7.googlevideo.com/videoplayback?id%3D934d56c762bd9016%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1332991720%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D28AB62276C6DA9A85299BC5078E4FC87AFA0E192.64F5B3363AF449152C5D928F354BC6BBF25CC493%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D934d56c762bd9016%26offsetms%3D5000%26itag%3Dw160%26sigh%3DvnVObun9daNrqzSZxdQZSlbiads&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v20.nonxt7.googlevideo.com/videoplayback?id%3D934d56c762bd9016%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1332991720%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D28AB62276C6DA9A85299BC5078E4FC87AFA0E192.64F5B3363AF449152C5D928F354BC6BBF25CC493%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D934d56c762bd9016%26offsetms%3D5000%26itag%3Dw160%26sigh%3DvnVObun9daNrqzSZxdQZSlbiads&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;Sorry about the bad quality. Apparently uploading the video straight to blogger was not a good idea.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-8473665205792732283?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/8473665205792732283/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2011/10/screencast-gnome-3-application-menu.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/8473665205792732283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/8473665205792732283'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2011/10/screencast-gnome-3-application-menu.html' title='Screencast: Gnome 3 Application menu'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-5155063489739525505</id><published>2011-09-30T15:33:00.000+03:00</published><updated>2011-09-30T15:33:06.420+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fedora 16'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='lenovo thinkpad edge e320'/><title type='text'>Tools of the trade</title><content type='html'>This week I received a new tool to work with, a Lenovo ThinkPad E320. Main advantage of this new machine is 8 times more memory than my POS desktop. Of course having a laptop makes taking work with you so much easier. So now that I can actually do some work expect new developing related content in the following weeks. I picked up Android developing and am also looking into Groovy and Grails for web development. Some sucky pictures are in the end of the post.&lt;br /&gt;&lt;br /&gt;Now, because the E320 has something called EFI installing Linux can be a bit tricky. After&amp;nbsp;struggling&amp;nbsp;for some time I managed to install Fedora 16, which is of course an alpha version and should not be used in production. I'm using it anyway since I actually managed to install it. The other choice would have been keeping the pre-installed Windows 7 and using Linux in a virtual machine, but that would be&amp;nbsp;preposterous.&lt;br /&gt;&lt;br /&gt;In conclusion it might be a good idea to do a little research before erasing that pre-installed OS from brand new computers.&lt;br /&gt;&lt;br /&gt;&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-NYDAIcrTwSM/ToWzM7u39jI/AAAAAAAAAEY/YJUz4IBWecw/s1600/edge2.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="74" src="http://2.bp.blogspot.com/-NYDAIcrTwSM/ToWzM7u39jI/AAAAAAAAAEY/YJUz4IBWecw/s200/edge2.png" width="200" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;E320 with lid closed&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: 1em; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-akl-Ti4WykI/ToWzAy1CWeI/AAAAAAAAAEU/WpudVMMtCP8/s1600/edge1.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="153" src="http://2.bp.blogspot.com/-akl-Ti4WykI/ToWzAy1CWeI/AAAAAAAAAEU/WpudVMMtCP8/s200/edge1.png" width="200" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;E320 with lid open&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-5155063489739525505?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/5155063489739525505/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2011/09/tools-of-trade.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/5155063489739525505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/5155063489739525505'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2011/09/tools-of-trade.html' title='Tools of the trade'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-NYDAIcrTwSM/ToWzM7u39jI/AAAAAAAAAEY/YJUz4IBWecw/s72-c/edge2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-7124719117487705531</id><published>2011-09-18T22:29:00.000+03:00</published><updated>2011-09-18T22:29:17.295+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='code exchange'/><title type='text'>A new code exchange task</title><content type='html'>A new task for code exchange emerged this week. Professor Wacko has 20 computers with different passwords. The first password has 1 character, the second has 2 characters and so on until the 20th password which has 20 characters. Unfortunately a cracker has stolen the passwords and released them as MD5 hashes (&lt;a href="http://www.ohjelmointiputka.net/postit/md5h/md5h.txt"&gt;downloadable here&lt;/a&gt;). The passwords in the file are sorted from shortest to longest. We also know that each password is a random string that consists of letters a to z.&lt;br /&gt;&lt;br /&gt;I already wrote the program but as you can probably guess it's quite heavy on the memory. I ran out of it before the program reached the end and got just an exception as result. I'm thinking of doing it again with Ruby to see if I can get different result. All I know for sure is that either way it will take some time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-7124719117487705531?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/7124719117487705531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2011/09/new-code-exchange-task.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/7124719117487705531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/7124719117487705531'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2011/09/new-code-exchange-task.html' title='A new code exchange task'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-2751244682261084471</id><published>2011-09-13T20:06:00.000+03:00</published><updated>2011-09-13T20:06:03.284+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vim'/><title type='text'>More Vim stuff</title><content type='html'>This time it's a Vim cheat sheat for programmers. You can find it here &lt;a href="http://michael.peopleofhonoronly.com/vim/"&gt;http://michael.peopleofhonoronly.com/vim/&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-2751244682261084471?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/2751244682261084471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2011/09/more-vim-stuff.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/2751244682261084471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/2751244682261084471'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2011/09/more-vim-stuff.html' title='More Vim stuff'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-8467157221105358286</id><published>2011-09-06T16:21:00.000+03:00</published><updated>2011-09-06T16:21:21.312+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vim'/><title type='text'>Twittering is paying off</title><content type='html'>I'm following &lt;a href="https://twitter.com/#%21/smashingmag"&gt;Smashing Magazine&lt;/a&gt; on Twitter and today's post comes from there. It's a Vim tutorial, &lt;a href="http://yannesposito.com/Scratch/en/blog/Learn-Vim-Progressively/"&gt;http://yannesposito.com/Scratch/en/blog/Learn-Vim-Progressively/&lt;/a&gt;. For those not familiar with Vim, it is a text editor for Linux (could be available for other platforms too). That makes this post more to do with the original idea of this blog than all the coding stuff.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-8467157221105358286?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/8467157221105358286/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2011/09/twittering-is-paying-off.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/8467157221105358286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/8467157221105358286'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2011/09/twittering-is-paying-off.html' title='Twittering is paying off'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-9148663921662146945</id><published>2011-08-31T17:45:00.000+03:00</published><updated>2011-08-31T17:45:20.566+03:00</updated><title type='text'>New books!</title><content type='html'>My order from Amazon has finally arrived. The books in question are &lt;a href="http://www.amazon.co.uk/gp/product/1430226323/"&gt;Spring Persistence with Hibernate&lt;/a&gt; and &lt;a href="http://www.amazon.co.uk/gp/product/1934356581/"&gt;The Agile Samurai&lt;/a&gt;. I haven't had the chance to actually read either of the books but I'll post comments when I do.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-9148663921662146945?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/9148663921662146945/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2011/08/new-books.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/9148663921662146945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/9148663921662146945'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2011/08/new-books.html' title='New books!'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-6171473777899198073</id><published>2011-08-25T20:47:00.000+03:00</published><updated>2011-08-25T20:47:51.339+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='mono'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><category scheme='http://www.blogger.com/atom/ns#' term='visual basic'/><title type='text'>Back in school</title><content type='html'>Once again I find myself in school. With studies starting on Monday I'm facing a crash course to Visual Basic this weekend. I was actually pretty shocked when I heard we would be coding in VB instead of Java or even C#. Apparently students found Java hard and with VB they/we can make "impressive" apps easily. As unbelievable as it sounds the school appears to favour pretty design tools over clean and maintainable code.&lt;br /&gt;&lt;br /&gt;If you're interested in coding C# or Visual Basic apps in Linux, you can do this with Mono. To learn about the mono project visit their website &lt;a href="http://www.mono-project.com/Main_Page"&gt;here&lt;/a&gt;. Mono with VB support and IDE for mono can be found in the fedora repos.&lt;br /&gt;&lt;br /&gt;Installation instructions with yum:&lt;br /&gt;&lt;code&gt;#yum install mono-basic monodevelop&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-6171473777899198073?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/6171473777899198073/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2011/08/back-in-school.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/6171473777899198073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/6171473777899198073'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2011/08/back-in-school.html' title='Back in school'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-5433615740991306822</id><published>2011-08-20T23:29:00.000+03:00</published><updated>2011-08-20T23:29:35.137+03:00</updated><title type='text'>Interesting video</title><content type='html'>&lt;a href="http://www.youtube.com/watch?v=u6XAPnuFjJc&amp;amp;feature=player_embedded"&gt;http://www.youtube.com/watch?v=u6XAPnuFjJc&amp;amp;feature=player_embedded&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You should really check it out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-5433615740991306822?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/5433615740991306822/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2011/08/interesting-video.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/5433615740991306822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/5433615740991306822'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2011/08/interesting-video.html' title='Interesting video'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-5767096727752415497</id><published>2011-08-17T21:34:00.000+03:00</published><updated>2011-08-17T21:34:20.620+03:00</updated><title type='text'>Yes I'm still here</title><content type='html'>The lack of updates has been due to my lazyness. I'm trying to at least continue the kreator project since I have some ideas that might be worth implementing. It's now at version 0.2.2 and still pretty far from what I'd call useful.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-5767096727752415497?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/5767096727752415497/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2011/08/yes-im-still-here.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/5767096727752415497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/5767096727752415497'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2011/08/yes-im-still-here.html' title='Yes I&apos;m still here'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-7194707373049502249</id><published>2011-08-03T20:47:00.000+03:00</published><updated>2011-08-03T20:47:01.101+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fedora 15'/><title type='text'>Upgrade time</title><content type='html'>I took my time to upgrade to Fedora 15 and thought I choose XFCE as window manager. I also moved to 32 bit OS in hopes of having better success with various mozilla plugins. Namely because the premier league starts soon and I would prefer to watch at least some games instead of reading not-so-live scoring from Eurosport website. The biggest issue is that my backups are on a windows share and I don't have that nifty feature called connect to server any more that I could use to connect to that share. So now I have to get through the extra effort to convert that drive to USB.&lt;br /&gt;&lt;br /&gt;Also I'll probably change back to fluxbox very soon. Apparently I got used to that and now this is just weird. There's some shortcut panel on bottom that I constantly think is the task bar and open a new terminal when I wanted to choose the terminal that was already open.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-7194707373049502249?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/7194707373049502249/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2011/08/upgrade-time.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/7194707373049502249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/7194707373049502249'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2011/08/upgrade-time.html' title='Upgrade time'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-4156557711313965441</id><published>2011-07-20T21:43:00.001+03:00</published><updated>2011-07-20T21:43:22.678+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='code exchange'/><title type='text'>Simpler version for the code exc. task</title><content type='html'>Due to my friend having problems running the read file application I made a simpler version without the gui. Paste the source code below to editor and save as ReaderApp.java. In Java the file and class name must be the same so if you change the file name you must also change the class name. To compile the file you need to have JDK installed. My friend Matti who is the other guy on the code exchange has posted his python solution in &lt;a href="http://www.neblo.org/blog/2011-07-20-source-code-exchange"&gt;http://www.neblo.org/blog/2011-07-20-source-code-exchange&lt;/a&gt;. Also a fair word of warning. Today I received a copy of George R.R. Martin's a Dance with Dragons so updates might be scarce while I read  the book.&lt;br /&gt;&lt;code&gt;import java.io.BufferedReader;&lt;br /&gt;import java.io.FileNotFoundException;&lt;br /&gt;import java.io.FileReader;&lt;br /&gt;import java.util.HashMap;&lt;br /&gt;import java.util.Iterator;&lt;br /&gt;import java.util.Map;&lt;br /&gt;import java.util.Scanner;&lt;br /&gt;import java.util.Set;&lt;br /&gt;public class ReaderApp {&lt;br /&gt;private static Scanner scanner;&lt;br /&gt;private static Map&lt;string, integer=""&gt; fileContent;&lt;br /&gt;private static String str;&lt;br /&gt;public static void readFile(String path) {&lt;br /&gt;fileContent = new HashMap&lt;string, integer=""&gt;();&lt;br /&gt;try {&lt;br /&gt;scanner = new Scanner(new BufferedReader(new FileReader(path)));&lt;br /&gt;while (scanner.hasNext()) {&lt;br /&gt;str = scanner.next();&lt;br /&gt;if (fileContent.containsKey(str)) {&lt;br /&gt;fileContent.put(str, (fileContent.get(str) + 1));&lt;br /&gt;} else {&lt;br /&gt;fileContent.put(str, 1);&lt;br /&gt;}}&lt;br /&gt;} catch (FileNotFoundException ex) {&lt;br /&gt;} finally {&lt;br /&gt;if (scanner != null) {&lt;br /&gt;scanner.close();&lt;br /&gt;}}}&lt;br /&gt;public static void main(String[] args) {&lt;br /&gt;readFile(args[0]);&lt;br /&gt;Set&lt;string&gt; keys = fileContent.keySet();&lt;br /&gt;Iterator iter = keys.iterator();&lt;br /&gt;while (iter.hasNext()) {&lt;br /&gt;str = (String) iter.next();&lt;br /&gt;System.err.println(str + " " + fileContent.get(str) + " kpl");&lt;br /&gt;}}}&lt;/string&gt;&lt;/string,&gt;&lt;/string,&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-4156557711313965441?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/4156557711313965441/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2011/07/simpler-version-for-code-exc-task.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/4156557711313965441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/4156557711313965441'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2011/07/simpler-version-for-code-exc-task.html' title='Simpler version for the code exc. task'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-8501475708515571436</id><published>2011-07-19T23:34:00.000+03:00</published><updated>2011-07-19T23:34:55.045+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='skript kreator'/><category scheme='http://www.blogger.com/atom/ns#' term='shell script'/><title type='text'>Shell scripting</title><content type='html'>Long time reader(s) might have noticed a new page called Skript Kreator has appeared on this blog. Skript Kreator is a small application intended for making shell scripts. If you have read the page you know that it's licensed under GPL which means I can't distribute the application without providing the source code. Therefore the application will become available as soon as I set up&amp;nbsp; a repository for the source code. I will also update the roadmap when the project advances as there's a good chance versions past 0.1.1 will never see daylight.&lt;br /&gt;&lt;br /&gt;But now on to the topic at hand. Before making a tool for making shell scripts it is advisable to know shell scripting itself. It has been a habit of this blog not to actually explain anything but point the readers to some other page where the topic is more thoroughly explained. And I'm not about to break that habit so here's a couple of tutorials about shell scripting:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://linuxcommand.org/writing_shell_scripts.php"&gt;http://linuxcommand.org/writing_shell_scripts.php&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://tldp.org/LDP/abs/html/index.html"&gt;http://tldp.org/LDP/abs/html/index.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-8501475708515571436?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/8501475708515571436/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2011/07/shell-scripting.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/8501475708515571436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/8501475708515571436'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2011/07/shell-scripting.html' title='Shell scripting'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-1377940576945020649</id><published>2011-07-16T13:42:00.000+03:00</published><updated>2011-07-16T13:42:25.267+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='code exchange'/><title type='text'>Code exchange introduction</title><content type='html'>A friend of mine who is currently learning python suggested that we do a code exchange. The idea is to share ideas for small applications and we both code the application in the language of our choosing. After we're done we share the source codes to see how the languages differ from each other. The first assignment was to read a text file that consisted of email addresses and count how many times each address occurred.&lt;br /&gt;&lt;br /&gt;My implementation (written in Java) has separate GUI and controller classes, the controller class handling file reading and writing (saves the output to file). To keep this post short I uploaded my code to Google Docs (&lt;a href="https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B2jfKePoZAeOZmJmZDcwZGQtYjE5MS00N2Y4LWExYWMtZmRjMDNmN2QwMmIx&amp;amp;hl=fi"&gt;download link&lt;/a&gt;). The package includes sources, built application and a run script for Linux. Sorry for the lack of comments in source code but it's pretty simple to understand.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-1377940576945020649?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/1377940576945020649/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2011/07/code-exchange-introduction.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/1377940576945020649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/1377940576945020649'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2011/07/code-exchange-introduction.html' title='Code exchange introduction'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-7449074182557842725</id><published>2011-07-14T22:55:00.000+03:00</published><updated>2011-07-14T22:55:27.937+03:00</updated><title type='text'>Good article to read...</title><content type='html'>while waiting for something meaningful to happen &lt;a href="http://thenextweb.com/entrepreneur/2011/07/13/the-problem-with-silicon-valley-is-itself/"&gt;http://thenextweb.com/entrepreneur/2011/07/13/the-problem-with-silicon-valley-is-itself/&lt;/a&gt;. Yes it's yesterday's news but still a good read with some good comments too.&lt;br /&gt;&lt;br /&gt;P.S. I'm thinking of starting to use Twitter(I'm way behind in the social media thing).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-7449074182557842725?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/7449074182557842725/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2011/07/good-article-to-read.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/7449074182557842725'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/7449074182557842725'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2011/07/good-article-to-read.html' title='Good article to read...'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-7202251673524037047</id><published>2011-07-13T22:55:00.002+03:00</published><updated>2011-07-13T22:57:15.974+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='ruby on rails'/><category scheme='http://www.blogger.com/atom/ns#' term='rvm'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Hello Ruby</title><content type='html'>No, I'm not talking about precious minerals in Earth's soil. This is about the Ruby programming language and more specifically Ruby on Rails. Ruby is a dynamic open source language and Rails is a web framework for it. To learn more about Ruby go &lt;a href="http://www.ruby-lang.org/"&gt;here&lt;/a&gt; and for Rails go &lt;a href="http://rubyonrails.org/"&gt;here&lt;/a&gt;. It might be good idea to use Ruby with &lt;a href="https://rvm.beginrescueend.com/"&gt;RVM&lt;/a&gt; (Ruby Version Manager). Installing Ruby and Rails with RVM is fairly easy although you might need to install a shit load of dependencies to get everything to work.&lt;br /&gt;&lt;br /&gt;After you've successfully installed everything you can start your journey by learning ruby (without rails), here's a couple of guides: &lt;a href="http://hackety-hack.com/"&gt;Hackety Hack!&lt;/a&gt;, &lt;a href="http://mislav.uniqpath.com/poignant-guide/"&gt;Why's (Poignant) Guide to Ruby&lt;/a&gt;. More guides can be found on &lt;a href="http://www.ruby-lang.org/en/documentation/"&gt;http://www.ruby-lang.org/en/documentation/&lt;/a&gt;. When you're comfortable with the language go to Google and search 'ruby on rails tutorial' and pick one from the results. I'm using &lt;a href="http://guides.rubyonrails.org/"&gt;this&lt;/a&gt; for starters.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-7202251673524037047?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/7202251673524037047/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2011/07/hello-ruby.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/7202251673524037047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/7202251673524037047'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2011/07/hello-ruby.html' title='Hello Ruby'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-2716431091557674388</id><published>2011-06-27T22:06:00.000+03:00</published><updated>2011-06-27T22:06:22.309+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openttd'/><category scheme='http://www.blogger.com/atom/ns#' term='games'/><category scheme='http://www.blogger.com/atom/ns#' term='gemrb'/><category scheme='http://www.blogger.com/atom/ns#' term='freecol'/><title type='text'>Some gaming stuff</title><content type='html'>&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-JoAipsWAzBk/TgjUc7gK0OI/AAAAAAAAADs/pSOZ5fBYvOw/s1600/openttd.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="150" src="http://1.bp.blogspot.com/-JoAipsWAzBk/TgjUc7gK0OI/AAAAAAAAADs/pSOZ5fBYvOw/s200/openttd.png" width="200" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;OpenTTD in action&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;The inevitable happened and I got bored with solitaire. So now when I'm not watching Doctor Who or coding I'm playing &lt;a href="http://www.openttd.org/en/"&gt;OpenTTD&lt;/a&gt;. Free version of Transport Tycoon Deluxe. I've also found game called &lt;a href="http://www.freecol.org/"&gt;FreeCol&lt;/a&gt; which is like Colonization. I know both of these games are old but they're still enjoyable. They're also available in Fedora repos so you can install them with yum. I also stumbled upon something called &lt;a href="http://www.gemrb.org/wiki/doku.php?id=start"&gt;GemRB&lt;/a&gt;, an open-source implementation of Bioware's Infinity Engine. One day I might try it since I have the original Baldur's Gate series and Planescape: Torment. Again these games are quite old but they still rock and have some of the best stories in video game history.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-2716431091557674388?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/2716431091557674388/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2011/06/some-gaming-stuff.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/2716431091557674388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/2716431091557674388'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2011/06/some-gaming-stuff.html' title='Some gaming stuff'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-JoAipsWAzBk/TgjUc7gK0OI/AAAAAAAAADs/pSOZ5fBYvOw/s72-c/openttd.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-8849322056068346510</id><published>2011-06-21T17:07:00.000+03:00</published><updated>2011-06-21T17:07:31.770+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Nokia'/><category scheme='http://www.blogger.com/atom/ns#' term='Meego'/><category scheme='http://www.blogger.com/atom/ns#' term='N9'/><title type='text'>Fun before work week</title><content type='html'>Last week was mostly spent watching Doctor Who instead of working to get some content to this blog. But I do have some ideas although they are developing related. In the meantime you can read about the Nokia N9 smart phone that was announced today. More about that in these links&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;&lt;a href="http://www.nytimes.com/2011/06/21/technology/personaltech/21nokia.html?_r=2&amp;amp;pagewanted=1&amp;amp;ref=technology&amp;amp;src=me"&gt;http://www.nytimes.com/2011/06/21/technology/personaltech/21nokia.html?_r=2&amp;amp;pagewanted=1&amp;amp;ref=technology&amp;amp;src=me&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&lt;a href="http://www.engadget.com/2011/06/20/nokias-n9-official-a-plastic-slab-of-meego-coming-later-this-y/"&gt;http://www.engadget.com/2011/06/20/nokias-n9-official-a-plastic-slab-of-meego-coming-later-this-y/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&lt;a href="http://www.engadget.com/2011/06/21/nokia-n9-first-hands-on/"&gt;http://www.engadget.com/2011/06/21/nokia-n9-first-hands-on/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Looks nice and if it costs about 500 € I might take a better look at it when I'm buying a new phone. The biggest problem will probably be the lack of developers so don't expect billions of applications available on it. I predict it will receive a warm welcome among Linux geeks (like me) but that's pretty much it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-8849322056068346510?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/8849322056068346510/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2011/06/fun-before-work-week.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/8849322056068346510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/8849322056068346510'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2011/06/fun-before-work-week.html' title='Fun before work week'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-101067577555896668</id><published>2011-06-13T11:56:00.000+03:00</published><updated>2011-06-13T11:56:41.701+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='games'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Slow week</title><content type='html'>Nothing really happened last week. I did some research on the gaming thing and turns out it's a lot better than I thought. If you're interested these links might be helpful.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://icculus.org/lgfaq/"&gt;http://icculus.org/lgfaq/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://icculus.org/lgfaq/gamelist.php"&gt;http://icculus.org/lgfaq/gamelist.php&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.happypenguin.org/"&gt;http://www.happypenguin.org/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;I'll try to post again this week but won't make any promises. I've been learning Java EE so there could be something worth sharing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-101067577555896668?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/101067577555896668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2011/06/slow-week.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/101067577555896668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/101067577555896668'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2011/06/slow-week.html' title='Slow week'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-7316988201759186247</id><published>2011-06-07T16:58:00.000+03:00</published><updated>2011-06-07T16:58:08.763+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='games'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='wine'/><title type='text'>Time out</title><content type='html'>Every once in a while it's good to take a little break. For some it's games. And that's what this post is about. Sadly in the PC market games are made mostly for Windows (and Mac). For Linux there's something called &lt;a href="http://www.winehq.org/"&gt;Wine&lt;/a&gt; which emulates a Windows environment and makes it possible to run Windows applications in Linux. Of course it's never that simple. For one you still need to own a copy of the software you want to run. Just because the platform is free doesn't mean everything running on it is or even should be free. Second, even if you do it might not be enough.&lt;br /&gt;&lt;br /&gt;&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-3XyHNzjzlsI/Te4slX4lQ9I/AAAAAAAAADo/zxzgXP2_j6c/s1600/sol.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="143" src="http://1.bp.blogspot.com/-3XyHNzjzlsI/Te4slX4lQ9I/AAAAAAAAADo/zxzgXP2_j6c/s200/sol.jpg" width="200" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;solitaire for everyone!&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Now I've tried using wine to play a game but sadly never got it to work. Though I didn't try very hard. Generally you could say the older the game is the better the chance it will work but don't quote me on that, it's just a guess (not even an educated one). So that leaves you with games that run natively on Linux or web browser games. If you're not too picky there's always solitaire but even that can get boring. I think Quake or at least some version of it runs just great on Linux but you might not get very excited about a FPS made in the 90s. I for one just might and maybe I'll dig into the game scene a bit deeper. Bottom line, if you want the latest and greatest stick with Windows or play your games with consoles. For everything else, stick around and enjoy the ride.&lt;br /&gt;&lt;br /&gt;P.S. In case you're wondering (I know you are), yes the game on the screenshot did go through.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-7316988201759186247?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/7316988201759186247/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2011/06/time-out.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/7316988201759186247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/7316988201759186247'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2011/06/time-out.html' title='Time out'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-3XyHNzjzlsI/Te4slX4lQ9I/AAAAAAAAADo/zxzgXP2_j6c/s72-c/sol.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-449576312691842531</id><published>2011-06-03T20:33:00.000+03:00</published><updated>2011-06-03T20:33:52.458+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='netbeans'/><title type='text'>Developing</title><content type='html'>Part of my newly found path to employment consists of learning Java. Programs written in Java do not depend on any single platform. The only requirement is that the system has JRE(Java Runtime Environment) installed. And of course if you want to write your own Java programs you need JDK(Java Development Kit). While there's nothing wrong with writing your code in a text editor and compiling in terminal, it's a lot easier and more fun to use an IDE(Integrated Development Environment). The most widely used Java IDEs are &lt;a href="http://netbeans.org/"&gt;NetBeans&lt;/a&gt; and &lt;a href="http://www.eclipse.org/"&gt;Eclipse&lt;/a&gt;. I prefer netbeans because it has built in support for Maven and Subversion, unlike Eclipse where you have to install plugins(and possible dependencies).&lt;br /&gt;&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-ElIVkOT0mqY/TekX4cSPBuI/AAAAAAAAADk/UD7-ieNCixI/s1600/netbeans.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="122" src="http://3.bp.blogspot.com/-ElIVkOT0mqY/TekX4cSPBuI/AAAAAAAAADk/UD7-ieNCixI/s200/netbeans.jpg" width="200" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;screenshot of netbeans&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;$ps v -C java&lt;br /&gt;PID TTY      STAT   TIME  MAJFL   TRS   DRS   RSS %MEM COMMAND&lt;br /&gt;3771 ?        Sl     1:11    246    35 1241788 265808 25.9 /usr/java/latest/bin&lt;/code&gt;&lt;br /&gt;As you can see from the command listing netbeans uses a quarter of my memory. Bear in mind that my computer was built over five years ago and only has 1GB of RAM. Most modern computers probably have more than that. Eclipse uses about the same and probably so does any IDE though I can't say that for sure(they may even use more!). Notice that netbeans and eclipse are written in java so any other java program you have running at the same time will affect the output of the command I used.&lt;br /&gt;&lt;br /&gt;P.S. Yes this blog covers programming related stuff also. Otherwise I would have stopped posting after the photo editing post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-449576312691842531?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/449576312691842531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2011/06/developing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/449576312691842531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/449576312691842531'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2011/06/developing.html' title='Developing'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-ElIVkOT0mqY/TekX4cSPBuI/AAAAAAAAADk/UD7-ieNCixI/s72-c/netbeans.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-9218417936368245962</id><published>2011-05-28T18:04:00.002+03:00</published><updated>2011-05-28T18:05:40.499+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Blog update</title><content type='html'>Since this blog is about Linux there's a chance that I will post command listings at some point. To make sure command listings differ from regular posts I made a small update to the blog template. All the things inside boxes like this are executable commands or possibly outputs from commands.&lt;br /&gt;&lt;code&gt;$cd&lt;br /&gt;$ls -la&lt;br /&gt;-rwxrwxr-x.  1 Aleksi Aleksi      1309 May 22 18:56 .Xclients&lt;br /&gt;-rw-rw-r--.  1 Aleksi Aleksi       721 May 21 18:55 .Xdefaults&lt;br /&gt;-rwxrwxr-x.  1 Aleksi Aleksi      1486 May 27 19:50 .xinitrc&lt;br /&gt;$cat .Xdefaults&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-9218417936368245962?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/9218417936368245962/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2011/05/blog-update.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/9218417936368245962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/9218417936368245962'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2011/05/blog-update.html' title='Blog update'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-7287081065497662857</id><published>2011-05-27T19:16:00.002+03:00</published><updated>2011-05-27T19:19:47.538+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='photo editing'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='rawstudio'/><category scheme='http://www.blogger.com/atom/ns#' term='shotwell'/><title type='text'>I can be productive when I want...</title><content type='html'>Some might argue that tuning your desktop is not productive and to be perfectly honest, it's not. After using considerable time trying to get my camera to work and failing I reverted back to using gdm as my display manager. Somehow when starting fluxbox from SLiM gvfs-mount won't work the same way(the right way) as it does when using gdm. Anyway, because these days everyone has a digital camera, having some decent software to go with it is mandatory. If you're shooting straight to jpg you'll be fine with gimp which is not too bad image manipulation program. Of course it's not Photoshop but it's also free.&lt;br /&gt;&lt;br /&gt;On the other hand, if you're shooting RAW you'll need some sort of converter. I found these two applications to be okay for amateur purposes. First there's Shotwell which is good for importing photos from your camera and organizing them. There are some editing options but they're not very good.&lt;br /&gt;&lt;br /&gt;Second there's Rawstudio. Bad for organizing and you can't import photos from a camera. Although if you mount your camera you can access it but you should really copy your photos to a not-removable media. Where it does shine is in editing. It has sliders for adjusting exposure, saturation, contrast, temperature etc, you can adjust the curve of a photo, crop and straighten a photo and there's a handy reset button for all the adjustments. You even have three virtual copies for each photo and you can export photos in batches.&lt;br /&gt;&lt;br /&gt;Of course, even together these two are no match for Lightroom but again they are free. There is always Bibble which is available for Linux but it will cost you 100$ for lite version and 200$ for full version. To learn more about Bibble go to &lt;a href="http://bibblelabs.com/"&gt;http://bibblelabs.com&lt;/a&gt;.&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-z8drCj8PXME/Td_MzpTRQ9I/AAAAAAAAADg/HsRBm1gM4WU/s1600/rawstudio.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="138" src="http://4.bp.blogspot.com/-z8drCj8PXME/Td_MzpTRQ9I/AAAAAAAAADg/HsRBm1gM4WU/s200/rawstudio.jpg" width="200" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;screenshot of rawstudio&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: left;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-0XzhkqMSydo/Td_HgKEtnaI/AAAAAAAAADc/4k0TdqP95EI/s1600/shotwell.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="150" src="http://1.bp.blogspot.com/-0XzhkqMSydo/Td_HgKEtnaI/AAAAAAAAADc/4k0TdqP95EI/s200/shotwell.jpg" width="200" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;screenshot of shotwell&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;If you're put off by the problems I had, you shouldn't. All this works in out of the box Linux install in probably all distributions. At least it does in Fedora. You don't even have to know what gvfs-mount or any other things I said in the beginning is. All this will be done automatically.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-7287081065497662857?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/7287081065497662857/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2011/05/i-can-be-productive-when-i-want.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/7287081065497662857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/7287081065497662857'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2011/05/i-can-be-productive-when-i-want.html' title='I can be productive when I want...'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-z8drCj8PXME/Td_MzpTRQ9I/AAAAAAAAADg/HsRBm1gM4WU/s72-c/rawstudio.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-7629193531064584757</id><published>2011-05-23T16:53:00.001+03:00</published><updated>2011-05-23T21:50:21.248+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='fluxbox'/><category scheme='http://www.blogger.com/atom/ns#' term='fedora 14'/><category scheme='http://www.blogger.com/atom/ns#' term='slim'/><title type='text'>Tinkering</title><content type='html'>One of the greatest things about Linux is how easily you can customize it. For the past few days I've been tinkering with my desktop and login screen as you can see from the screen shots posted below. All the packages(or applications as Windows guys would probably call them) were in the Fedora repos(that's basically a list of applications that you can install) and configuring these amazing things took only some time and a simple text editor.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-gXXKlfS93M4/TdphH0gwaGI/AAAAAAAAADU/mYTzCmi-OK8/s1600/slim.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://4.bp.blogspot.com/-gXXKlfS93M4/TdphH0gwaGI/AAAAAAAAADU/mYTzCmi-OK8/s200/slim.jpg" width="200" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/-9cjkB_9-3nY/TdphVxIx-2I/AAAAAAAAADY/B4UvA5i_iwQ/s1600/screen.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://2.bp.blogspot.com/-9cjkB_9-3nY/TdphVxIx-2I/AAAAAAAAADY/B4UvA5i_iwQ/s200/screen.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Running on the desktop are three tabbed terminals, vlc, nautilus and firefox(only visible in taskbar). For those that are interested the display manager is SLiM and the window manager is fluxbox.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-7629193531064584757?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/7629193531064584757/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2011/05/tinkering.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/7629193531064584757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/7629193531064584757'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2011/05/tinkering.html' title='Tinkering'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-gXXKlfS93M4/TdphH0gwaGI/AAAAAAAAADU/mYTzCmi-OK8/s72-c/slim.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7318083042943213196.post-3279529548102559727</id><published>2011-05-20T23:23:00.001+03:00</published><updated>2011-05-23T21:51:01.834+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='fedora 14'/><title type='text'>First post!</title><content type='html'>This is a blog by a former Windows fanatic, hence the acronym (Former Windows Fanatic's Adventures In Linux Land). The starting point of this blog is that I have been using Fedora 14 for a while after my Windows 7 laptop fell apart(quite literally). So far things have worked exceptionally well. It should be said that this not my first visit to Linux but it is my first serious attempt to do anything productive with it.&lt;br /&gt;&lt;br /&gt;More to come in maybe not so distant future!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7318083042943213196-3279529548102559727?l=fwfaill.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fwfaill.blogspot.com/feeds/3279529548102559727/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://fwfaill.blogspot.com/2011/05/first-post.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/3279529548102559727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7318083042943213196/posts/default/3279529548102559727'/><link rel='alternate' type='text/html' href='http://fwfaill.blogspot.com/2011/05/first-post.html' title='First post!'/><author><name>Aleksi N</name><uri>http://www.blogger.com/profile/17468467271493456877</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
