Arquivo da categoria: Ciência/Tecnologia

Echofon Pro and Push Notifications

I was mostly ready to go to Echofon web site to complain about the lack of push notifications when I noticed I had to go to the account settings INSIDE echofon, and activate it there.

Now just have to way for a reply/dm to see if it works.

My current experience with Push notifications on the iPhone is a bit mixed. I know I’m not receiving alot of the pushed messages I should. I have no idea if there is a statistic but I guess some >50% of notifications are being lost. What is your felling?

Timetracker in Linux

The very nice Timetracker application now runs at some 90% under Linux.

The software is a dotNet application that runs in Mono. Under ubuntu (Jaunty 9.04) you need the core that is probably already installed and:

sudo apt-get install libmono-microsoft-visualbasic8.0-cil libmono-winforms2.0-cil

The only annoyance right now is that the software is distributed as a .exe file that cannot be run in Mono. You have to either install the software in a Windows machine and then copy the installation directory to your Linux machine, or use Wine to run the Installer.

Convert video to iPhone/iPod Touch using ffmpeg

If you search for this topic you will find some examples of using ffmpeg to convert movies to a format that will work with the iPhone. I am a Linux user so I did not had much usage for this because there is no iTunes in linux 🙂 Until I needed to stream videos to the iPhone. Right now I’m using wowza for the actual streaming that involves creating a special playlist that will tell the iPhone how to get the file from the server. But that is another story.

So the actual ffmpeg command I’m using is:

ffmpeg -threads 2 -i INPUT_FILE -r 20  -vcodec libx264 -s 320x240 -flags +loop \
-cmp +chroma -deblockalpha 0 -deblockbeta 0 -crf 24  -bt 256k -refs 1 -coder 0 \ 
-me_range 16 -subq 5 -partitions +parti4x4+parti8x8+partp8x8 -g 250  \
-keyint_min 25 -level 30 -qmin 10 -qmax 51 -trellis 2 -sc_threshold 40 \
-i_qfactor 0.71 -acodec libfaac  -ab 128k -ar 48000 -ac 2 OUTPUT_FILE

So what does all this mean? I am no ffmpeg expert but I’ll try to give an explanation. If you can fill the gaps please post a reply.

  • -threads 2 Number of threads ffmpeg will use. This should be the number of cores in your system
  • -i INPUT_FILE The path to the file you want to convert
  • -r 20 The frame rate of the converted file. This should be the same as the input file. A lower value means a smaller file
  • -vcodec libx264 Codec of the output file. This means that output will be a H264 Mpeg4 file
  • -s 320×240 Resolution of the output. Should not exceed the input file. In any case remember that iPhone resolution is: 480×320
  • -acodec libfaac -ab 128k -ar 48000 -ac 2 Audio format. AAC audio with 128kbits bitrate, with 48000Hz sample rate and 2 channels. Lower values will give smaller files and less quality.

If you know what the others do anf how do they affect the quality/size please post.

Oracle buys SUN

Oracle bought Sun.

The question in most of the Free Software advocates right now is what will happen to Suns Free Software products:
1- MySQL
2- OpenOffice
3- Netbeans
4- ……

Although MySQL seems the first candidate to die I guess this is one of the products with the best chance to survive*. Databases is the core business for Oracle so they will probably keep the product and in time make it more Oracle friendly. So that users that develop for MySQL can easily migrate to Oracle when requirements increase.
Right now Oracle has the Oracle Express Edition but installation is sometimes complex and the limitations to the CPU/Memory/Disk Space make some developers run away. PostgreSQL is very good, but does not have the momentum. So MySQL is not a brand that any company wants to kill.

* – The Free Software products always have a chance to survive if the “Mother Company” kills them. The community can always pick the product and develop it. That is one of the base ideas that made Stallman create the concept. But it is always easier for a product to survive if there is a cash flow of some sort.

OSX Dependency walker

It is not as nice as Windows “depends” but does the job:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/usr/bin/env ruby
 
paths = [ARGV[0]]
libs = { ARGV[0] => 1 }
 
while paths.size > 0 do
    path = paths.pop
    lines = `otool -L '#{path}'`.split("\n")[2..-1]
    new_libs = lines.collect do |line|
    line =~ /\s+(.*)\s+\(.*\)\s*/
    $1
    end
    new_libs.each do |lib|
        if libs[lib] then
            libs[lib] += 1
        else
            libs[lib] = 1
            paths < < lib
        end
    end
end
 
puts libs.keys.sort.join("\n")

Credit for finding this at idevappsgoes to Armindo

Vmware keyboard issues

I’m running Windows XP inside vmware. The host machine is running Linux (Ubuntu jaunty). I was having issues with the keyboard where the arrow keys would not work, or would do the wrong thing (down key would open the start menu).

I found a solution that involved editing ~/.vmware/config and add a line like:
xkeymap.nokeycodeMap = true
But this would not work properly as Vmware would think I had a Japanese keyboard and some keys would not work.

I found another solution and this one seems to be working fine. Instead of the previous code add this to your ~/.vmware/config:

xkeymap.keycode.108 = 0x138 # Alt_R
xkeymap.keycode.106 = 0x135 # KP_Divide
xkeymap.keycode.104 = 0x11c # KP_Enter
xkeymap.keycode.111 = 0x148 # Up
xkeymap.keycode.116 = 0x150 # Down
xkeymap.keycode.113 = 0x14b # Left
xkeymap.keycode.114 = 0x14d # Right
xkeymap.keycode.105 = 0x11d # Control_R
xkeymap.keycode.118 = 0x152 # Insert
xkeymap.keycode.119 = 0x153 # Delete
xkeymap.keycode.110 = 0x147 # Home
xkeymap.keycode.115 = 0x14f # End
xkeymap.keycode.112 = 0x149 # Prior
xkeymap.keycode.117 = 0x151 # Next
xkeymap.keycode.78 = 0x46 # Scroll_Lock
xkeymap.keycode.127 = 0x100 # Pause
xkeymap.keycode.133 = 0x15b # Meta_L
xkeymap.keycode.134 = 0x15c # Meta_R
xkeymap.keycode.135 = 0x15d # Menu

New Life

Laura:
Chegaste no dia 21 a este mundo. Não tenho palavras para descrever o que senti quando te vi e peguei pela primeira vez, mas consigo dizer que foi a melhor sensação do mundo.

Raquel:
Chegou a nossa filha….. Chegou a nossa filha…..

A todos os leitores:
Estou aqui a olhar para o écran e não sei o que escrever. Nada me parece correcto. Tudo me parece demasiado pequeno ao pé desta sensação forte cá dentro que me faz o cérebro parar. Digam só uma coisa a este pai babádo…. Não é a bebé mais bonita que já viram?

dsc_0510-800

iPhone to thunderbird+lightning

Apple should add thunderbird+lightning support to at least iTunes on Windows. Not every windows user has Outlook installed.

Right now almost all options to do this include some extra softwares (jailbroken iPhone) or thunderbird plugins and Google accounts. And I may not want my data in Google.
If you do not mind having data in Google read on. Right now I just want to sync Calendar events.

As I need to have data synced I’ll post my findings were. So stay tunned.
[UPDATE 2009-02-10]
All this syncing is dangerous. The iPhone will delete all contacts and/or calendar events on the phone when adding a external sync.

Two solutions so far for Contacts and Calendar:

1- Get your company to install Exchange or one of the Free Software alternatives. And then just add the account on the iPhone and search for info on how to get Lightning to get the data from there.

[New Update 2009-02-15 15:17] There is no need to use the Nuevasync Service
2- This is the one I use. It involves having a Google Calendar account and Sync the iPhone and Lightning there. In the iPhone follow the instructions in the Google Mobile Sync page. To have Lightning use the calendar just add a new Calendar of type CalDAV and in the url put: https://www.google.com/calendar/dav/YOUREACCOUNT@gmail.com/events .

There is no “Sync now” and events will be propagated auto-magically. In my case if I have calendar open on the iPhone and add events in Lightning they propagate in 3 to 5 seconds.

A Wiki for Gentoo

A long long time ago I voiced about the need for a wiki in the Gentoo project. In those days Gentoo-Wiki was starting up.
For some reason or other people inside the project felt that having the users producing documentation was a bad idea. For some other reasons that I never understood the gentoo-wiki.com becamed a banned issue, and Gentoo developers were advised not to mention, and not to link to him. I wrote an extensive article about Gentoo on the Efika board that got some raised eyebrows because it was written on the Wiki.

Now Gentoo Wiki has been down for a few days. And according to the backup page it does not seem a fix is going to happen soon.

If we had taken this project under an umbrella a long time ago our users would not be missing on this very important resource.

Struts2 ActionMessages and redirect

Lets say you have an Action that lists some items. And you have another action that adds items.

If you add an Item you can either just show a “blank” with the “All ok with addition” or even smarter is to use the ListAction. But how do you give feedback to the user that the addition was ok? Simple you just addActionMessage(“Item added ok”); on the first action and the message will be rendered by the s:actionmessage in the jsp of the second. Right? Wrong!!
Struts will “eat” ActionMessages and ActionErrors between the first and second action. But Glindholm solved the problem with a simple Interceptor.

Struts 2 under IntelliJ IDEA 8.0M1

If you like IDEA and use Struts 2 you can be happy to know that 8.0 release comes with a new Struts 2 plugin. There is a small tutorial on how to use it but it has some errors.
First the Action class should extend ActionSupport hand have proper setter methods:

package hello;
import com.opensymphony.xwork2.ActionSupport;
public class HelloWorld extends ActionSupport {
    private String username;
    private String message;
    public String getMessage(){
        return message;
    }
    public String execute(){
        message = "Hello, " + username + ".";
        return SUCCESS;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
}

Second the JSP file can have a proper action:

< %@ page contentType="text/html;charset=UTF-8" language="java" %>
< %@ taglib prefix="s" uri="/struts-tags" %>
<html>
  <head><title>Simple jsp page</title></head>
  <body>
		Struts 2 Message: <s :property value="message" default="Guest." />
		<s :form method="GET" action="HelloWorld">
			Enter your name:<s :textfield name="username" />
			<s :submit value="Submit" />
		</s>
  </body>
</html>

And finally struts.xml can have the Action declared without the ugly unRESTFUL .action:

< ?xml version="1.0" encoding="UTF-8"?>
 
< !DOCTYPE struts PUBLIC
  "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
  "http://struts.apache.org/dtds/struts-2.0.dtd">
 
<struts>
    <package name="/" extends="struts-default">
		<action name="HelloWorld" class="hello.HelloWorld">
			<result name="success">/index.jsp</result>
		</action>
	</package>
</struts>

I really like IDEA when it comes to Java codding, and I can live with the quirks of the Struts 2 support. But one thing that makes me steam is the fact that I have to un-deploy and deploy the application for each change I make. That steals me hours every week.

jPod

The jPod book by Douglas Coupland is probably one of the most hilarious things I’ve read in the last few years. It is a fairly accurate picture of Pop-Geek culture (minus the homicidal, drug dealer mom and the homicidal, white meat smuggler friend).

If you have the chance get a copy and read it. You’ll love it.

My copy is going to be dropped in some bookcrossing site somewhere in Coimbra… Search for it 🙂

New Life

A new life is in the process. The joy of looking at a small paper with a tiny bean that is part of me is overwhelming.

Raquel told me that even with this small size she could hear the tiny human being hearts beating fast. Next time I’ll go and no matter what I’ll get to listen to it to.

Ecografia 7 Semanas

Ecografia 7 Semanas

42 ? 42 is not the answer. Life is the answer.