mainframezen's posterous http://mainframezen.com Most recent posts at mainframezen's posterous posterous.com Tue, 17 Jan 2012 04:14:00 -0800 Good reads for a Tuesday http://mainframezen.com/good-reads-for-a-tuesday http://mainframezen.com/good-reads-for-a-tuesday

Access to access

http://sethgodin.typepad.com/seths_blog/2012/01/access-to-access.html

A Pixel Identity Crisis

http://www.alistapart.com/articles/a-pixel-identity-crisis/

Schlep Blindness

http://www.paulgraham.com/schlep.html

Android Design

http://developer.android.com/design/index.html

Permalink

]]>
http://files.posterous.com/user_profile_pics/1121127/qrcode.gif http://posterous.com/users/5Bcc6IXp4O1b João Ribeiro mainframezen João Ribeiro
Wed, 11 Jan 2012 12:06:32 -0800 Licensing managers http://mainframezen.com/licensing-managers http://mainframezen.com/licensing-managers

Software vendors should change from license managers to registered use.

Instead of stopping people from trying the tools, this would enable them to collect data to help future sells.

I use newrelic for free and they can use evryone's data to learn about apps in the real world.

Oracle database is expensive and has no license manager software to lock you up.

Is there an account made on lost business from licensing tirania?

Permalink

]]>
http://files.posterous.com/user_profile_pics/1121127/qrcode.gif http://posterous.com/users/5Bcc6IXp4O1b João Ribeiro mainframezen João Ribeiro
Tue, 29 Nov 2011 12:51:08 -0800 Switched from Google Search to Duck Duck Go http://mainframezen.com/switched-from-google-search-to-duck-duck-go http://mainframezen.com/switched-from-google-search-to-duck-duck-go Why use it?

Reason 1: http://dontbubble.us/

Reason 2: http://donttrack.us/

Try it.

https://duckduckgo.com/

Very easy to add to Firefox.

Permalink

]]>
http://files.posterous.com/user_profile_pics/1121127/qrcode.gif http://posterous.com/users/5Bcc6IXp4O1b João Ribeiro mainframezen João Ribeiro
Fri, 23 Sep 2011 04:51:00 -0700 Bitcasa http://mainframezen.com/bitcasa http://mainframezen.com/bitcasa

Get infinite storage for life 

https://www.bitcasa.com/beta-signup?share=2503963524

Permalink

]]>
http://files.posterous.com/user_profile_pics/1121127/qrcode.gif http://posterous.com/users/5Bcc6IXp4O1b João Ribeiro mainframezen João Ribeiro
Fri, 23 Sep 2011 04:26:00 -0700 Morning readings http://mainframezen.com/morning-readings http://mainframezen.com/morning-readings

The problem has always been not to find but to choose.

 

“Never underestimate the bandwidth of a station wagon full of tapes hurtling down the highway,” Andrew Tanenbaum wrote in 1996. 

Permalink

]]>
http://files.posterous.com/user_profile_pics/1121127/qrcode.gif http://posterous.com/users/5Bcc6IXp4O1b João Ribeiro mainframezen João Ribeiro
Tue, 02 Aug 2011 14:24:00 -0700 PDF shrink http://mainframezen.com/pdf-shrink http://mainframezen.com/pdf-shrink

So you are a company that outsources business document templates design (invoices, whatever) and you are not able to make that PDF below 100KB as it should be.

Maybe you are at 500KB or 700KB. Who knows how much you are wasting on WORM disk. And IP traffic. Whatever you pain may be, I found a short solution for PDF shrinking.

This does not scale well, you can shrink ~2 PDFs per CPU/core. But it works and it's free if you can spare the CPU.

You will need a POSIX operating system (linux, bsd, macosx, maybe cygwin).
I did it with a Perl CGI to keep it simple enough.

Now the solution as it is. 

Let's say you have a web application that takes the PDF template and fills the fields with client data and outputs a final PDF to send to the client.
Before sending to the client, you POST it to the Perl CGI (or PHP script, or...) and save the resulting shrinked PDF.
This is the PDF you send to the client and archive on WORM disk or whatever long term storage you have.

The solution as a shell one liner:

cat bigpdf.pdf | pdftops - - | ps2pdf - - > smallpdf.pdf

The Perl CGI test script:
#!/usr/bin/perl

use CGI;

my $query = new CGI;

my $upload = $query->upload("pdf");
if (defined $upload) {
   my $ingest = $upload->handle;
   open my $file, '>', "/ergo/scratch/$$.pdf" or die "file create";
   my $bytesread;
   my $buffer;
   while($bytesread = $ingest->read($buffer,1024)) {
      print $file $buffer or die "file write";
   }
   close $file;
} else {
   print $query->header();
   print $query->start_multipart_form();
   print $query->filefield(-name=>'pdf');
   print $query->submit(-name=>'doit', -value=>'doit');
   print $query->end_multipart_form;
   exit;
}

die "no pdf" if (-z "/ergo/scratch/$$.pdf");
system("/usr/bin/pdftops /ergo/scratch/$$.pdf /ergo/scratch/$$.ps");
die "no ps" if (-z "/ergo/scratch/$$.ps");
unlink("/ergo/scratch/$$.pdf");
system("/usr/bin/ps2pdf /ergo/scratch/$$.ps /ergo/scratch/$$.pdf");
unlink("/ergo/scratch/$$.ps");
die "no pdf" if (-z "/ergo/scratch/$$.pdf");

LABEL:

my $size = -s "/ergo/scratch/$$.pdf";
print $query->header( -type=>'application/pdf', -Content_length=>$size,);
open my $outf, '<', "/ergo/scratch/$$.pdf" or die "file send";
print while(<$outf>);
close $outf;
unlink("/ergo/scratch/$$.pdf");
exit;
It is getting PDF shrinking from 70% to 90%. Save some bucks and implement this internally if it suits you.

Permalink

]]>
http://files.posterous.com/user_profile_pics/1121127/qrcode.gif http://posterous.com/users/5Bcc6IXp4O1b João Ribeiro mainframezen João Ribeiro
Fri, 08 Jul 2011 02:09:21 -0700 Links for a Friday http://mainframezen.com/links-for-a-friday http://mainframezen.com/links-for-a-friday Why patents are evil:
http://blogs.forbes.com/timothylee/2011/07/07/microsofts-android-shakedown/

MongoDB in production
http://blog.boxedice.com/mongodb/

ASKKEN is visual data browsing powered by Freebase
http://askken.heroku.com/


Redmine plugin turns it into and Hoptoad server
https://github.com/yeah/redmine_hoptoad_server

initr
Redmine plugin that turns it into an Puppet provisioning facility
https://github.com/descala/initr

Permalink

]]>
http://files.posterous.com/user_profile_pics/1121127/qrcode.gif http://posterous.com/users/5Bcc6IXp4O1b João Ribeiro mainframezen João Ribeiro
Wed, 06 Jul 2011 16:43:14 -0700 redmine plugin http://mainframezen.com/redmine-plugin http://mainframezen.com/redmine-plugin Redmine plugin that allows you to make two custom fields with list format and issue related to depend as category and subcategory.

Permalink

]]>
http://files.posterous.com/user_profile_pics/1121127/qrcode.gif http://posterous.com/users/5Bcc6IXp4O1b João Ribeiro mainframezen João Ribeiro
Fri, 06 May 2011 07:36:49 -0700 XEO web framework? http://mainframezen.com/xeo-web-framework http://mainframezen.com/xeo-web-framework

It’s Java.

It’s made in Portugal.

Has no bugs ;) http://sourceforge.net/tracker/?group_id=515655&atid=2095776

Image001

http://www.xeoframework.org/

P.S. Braga, Braga, Braga

via @ivobrandao

Permalink

]]>
http://files.posterous.com/user_profile_pics/1121127/qrcode.gif http://posterous.com/users/5Bcc6IXp4O1b João Ribeiro mainframezen João Ribeiro
Fri, 06 May 2011 07:20:01 -0700 UOU http://mainframezen.com/uou http://mainframezen.com/uou

Framed with Copy+paste.

Image001

http://www.ft.com/cms/s/2/b552909c-6740-11e0-9bb8-00144feab49a.html#ixzz1La8D2nbk

I wonder if this hash links my link to my IP at the time of my copy+paste… hmm…

Permalink

]]>
http://files.posterous.com/user_profile_pics/1121127/qrcode.gif http://posterous.com/users/5Bcc6IXp4O1b João Ribeiro mainframezen João Ribeiro
Wed, 04 May 2011 07:52:23 -0700 sign up pages http://mainframezen.com/sign-up-pages http://mainframezen.com/sign-up-pages

Started this job by using the wonder wheel. From this I can pursuit popular sign up pages. Useful research tooling.

Image005

Twitter

Image001

Simple. Not as exciting as the fail whale page.

Vimeo

Image002

Beautiful.

Google

Image004

You need it or else you turn this down. I’m in. Also, you need some non-virtual confirmation like mobile phone verification.

MySpace

Image003

Since I can sign in with Facebook, it gets easier.

Facebook

Image006

This page is the reason I gave up on Facebook when I heard about it some years ago. But now I see it also as a simple way of communicating to the new user what Facebook is all about.

JP, next time, when you have time, post some sign up pages you hate or find irritating.

Permalink

]]>
http://files.posterous.com/user_profile_pics/1121127/qrcode.gif http://posterous.com/users/5Bcc6IXp4O1b João Ribeiro mainframezen João Ribeiro
Wed, 04 May 2011 07:41:32 -0700 Google Facebook http://mainframezen.com/google-facebook http://mainframezen.com/google-facebook

The interesting part is that Google responds to huge amounts of facebook related searches and sends people to the place.

Don’t be evil and make a better world.

On the other hand, Alexa Search Analytics says that facebook searches drive traffic to google.

Image001

This is something that defies logic or intuition.

Permalink

]]>
http://files.posterous.com/user_profile_pics/1121127/qrcode.gif http://posterous.com/users/5Bcc6IXp4O1b João Ribeiro mainframezen João Ribeiro
Wed, 04 May 2011 03:35:34 -0700 Estúdio Ruim http://mainframezen.com/estudio-ruim http://mainframezen.com/estudio-ruim

Yesterday I spent some time looking at the remarkable project called EyeWriter. It’s an open source and open content research effort to give people suffering from ALS a simple way to communicate with their eyes.

The motivation came from an artist called TEMPT and therefore the project has this description “It is a low-cost eye-tracking apparatus & custom software that allows graffiti writers and artists with paralysis resulting from Amyotrophic lateral sclerosis to draw using only their eyes.”

Homepage: http://www.eyewriter.org/

Then I (re)came across a wonderful piece of software called openframeworks: “openFrameworks is an open source C++ toolkit

for creative coding.”

The galley provides awesome examples of the projects people are creating.

Watch what it can do on their website: http://www.openframeworks.cc/

I guess DISPLAX (by Edigma) uses this project, together with opencv.

There also some interesting work by Estúdio Ruim: http://ruim.pt/work/

JP, did you have a look at this subjects?

OpenFrameworks
Processing
Cinder
Computer Vision (OpenCV)
Generative animation
Computer graphics (OpenGL, shaders, etc..)

If not, do so.

Permalink

]]>
http://files.posterous.com/user_profile_pics/1121127/qrcode.gif http://posterous.com/users/5Bcc6IXp4O1b João Ribeiro mainframezen João Ribeiro
Tue, 03 May 2011 10:57:01 -0700 (most) Forecasts are stupid http://mainframezen.com/most-forecasts-are-stupid http://mainframezen.com/most-forecasts-are-stupid

The top research companies are saying the Android will take close to 50% market share by 2015.

I don’t see it as a bold statement. Maybe I’m biased, but most people will buy Android to save hundreds of dollars and less vendor lock-in (hardware, DRM, marketplace, …).

It looks like Apple will be around with 20% market share.

But then they rushed to put Microsoft second place in 2015 (except ABI Research). There is no data on WP7, no market yet… More open source initiatives may take place and change things.

It was three years ago that I was talking to my managers at the time that Android would be a good business for application development.

So it has taken Google 4-5 years to get Android on the streets (and in my hand).

New development systems and workflows are out: Titanium, Rhodes, Phonegap.

No reference to Microsoft yet. In fact most sites I visit do not have a Windows mobile application, only iphone or android.

Nokia will always survive on the non-smartphone domain, this is common believe.

Microsoft old magic does not work nowadays. You cannot beat the competition arriving late with a marketing muscle and a few more colors. Not anymore.

What will people think when you have a platform with 50% market share? Yes, that’s right, people will believe that there is room for one more platform.

Microsoft may be the one, but it needs a totally different approach. The person that finds that path will get rich in the process (deservingly).

As a developer, there is the issue of platform development. What I see and like is that mobile development will be made possible with an intermediate API to abstract  vendor API and that did not succeed on the desktop until now. So both desktop and mobile development will benefit from this new development platforms and cloud deployment/build systems.

That leaves web development. Why is it out of these new platforms radar? Focus, maybe. On the other hand the web user experience should be close to the mobile user, if not the same (by 2015?).

This is my share of less stupid forecasts.

Permalink

]]>
http://files.posterous.com/user_profile_pics/1121127/qrcode.gif http://posterous.com/users/5Bcc6IXp4O1b João Ribeiro mainframezen João Ribeiro
Fri, 29 Apr 2011 07:22:52 -0700 who's hiring in tech? via @vd (via @techmeme) http://mainframezen.com/whos-hiring-in-tech-via-vd-via-techmeme http://mainframezen.com/whos-hiring-in-tech-via-vd-via-techmeme

Image001

Permalink

]]>
http://files.posterous.com/user_profile_pics/1121127/qrcode.gif http://posterous.com/users/5Bcc6IXp4O1b João Ribeiro mainframezen João Ribeiro
Thu, 28 Apr 2011 14:20:00 -0700 Programming languages table (back in 1996) http://mainframezen.com/programming-languages-table http://mainframezen.com/programming-languages-table
Table 1. Language Level Relationship to Productivity

LANGUAGE LEVEL PRODUCTIVITY AVERAGE PER STAFF MONTH

1 - 3      5 to 10 Function Points
4 - 8      10 to 20 Function Points
9 - 15     16 to 23 Function Points
16 - 23    15 to 30 Function Points
24 - 55    30 to 50 Function Points
Above 55   40 to 100 Function Points

Table 2. Programming Languages and Levels

LANGUAGE LEVEL AVERAGE SOURCE STATEMENTS PER FUNCTION POINT
1032/AF 20.00 16
1st Generation default 1.00 320
2nd Generation default 3.00 107
3rd Generation default 4.00 80
4th Generation default 16.00 20
5th Generation default 70.00 5
AAS Macro 3.50 91
ABAP/4 20.00 16
ACCEL 17.00 19
Access 8.50 38
ACTOR 15.00 21
Acumen 11.50 28
Ada 83 4.50 71
Ada 95 6.50 49
ADR/DL 8.00 40
ADR/IDEAL/PDL 16.00 20
ADS/Batch 16.00 20
ADS/Online 16.00 20
AI shell default 6.50 49
AI SHELLS 6.50 49
ALGOL 68 3.00 107
ALGOL W 3.00 107
AMBUSH 10.00 32
AML 6.50 49
AMPPL II 5.00 64
ANSI BASIC 5.00 64
ANSI COBOL 74 3.00 107
ANSI COBOL 85 3.50 91
ANSI SQL 25.00 13
ANSWER/DB 25.00 13
APL 360/370 10.00 32
APL default 10.00 32
APL*PLUS 10.00 32
APPLESOFT BASIC 2.50 128
Application Builder 16.00 20
Application Manager 9.00 36
APS 19.00 17
APT 4.50 71
APTools 16.00 20
ARC 6.50 49
Ariel 3.00 107
ARITY 6.50 49
Arity PROLOG 5.00 64
ART 6.50 49
ART-IM 7.00 46
ART Enterprise 7.00 46
Artemis 8.00 40
AS/SET 17.00 19
ASI/INQUIRY 25.00 13
ASK Windows 7.00 46
Assembly (Basic) 1.00 320
Assembly (Macro) 1.50 213
Associative default 5.00 64
Autocoder 1.00 320
awk 15.00 21
Aztec C 2.50 128
BALM 3.00 107
BASE SAS 6.00 53
BASIC 3.00 107
BASIC A 2.50 128
Basic assembly 1.00 320
Berkeley PASCAL 3.50 91
BETTER BASIC 3.50 91
BLISS 3.00 107
BMSGEN 9.00 36
BOEINGCALC 50.00 6
BTEQ 25.00 13
C 2.50 128
C Set 2 3.50 91
C++ 6.00 53
C86Plus 2.50 128
CA-dBFast 8.00 40
CA-EARL 11.50 28
CAST 6.50 49
CBASIC 3.50 91
CDADL 16.00 20
CELLSIM 7.00 46
Centerline C++ 6.00 53
CHILI 3.00 107
CHILL 3.00 107
CICS 7.00 46
CLARION 5.50 58
CLASCAL 4.00 80
CLI 10.00 32
CLIPPER 17.00 19
CLIPPER DB 8.00 40
CLOS 15.00 21
CLOUT 8.00 40
CMS2 3.00 107
CMSGEN 17.00 19
COBOL 3.00 107
COBOL II 3.00 107
Cobol/400 3.50 91
COBRA 16.00 20
CodeCenter 9.00 36
Cofac 9.00 36
COGEN 9.00 36
COGNOS 9.00 36
COGO 4.50 71
COMAL 4.00 80
COMIT II 5.00 64
Common LISP 5.00 64
Concurrent PASCAL 4.00 80
CONNIVER 5.00 64
CORAL 66 3.00 107
CORVET 17.00 19
CorVision 22.00 15
CPL 2.00 160
Crystal Reports 16.00 20
CSL 6.50 49
CSP 6.00 53
CSSL 7.00 46
CULPRIT 25.00 13
CxPERT 6.50 49
CYGNET 17.00 19
Data base default 8.00 40
Dataflex 8.00 40
Datatrieve 16.00 20
dBase III 8.00 40
dBase IV 9.00 36
DCL 1.50 213
DEC-RALLY 8.00 40
Decision support default 9.00 36
DELPHI 11.00 29
DL/1 8.00 40
DNA-4 17.00 19
DOS Batch Files 2.50 128
DSP Assembly 2.00 160
DTABL 7.00 46
DTIPT 7.00 46
DYANA 4.50 71
DYNAMO-III 7.00 46
EASEL 11.00 29
EASY 6.50 49
EASYTRIEVE + 25.00 13
Eclipse 6.50 49
ED-Scheme 3.4 6.00 53
EDA/SQL 27.00 12
EIFFEL 15.00 21

Taken from http://blog.csdn.net/li_hualing/archive/2006/09/05/1179557.aspx

 

Permalink

]]>
http://files.posterous.com/user_profile_pics/1121127/qrcode.gif http://posterous.com/users/5Bcc6IXp4O1b João Ribeiro mainframezen João Ribeiro
Thu, 28 Apr 2011 02:04:00 -0700 Seth Godin on the tribes we lead http://mainframezen.com/seth-godin-on-the-tribes-we-lead http://mainframezen.com/seth-godin-on-the-tribes-we-lead

Permalink

]]>
http://files.posterous.com/user_profile_pics/1121127/qrcode.gif http://posterous.com/users/5Bcc6IXp4O1b João Ribeiro mainframezen João Ribeiro
Thu, 28 Apr 2011 01:56:00 -0700 Kevin Kelly tells technology's epic story http://mainframezen.com/kevin-kelly-tells-technologys-epic-story http://mainframezen.com/kevin-kelly-tells-technologys-epic-story

Technology was uncommon in 1952. Now is something you talk about during lunch and when you meet friends.

 

Permalink

]]>
http://files.posterous.com/user_profile_pics/1121127/qrcode.gif http://posterous.com/users/5Bcc6IXp4O1b João Ribeiro mainframezen João Ribeiro
Thu, 28 Apr 2011 01:44:00 -0700 Bruce Schneier: The security mirage http://mainframezen.com/bruce-schneier-the-security-mirage http://mainframezen.com/bruce-schneier-the-security-mirage

Bruce Schneier thinks hard about security -- as a computer security guru, and as a philosopher of the larger notion of making a safer world.

Permalink

]]>
http://files.posterous.com/user_profile_pics/1121127/qrcode.gif http://posterous.com/users/5Bcc6IXp4O1b João Ribeiro mainframezen João Ribeiro
Tue, 26 Apr 2011 08:19:29 -0700 FMI, look at the toners http://mainframezen.com/fmi-look-at-the-toners http://mainframezen.com/fmi-look-at-the-toners

20 million euro worth of it. How many toners do you need?

http://www.base.gov.pt/_layouts/ccp/AjusteDirecto/Detail.aspx?idAjusteDirecto=149751

Permalink

]]>
http://files.posterous.com/user_profile_pics/1121127/qrcode.gif http://posterous.com/users/5Bcc6IXp4O1b João Ribeiro mainframezen João Ribeiro