<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -12,13 +12,10 @@
 
 require 'rubygems'
 require 'usb'
-require 'twibot'
 require 'betabrite'
+require 'twibot'
 require 'iconv'
 
-# Text displayed by default
-DEFAULT_TEXT = &quot;&quot;
-
 # Display text on the betabright!
 # * available colors are: red, green, amber, dim_red, dim_green, brown, orange, yellow
 # * available modes are: flash, hold, rotate, scroll
@@ -34,7 +31,6 @@ def betabrite (text, color = 'amber', anim = 'rotate')
       print string(text.ascii).send(color).seven_stroke
     end
   end
-
   bb.write!
 end
 
@@ -42,31 +38,67 @@ end
 def display (sender, message)
   betabrite &quot;NEW MESSAGE!&quot;, &quot;orange&quot;, &quot;flash&quot;
   sleep 3
-  3.times do
-    betabrite &quot;from&quot;, &quot;green&quot;
-    sleep 1
+  2.times do
+    betabrite &quot;from&quot; + &quot; &quot; * 5, &quot;green&quot;
+    sleep 2
     betabrite sender, &quot;green&quot;, &quot;hold&quot;
     sleep 3
     betabrite message + &quot; &quot; * 20
-    sleep message.size / 10 + 4
+    sleep message.ascii.size / 10 + 4 # That's a hack. :)
   end
-  betabrite DEFAULT_TEXT
+  betabrite &quot;&quot;
+  sleep 2
 end
 
 class String
   # Return the ASCII string.
+  # Looks like Ivonv does not work correctly. We use hard-coded conversions then.
   def ascii
-    return Iconv.conv('US-ASCII//TRANSLIT','UTF-8', self)
+    from = '&#224;&#226;&#228;&#233;&#232;&#234;&#235;&#238;&#239;&#244;&#246;&#249;&#251;&#252;&#231;&#192;&#194;&#196;&#201;&#200;&#202;&#203;&#206;&#207;&#212;&#219;&#199;'
+    to =   'aaeeeeeiioouuucAAAEEEEIIOUC'
+    return Iconv.conv('US-ASCII//TRANSLIT','UTF-8', self.tr(from, to).gsub('&amp;lt;', '&lt;').gsub('&amp;gt;', '&gt;'))
+  end
+end
+
+# Seconds to h:m
+def time_to(h, m = 0)
+  begin
+    time_now = Time.now
+    return (Time.local(time_now.year, time_now.month, time_now.day, h, m) - time_now).to_i
+  rescue
+    sleep 1
+    retry
   end
 end
 
+# Create a new thread displaying time (HH:MM) on the betabrite every minute
+def display_time_thread
+  Thread.new {
+    while true
+      @@betamutex.synchronize {
+        betabrite(Time.now.strftime('%H:%M'), &quot;dim_green&quot;, &quot;hold&quot;)
+      }
+      sleep 1
+      st = 61 + time_to(Time.now.hour, Time.now.min)
+      sleep st
+    end
+  }
+end
+
 # Get direct messages thanks to twibot and display them
 message do |message, params|
+  puts message.sender.screen_name
+  puts message.to_s
   begin
-    display message.sender.screen_name, message.to_s
+    @@betamutex.synchronize {
+      display message.sender.screen_name, message.to_s
+    }
   rescue
     puts $!
   end
 end
 
-betabrite DEFAULT_TEXT
+Thread.abort_on_exception = true
+@@betamutex = Mutex.new
+sleep 10 # let twibot starting up
+display_time_thread</diff>
      <filename>twittybrite.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>1b253626740f52b7c59f11599b0ac123769cf799</id>
    </parent>
  </parents>
  <author>
    <name>pcreux</name>
    <email>pcreux@gmail.com</email>
  </author>
  <url>http://github.com/o2sources/twittybrite/commit/9b1f2a93a4ea694c71cb2528d66b665681e3e1a8</url>
  <id>9b1f2a93a4ea694c71cb2528d66b665681e3e1a8</id>
  <committed-date>2009-07-28T01:43:21-07:00</committed-date>
  <authored-date>2009-07-28T01:43:21-07:00</authored-date>
  <message>Betabrite behave as a clock when not displaying any message.</message>
  <tree>ef7d1f3fc58c9ac569742f2ee4476a2eeab9503e</tree>
  <committer>
    <name>pcreux</name>
    <email>pcreux@gmail.com</email>
  </committer>
</commit>
