<?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-20437576</id><updated>2012-01-31T01:52:37.755+02:00</updated><category term='ror'/><category term='ruby on rails'/><category term='quick'/><category term='sms'/><category term='java'/><category term='rails'/><category term='programming'/><category term='iphone application'/><title type='text'>TechnologyNotes</title><subtitle type='html'>Notes on Software,  Technology and stuff...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://cagan327.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://cagan327.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Cagan Senturk</name><uri>http://www.blogger.com/profile/14641038760242921008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_hDYiLb6x0Wk/SZ1PTBn-JXI/AAAAAAAAACM/sy_hi15wjNs/S220/DSC01227.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>31</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-20437576.post-4781467232099415854</id><published>2011-05-12T16:28:00.000+03:00</published><updated>2011-05-13T23:31:52.601+03:00</updated><title type='text'>Paperclip: How to delete an attachment?</title><content type='html'>Paperclip (https://github.com/thoughtbot/paperclip) is a great gem. I use it all the time in my rails projects.&lt;br /&gt;&lt;br /&gt;One constant need I have is to be able to remove a picture I added to one of my model objects while editing it. Say I uploaded a profile picture and now I want to remove it...&lt;br /&gt;&lt;br /&gt;While browsing for a solution, I ran into this: http://railsforum.com/viewtopic.php?id=30349.&lt;br /&gt;The solution is nice but I'd hate to repeat it in every model object where I use an attachment. Some  models have more than one attachment too...&lt;br /&gt;&lt;br /&gt;So I converted the proposed solution into a module, saved it as 'image_clearer.rb' under the 'lib' directory in my rails project:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;module ImageClearer&lt;br /&gt;&amp;nbsp; def self.included(host_class)&lt;br /&gt;&amp;nbsp; &amp;nbsp; host_class.extend(ClassMethods)&lt;br /&gt;&amp;nbsp; end&lt;br /&gt;&amp;nbsp; module ClassMethods&lt;br /&gt;&amp;nbsp; &amp;nbsp; def clear_image_for(field)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; attr_accessor "clear_#{field}"&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; before_validation "check_for_clear_#{field}"&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; define_method("clear_#{field}=") do |val|&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; instance_variable_set("@clear_#{field}", !val.to_i.zero?)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; end&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; define_method("clear_#{field}") do&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; !!instance_variable_get("@clear_#{field}")&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; end&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; alias_method "clear_#{field}?", "clear_#{field}"&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; class_eval &amp;lt;&amp;lt;-"END"&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; def check_for_clear_#{field}&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if clear_#{field}?&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; self.#{field} = nil&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; end&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; end &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; END&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;nbsp; end&lt;br /&gt;&amp;nbsp; end&lt;br /&gt;end&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Then in the model where I have an attachment:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;require 'image_clearer'&lt;br /&gt;class Product &amp;lt; ActiveRecord::Base&lt;br /&gt;&amp;nbsp;include ImageClearer&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; has_attached_file :photo,&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; :url =&amp;gt; "/uploaded/:class/:attachment/:id/:style_:basename.:extension"&lt;br /&gt;&amp;nbsp; end&lt;br /&gt;&amp;nbsp; &lt;b&gt;clear_image_for :photo&lt;/b&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;and in my edit view, all I have to do is:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;...&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&amp;nbsp;&amp;lt;% if @product.photo.file? -%&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;%= f.check_box :clear_photo -%&amp;gt;Delete photo&lt;br /&gt;&amp;nbsp; &amp;lt;% end -%&amp;gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;If you have more than one attachment in your model, you can use it as:&lt;br /&gt;&amp;nbsp;clear_image_for &amp;nbsp;:attachment1&lt;br /&gt;&amp;nbsp;clear_image_for &amp;nbsp;:attachment2&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20437576-4781467232099415854?l=cagan327.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cagan327.blogspot.com/feeds/4781467232099415854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cagan327.blogspot.com/2011/05/paperclip-how-to-delete-attachment.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/4781467232099415854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/4781467232099415854'/><link rel='alternate' type='text/html' href='http://cagan327.blogspot.com/2011/05/paperclip-how-to-delete-attachment.html' title='Paperclip: How to delete an attachment?'/><author><name>Cagan Senturk</name><uri>http://www.blogger.com/profile/14641038760242921008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_hDYiLb6x0Wk/SZ1PTBn-JXI/AAAAAAAAACM/sy_hi15wjNs/S220/DSC01227.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20437576.post-5257655534145715426</id><published>2011-03-21T14:52:00.000+02:00</published><updated>2011-03-21T14:52:04.072+02:00</updated><title type='text'>Happy Pepe is now happier</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-CnSglbucsJ0/TYdJhDsZybI/AAAAAAAAALE/nI13FpJO_sc/s1600/IMG_0469.PNG" imageanchor="1" style="clear:left; float:left;margin-right:1em; margin-bottom:1em"&gt;&lt;img border="0" height="320" width="214" src="http://3.bp.blogspot.com/-CnSglbucsJ0/TYdJhDsZybI/AAAAAAAAALE/nI13FpJO_sc/s320/IMG_0469.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;Pepe is very happy today. It has climbed to Number 2 spot in the 'Educational Games' category in iTunes Turkish store.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20437576-5257655534145715426?l=cagan327.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cagan327.blogspot.com/feeds/5257655534145715426/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cagan327.blogspot.com/2011/03/happy-pepe-is-now-happier.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/5257655534145715426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/5257655534145715426'/><link rel='alternate' type='text/html' href='http://cagan327.blogspot.com/2011/03/happy-pepe-is-now-happier.html' title='Happy Pepe is now happier'/><author><name>Cagan Senturk</name><uri>http://www.blogger.com/profile/14641038760242921008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_hDYiLb6x0Wk/SZ1PTBn-JXI/AAAAAAAAACM/sy_hi15wjNs/S220/DSC01227.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-CnSglbucsJ0/TYdJhDsZybI/AAAAAAAAALE/nI13FpJO_sc/s72-c/IMG_0469.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20437576.post-1485986544849156269</id><published>2011-03-19T14:08:00.003+02:00</published><updated>2011-03-19T19:08:04.993+02:00</updated><title type='text'>Happy Pepe: An iPhone Game designed to teach math and improve memory</title><content type='html'>I have a son (Emir) in 4th grade and a daughter (Selin) in 3rd. Neither one of them enjoy doing homework. This is not very surprising or upsetting for me as I still remember how much I hated it myself.&lt;br /&gt;&lt;br /&gt;I sometimes try to help them out with their math homework and usually get frustrated quite easily. Just recently I found myself telling my daughter one needs to memorize the multiplication table. That insanity didn't last for too long fortunately as I realized the absurdity of what I was asking. I realize one needs to know how to multiply at least single digit numbers but with which method a child needs to get there? &lt;br /&gt;&lt;br /&gt;One can start with say 2s and recite outloud 2x1 is two, 2x2 is four, and so on..Up until 5s, that works but it gets exponentially harder once you hit 6s.  You then resort to rimes, etc. &lt;br /&gt;&lt;br /&gt;I thought another and more fun way would be to embed multiplication and addition questions inside an iPhone game application. And I decided to write one...&lt;br /&gt;&lt;br /&gt;I am a software engineer so I know how to code but my experience has been with client/server systems, financial systems, web applications, etc. I had never written a single game before. But the game I wanted to write didn't need to be a 3D extravaganza either.&lt;br /&gt;&lt;br /&gt;I had heard and read about Cocos2D (http://www.cocos2d-iphone.org/) game framework before. But then when I was googling for other frameworks I ran into Jonathan Beebe's blog post (http://jonbeebe.tumblr.com/post/1119939987/corona-sdk-review) about Corona SDK by AnscaMobile (http://www.anscamobile.com/corona/). I started reading about it and it immediately felt right which is a feeling coders are familiar with. &lt;br /&gt;&lt;br /&gt;I had to learn a new language, Lua, in order to start coding with Corona. That didn't turn out to be a problem as I enjoy experimenting with new languages and it's not a cryptic language with a steep learning curve.&lt;br /&gt;&lt;br /&gt;Corona download comes with great samples, and those helped me out a lot. Both in learning Lua and understanding the components of a game.  &lt;br /&gt;&lt;br /&gt;I first consulted with my kids about the story of the game. We picked up the hero (a penguin) and decided that the aim of the game would be for Pepe the penguin to try to catch fish falling from the sky. Some fish would get Pepe points, and some others, like a shark, a killer whale, would cause him points. &lt;br /&gt;&lt;br /&gt;For the 'teaching math' part of the game, we decided to display for a short period multiplication and addition questions such as  '3x9=?', '14+9=?', etc  in the middle of the screen and then fade the question so that the player would need to calculate the answer and remember it. Then along with fish, we would start dropping numbers from the sky and Pepe would get points if he were to catch the correct answer number. Catching the wrong numbers would cause him big points... &lt;br /&gt;&lt;br /&gt;I started writing the code in the evening on March 3rd. My first challenge was to create multiple screens: one to display the menu, another one where the actual game happens, another one for the settings, etc. Corona samples really helped a lot with this. I read lots of their code and settled on an approach.&lt;br /&gt;&lt;br /&gt;The next issue was to figure out how to drop objects from the sky in a real-life manner. It turns out Corona comes bundled with a physics engine: Box2d (http://www.box2d.org/). And it's funny how straightforward it's to use it:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;physics.addBody(hero, "dynamic", {density=3.0, friction = 0.5, bounce=0.0})&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;There is a comfort point for a coder when reached makes him able to achieve almost anything using a framework. Getting to that point is very quick with Corona. Corona is  to game programming what Ruby on Rails is to web development. &lt;br /&gt;&lt;br /&gt;Once I got to that 'comfort' point, I was able to advance quickly and finished the skeleton of the game. I consulted with my kids at all times about the look and rules of the game and they gave me plenty of valuable feedback. &lt;br /&gt;&lt;br /&gt;Then came the hard part: graphics! Man do I suck at graphics! Even trying to come up with a background and foreground color combination is a task enough to give me nightmares at night.  And I didn't want to spend a fortune nor waste time trying to find a graphics guy to come up with icons, images, etc. So I started searching for the images on the net. Of course I had to watch out for the licenses as well.&lt;br /&gt;&lt;br /&gt;Next came the sound problem. Playing sounds inside the program couldn't be easier:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;local sound = audio.loadSound( "your sound file")&lt;br /&gt;audio.play(sound)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;but finding background music, or drop sounds were the tough ones. &lt;br /&gt;&lt;br /&gt;At the very end, we decided to name the game HAPPY PEPE. Here are some of the screenshots taken during game play:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-gkG4wwPgMcw/TYSbp9jz95I/AAAAAAAAAKs/os6TkmHRHlA/s1600/IMG_0453.PNG" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="320" width="214" src="http://1.bp.blogspot.com/-gkG4wwPgMcw/TYSbp9jz95I/AAAAAAAAAKs/os6TkmHRHlA/s320/IMG_0453.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-IWRcB-jvK4o/TYSbpwKvg_I/AAAAAAAAAK0/j0rDhMwFr4U/s1600/IMG_0454.PNG" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="320" width="214" src="http://1.bp.blogspot.com/-IWRcB-jvK4o/TYSbpwKvg_I/AAAAAAAAAK0/j0rDhMwFr4U/s320/IMG_0454.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-h2SfTblaVs4/TYSbqKVYdUI/AAAAAAAAAK8/mT8y9srXQbk/s1600/IMG_0455.PNG" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="320" width="214" src="http://3.bp.blogspot.com/-h2SfTblaVs4/TYSbqKVYdUI/AAAAAAAAAK8/mT8y9srXQbk/s320/IMG_0455.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;On March 10th, I was done. Emir and Selin tested the app thoroughly and then we submitted to Apple for approval. &lt;br /&gt;&lt;br /&gt;And finally on March 18th, the approval came from Apple. &lt;br /&gt;&lt;br /&gt;You can find Happy Pepe at:&lt;br /&gt;&lt;a href="http://itunes.apple.com/tr/app/happy-pepe/id425463407?mt=8"&gt;&lt;br /&gt;&lt;img src='http://www.mboxmail.com/images/appstore.png'/&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And of course, big thanks to Corona...&lt;br /&gt;&lt;p&gt;&lt;a href="http://developer.anscamobile.com/showcase/" title="Corona SDK Mobile Application Development"&gt;&lt;img src="http://www.anscamobile.com/images/showcase/CoronaBadge_150x144.png" width="150" height="144" alt="Mobile Development Showcase" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20437576-1485986544849156269?l=cagan327.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cagan327.blogspot.com/feeds/1485986544849156269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cagan327.blogspot.com/2011/03/happy-pepe-iphone-game-designed-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/1485986544849156269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/1485986544849156269'/><link rel='alternate' type='text/html' href='http://cagan327.blogspot.com/2011/03/happy-pepe-iphone-game-designed-to.html' title='Happy Pepe: An iPhone Game designed to teach math and improve memory'/><author><name>Cagan Senturk</name><uri>http://www.blogger.com/profile/14641038760242921008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_hDYiLb6x0Wk/SZ1PTBn-JXI/AAAAAAAAACM/sy_hi15wjNs/S220/DSC01227.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-gkG4wwPgMcw/TYSbp9jz95I/AAAAAAAAAKs/os6TkmHRHlA/s72-c/IMG_0453.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20437576.post-3258800170175353524</id><published>2011-02-28T11:13:00.002+02:00</published><updated>2011-02-28T11:16:23.133+02:00</updated><title type='text'>Follow Twitter Trends in Turkey and the World</title><content type='html'>My latest iPhone app is Trendler ('Trends'). If you want to see what the latest trends are on Twitter for Turkey and the world, this is the app for it...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://itunes.apple.com/us/app/trendler/id421760352?mt=8&amp;ls=1"&gt;&lt;br /&gt;&lt;img src='http://www.mboxmail.com/images/appstore.png'/&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20437576-3258800170175353524?l=cagan327.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cagan327.blogspot.com/feeds/3258800170175353524/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cagan327.blogspot.com/2011/02/follow-twitter-trends-in-turkey-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/3258800170175353524'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/3258800170175353524'/><link rel='alternate' type='text/html' href='http://cagan327.blogspot.com/2011/02/follow-twitter-trends-in-turkey-and.html' title='Follow Twitter Trends in Turkey and the World'/><author><name>Cagan Senturk</name><uri>http://www.blogger.com/profile/14641038760242921008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_hDYiLb6x0Wk/SZ1PTBn-JXI/AAAAAAAAACM/sy_hi15wjNs/S220/DSC01227.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20437576.post-3911210681199479197</id><published>2011-02-22T08:45:00.002+02:00</published><updated>2011-02-22T08:48:55.313+02:00</updated><title type='text'>Share your location in case of Emergency: Acil PRO</title><content type='html'>I've been meaning to do this for a while but didn't have time to get around to it. Finally here it is:&lt;br /&gt;&lt;a href="http://itunes.apple.com/us/app/acil-pro/id419294218?mt=8&amp;ls=1"&gt;&lt;br /&gt;&lt;img src='http://www.mboxmail.com/images/appstore.png'/&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20437576-3911210681199479197?l=cagan327.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cagan327.blogspot.com/feeds/3911210681199479197/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cagan327.blogspot.com/2011/02/share-your-location-in-case-of.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/3911210681199479197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/3911210681199479197'/><link rel='alternate' type='text/html' href='http://cagan327.blogspot.com/2011/02/share-your-location-in-case-of.html' title='Share your location in case of Emergency: Acil PRO'/><author><name>Cagan Senturk</name><uri>http://www.blogger.com/profile/14641038760242921008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_hDYiLb6x0Wk/SZ1PTBn-JXI/AAAAAAAAACM/sy_hi15wjNs/S220/DSC01227.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20437576.post-1837318689158009705</id><published>2011-02-17T07:32:00.003+02:00</published><updated>2011-02-17T07:38:00.226+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='quick'/><category scheme='http://www.blogger.com/atom/ns#' term='sms'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone application'/><title type='text'>Hızlı ('Quick') SMS - Productivity iPhone Application</title><content type='html'>I send quite a bit of SMS messages during the day and they are usually same kind of messages: "I'm stuck in traffic", "shall we meet for lunch", "I'm in a meeting, will call back later", etc.&lt;br /&gt; I wanted to automate this process and make it a couple of clicks affair. Also I really think I'm going to get into an accident if I continue typing sms messages while I drive...So here's the app:&lt;br /&gt;&lt;a href="http://ax.itunes.apple.com/tr/app/aile/id420806650?mt=3D8"&gt;&lt;br /&gt;&lt;img src='http://www.mboxmail.com/images/appstore.png'/&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20437576-1837318689158009705?l=cagan327.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cagan327.blogspot.com/feeds/1837318689158009705/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cagan327.blogspot.com/2011/02/hzl-quick-sms-productivity-iphone.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/1837318689158009705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/1837318689158009705'/><link rel='alternate' type='text/html' href='http://cagan327.blogspot.com/2011/02/hzl-quick-sms-productivity-iphone.html' title='Hızlı (&apos;Quick&apos;) SMS - Productivity iPhone Application'/><author><name>Cagan Senturk</name><uri>http://www.blogger.com/profile/14641038760242921008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_hDYiLb6x0Wk/SZ1PTBn-JXI/AAAAAAAAACM/sy_hi15wjNs/S220/DSC01227.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20437576.post-4156958588792835629</id><published>2010-06-15T11:51:00.004+03:00</published><updated>2010-06-15T12:04:08.032+03:00</updated><title type='text'>Aile - Utility iPhone Application</title><content type='html'>I like to have easy access to some data such as frequent flier numbers, health insurance numbers, passport numbers, etc.. I had it in mind to write a small iPhone app to do just that for the whole family. Finally I found some time to do it.&lt;br /&gt;You can get it here:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://ax.itunes.apple.com/tr/app/aile/id376678977?mt=3D8"&gt;&lt;br /&gt;&lt;img src='http://www.mboxmail.com/images/appstore.png'/&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20437576-4156958588792835629?l=cagan327.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cagan327.blogspot.com/feeds/4156958588792835629/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cagan327.blogspot.com/2010/06/aile-utility-iphone-application.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/4156958588792835629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/4156958588792835629'/><link rel='alternate' type='text/html' href='http://cagan327.blogspot.com/2010/06/aile-utility-iphone-application.html' title='Aile - Utility iPhone Application'/><author><name>Cagan Senturk</name><uri>http://www.blogger.com/profile/14641038760242921008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_hDYiLb6x0Wk/SZ1PTBn-JXI/AAAAAAAAACM/sy_hi15wjNs/S220/DSC01227.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20437576.post-6300108479314377258</id><published>2009-10-12T21:40:00.003+03:00</published><updated>2009-10-12T21:51:16.917+03:00</updated><title type='text'>Rails ActionMailer Setup for Yahoo SMTP</title><content type='html'>I have been working on a new project lately.  Today I decided to setup email notification system for it. I first thought of using AuthSmtp (http://www.authsmtp.com/) to send out emails to users but then I opted for yahoo email where I had also registered the domain. &lt;br /&gt;&lt;br /&gt;I setup a new email address from which I am going to send out emails to the users of my system. Like activation emails, new message notifications, etc.&lt;br /&gt;&lt;br /&gt;But the code kept throwing"Errno::ECONNRESET (Connection reset by peer):' error whenever I tried to connect to yahoo's smtp server and send a message. It took me a while to figure what the problem was: Yahoo told me to use port 465; whereas the correct port number to use is 587!&lt;br /&gt;&lt;br /&gt;So to save you couple of hours filled with frustration and hair pullings, here's the action_mailer setup that works:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ActionMailer::Base.default_charset = "utf-8"&lt;br /&gt;ActionMailer::Base.delivery_method = :smtp&lt;br /&gt;ActionMailer::Base.smtp_settings = {&lt;br /&gt; :address  =&gt; "smtp.bizmail.yahoo.com",&lt;br /&gt; :port  =&gt; 587, &lt;br /&gt; :domain  =&gt; "www.your-domain.com",&lt;br /&gt; :user_name  =&gt; "username@your-domain.com",&lt;br /&gt; :password  =&gt; "some-password" ,&lt;br /&gt; :enable_starttls_auto =&gt; true,&lt;br /&gt; :authentication  =&gt; :plain&lt;br /&gt; }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20437576-6300108479314377258?l=cagan327.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cagan327.blogspot.com/feeds/6300108479314377258/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cagan327.blogspot.com/2009/10/rails-actionmailer-setup-yahoo-smtp.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/6300108479314377258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/6300108479314377258'/><link rel='alternate' type='text/html' href='http://cagan327.blogspot.com/2009/10/rails-actionmailer-setup-yahoo-smtp.html' title='Rails ActionMailer Setup for Yahoo SMTP'/><author><name>Cagan Senturk</name><uri>http://www.blogger.com/profile/14641038760242921008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_hDYiLb6x0Wk/SZ1PTBn-JXI/AAAAAAAAACM/sy_hi15wjNs/S220/DSC01227.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20437576.post-4554515721923334779</id><published>2009-04-18T12:13:00.008+03:00</published><updated>2009-04-18T14:55:01.324+03:00</updated><title type='text'>'MeToo': WiFi based chat application for iPhone</title><content type='html'>Because of Mondus.net (http://www.mondus.net), I find myself thinking frequently about social interactions among strangers. &lt;br /&gt;In Istanbul,  a lot of people 'peek' around in their hang-out places using Bluetooth scanning.  You scan, you see a list of 'bluetooth names', you pick one and try to create a connection. These people must spend a lot of time coming up with a catchy nickname. &lt;br /&gt;&lt;br /&gt;My new iPhone app, &lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=312316228&amp;mt=8"&gt;MeToo&lt;/a&gt; provides a similar service.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here's what it does:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_hDYiLb6x0Wk/SemdLw95X2I/AAAAAAAAADE/6WkPeHI80Mc/s1600-h/IMG_0001.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 214px; height: 320px;" src="http://4.bp.blogspot.com/_hDYiLb6x0Wk/SemdLw95X2I/AAAAAAAAADE/6WkPeHI80Mc/s320/IMG_0001.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5325960859790958434" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;When you run MeToo, it automatically starts broadcasting you in the WiFi network. (I guess now is a good time to mention that you need a WiFi connection to use MeToo.)&lt;br /&gt;&lt;br /&gt;You can update your nickname, your profile image and your gender at any time and as frequently as you want. Your updates are always broadcasted to others running MeToo around you.&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both"&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_hDYiLb6x0Wk/SemeMVPLajI/AAAAAAAAADM/yqbvrwzBE7Q/s1600-h/IMG_0003.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 214px; height: 320px;" src="http://4.bp.blogspot.com/_hDYiLb6x0Wk/SemeMVPLajI/AAAAAAAAADM/yqbvrwzBE7Q/s320/IMG_0003.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5325961969038748210" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The 'Around You' tab shows who else is around you. If there are no users around, you won't see anyone of course. But MeToo constantly scans the network without having to restart it. So it may be a good idea to keep it running in case someone shows up.&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both"&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_hDYiLb6x0Wk/SemgljhgB8I/AAAAAAAAADU/Ru3ndMEbquU/s1600-h/IMG_0005.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 214px; height: 320px;" src="http://2.bp.blogspot.com/_hDYiLb6x0Wk/SemgljhgB8I/AAAAAAAAADU/Ru3ndMEbquU/s320/IMG_0005.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5325964601393678274" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;When you click on a name to chat, that opens up the chat window and a connection is created. Once connected, you get to see the user's profile picture. If you don't send any message, he/she will never know you connected. &lt;br /&gt;You can send chat messages, photos and if your iPhone allows for it there is even a button to automatically send your phone number to the other user (don't worry there is a confirmation message that appears to make sure you really intend to do so).&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both"&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_hDYiLb6x0Wk/SemhqCfR7VI/AAAAAAAAADc/6bPRdTHveU4/s1600-h/IMG_0006.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 214px; height: 320px;" src="http://1.bp.blogspot.com/_hDYiLb6x0Wk/SemhqCfR7VI/AAAAAAAAADc/6bPRdTHveU4/s320/IMG_0006.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5325965777936969042" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Photos appear small in chat message bubbles but you can see bigger versions if you click on them.&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both"&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;MeToo makes a sound when you receive a new message unless you are on the chat window with the sender in which case MeToo vibrates.&lt;br /&gt;&lt;br /&gt;MeToo makes also a good effort in trying to figure out if the person you are chatting with logs out suddenly and notifies you. &lt;br /&gt;&lt;br /&gt;I must add that this is version 1.0.0 (maybe I should have added another zero at the end). I put quite an effort into it but by no means would I claim it is flawless.&lt;br /&gt;&lt;br /&gt;MeToo supports English and Turkish.&lt;br /&gt;&lt;br /&gt;You can get it here:&lt;br /&gt;&lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=312316228&amp;mt=8"&gt;&lt;br /&gt;&lt;img src='http://www.mboxmail.com/images/appstore.png'/&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20437576-4554515721923334779?l=cagan327.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cagan327.blogspot.com/feeds/4554515721923334779/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cagan327.blogspot.com/2009/04/metoo-wifi-based-chat-application-for.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/4554515721923334779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/4554515721923334779'/><link rel='alternate' type='text/html' href='http://cagan327.blogspot.com/2009/04/metoo-wifi-based-chat-application-for.html' title='&apos;MeToo&apos;: WiFi based chat application for iPhone'/><author><name>Cagan Senturk</name><uri>http://www.blogger.com/profile/14641038760242921008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_hDYiLb6x0Wk/SZ1PTBn-JXI/AAAAAAAAACM/sy_hi15wjNs/S220/DSC01227.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_hDYiLb6x0Wk/SemdLw95X2I/AAAAAAAAADE/6WkPeHI80Mc/s72-c/IMG_0001.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20437576.post-8335207874617716981</id><published>2009-03-19T00:00:00.003+02:00</published><updated>2009-03-19T00:04:35.092+02:00</updated><title type='text'>Loto Climbs Up To Number 6</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_hDYiLb6x0Wk/ScFvg9Lr3eI/AAAAAAAAAC8/-9mm2s4SpL4/s1600-h/IMG_0003.PNG"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 214px; height: 320px;" src="http://2.bp.blogspot.com/_hDYiLb6x0Wk/ScFvg9Lr3eI/AAAAAAAAAC8/-9mm2s4SpL4/s320/IMG_0003.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5314651647243967970" /&gt;&lt;/a&gt;&lt;br /&gt;I didn't win the lottery but &lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=307254314&amp;mt=8"&gt; my Loto iPhone application&lt;/a&gt; climbed up to number 6 in the Top  Paid Apps list in Turkish iTunes store. ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20437576-8335207874617716981?l=cagan327.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cagan327.blogspot.com/feeds/8335207874617716981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cagan327.blogspot.com/2009/03/loto-climbs-up-to-number-6.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/8335207874617716981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/8335207874617716981'/><link rel='alternate' type='text/html' href='http://cagan327.blogspot.com/2009/03/loto-climbs-up-to-number-6.html' title='Loto Climbs Up To Number 6'/><author><name>Cagan Senturk</name><uri>http://www.blogger.com/profile/14641038760242921008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_hDYiLb6x0Wk/SZ1PTBn-JXI/AAAAAAAAACM/sy_hi15wjNs/S220/DSC01227.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_hDYiLb6x0Wk/ScFvg9Lr3eI/AAAAAAAAAC8/-9mm2s4SpL4/s72-c/IMG_0003.PNG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20437576.post-2684007294670784047</id><published>2009-03-10T01:41:00.002+02:00</published><updated>2009-03-10T01:46:28.131+02:00</updated><title type='text'>Loto - My New iPhone Application</title><content type='html'>Turkish National Lottery (Süper Loto) is now 34 million TL (roughly $19 Million) ! &lt;br /&gt;So I wrote a new iPhone application that gives you numbers to play when you shake your phone...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You can get it here:&lt;br /&gt;&lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=307254314&amp;mt=8"&gt;&lt;br /&gt;&lt;img src='http://www.mboxmail.com/images/appstore.png'/&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20437576-2684007294670784047?l=cagan327.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cagan327.blogspot.com/feeds/2684007294670784047/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cagan327.blogspot.com/2009/03/loto-my-new-iphone-application.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/2684007294670784047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/2684007294670784047'/><link rel='alternate' type='text/html' href='http://cagan327.blogspot.com/2009/03/loto-my-new-iphone-application.html' title='Loto - My New iPhone Application'/><author><name>Cagan Senturk</name><uri>http://www.blogger.com/profile/14641038760242921008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_hDYiLb6x0Wk/SZ1PTBn-JXI/AAAAAAAAACM/sy_hi15wjNs/S220/DSC01227.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20437576.post-8783751484362703283</id><published>2009-03-08T02:32:00.002+02:00</published><updated>2009-03-08T02:36:24.856+02:00</updated><title type='text'>Another iPhone App</title><content type='html'>I just released another iPhone app that works like the Magic Eight Ball. &lt;br /&gt;&lt;br /&gt;You can download it here:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=307098513&amp;mt=8"&gt;&lt;br /&gt;&lt;img src='http://www.mboxmail.com/images/appstore.png'/&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20437576-8783751484362703283?l=cagan327.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cagan327.blogspot.com/feeds/8783751484362703283/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cagan327.blogspot.com/2009/03/another-iphone-app.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/8783751484362703283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/8783751484362703283'/><link rel='alternate' type='text/html' href='http://cagan327.blogspot.com/2009/03/another-iphone-app.html' title='Another iPhone App'/><author><name>Cagan Senturk</name><uri>http://www.blogger.com/profile/14641038760242921008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_hDYiLb6x0Wk/SZ1PTBn-JXI/AAAAAAAAACM/sy_hi15wjNs/S220/DSC01227.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20437576.post-7342902516501666512</id><published>2009-03-03T16:09:00.002+02:00</published><updated>2009-03-03T16:16:56.909+02:00</updated><title type='text'>Safari 4.0 Beta is Available</title><content type='html'>I'm a big fan of Firefox. I like its plugins, the developer tools etc. What I like the most is the ability to set multiple websites as the homepage. So with one click on the 'home' icon I can open multiple tabs with the sites I read the most.&lt;br /&gt;What I don't like about Firefox is that it gets slow and even crashes sometimes. And that happens pretty frequently lately. I guess the more plugins you install, the more you pay for it.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.apple.com/safari/download/"&gt;Safari&lt;/a&gt; version 4.0 Beta is now available. I gave it a test run. It has a very cool 'Top sites' functionality. I only wish Apple made it easy enough to add ad hoc sites to that view rather than picking most  visited sites from history automatically. I simply want to add the sites I want myself. Sometimes too much system intelligence is simply that, too much.&lt;br /&gt;&lt;br /&gt;I think I'm going to give it a go and stick with Safari for one week. Let's see what happens.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20437576-7342902516501666512?l=cagan327.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cagan327.blogspot.com/feeds/7342902516501666512/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cagan327.blogspot.com/2009/03/safari-40-beta-is-available.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/7342902516501666512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/7342902516501666512'/><link rel='alternate' type='text/html' href='http://cagan327.blogspot.com/2009/03/safari-40-beta-is-available.html' title='Safari 4.0 Beta is Available'/><author><name>Cagan Senturk</name><uri>http://www.blogger.com/profile/14641038760242921008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_hDYiLb6x0Wk/SZ1PTBn-JXI/AAAAAAAAACM/sy_hi15wjNs/S220/DSC01227.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20437576.post-3057023847205453365</id><published>2009-02-23T09:18:00.003+02:00</published><updated>2009-02-23T09:23:50.114+02:00</updated><title type='text'>QCall is now QDial</title><content type='html'>I had recently announced &lt;a href="http://cagan327.blogspot.com/2009/01/qcall-my-first-iphone-application-at.html"&gt; the release of QCall&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;That release was done under the Profesyo.net Apple Developer License. I removed it from the app store and re-released it with my personal developer license ('cagan327') and with a new name: &lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=305882222&amp;mt=8"&gt;QDial&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=305882222&amp;mt=8" title="QCall"&gt;&lt;img style="cursor: pointer; width: 166px; height: 74px;" src="http://www.mboxmail.com/images/appstore.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20437576-3057023847205453365?l=cagan327.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cagan327.blogspot.com/feeds/3057023847205453365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cagan327.blogspot.com/2009/02/qcall-re-released-as-qdial.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/3057023847205453365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/3057023847205453365'/><link rel='alternate' type='text/html' href='http://cagan327.blogspot.com/2009/02/qcall-re-released-as-qdial.html' title='QCall is now QDial'/><author><name>Cagan Senturk</name><uri>http://www.blogger.com/profile/14641038760242921008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_hDYiLb6x0Wk/SZ1PTBn-JXI/AAAAAAAAACM/sy_hi15wjNs/S220/DSC01227.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20437576.post-5205024486855128181</id><published>2009-02-17T16:28:00.000+02:00</published><updated>2009-02-17T16:39:23.018+02:00</updated><title type='text'>Acil (iPhone App) is  Number 2 Top Paid App in iTunes Store</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_hDYiLb6x0Wk/SZrLCYN17vI/AAAAAAAAAB8/A-g8cm8dvQU/s1600-h/acilnumber2.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 210px;" src="http://3.bp.blogspot.com/_hDYiLb6x0Wk/SZrLCYN17vI/AAAAAAAAAB8/A-g8cm8dvQU/s320/acilnumber2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5303774752902868722" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As I mentioned &lt;a href="http://cagan327.blogspot.com/2009/02/emergency-calls-in-turkey.html"&gt;here&lt;/a&gt;, I recently wrote an iPhone application named 'Acil'. It simply allows people to make emergency calls in Turkey.&lt;br /&gt;&lt;br /&gt;When I checked iTunes Store's Turkey branch today, I saw that it made number 2 in  the 'Top Paid Apps' list. &lt;br /&gt;&lt;br /&gt;I never knew that fame would come this easily to me ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20437576-5205024486855128181?l=cagan327.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cagan327.blogspot.com/feeds/5205024486855128181/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cagan327.blogspot.com/2009/02/acil-iphone-app-is-number-2-top-paid.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/5205024486855128181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/5205024486855128181'/><link rel='alternate' type='text/html' href='http://cagan327.blogspot.com/2009/02/acil-iphone-app-is-number-2-top-paid.html' title='Acil (iPhone App) is  Number 2 Top Paid App in iTunes Store'/><author><name>Cagan Senturk</name><uri>http://www.blogger.com/profile/14641038760242921008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_hDYiLb6x0Wk/SZ1PTBn-JXI/AAAAAAAAACM/sy_hi15wjNs/S220/DSC01227.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_hDYiLb6x0Wk/SZrLCYN17vI/AAAAAAAAAB8/A-g8cm8dvQU/s72-c/acilnumber2.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20437576.post-404438243247609375</id><published>2009-02-17T15:45:00.000+02:00</published><updated>2009-02-17T15:58:15.520+02:00</updated><title type='text'>From File_column to Paperclip (a.k.a 'No more RMagick')</title><content type='html'>Today was the 'upgrade to Rails 2.2.2' day at the office. While updating the system, I also replaced the good &lt;a href="http://www.kanthak.net/opensource/file_column/"&gt;'file_column'&lt;/a&gt; with the better &lt;a href="http://www.thoughtbot.com/projects/paperclip"&gt;'Paperclip'&lt;/a&gt; plugin.  &lt;br /&gt;&lt;br /&gt;There were basically 3 reasons for my choosing paperclip over the other:&lt;br /&gt;&lt;br /&gt;1) I won't have to go through the hell of installing RMagick ever again&lt;br /&gt;2) Paperclip doesn't consume nearly as much memory while uploading files&lt;br /&gt;3) @user.photo.url is a cleaner syntax than url_for_file_column(@user, "photo")&lt;br /&gt;&lt;br /&gt;Thanks to &lt;a href="http://www.railscasts.com"&gt;RailsCasts&lt;/a&gt; for introducing me to Paperclip.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20437576-404438243247609375?l=cagan327.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cagan327.blogspot.com/feeds/404438243247609375/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cagan327.blogspot.com/2009/02/paperclip-or-filecolumn.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/404438243247609375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/404438243247609375'/><link rel='alternate' type='text/html' href='http://cagan327.blogspot.com/2009/02/paperclip-or-filecolumn.html' title='From File_column to Paperclip (a.k.a &apos;No more RMagick&apos;)'/><author><name>Cagan Senturk</name><uri>http://www.blogger.com/profile/14641038760242921008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_hDYiLb6x0Wk/SZ1PTBn-JXI/AAAAAAAAACM/sy_hi15wjNs/S220/DSC01227.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20437576.post-5768306481235716550</id><published>2009-02-11T00:22:00.000+02:00</published><updated>2009-02-11T00:28:57.906+02:00</updated><title type='text'>Emergency calls in Turkey</title><content type='html'>The fact that there are separate phone numbers for each specific emergency case in Turkey amazes me. If you need to call the police, dial one number; if you need medical help, dial another one. There are even two different phone numbers to report fire and forest fire. Why not make things simple for people and use a 911-like number? So I wrote an iPhone application that makes things a bit easier when one is in trouble.  &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The application is available here:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=304383530&amp;mt=8"&gt;&lt;br /&gt;&lt;img src='http://www.mboxmail.com/images/appstore.png'/&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20437576-5768306481235716550?l=cagan327.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cagan327.blogspot.com/feeds/5768306481235716550/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cagan327.blogspot.com/2009/02/emergency-calls-in-turkey.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/5768306481235716550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/5768306481235716550'/><link rel='alternate' type='text/html' href='http://cagan327.blogspot.com/2009/02/emergency-calls-in-turkey.html' title='Emergency calls in Turkey'/><author><name>Cagan Senturk</name><uri>http://www.blogger.com/profile/14641038760242921008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_hDYiLb6x0Wk/SZ1PTBn-JXI/AAAAAAAAACM/sy_hi15wjNs/S220/DSC01227.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20437576.post-8290831424552622165</id><published>2009-01-19T16:17:00.000+02:00</published><updated>2009-01-19T16:24:48.540+02:00</updated><title type='text'>Profesyo iPhone App is now available in iTunes Store</title><content type='html'>Finally!!! After much ado, Profesyo iPhone application is in iTunes Store! &lt;br /&gt;The approval process took a bit longer than anticipated as I mentioned &lt;br /&gt;&lt;a href="http://cagan327.blogspot.com/2009/01/apple-says-one-of-adobe-photoshops.html"&gt;here&lt;/a&gt;. But overall it was an instructive process.&lt;br /&gt;&lt;br /&gt;The app is available here:&lt;br /&gt;&lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=301114172&amp;mt=8"&gt;&lt;br /&gt;&lt;img src='http://www.mboxmail.com/images/appstore.png'/&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20437576-8290831424552622165?l=cagan327.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cagan327.blogspot.com/feeds/8290831424552622165/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cagan327.blogspot.com/2009/01/profesyo-iphone-app-is-now-available-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/8290831424552622165'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/8290831424552622165'/><link rel='alternate' type='text/html' href='http://cagan327.blogspot.com/2009/01/profesyo-iphone-app-is-now-available-in.html' title='Profesyo iPhone App is now available in iTunes Store'/><author><name>Cagan Senturk</name><uri>http://www.blogger.com/profile/14641038760242921008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_hDYiLb6x0Wk/SZ1PTBn-JXI/AAAAAAAAACM/sy_hi15wjNs/S220/DSC01227.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20437576.post-462886328583127554</id><published>2009-01-18T16:32:00.000+02:00</published><updated>2009-01-19T16:26:51.044+02:00</updated><title type='text'>QCall - My First iPhone Application in iTunes Store</title><content type='html'>While waiting for my Profesyo.net iPhone app to be approved by Apple, I wrote a simple utility app called QCall ('Quick Call') and it's been released at iTunes store.&lt;br /&gt;&lt;br /&gt;QCall simply presents a 4x5 grid of squares to each of which you can assign a contact phone number for quick dialing and sms sending.&lt;br /&gt;&lt;br /&gt;It's a free application. You can download it at :&lt;br /&gt;&lt;br /&gt;&lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=302008913&amp;mt=8" title="QCall"&gt;&lt;img style="cursor: pointer; width: 166px; height: 74px;" src="http://www.mboxmail.com/images/appstore.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20437576-462886328583127554?l=cagan327.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cagan327.blogspot.com/feeds/462886328583127554/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cagan327.blogspot.com/2009/01/qcall-my-first-iphone-application-at.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/462886328583127554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/462886328583127554'/><link rel='alternate' type='text/html' href='http://cagan327.blogspot.com/2009/01/qcall-my-first-iphone-application-at.html' title='QCall - My First iPhone Application in iTunes Store'/><author><name>Cagan Senturk</name><uri>http://www.blogger.com/profile/14641038760242921008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_hDYiLb6x0Wk/SZ1PTBn-JXI/AAAAAAAAACM/sy_hi15wjNs/S220/DSC01227.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20437576.post-2436543318993224785</id><published>2009-01-16T11:29:00.000+02:00</published><updated>2009-01-17T13:03:13.193+02:00</updated><title type='text'>Apple says one of Adobe Photoshop's custom shapes is an Apple trademark image</title><content type='html'>I recently started writing iPhone applications. I really enjoy it too. The SDK is brilliant. The documentation is almost perfect. Samples are abundant. &lt;br /&gt;&lt;br /&gt;For initiation, I decided to write an iPhone app for our Profesyo.net which is a professional network site in Turkey. The functionality would be to display the financial market status, your contacts as well as to send people connection requests and process the connection requests you received. &lt;br /&gt;&lt;br /&gt;I wrote the app, signed the code and submitted to Apple through iTunesConnect on December 29th, 2008.&lt;br /&gt;&lt;br /&gt;Around a week passed, a message from Apple saying that they can't deploy my app as it was violating one of iPhone UI guidelines related to table views. Fair enough. I made the proper change and resubmitted.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Yet another week passed, and another message. This time telling me that I have to notify the user if there is no network connection as my app relies on one being present. I was displaying blank values in that case. That's fair too. Once again I made the change and resubmitted sure this time that I've done everything right.&lt;br /&gt;&lt;br /&gt;And another week passed, and you guessed it right, another message. This one is interesting. Here's the complete text of the message:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Dear Cagan,&lt;br /&gt;&lt;br /&gt;Thank you for submitting Profesyo.net to the App Store. We've reviewed Profesyo.net and determined that we cannot post this version of your iPhone application to the App Store because of an Apple trademark image.  We want to remind you of the importance of following Apple's posted Guidelines for Using Apple's Trademarks and Copyrights: &lt;http://www.apple.com/legal/trademark/guidelinesfor3rdparties.html&gt;. Please see the enclosed screenshot&lt;br /&gt;&lt;br /&gt;If you believe that you can make the necessary changes so that Profesyo.net does not infringe on Apple trademarks, we encourage you to do so and resubmit it for review.&lt;br /&gt;&lt;br /&gt;++++++++++++&lt;br /&gt;&lt;br /&gt;Apple Logo and Apple-owned Graphic Symbols: &lt;br /&gt;&lt;br /&gt;You may not use the Apple Logo or any other Apple-owned graphic symbol, logo, or icon on or in connection with web sites, products, packaging, manuals, promotional/advertising materials, or for any other purpose except pursuant to an express written trademark license from Apple, such as a reseller agreement.&lt;br /&gt;&lt;br /&gt;++++++++++++&lt;br /&gt;&lt;br /&gt;Regards,&lt;br /&gt;&lt;br /&gt;iPhone Developer Program&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Hmmm...Cagan is getting upset!!! &lt;br /&gt;&lt;br /&gt;So I got very curious as I don't remember using any one of Apple's images. I quickly opened the attached screenshot:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_hDYiLb6x0Wk/SXBYViUKcSI/AAAAAAAAAA4/qxwYKdZQvHY/s1600-h/IMG_0008.PNG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 214px; height: 320px;" src="http://3.bp.blogspot.com/_hDYiLb6x0Wk/SXBYViUKcSI/AAAAAAAAAA4/qxwYKdZQvHY/s320/IMG_0008.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5291826689172205858" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Well waaaaiittt a second there  tiger!!!! &lt;br /&gt;&lt;br /&gt;First a trademark on a wireframe earth image?&lt;br /&gt;&lt;br /&gt;Second, I was pretty sure I found that somewhere in Photoshop. I fired up Photoshop (CS3 for detailed oriented readers) and sure enough it's there:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_hDYiLb6x0Wk/SXBZaxbbL9I/AAAAAAAAABA/he3sJDO6qv8/s1600-h/profesyo.png"&gt;&lt;img style=";cursor:pointer; cursor:hand;width: 320px; height: 200px;" src="http://1.bp.blogspot.com/_hDYiLb6x0Wk/SXBZaxbbL9I/AAAAAAAAABA/he3sJDO6qv8/s320/profesyo.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5291827878640168914" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Not only has it been 3 weeks since I submitted my app; I now have to battle with Apple over this? I'll resubmit with another image of course. But I'm pretty annoyed. &lt;br /&gt;&lt;br /&gt;Anyways, that's the story..I just wanted to share it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20437576-2436543318993224785?l=cagan327.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cagan327.blogspot.com/feeds/2436543318993224785/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cagan327.blogspot.com/2009/01/apple-says-one-of-adobe-photoshops.html#comment-form' title='34 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/2436543318993224785'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/2436543318993224785'/><link rel='alternate' type='text/html' href='http://cagan327.blogspot.com/2009/01/apple-says-one-of-adobe-photoshops.html' title='Apple says one of Adobe Photoshop&apos;s custom shapes is an Apple trademark image'/><author><name>Cagan Senturk</name><uri>http://www.blogger.com/profile/14641038760242921008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_hDYiLb6x0Wk/SZ1PTBn-JXI/AAAAAAAAACM/sy_hi15wjNs/S220/DSC01227.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_hDYiLb6x0Wk/SXBYViUKcSI/AAAAAAAAAA4/qxwYKdZQvHY/s72-c/IMG_0008.PNG' height='72' width='72'/><thr:total>34</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20437576.post-2255936478681836708</id><published>2008-12-30T18:44:00.001+02:00</published><updated>2008-12-30T18:56:27.852+02:00</updated><title type='text'>Localizable.strings problem in iPhone apps</title><content type='html'>Lately I have been writing an iPhone application  that needs to work in English and Turkish.&lt;br /&gt;I used NSLocalizedString macro all across my code, then ran 'genstrings' from command-line to generate the Localizable.strings file with the key-value pairs.&lt;br /&gt;In XCode, I selected Localizable.strings, hit the 'Info' button and then hit the 'Make file localizable' button.  I then used the 'Add Localization' to add 'tr' support.  I updated the Turkish version of the file with translated strings.&lt;br /&gt;&lt;br /&gt;It all looked good when I tested on the simulator. Pretty cool. But while testing on the actual device, I noticed that the strings were not being replaced with their Turkish translations.&lt;br /&gt;&lt;br /&gt;iPhone documentation says the Localizable.strings file needs to be in UTF-16 encoding. But suprisingly, if you are using SDK 2.2, the file generated when you hit the 'Add Localization' button is in UTF-8 encoding. So just because you added the original Localizable.strings file in XCode by specifying UTF-16 econding, do not assume that XCode will stick to that for its localized copies. To change the file's encoding to UTF-16 from UTF-8, use  'View' --&gt; 'Text' --&gt; 'File Encoding' in XCode menu.&lt;br /&gt;&lt;br /&gt;'Clean', 'Build', and it all works!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20437576-2255936478681836708?l=cagan327.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cagan327.blogspot.com/feeds/2255936478681836708/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cagan327.blogspot.com/2008/12/localizablestrings-problem-in-iphone.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/2255936478681836708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/2255936478681836708'/><link rel='alternate' type='text/html' href='http://cagan327.blogspot.com/2008/12/localizablestrings-problem-in-iphone.html' title='Localizable.strings problem in iPhone apps'/><author><name>Cagan Senturk</name><uri>http://www.blogger.com/profile/14641038760242921008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_hDYiLb6x0Wk/SZ1PTBn-JXI/AAAAAAAAACM/sy_hi15wjNs/S220/DSC01227.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20437576.post-105576930079128005</id><published>2007-10-06T23:04:00.000+03:00</published><updated>2007-10-06T23:11:52.489+03:00</updated><title type='text'>distance_of_time_in_words in Turkish</title><content type='html'>In certain websites, you sometimes see notes like 'this comment was added 2 hours ago' .&lt;br /&gt;If you use RoR (Ruby on Rails for the uninitiated), &lt;span style="font-style: italic;"&gt;distance_of_time_in_words &lt;/span&gt;method in &lt;span style="font-style: italic;"&gt;DateHelper &lt;/span&gt;accomplishes that.&lt;br /&gt;What if your site is in another language, how do you manage to translate these messages? It's pretty simple actually...&lt;br /&gt;For example for a Turkish implementation, simply append the code below to the end of your&lt;br /&gt;&lt;span style="font-style: italic;"&gt;application.rb &lt;/span&gt;file.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;module ActionView::Helpers::DateHelper&lt;br /&gt;  def distance_of_time_in_words(from_time, to_time = 0, include_seconds = false)&lt;br /&gt;    from_time = from_time.to_time if from_time.respond_to?(:to_time)&lt;br /&gt;    to_time = to_time.to_time if to_time.respond_to?(:to_time)&lt;br /&gt;    distance_in_minutes = (((to_time - from_time).abs)/60).round&lt;br /&gt;    distance_in_seconds = ((to_time - from_time).abs).round&lt;br /&gt;   &lt;br /&gt;    case distance_in_minutes&lt;br /&gt;    when 0..1&lt;br /&gt;      return (distance_in_minutes==0) ? 'bir dakika kadar önce' : '1 dakika önce' unless include_seconds&lt;br /&gt;      case distance_in_seconds&lt;br /&gt;      when 0..5   then '5 saniye kadar önce'&lt;br /&gt;      when 6..10  then '10 saniye kadar önce'&lt;br /&gt;      when 11..20 then '20 saniye kadar önce'&lt;br /&gt;      when 21..40 then 'yarım dakika kadar önce'&lt;br /&gt;      when 41..59 then 'bir dakika kadar önce'&lt;br /&gt;      else             '1 dakika önce'&lt;br /&gt;      end&lt;br /&gt;     &lt;br /&gt;    when 2..45      then "#{distance_in_minutes} dakika önce"&lt;br /&gt;    when 46..90     then '1 saat kadar önce'&lt;br /&gt;    when 90..1440   then "#{(distance_in_minutes.to_f / 60.0).round} saat kadar önce"&lt;br /&gt;    when 1441..2880 then '1 gün önce'&lt;br /&gt;    else                 "#{(distance_in_minutes / 1440).round} gün önce"&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;blockquote&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20437576-105576930079128005?l=cagan327.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cagan327.blogspot.com/feeds/105576930079128005/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cagan327.blogspot.com/2007/10/distanceoftimeinwords-in-turkish.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/105576930079128005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/105576930079128005'/><link rel='alternate' type='text/html' href='http://cagan327.blogspot.com/2007/10/distanceoftimeinwords-in-turkish.html' title='distance_of_time_in_words in Turkish'/><author><name>Cagan Senturk</name><uri>http://www.blogger.com/profile/14641038760242921008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_hDYiLb6x0Wk/SZ1PTBn-JXI/AAAAAAAAACM/sy_hi15wjNs/S220/DSC01227.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20437576.post-1818419595554666539</id><published>2007-07-29T12:55:00.000+03:00</published><updated>2007-07-29T13:23:16.774+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ror'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='ruby on rails'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Java or Rails?</title><content type='html'>It was almost one year ago.  I was trying to decide which mvc framework to use for my new web project.  I had implemented my last project in Java (www.touchlocal.com). And I was a big Java fan; in some ways I still am.&lt;br /&gt;But on the other hand, I was growing frustrated with certain aspects of the Java community.&lt;br /&gt;Thinking back, I now realize what pushed me away from Java was Hibernate. Yes that great ORM tool.  You know the old adage: 'you concentrate on your business logic, let us take care of the low level stuff'. With hibernate, this became: 'you can't concentrate on your business logic, you first have to figure out how to use the new version of hibernate'.&lt;br /&gt;And it was the same with tools like Maven. Your old project is with Maven 1.0.x; by the time you start the new project, Maven 2.0.x is out...Well you first have to figure out how to use that one.&lt;br /&gt;It's a project build tool for god's sake, why do I have to keep figuring out how to use it?&lt;br /&gt;&lt;br /&gt;Internet is a great information resource obviously. But it may also become your biggest obstacle if you are trying to make a decision. Try buying a new digital camera basing your decision on user reviews. You'll probably go mad.  What you need is a review written by your clone. Or if you believe in parallel universes, you have to figure out how to tap into that.&lt;br /&gt;How can I decide which camera to buy by reading reviews written by a professional photographer? Isn't his insight useful? Well not to me necessarily.&lt;br /&gt;&lt;br /&gt;I kept reading about Java frameworks first. I tried JFC, Tapestry, Wicket, Stripes...&lt;br /&gt;Stripes was the one that won my heart. But I was still not at ease with my decision. Then I took a  turn...And decided to give Ruby on Rails a run...&lt;br /&gt;&lt;br /&gt;And that turned out to be one of the best decisions I've ever made.&lt;br /&gt;&lt;br /&gt;ROR is a pleasure to write a web application in. I'm sure you've already read about  10x productivity gains...And you are curious whether that's true.  Trust me it is...At least 10x.&lt;br /&gt;&lt;br /&gt;'But what about all I've read about ROR being slow' you might ask.  I personally haven't had any problems with that either. And we are running a high traffic site with a lot of back-end processes.&lt;br /&gt;&lt;br /&gt;Ruby is a great programming language. Programming is more fun with a functional programming language. You feel more like god (you know what I'm talking about).&lt;br /&gt;&lt;br /&gt;And if you don't want to leave your favourite java libraries behind, then there is JRuby for you.&lt;br /&gt;&lt;br /&gt;If you are at the crossroads as I was a year ago, and you are trying to decide what to use; I say use RoR.  You'll thank yourself.  You'll love yourself. You'll become a better programmer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20437576-1818419595554666539?l=cagan327.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cagan327.blogspot.com/feeds/1818419595554666539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cagan327.blogspot.com/2007/07/java-or-rails.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/1818419595554666539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/1818419595554666539'/><link rel='alternate' type='text/html' href='http://cagan327.blogspot.com/2007/07/java-or-rails.html' title='Java or Rails?'/><author><name>Cagan Senturk</name><uri>http://www.blogger.com/profile/14641038760242921008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_hDYiLb6x0Wk/SZ1PTBn-JXI/AAAAAAAAACM/sy_hi15wjNs/S220/DSC01227.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20437576.post-114736048461977579</id><published>2006-05-11T18:14:00.000+03:00</published><updated>2006-06-01T12:09:06.853+03:00</updated><title type='text'>UTF-8 Encoding fix for MySQL (Tomcat, JSP)</title><content type='html'>In my &lt;a href="http://cagan327.blogspot.com/2006/05/utf-8-encoding-fix-tomcat-jsp-etc.html"&gt;previous post&lt;/a&gt;, I talked about how to get international characters to display properly on your jsp pages.&lt;br /&gt;&lt;br /&gt;This post is going to talk about how to make sure the international characters posted through an html form gets saved in and retrieved from the MySQL database with UTF-8 encoding.&lt;br /&gt;&lt;br /&gt;You know the case where you submit 'alımlı' in your form, but when you check the value stored in your database table, it becomes 'al?ml?'!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;For a great explanation of what's going on behind the scenes, read 'CHARSET CONVERSION FROM BROWSER TO DATABASE' section &lt;a href="http://java.sun.com/developer/EJTechTips/2005/tt1220.html"&gt;on this page&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The required steps to overcome this problem are as follows:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;   &lt;li&gt;Make sure you do everything explained &lt;a href="http://cagan327.blogspot.com/2006/05/utf-8-encoding-fix-tomcat-jsp-etc.html"&gt;here&lt;/a&gt;&lt;/li&gt;.&lt;br /&gt;   &lt;li&gt;Make sure your database and/or table and/or field is defined with character set UTF-8. Collation plays a role when comparing values, pick the one that fits your target language and pick the generic one.&lt;/li&gt;&lt;br /&gt;   &lt;li&gt;In {tomcat dir}/conf/server.xml, the connector configuration should have 'URIEncoding=UTF-8'. For example:&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&amp;lt;Connector port="7000" maxHttpHeaderSize="8192"&lt;br /&gt;               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"&lt;br /&gt;               enableLookups="false" redirectPort="8443" acceptCount="100"&lt;br /&gt;               URIEncoding="UTF-8" &lt;br /&gt;               connectionTimeout="20000" disableUploadTimeout="true" /&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt; This step is required if you will use 'get' as a form submission method. But it doesn't hurt to set it in any case.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;   &lt;li&gt;Your database connection string should follow the format:&lt;br /&gt; url="jdbc:mysql://localhost:3306/{database name}?autoReconnect=true&amp;useEncoding=true&amp;amp;characterEncoding=UTF-8"&lt;/li&gt;&lt;br /&gt;   &lt;li&gt;THIS IS THE MOST IMPORTANT BIT OF INFO: Make sure to start your mysql server with the '--default-character-set=utf8' parameter. For example, on my system (MacOSX), I start the server with './safe_mysqld --default-character-set=utf8.'&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;And that's it! If you are still having problems, send me an &lt;a href="mailto:cs327@teknolabs.com"&gt;email&lt;/a&gt; and I will try to assist you further.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20437576-114736048461977579?l=cagan327.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cagan327.blogspot.com/feeds/114736048461977579/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cagan327.blogspot.com/2006/05/utf-8-encoding-fix-for-mysql-tomcat.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/114736048461977579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/114736048461977579'/><link rel='alternate' type='text/html' href='http://cagan327.blogspot.com/2006/05/utf-8-encoding-fix-for-mysql-tomcat.html' title='UTF-8 Encoding fix for MySQL (Tomcat, JSP)'/><author><name>Cagan Senturk</name><uri>http://www.blogger.com/profile/14641038760242921008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_hDYiLb6x0Wk/SZ1PTBn-JXI/AAAAAAAAACM/sy_hi15wjNs/S220/DSC01227.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20437576.post-114681580979984903</id><published>2006-05-05T09:56:00.000+03:00</published><updated>2006-05-05T13:04:39.373+03:00</updated><title type='text'>UTF-8 Encoding fix (Tomcat, JSP, etc)</title><content type='html'>I spent a whole day trying to get non-ascii characters to display properly in my JSP pages.&lt;br /&gt;To save anyone from spending similarly frustrating hours, here's the solution to get to display those characters in your JSP page.&lt;br /&gt;&lt;br /&gt;First please read &lt;a href="http://www.joelonsoftware.com/articles/Unicode.html"&gt;this&lt;/a&gt; so that you understand what the concept of encoding is.&lt;br /&gt;&lt;br /&gt;While trying to solve my problem I collected couple of links, you can browse them &lt;a href="http://del.icio.us/cagan327/encoding"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So my setup is as follows:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;    Tomcat Application Server (5.5.17)&lt;/li&gt;&lt;li&gt;    &lt;a href="http://stripes.mc4j.org"&gt;Stripes&lt;/a&gt; web framework.&lt;/li&gt;&lt;li&gt;    Front-end implementation JSP (using Stripes' layout functionality).&lt;/li&gt;&lt;li&gt;    OS: MacOSX&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Two main problems:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;    Get to display non-ascii characters (e.g. ç,ğ,ö,ş,ı, etc) in the jsp file when they are typed  directly inside the jsp.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;    Get to display these characters when read from an application resources file (for example StripesResources.properties for Stripes).&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Ok let's begin...&lt;br /&gt;First make sure you save all your files (jsps, application resources files) in UTF-8 encoding. In Dreamweaver for example, Ctrl-J (or Apple-J) will bring up the window to set that.&lt;br /&gt;&lt;br /&gt;Solution to problem 1:&lt;br /&gt;&lt;br /&gt;I may have overkilled here, but this setup works, so you may adopt the IIWDQ ('if it works don't question') approach.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;    Place '&amp;lt;%@ page language="java" pageEncoding="utf-8" contentType="text/html;charset=utf-8"%&amp;gt;' as the first line in 'ALL' the jsps. &lt;br /&gt;&lt;br&gt;If you are using a layout manager, similar to Stripes layout, you may think 'hey I'll just put it in the layout page that way it will work for all my pages'..THINK AGAIN. IT WON'T.  &lt;br /&gt;&lt;br&gt;You may also say 'hey wait I have a great idea, I have this include.jsp where I declare all the taglibs,  I'll place this directive in that file...All my jsps include that file, so it will work'. To that I'll say NOPE.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;   Place &amp;lt;meta equiv="Content-Type" content="text/html; charset=UTF-8"&amp;gt; under &amp;lt;head&amp;gt;. This is to give browsers an idea about the content of the page so  they can display the contents properly.&lt;/li&gt;&lt;li&gt; Write an Encoding filter and make sure all your requests pass through it. Not difficult at all. Here it is:&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;import java.io.IOException;&lt;br /&gt;&lt;br /&gt;import javax.servlet.Filter;&lt;br /&gt;import javax.servlet.FilterChain;&lt;br /&gt;import javax.servlet.FilterConfig;&lt;br /&gt;import javax.servlet.ServletException;&lt;br /&gt;import javax.servlet.ServletRequest;&lt;br /&gt;import javax.servlet.ServletResponse;&lt;br /&gt;&lt;br /&gt;public class EncodingFilter implements Filter {&lt;br /&gt; private String encoding;&lt;br /&gt; private FilterConfig filterConfig;&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)&lt;br /&gt;  */&lt;br /&gt; public void init(FilterConfig fc) throws ServletException {&lt;br /&gt;     this.filterConfig = fc;&lt;br /&gt;     this.encoding = filterConfig.getInitParameter("encoding");&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)&lt;br /&gt;  */&lt;br /&gt; public void doFilter(ServletRequest req, ServletResponse resp,&lt;br /&gt;         FilterChain chain) throws IOException, ServletException {&lt;br /&gt;     req.setCharacterEncoding(encoding);&lt;br /&gt;     chain.doFilter(req, resp);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * @see javax.servlet.Filter#destroy()&lt;br /&gt;  */&lt;br /&gt; public void destroy() {&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;The way you let your web application know about this filter is via the web.xml file:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&amp;lt;filter&amp;gt;&lt;br /&gt;     &amp;lt;filter-name&amp;gt;EncodingFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;     &amp;lt;filter-class&amp;gt;com.yourpackagestructurehere.EncodingFilter&amp;lt;/filter-class&amp;gt;&lt;br /&gt;     &amp;lt;init-param&amp;gt;&lt;br /&gt;         &amp;lt;param-name&amp;gt;encoding&amp;lt;/param-name&amp;gt;&lt;br /&gt;         &amp;lt;param-value&amp;gt;UTF-8&amp;lt;/param-value&amp;gt;&lt;br /&gt;     &amp;lt;/init-param&amp;gt;&lt;br /&gt; &amp;lt;/filter&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;filter-mapping&amp;gt;&lt;br /&gt;         &amp;lt;filter-name&amp;gt;EncodingFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;         &amp;lt;url-pattern&amp;gt;/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt; &amp;lt;/filter-mapping&amp;gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;At this stage, if you type something along the lines of 'çanak çömlek patladı' in your jsp and run the web application, you should see it in your browser...&lt;br /&gt;&lt;br /&gt;Are we done? Not yet. Because if you have something like &amp;lt;fmt:message key="username"&amp;gt; in your jsp and your resource properties file contains username=Kullanıcı Adı, you will end up&lt;br /&gt;with something like 'Kullan?c? Ad?'...For that see:&lt;br /&gt;&lt;br /&gt;Solution to problem 2:&lt;br /&gt; I know you saved your ApplicationResources.properties (or StripesResources.properties, or xxx.properties) file in UTF-8. That should display fine right? Well wrong. It does not. But it will if you :&lt;br /&gt;&lt;ol&gt;&lt;li&gt;    Copy your ApplicationResources.properties file to something like ApplicationResources.properties.org.&lt;/li&gt;&lt;li&gt;    run 'native2ascii -encoding UTF-8 ApplicationResources.properties.org ApplicationResources.properties'&lt;/li&gt;&lt;li&gt;  Deploy your files...&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;And ta-ta! (At least for me it was 'ta-ta' at this stage)...&lt;br /&gt;&lt;br /&gt;Special thanks to cleverpig, mj and Rick Smith from Stripes mailing list for their help on this subject.&lt;br /&gt;&lt;br /&gt;Ha by the way, if you are not using Stripes yet, it's time you start using it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20437576-114681580979984903?l=cagan327.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cagan327.blogspot.com/feeds/114681580979984903/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cagan327.blogspot.com/2006/05/utf-8-encoding-fix-tomcat-jsp-etc.html#comment-form' title='27 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/114681580979984903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/114681580979984903'/><link rel='alternate' type='text/html' href='http://cagan327.blogspot.com/2006/05/utf-8-encoding-fix-tomcat-jsp-etc.html' title='UTF-8 Encoding fix (Tomcat, JSP, etc)'/><author><name>Cagan Senturk</name><uri>http://www.blogger.com/profile/14641038760242921008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_hDYiLb6x0Wk/SZ1PTBn-JXI/AAAAAAAAACM/sy_hi15wjNs/S220/DSC01227.jpg'/></author><thr:total>27</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20437576.post-114500006776728695</id><published>2006-04-14T10:31:00.000+03:00</published><updated>2006-06-06T17:21:37.783+03:00</updated><title type='text'>Nice Java Web Framework</title><content type='html'>After long technology evaluation sessions, I decided to use &lt;a href="http://stripes.mc4j.org"&gt;Stripes&lt;/a&gt; as the web framework for my next project.&lt;br /&gt;&lt;br /&gt;I went through so many iterations along the way: JSF, Wicket, Rife and even Ruby on Rails.&lt;br /&gt;But at the end Stripes won my heart for its simplicity and easy Spring integration.&lt;br /&gt;I must also mention that lack of xml configuration files was a big point for Stripes as  &lt;br /&gt;well.&lt;br /&gt;&lt;br /&gt;At times I find myself thinking : 'why am I killing myself to learn yet another framework? Why not use 'xxx framework' all over again?'.  I don't have a very good answer to these questions.  I guess most of it is curiosity, some of it is the need to feel like I'm not falling behind following new trends and some of it is just that doing a new project with a framework that I already know how to use is just plain boring.&lt;br /&gt;&lt;br /&gt;Hmmm...So doesn't that last point go against productivity? 'Perform your task with the tools you know how to use best. That way you'll produce good solutions in shorter time'. I guess it does a bit. But who cares? System development must be fun. And I'm having most fun when I'm learning new things.&lt;br /&gt;&lt;br /&gt;Having said all of that, I think I would have killed Tomcat if it was a man rather than an application server. The damn thing refuses to accept that I want my pages processed with UTF-8!!! Listen to me: UTF-8 I said!.&lt;br /&gt;&lt;br /&gt;Back to that now...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20437576-114500006776728695?l=cagan327.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cagan327.blogspot.com/feeds/114500006776728695/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cagan327.blogspot.com/2006/04/nice-java-web-framework.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/114500006776728695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/114500006776728695'/><link rel='alternate' type='text/html' href='http://cagan327.blogspot.com/2006/04/nice-java-web-framework.html' title='Nice Java Web Framework'/><author><name>Cagan Senturk</name><uri>http://www.blogger.com/profile/14641038760242921008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_hDYiLb6x0Wk/SZ1PTBn-JXI/AAAAAAAAACM/sy_hi15wjNs/S220/DSC01227.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20437576.post-114197966938871524</id><published>2006-03-10T10:15:00.000+02:00</published><updated>2006-03-10T10:39:36.636+02:00</updated><title type='text'>DRY or WET</title><content type='html'>&lt;a href="http://www.theserverside.com"&gt;ServerSide&lt;/a&gt; is a great resource to get news on the latest trends in the Java world.  It also has a .NET version ( I'm not going to even provide the link to that) that covers the 'other' side of the moon. &lt;br /&gt;&lt;br /&gt;In a recent &lt;a href="http://www.theserverside.com/news/thread.tss?thread_id=39358"&gt;posting&lt;/a&gt; about the &lt;a href="http://wicket.sourceforge.com"&gt;Wicket&lt;/a&gt; framework, I got introduced to the new WET principal. &lt;br /&gt;&lt;br /&gt;In response to a 'Does Wicket violate the DRY principle?' question, someone jokingly suggested the WET principal.  For those of you who are not familiar with these two principals, DRY stands for 'Don't Repeat Yourself'; the newly suggested WET stands for 'Write Everything Twice'.&lt;br /&gt;&lt;br /&gt;Seriously though, what in the world is going on with all these Java Web frameworks? It seems to me the quest for DRY is causing the creation of WAF ('Write Another Framework').  I recently counted fifty-five of them. FIFTY-FIVE!  I would tend to think that I would be a bit confusing for the newcomers to the Java world.  'Let me see.  Should I write my new web application in Java, using one of the 55 frameworks available, thus spending 7 weeks investigating which one to use.. Or wait....RUBY?'.&lt;br /&gt;&lt;br /&gt;I don't know whether the aim is to stay DRY or go WET, what I'm sure of is NAF!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20437576-114197966938871524?l=cagan327.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cagan327.blogspot.com/feeds/114197966938871524/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cagan327.blogspot.com/2006/03/dry-or-wet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/114197966938871524'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/114197966938871524'/><link rel='alternate' type='text/html' href='http://cagan327.blogspot.com/2006/03/dry-or-wet.html' title='DRY or WET'/><author><name>Cagan Senturk</name><uri>http://www.blogger.com/profile/14641038760242921008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_hDYiLb6x0Wk/SZ1PTBn-JXI/AAAAAAAAACM/sy_hi15wjNs/S220/DSC01227.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20437576.post-114181302561833813</id><published>2006-03-08T11:58:00.000+02:00</published><updated>2006-03-08T12:27:31.223+02:00</updated><title type='text'>What makes a good software system?</title><content type='html'>Today I read a very good &lt;a href="http://www.cabochon.com/~stevey/blog-rants/godel-escher-blog.html"&gt;article&lt;/a&gt; partly about good programming practices.  The article's content is broader than that, but what I got out of it was the latter.&lt;br /&gt;&lt;br /&gt;In my opinion, what makes a good system is the coherence of small components that only know how to perform their own task without knowing not much, preferably nothing, about the big system. Similar to the infamous saying attributed to Einstein 'everything should be made as simple as possible, but not one bit simpler', maybe we can postulate 'components should be programmed to be as dumb as possible, but not one bit dumber'.&lt;br /&gt;&lt;br /&gt;Another great concept to read about is &lt;a href="http://en.wikipedia.org/wiki/Conway's_Game_of_Life"&gt;John Conway's Game of Life&lt;/a&gt;. How amazing it is to see complex behaviour arising from a few simple rules.&lt;br /&gt;&lt;br /&gt;Along the same lines, you may have also heard of  Steven Wolfram's book &lt;a href="http://www.amazon.com/gp/product/1579550088/sr=8-1/qid=1141812731/ref=pd_bbs_1/104-0750161-6345532?%5Fencoding=UTF8"&gt;A New Kind of Science&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20437576-114181302561833813?l=cagan327.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cagan327.blogspot.com/feeds/114181302561833813/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cagan327.blogspot.com/2006/03/what-makes-good-software-system.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/114181302561833813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/114181302561833813'/><link rel='alternate' type='text/html' href='http://cagan327.blogspot.com/2006/03/what-makes-good-software-system.html' title='What makes a good software system?'/><author><name>Cagan Senturk</name><uri>http://www.blogger.com/profile/14641038760242921008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_hDYiLb6x0Wk/SZ1PTBn-JXI/AAAAAAAAACM/sy_hi15wjNs/S220/DSC01227.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20437576.post-114165743076088617</id><published>2006-03-06T16:52:00.000+02:00</published><updated>2006-03-08T12:25:59.276+02:00</updated><title type='text'>Expertise</title><content type='html'>I read a perfect &lt;a href="http://headrush.typepad.com/creating_passionate_users/2006/03/how_to_be_an_ex.html"&gt;article &lt;/a&gt; about 'how to be an expert' today. And the most notable section of if was this quote from Dr. K. Anders Ericsson:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;"For the superior performer the goal isn't just repeating the same thing again and again but achieving higher levels of control over every aspect of their performance. That's why they don't find practice boring. Each practice session they are working on doing something better than they did the last time."&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;I think what separates good coders from great ones is this little point: Great coders are never happy with what they know and the way they know how to do things.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20437576-114165743076088617?l=cagan327.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cagan327.blogspot.com/feeds/114165743076088617/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cagan327.blogspot.com/2006/03/expertise.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/114165743076088617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/114165743076088617'/><link rel='alternate' type='text/html' href='http://cagan327.blogspot.com/2006/03/expertise.html' title='Expertise'/><author><name>Cagan Senturk</name><uri>http://www.blogger.com/profile/14641038760242921008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_hDYiLb6x0Wk/SZ1PTBn-JXI/AAAAAAAAACM/sy_hi15wjNs/S220/DSC01227.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20437576.post-114131093177957366</id><published>2006-03-02T16:48:00.000+02:00</published><updated>2006-03-02T16:51:45.293+02:00</updated><title type='text'>Spore</title><content type='html'>I just watched &lt;a href="http://video.google.com/videoplay?docid=8372603330420559198&amp;q=spore"&gt;this video presentation&lt;/a&gt; of the video game Spore by Will Wright.&lt;br /&gt;&lt;br /&gt;I was quite impressed by it. You can get more information about Spore at &lt;a href="http://spore.ea.com"&gt;their website&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20437576-114131093177957366?l=cagan327.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cagan327.blogspot.com/feeds/114131093177957366/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cagan327.blogspot.com/2006/03/spore.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/114131093177957366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/114131093177957366'/><link rel='alternate' type='text/html' href='http://cagan327.blogspot.com/2006/03/spore.html' title='Spore'/><author><name>Cagan Senturk</name><uri>http://www.blogger.com/profile/14641038760242921008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_hDYiLb6x0Wk/SZ1PTBn-JXI/AAAAAAAAACM/sy_hi15wjNs/S220/DSC01227.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20437576.post-113622149668519874</id><published>2006-01-02T18:57:00.000+02:00</published><updated>2006-03-02T16:10:05.856+02:00</updated><title type='text'>First One</title><content type='html'>This is my first blog entry.  A &lt;a href="http://csertoglu.typepad.com"&gt;close friend of mine&lt;/a&gt; has been suggesting that I maintain a blog. So here it goes...&lt;br /&gt;&lt;br /&gt;I am a software engineer.  I use the web mostly to read about emerging technologies, frameworks, and to search for answers to help my debugging sessions.&lt;br /&gt;&lt;br /&gt;One of the sites I recently became addicted to is &lt;a href="http://www.reddit.com"&gt;Reddit&lt;/a&gt;.  I am not addicted to it simply because I am curious about what other people are reading, but I always find there an interesting list of articles.   I also think it's a geek-oriented list.  So it suits me fine.&lt;br /&gt;&lt;br /&gt;Lately I'm amazed about the Web 2.0 (or should I say &lt;a href="http://www.russellbeattie.com/notebook/1008838.html"&gt;WTF 2.0&lt;/a&gt;) hype. I see a lot of innovative solutions out there, but they are mostly showcasing extents of Ajax technology.   I think the real winner of this new movement is JavaScript.  Great libraries (&lt;a href="http://prototype.conio.net"&gt;prototype&lt;/a&gt;, &lt;a href="http://script.aculo.us"&gt;script.aculo.us&lt;/a&gt;, etc) have emerged to help this bad boy of programming languages get a facelift.   Why do I call Javascript a bad boy?  Well, the answer is simple really.   Ask any  programmer friend you have what they think of  javascript.  And watch how many grimaces s/he makes before answering.  Javascript is, or was, hell to write code in.&lt;br /&gt;&lt;br /&gt;Other boosters of Javascript among coders have been &lt;a href="http://www.konfabulator.com"&gt;Konfabulator&lt;/a&gt; and of course &lt;a href="http://www.apple.com/macosx/features/dashboard/"&gt;Mac OSX widgets&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Which language do I write most of my code in?  Well, I use Java...But lately I started getting very annoyed with some of  the things that have been going on in the Java world.  But that's the subject of another blog.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20437576-113622149668519874?l=cagan327.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cagan327.blogspot.com/feeds/113622149668519874/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cagan327.blogspot.com/2006/01/first-one.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/113622149668519874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20437576/posts/default/113622149668519874'/><link rel='alternate' type='text/html' href='http://cagan327.blogspot.com/2006/01/first-one.html' title='First One'/><author><name>Cagan Senturk</name><uri>http://www.blogger.com/profile/14641038760242921008</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_hDYiLb6x0Wk/SZ1PTBn-JXI/AAAAAAAAACM/sy_hi15wjNs/S220/DSC01227.jpg'/></author><thr:total>0</thr:total></entry></feed>
