Return to 10to1.be

Under the Hat


All posts by Koen

Hi Phone

05 Jan 2014

In het kort: ik heb terug een iPhone.

Een beetje langer:

549 dagen geleden ben ik van voltijds iOS gebruiker naar voltijds Android gebruiker gegaan. Ik vond dat toen een bijzonder grote en moedige stap van mezelf. Nu heb ik sinds een paar weken opnieuw een iPhone.
549 dagen getuigen wel van een tevreden gebruiker denk ik. Nee, beter nog: ik ben er zeker van.
Geen moment heb ik gedacht, 'had ik nu maar een iPhone' of 'met een iPhone zou ik dat nu zo doen' of ...
Google zorgt goed voor zijn vrienden.

Hoe is het dan toch zover kunnen komen?

  • de wifi van het toestel deed het niet meer, je denkt dat je dat niet nodig hebt maar eens je terug een toestel met werkende wifi vasthebt weet je wel beter
  • naar mijn goesting geen degelijke nieuwe vervanger voor mijn HTC One X
  • het 'je kan alles' een klein beetje beu worden
  • één of meerdere Apple Keynote(s) op de juiste moment
  • het hele iOS 7 verhaal is óh zó mooi
  • een nieuwe iPhone op de juiste moment

... en zo ben ik stilletjes maar zeker opnieuw naar die iOS apps/functionaliteiten gaan kijken tot mijn besluit vaststond: Opnieuw een iPhone.

Ik heb nog geen moment spijt gehad van mijn beslissing.
Ook niet van mijn hele Android ervaring. Zeker niet.

Tech Talks

12 Mar 2013

Wij, 10to1, hebben als uitzonderlijk team wel wat kennis in huis. Allemaal proberen we op de hoogte te blijven en te experimenteren met de laatste nieuwe technologische hoogstandjes.

Naast het dagelijkse werk, is elk van ons wel met iets anders bezig. Of beter: pikken we hier en daar wat interessante dingen op.

Om die kennis onderling te delen zijn we sinds vorige week gestart met wekelijkse Tech Talks. Korte presentaties over onderwerpen waarvan we denken dat de rest ze ook wel zou kunnen gebruiken of interessant zou vinden. Kortom, dingen waarvan we allemaal beter worden.

Piet deed er een paar maanden geleden al eentje over Continuous Integration++. Toen was er van het stukje 'wekelijks' nog geen sprake.

Vorige week was Jelle aan de beurt met een RubyMotion intro.

… en deze week was het mijn beurt. Omdat Ruby 2.0 net released is, was dat wel een nice hot topic om eens in de groep te gooien.
Voer voor discussie als het ware:

Volgende week horen we Evert, ik kijk er al naar uit.

Iom

22 Jan 2013

Sinds ik van een iPhone naar een Android toestel gegaan ben, heb ik nog geen app gemist, buiten één. Captio, een fantastisch kleine app. Dat is de enige app die ik niet gevonden heb in de Google Play Store, en al zeker geen waardig alternatief. Er zijn er wel een paar die mails sturen naar jezelf maar die openen telkens de mailclient op je toestel. Dat is net die ene stap die er teveel aan is.

Dus heb ik er zelf maar eentje geschreven: Iom. Iom draait op Heroku, met hulp van Camping waarbij de mails worden verstuurd via SendGrid. Fun fun fun!

Het past perfect in mijn flow: nu iets naar de mailbox sturen, later afhandelen. Meer info hier

Ik heb het dan maar ineens in de Google Play Store gezet, misschien is er nog iemand gelukkig mee.

Enjoy.

Android

05 Jul 2012

Het is nu ongeveer 4 jaar dat ik een iPhone gebruik. Gebruiken als in, dat ding hangt vast aan mijn hand. Het is een mooi, gebruiksvriendelijk, fantastisch toestel waar je per ongeluk ook mee kan bellen.

Een tijdje geleden begon er bij mij iets te kriebelen. Iets wat eerst met een heleboel ontkenning onderdrukt werd. Android. Hoe zit dat nu eigenlijk?

Ja, er bestaat naast iOS nog een andere mobile OS, beter bekend als Android. ;)
Wij, 10to1, ontwikkelen al een tijdje, naast iOS, voor Android. Gelukkig kan ik met mijn Java achtergrond daar ook mijn steentje toe bijdragen. Er is echter nog een groot verschil tussen hier en daar wat programmeren voor een platform en het ook effectief gebruiken.

Het is duidelijk dat Android nog niet snel gaat verdwijnen, en het lijkt me, meer en meer, een waardig alternatief voor iOS. Daarom: ik wil het voelen. Ik wil het ondervinden. Ik wil meer dan een mening.

Ik gebruik sinds vandaag een HTC One X met Android 4.0

Help. Ik ga ervoor.

Fake data populator

23 Jul 2010

When you're building webapps, sooner or later you run into a screen where you want to list some data. An index page of all people for instance. There are many other cases where you want a lot of data, but for now, let's follow this path.

Say, you got thousands of people, you're not going to show them all on one page, do you? Probably you will use something like will_paginate.

Say, you want to see this pagination stuff in action, in your development environment. Since you are not going to manualy create a couple of thousand people, one option could be to set the number of results per page to 1 or 5 or 6 or ... well you know what I mean.

An other option, better option, is to use the populator and/or faker gem(s). The populator gems adds a method 'populate' to all Active Record models.

Person.populate(3000) do |person|
  person.first_name = "John"
  person.last_name = "Smith"
  person.number_of_shoes = 1..100
end

This will create 3000 people with the name John Smith. It becomes better when you throw in the faker gem.

Person.populate(3000) do |person|
  person.first_name = Faker::Name.first_name
  person.last_name = Faker::Name.last_name
  person.number_of_shoes = 1..100
  person.email = Faker::Internet.free_email
end

This will create 3000 people with random names, which is better if you ask me.

Secret pictures (SPIC)

27 Apr 2010

A couple of weeks ago, ruby-play was imminent and in such a case one should always try some new things. Heroku is hot, so it had to be something I could deploy on Heroku. Sinatra 1.0 was released, so it had to be something using Sinatra.

What else? S3 is always fun and with that in mind I found the CarrierWave gem.

More? Sure. To experiment with something else then ActiveRecord I used Sequel.

Does it blend? Sure!

A new example app was born: SPIC. Spic (secret pictures) allows you to upload files to S3 for your sharing pleasure.

Heroku really is fun to use. One can setup Spic in only a matter of seconds.

git clone git://github.com/atog/spic.git
cd spic
heroku create
git push heroku master
heroku config:add S3_KEY=your_s3_key S3_SECRET=your_amazon_secret S3_BUCKET=your_bucket SECRET=your_own_personal_jesus
heroku open

It was fun. It was short. It is good.

Today is the day

15 Feb 2010

Not so long ago we decided to find someone to help us develop the most awesome applications.

I'm happy to announce that as of this morning Piet is joining us. After today's great start, there is no doubt in my mind we made a good choice.

So, starting today, there's 3 of us!

Hirb

09 Dec 2009

A couple of weeks ago I watched the RailsCast on Searchlogic and saw Ryan use some gem called Hirb. It looked interesting for sure, so I wrote it down to check it out to completely forget about it.

Until yesterday.

What is Hirb?

A mini view framework for console/irb that's easy to use, even while under its influence. Console goodies include a no-wrap table, auto-pager, tree and menu.

OK. What does that mean?

It improves irb's default output a lot. And by a lot, I mean, A. LOT.

Hirb example

In case you like it, you might want to set it up to autoload in script/console for all your Rails projects. In order to do so, add the following to your ~/.irbrc file:

if ENV['RAILS_ENV']
  require 'rubygems'
  require 'hirb'
  Hirb.enable
end

Resources

Flickr 2 Twitter

15 Oct 2009

Let's assume:

  • You have an iPhone
  • You love your iPhone
  • You have a Flickr account
  • You want to share your pics by using only one service: Flickr
  • You have a Twitter account
  • You want to share your pics on Twitter

Now imagine, you can do all this stuff in one go. Life would be great, no?

Enter Flickr2Twitter. Set it up, and you will love your iPhone even more.

Create UML diagrams from the command line

13 Oct 2009

Maybe you know it, maybe you don't but yUML is awesome!

Create and share simple UML diagrams in your blogs, wikis, forums, bug-trackers and emails.

Yesterday I was creating a new class diagram using yUML and besides it's a great product it was a bit cumbersome working in a small textarea and pressing 'Generate!' (all the time). I fired up textmate and created a diagram using the yUML syntax. A couple of minutes later I had ruby script which generated the diagram using yUML by taking a text file as input.

Thanks to Jeweler it's dead easy to create gems and release them to Gemcutter so a yumlcmd gem was born.

Installation

sudo gem install yumlcmd

Usage

yumlme -f your-diagram.txt

Example your-diagram.txt

[Customer]+1->*[Order]
[Order]++1-items >*[LineItem]
[Order]-0..1>[PaymentMethod]

Syntax overview: http://yuml.me/diagram/scruffy/class/draw

Output

yuml-output.png

I hope you like it as much as I do :)

Railscasts Xcode theme

25 Sep 2009

I use textmate for all things ruby, rails, txt, blog, xml, ... and while doing so I enjoy using the railscasts textmate theme from Ryan Bates. Nice, clean and easy on the eyes.

Since I was never really happy with the standard Xcode themes I decided to port the textmate theme to an Xcode theme.

After days of work, or was it weeks, I got it right. I think.

No really, it just took about 5 minutes clicking around in the Xcode theme editor. You can find it here.

Enjoy!

Find or create with hash attributes

04 Sep 2009

Dynamic finders in Rails, represent some the 'magic' we've all gotten used to. One can use these dynamic finders to create or initialize a new object when it doesn't already exist.

# Find a user by screen_name_
user = User.find_by_screen_name("atog")  

# So instead of ...
user = User.find_by_screen_name("atog")  
unless user  
  user = User.create(:name => "atog")  
end

# ... you can  
user = User.find_or_create_by_screen_name("atog")  

It gets even better. By passing a hash to the finder you can initialize or create a new object with all the values while only the attribute named in the finder will be used to find the object.

user = User.find_or_create_by_screen_name(
        :screen_name => "atog", 
        :name => "Koen Van der Auwera")

Present

14 Aug 2009

If this isn't a discovery! I couldn't have said it better myself.

twitter tweet

Just like Nick Quaranto, I prefer positive conditions. For example, you'll find more unless object.blank? in my code than if !object.blank?. So I'm very happy that I learned about present? today.

present?, the inverse of blank?. Heaven.

Working with multiple ruby versions

06 Aug 2009

For a while, I've felt an itch to experiment with Ruby 1.9. It would be better to use it in our day-to-day work, but Ruby 1.9 isn't that far yet. What has hold me back until now, is that I don't want to make an unstable Windows machine out of my Maccie. It's my primary workstation, and I have to work on it constantly.

Via Dr Nic I found Working With Multiple Ruby Versions Has Never Been This Easy.

With the help of the RubySwitcher script, it is laughingly easy to use several Ruby versions next to one another. There's no more excuse not to do it.

Out of the box, you can install and use the following versions of Ruby:

  • install_ruby_191 (install)
    use_ruby_191 (use)
  • install_ruby_186 (install)
    use_ruby_186 (use)
  • install_ruby_187 (install)
    use_ruby_187 (use)
  • install_jruby (install)
    use_jruby (use)
  • install_jruby_120 (install)
    use_jruby_120 (use)
  • install_ree_186 (install)
    use use_ree_186 (use)

To use the standard Ruby version: use_leopard_ruby

i18n and Rails Engines

16 Jun 2009

Rails Engines, what are they? What do they do? But most importantly: how do they do it?

Rails 2.3 brings us much of the same functionality as the Rails Engines plugin. Learn how to embed one application into another in this episode.

Engines allow us to use one application in another in the form of a plugin. As the screencast shows, you can integrate the app folder of a Rails application in the plugin of another one. All models, controllers and views are available. If you still need custom functionality, you can add them in your applications 'own' app folder by redefining the model, controller or view. The same goes for routes; if you have routes.rb in your plugin dir, it is loaded as well.

And i18n, how about that? You would expect config/locals/*.yml to work just as nicely as the app dir and routes.rb. But it doesn't.

Luckily, it's not that hard to solve:

In environment.rb, you add

config.i18n.load_path += Dir[Rails.root.join('vendor', 
    'plugins', 'your_plugin', 'config', 'locales', 
    '*.{rb,yml}')]

If you prefer to read the Railscast: ASCIIcasts - 149: Rails Engines

Moved!

08 Jun 2009

We've moved today. Closer to our homes, and that was necessary. You can now better reach us, and that was even more necessary. The fact that the office is nice, is a great plus :)

picture of the new office

From now on, you can find us at UBCA for custom software and web application development, iPhone development, Ruby and Rails contracting, or just to drink a coffee.

Roleify, a Rails authorization plugin

05 Jun 2009

Today I've pushed a few updates to the Roleify rails plugin.

The changes are

  • you can now use 'namespaced' controllers
  • I added a helper method to hide/show blocks for a specified role

Example

The initializer

Roleify::Role.configure("role_a", "role_b") do
  {
    :role_a => { :dashboard_issues =>  :all },
    :role_b => { :issues => "index" }
  }
end

So, role_a refers to a Dashboard::IssuesController and role_b refers to an IssuesController.

The helper

module ApplicationHelper
  include Roleify::RoleifyableHelper
end

The view

<% allowed?(Roleify::Role::ROLE_A) do %>
  // whatever you want for role_a eyes only
<% end %>

More info on GitHub.

Rails `try`

03 Jun 2009

try is one of those small new additions in the Rails 2.3 release. Luckily I found out about it via a Railscast

What is it?

From the documentation:

Invokes the method identified by the symbol method, passing it any arguments and/or the block specified, just like the regular Ruby Object#send does. Unlike that method however, a NoMethodError exception will not be raised and nil will be returned instead, if the receiving object is a nil object or NilClass.

someobject.try(:some_method)

What did you just say?

The code above normally throws an exception if someobject is nil. By using try it just returns nil.

Don't overuse this.

Using Java 6 with RubyMine on OS X

26 May 2009

What do you need?

Next, open RubyMine’s Info.plist:

mate /Applications/RubyMine\ 1.0.5.app/Contents/Info.plist

Find the line with value 1.5* en change it to 1.6*.

Start RubyMine and check the 'about'. It should look something like this:

RubyMine about screen

Enjoy. It does feel snappier on my side.

On a sidenote: You can set the default Java version via the 'Java Preferences' app.


About this blog

You’re reading Under the Hat, a weblog written by 10to1.

Who’s got the mic?