最近のやつ

As usual, a lot of interesting things are going  in The Internet, here are some that caught my attention:

1) Mozilla Persona

A better way to sign in.

It can be used to implement SSO (Single-Sign-On), in someway it is similar to OpenID.
The identity provider is not notified, which is very good for privacy.
It is focused on the browser (built on the BrowserID protocol)
Take a look https://persona.org/

_________________________

2) IDEs in the Cloud

Many things are moving to the Cloud, and IDEs are not the exception.
Cloud9 the IDE (not the restaurant with tasty food) is a popular one.

This link lists more options.
http://www.hongkiat.com/blog/cloud-ide-developers/

_________________________

3) Visual Regular Expressions

Chances are that you know the saying

Some people, when confronted with a problem, think “I know, I’ll use regular expressions.” Now they have two problems.
Attributed to jwz.

Well, that is less true with Debuggex, a pretty cool tool to visualize JavaScipt, PCRE and Python regular expressions. Debuggex eases the problem of using regular expressions. It integrates Mozilla’s Persona and embedding in StackOverflow.

RegexPlanet is another good option but isn’t possible to visualize regex…

One thing I would like to see:   Debuggex is  open-source instead of  Debuggex is not open-source

http://www.debuggex.com/libraries

Check it out
http://www.debuggex.com/

_________________________

4) FreeBSD in the PlayStation 4

Seems like the PlayStation 4 will be running Orbis OS, a modified version of FreeBSD.

http://www.phoronix.com/scan.php?page=news_item&px=MTM5NDI

_________________________

5) Synchronization via procrastination

The article Structured Deferral: Synchronization via Procrastination overviews how to maintain data synchronized using a lazy approach.
It compares reference counting, hazard pointers…


http://queue.acm.org/detail.cfm?id=2488549

Recommended article

_________________________

6) On Java garbage collection

Article explaining the G1 Garbage Collector.
http://www.infoq.com/articles/G1-One-Garbage-Collector-To-Rule-Them-All

_________________________

7) Serval Project

Serval Project brings Open telecommunications using mesh networking.

These are the features that make it interesting:
1) Opertaes in normal phones (there is an app for Android)
2) The nodes keep the phone number
3) All calls are end-to-end encrypted

This has wide range of use cases, e.g., using cell phones in over-crowded places, communicating during disaster, freely communication during civil resistance, communicating with friends without using carrier’s networks…

An article in MIT Technology Review

A related TED’s talk video

The project page in indiegogo

Open Garden is a similar project that is worth looking

http://www.servalproject.org/

_________________________

8) The Process of Innovation

A software guy named James Gosling (not a Senior Consultant, not a Principal Engineer, not a Dr, just a plain Software Guy) talks in Standford’s Computers Systems Colloquium about the process of innovation. Among other interesting facts and anecdotes he talks about:

  • The cost of risk. For a company, going into a research project is a risk because, research project takes time (time is money, and researchers are not cheap), and there are big chances that the research couldn’t be capitalized.
    So, from the risk point of view, it is safer/better to acquire a company that has already developed a product as result of a research project. This is also better from the accounting point of view, even if the price to pay is high, the company’s is not exactly spending money but just changing the form of an asset, as opposed to literally spend money in a research project until it becomes profitable, if someday turns out to become profitable. For companies is better to buy instead of develop. Around 20′
  • He compares the ‘success rate of R&D projects’ in IBM with 1%-5% considering more than 3% highly productive, and Sun with 10% – 20%. The fact that Sun’s outperformed IBM might be due to the fact that almost every manager at Sun had a technical/engineering background. Around 30′
  • How to do technology transfer? Create something new, killing the old…or transform the old into something new

http://www.youtube.com/watch?v=rN3FZKTgdR0

_________________________

9) A different approach to schedule public transportation

Self-Organization Leads to Supraoptimal Performance in Public Transportation Systems

This interesting and not conventional paper, argues that self-scheduling public transportation is more efficient than the typical approach where vehicles come at regular intervals.

Take a look
http://www.plosone.org/article/info%3Adoi%2F10.1371%2Fjournal.pone.0021469

psshfs in DragonFlyBSD

How I got mount_psshfs(8) to work.

mount_psshfs basically offers the same functionality as sshfs(1). Putting it to work is quite easy but it is not enabled by default, so some work is required.

0) Set up ssh keys

1) Build, install and boot a new kernel which includes the following parameters. Here is how.
 pseudo-device putter # PUFFS(4)
options PUFFS #Pass-to-Userspace Framework File System

Alternatively, just load the module
kldload puffs

2) Add device rules in /etc/devfs.conf
 perm putter root:wheel 0666

3) Enable vfs.usermount
In /etc/sysctl.conf add
 vfs.usermount=1

4) Mount it!
 mount_psshfs -O IdentityFile=/home/earthling/.ssh/mercury_rsa mercurius@192.168.0.11:/Users/mercurius/export /home/earthling/mnt/remote_to_mercury

________________________________

Links:

http://leaf.dragonflybsd.org/cgi/web-man?command=mount_psshfs&section=8

http://static.usenix.org/event/usenix09/tech/full_papers/kantee/kantee_html

http://fuse.sourceforge.net/sshfs.html

http://www.dragonflybsd.org/docs/newhandbook/ConfigureKernel

mount_psshfs: handshake failed, server does not support sftp?
mount_psshfs: puffs_mount: cannot open /dev/putter
mount_psshfs: puffs_daemon: Permission denied
mount_psshfs: puffs_mount: Permission denied
mount_psshfs: puffs_mount: Operation not permitted

Dionea

This post had been on drafts for a long time but, finally got a chance to publish it =)

During 2011, through an agreement between Mexico and Japan1, I had the opportunity to work on Dionea with the insightful guidance of Dr. Norio Sato.
During that time I learned a lot, tried new things, made good friends…. all this while enjoying the beautiful city of Kanazawa.

Thanks everyone!

 
Here is some material of my work on Dionea:

Dionea Presentation Sep 2011 (Intermediate presentation)

Enabling debugging features for parallel programs using fork handlers (Report)

Me presenting Dionea

Me presenting Dionea

1. PROGRAMA DE COOPERACIÓN PARA LA FORMACIÓN DE RECURSOS HUMANOS EN LA ASOCIACIÓN ESTRATÉGICA GLOBAL ENTRE MÉXICO–JAPÓN

About sales costs in the software industry

I just took a look at “Estudio de salarios SG 2012“, which reviews the IT salaries in Mexico during 2012; section “Tipo de actividad” shows that sales positions, i.e. “Preventa / Tech sales”  and “Venta y desarrollo de negocios” are better paid than [real] technical positions*.

In a post titled “Why everybody should do Sales!” Felix Wehmeyer from Oracle quotes  Zig Ziglar  Nothing happens until someone sells something. It is true but, if nobody does anything [else than sales], well, there is nothing to sell.

On the other hand, the  database guru Michael Stonebraker, notes that software products are expensive because their associated  sales costs. On his interesting talk “NewSQL vs. NoSQL for New OLTP”at LISA XXV he even says I hate the sales model. I’m with Michael.

So the questions are:

  1. Is necessary to assign budget to [spend money in]  sales?
  2. What would happen if instead of  investing in sales, that money would be invested in making better products, e.g. doing more extensive testing, hiring better programmers, doing R&D?
  3. If the sales guys are needed, is fair that they get as much or even more than the tech guys?
  4. If so much money is spent in sales [and marketing], is the software industry money (business) oriented an not technology oriented ?
  5. ??

_____________________________

*Preventa / Tech sales: 47,341.18 MXN/month
Venta y desarrollo de negocios: 37,140.32 MXN/month
Arquitectura de soluciones 28,183.30 MXN/month

Object Oriented Concepts

Object Oriented Concepts
-Inheritance
-Encapsulation
-Polymorphism
-Open recursion
-Messages
-Aggregation (has), composition (is part of)
-Low coupling, high cohesion
-Component: Class, module…

Object Oriented Design Principles
-Single Responsibility
-Open-Closed
-Liskov substitution
-Inversion of Control

API Design

Exception handling

_

 

Restricting the value of columns in PostgreSQL

ENUM
--Enum type
 --case sensitive
 --4 Bytes on disk
 CREATE TYPE vaildcolor AS ENUM ('Blue','Pink');

REGEXP

--Case insensitivie regexp
 --accepts NULL
 --useful for complex/long text matching
 ALTER TABLE color ADD CONSTRAINT
 vaild_color CHECK(
 color ~*
 '^(blue|pink)$'
 );

CHECK

 --Case sensitivie =
 --accepts NULL
 ALTER TABLE color ADD CONSTRAINT
 vaild_color CHECK(
 color = 'Blue' OR color = 'Pink'
 );