iGeneration

0 comments
Last night Steve JOBS has passed :(
Rest in piece dude !

Steve will always remind me of revolutionary products and
in particular the NeXT workstation we had at La Rochelle university (Computer Sciences department).
The NeXT Cube was holding a Motorola 68030 CPU with 8 to 64Mb of RAM,
an hard disk of 40 to 660Mb, a 256Mb magnetoptical writable drive and
a 10 Base-T with 10 Mbit/s Ethernet connector !

This workstation was in early 90 the most friendly UNIX (BSD Mach kernel)
computer mainly geared towards scientists and universities.
We can also add that the CERN in 1988 used this computer to write the first web server HTTPd and also the first web browser called WorldWideWeb.

Don't forget the NeXTStep operating system did (at that time) defined the graphical environment we all know nowadays on MAC OS !

LINUX reached 20 years old !!

0 comments
After the IBM-PC birthday, now the LINUX's one.

I remember going to the university to get LINUX (as it was too big to get it
with a mere 33.6K modem) I used to grab the Slackware distribution packaged with 3"1/2 floppies.


Here is the CD-ROM release with Linux Kernel v1.x

HAPPY BIRTHDAY LINUX and LONG LIFE TO YOU !!!

(I have no doubt about it as we can find it on Mobile, TV, STB, etc.)

found in my archives: IBM ads and product leaflets ...

0 comments
I will take pictures of those pieces of vintage computing artwork.
(Sorry there are in French language because it's my mother tongue)
Some are made by Texas Instruments (but are yet describing IBM & MS stuff)

IBM PC Display choice
by charlie chaplin
IBM PC Display matrix choice
(Hercule, CGA, EGA, VGA)

leaflets covers leaflets opened

I do remember the IBM PC 5150 which is now getting 30 years old !! Happy 30th to the Personal Computer !

4 comments

My father was working with numerical devices (for pay accounting stuff) and
when I was a kid, I had the chance to work on those dinosaurs' computers.

At the same time of this first IBM Personal Computer, I started on its cousin called NEC APC.
This was a great computer which such big features: hi-def resolution (1024x1024), ANSI escape sequences, dual 8inches floppies (fast led flipping during copies and such great noise), multitone sound music on a mere buzzer, CPM operating system then MS-DOS + GW-Basic, etc.

Then I worked on the IBM PC (model 5150 then the portable one model 5155 and finally the IBM AT3 with IBM 5154 EGA display) In 1981, the Personal Computer got this stuff:
  • 4.77 MHz Intel 8088 microprocessor
  • one or two disk drives
  • 16kb memory → 256k

    I do remember playing those old games like Space Commanders / Cosmic Crusader / Digger / Alley Cat and also beginning programing with the famous IBM BASICA in ROM then GW-Basic / QBASIC and at last the great Borland TURBO PASCAL generating small executables of a few bytes (not bloatwares like nowadays) All those softwares were running under the IBM PC-DOS and not MS-DOS nor Dr-DOS that came later on. Afterward came a multitasking DOS called DESQview and IBM OS/2.

    What an age, lost within our memories ... therefore I did write this article as a personal note to avoid to forget and also to celebrate this great anniversary.


    A Personal Computer with its original IBM books


    Bill Gates with DOS Multiplan (against VisiCalc)
  • An official OpenCaster book on Amazon UK !

    2 comments
    I just found that there is a book sold on Amazon
    about OpenCaster and its tools (mostly written in Python and C).


    I wonder what they may have put in 120 pages ... as the OpenCaster's manual is nearly this amount of pages.

    How to patch the latest Dektec Linux SDK for Linux KERNEL 2.6.38+

    6 comments
    If you get the latest Dektec SDK for Linux that was released in May 2011,
    you will get compilation problems under Ubuntu 11.04 which is now using
    the latest Linux kernel 2.6.38

    I spent some time trying to understand what was the problems.
    The main two problems are refactored methods under the kernel:
    - MUTEX methods renamed to stick to semaphore stuff
    - IOCTL redefinitions (ioctl -> compat_ioctl -> unlocked_ioctl)

    Therefore for example in the directory Dta1xx (for cards 1xx but
    this is exactly the same patch for Dtu2xx and Dta1xxNw), you just have to patch
    those 3 files in order to compile the kernel module:

    Dta1xx.c:
    ---------
    #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 19)
    
    ioctl: Dta1xxIoCtl,
    #else
    unlocked_ioctl: Dta1xxNewIoCtl,
    #endif #ifdef CONFIG_COMPAT
    compat_ioctl: Dta1xxCompatIoCtl,
    #endif Dta1xx.h: --------- // PATCH for new kernel 2.6.38+ to avoid: error: implicit declaration of function ‘init_MUTEX’ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37)
    #ifndef init_MUTEX
    #define init_MUTEX(_m) sema_init(_m,1);
    #endif // #ifndef init_MUTEX
    #endif ... Int Dta1xxIoCtl(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg); Int Dta1xxNewIoCtl(struct file *file, unsigned int cmd, unsigned long arg); #ifdef CONFIG_COMPAT long Dta1xxCompatIoCtl(struct file *filp, unsigned int cmd, unsigned long arg); #endif IoCtl.c: -------- ... int Dta1xxNewIoCtl(
    struct file *file, // Represents file object
    unsigned int cmd, // Command
    unsigned long arg) // Pointer to the IoCtl parameter
    { #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20)
    struct inode *inode = file->f_dentry->d_inode;
    #else
    struct inode *inode = file->f_path.dentry->d_inode;
    #endif
    // Just call the regular IOCTL handler
    return Dta1xxIoCtl(inode, file, cmd, arg);
    }

    I hope it will help you.

    As it seems far better to provide the full source code than patches
    so here are the file links on the Dta1xx files to replace in the Dektec SDK:
    IoCtl.c
    Dta1xx.c
    Dta1xx.h
    You will see that a "make" and "make install" will work and then you will be able to call the driver launch command "sh ./Dta1xxInit start" as explained in their ReadMe file.
    To see if the driver is fully loaded you can check the linux log using "dmesg" command.

    I also tried on Linux MINT distro too.
    Those patches have also been sent to Dektec that they will integrate in their next release.

    New release of OpenCaster (v3.0)

    2 comments
    Just in case you don't already know what is Avalpa OpenCaster,
    we can define it as a free and open-source tool that is able to
    generate an MPEG-2 data structure (stored within a Transport Stream file).
    Therefore it can can also manipulate the inside packets (video, audio, teletext packets
    but also Service Information/Program Specific Information ones)

    Since the previous release, we can notice those changes :
    Change log OpenCaster 3.0:
    - tools/pesvideo2ts: generalized vbv, command line supports vbv size in bit, now it broadcasts h264 video (join is on test)
    - tools/pesvideo2ts: added 24 fps support
    - tools/ts2m2ts: added generate m2ts from ts
    - tools/m2ts2ts: added generate ts from m2ts
    - tools/pesinfo: prints also video pes size
    - tools/esvideo2pes renamed tools/esvideompeg2pes
    - tools/esvideoinfo renamed tools/esvideompeg2info
    - tools/vbv renamed tools/videompeg2vbv
    - tutorials: renamed with a meaningful name

    Change log OpenCaster 2.5.1:
    - libs/dvbobjects: removed default value for segment_last_section_number in EIT generation
    - tools/tspcrrestamp: rewritten, multicast multiplexing should recover better in network downs
    - tools/tsccc: doesn't check anymore for null packets cc errors
    - tutorials/OCtutorial14: TOT example manages DST with iCalendar RFC
    - tutorials/OCtutorial12/13: removed as not supported anymore

    To summarize, some commands have been renamed and the same stuff
    has been done for the tutorials too.
    It is more or like a kind of clean-up in order to unify the project.
    The same stuff has been done with the documentation which is now in version 2.0

    So have a nice reading and don't hesitate to experiment and modify the tutorials.
    I will ask to the guys of Avalpa to incorporate the commands of each scripts
    in order to avoid copy and paste errors from the documentation (which I did by mistake)

    What a good studying project: HbbTV over DVB-s

    0 comments
    Today I found a good project's report of a guy's final studying project which is to
    "build an HbbTV application over a DVB-S signal during the FIFA 2010 World Cup event".

    Here is the documentation (67 pages).

    He is also using OpenCaster and free tools like DVBsnoop under Linux.
    You can see how he managed to fill the DVB SI tables to handle an HbbTV application.
    But now this is integrated inside OpenCaster so you just have to use them without worry.

    Nevertheless enjoys this good experimentation.

    Last night ... Once ... I had a dream and this is it ... (song by NightWish)

    0 comments
    Me again ... and last night I had an idea to improve the logging messages.
    Just think about the HASH option on the FTP client console. Remember
    this '#' character growing for every packet received.
    Same stuff with the command WGET that shows you a graph of the current speed.


    Years ago we were able to do such stuff on text consoles using again ANSI escape sequences !!

    Have a look here for those ANSI sequences

    So I have the dream that we can also do this within LOG4J messages ... wait'n see ...
    I will have to test this. Then stay tuned and you will see a piece of Java code soon.

    Colorized logging messages in Console or File using the well-known log4j

    0 comments
    LOG4J is being used by a lot of JAVA developers.
    It is a better way of displaying debugging messages other than using the old "system.out" method.

    But under LINUX, you can improve a lot those outputs. You can colorized them !!
    Yeah this is true. It's not magic. You just have to remember that years ago,
    we were using ANSI syntax on BBS (Bulletin Board Systems ... before the era of Internet).

    Thus the trick is just to define your own log4j appender with your own class :
    package com.mypackage;
    
    import org.apache.log4j.Level;
    import org.apache.log4j.Priority;
    import org.apache.log4j.WriterAppender;
    import org.apache.log4j.spi.LoggingEvent;
    
    public class ANSIConsoleOrFileAppender extends WriterAppender {
     
    
    private static final int NORMAL = 0;
    private static final int BRIGHT = 1;
    private static final int FOREGROUND_BLACK = 30;
    private static final int FOREGROUND_RED = 31;
    private static final int FOREGROUND_GREEN = 32;
    private static final int FOREGROUND_YELLOW = 33;
    private static final int FOREGROUND_BLUE = 34;
    private static final int FOREGROUND_MAGENTA = 35;
    private static final int FOREGROUND_CYAN = 36;
    private static final int FOREGROUND_WHITE = 37;
    private static final String PREFIX = "\u001b[";
    private static final String SUFFIX = "m";
    private static final char SEPARATOR = ';';
    private static final String END_COLOUR = PREFIX + SUFFIX;
    private static final String FATAL_COLOUR = PREFIX + BRIGHT + SEPARATOR + FOREGROUND_RED + SUFFIX;
    private static final String ERROR_COLOUR = PREFIX + NORMAL + SEPARATOR + FOREGROUND_RED + SUFFIX;
    private static final String WARN_COLOUR = PREFIX + NORMAL + SEPARATOR + FOREGROUND_YELLOW + SUFFIX;
    private static final String INFO_COLOUR = PREFIX + NORMAL+ SEPARATOR + FOREGROUND_GREEN + SUFFIX;
    private static final String DEBUG_COLOUR = PREFIX + NORMAL + SEPARATOR + FOREGROUND_CYAN + SUFFIX;
    private static final String TRACE_COLOUR = PREFIX + NORMAL + SEPARATOR + FOREGROUND_BLUE + SUFFIX;
    protected void subAppend(LoggingEvent event) {
    this.qw.write(getColour(event.getLevel()));
    super.subAppend(event);
    this.qw.write(END_COLOUR);
    if (this.immediateFlush)
    this.qw.flush();
    }
    private String getColour(final Level level) {
    switch (level.toInt()) {
    case Priority.FATAL_INT: return FATAL_COLOUR;
    case Priority.ERROR_INT: return ERROR_COLOUR;
    case Priority.WARN_INT: return WARN_COLOUR;
    case Priority.INFO_INT: return INFO_COLOUR;
    case Priority.DEBUG_INT:return DEBUG_COLOUR;
    default: return TRACE_COLOUR;
    }
    }
    }
    Then you can define your logging preferences thru this log4j.xml file in your WAR project for example under src/main/webapp/WEB-INF/classes :
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
    <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
    
        <appender name="CONSOLE-OUT" class="com.mypackage.ANSIConsoleOrFileAppender">
            <param name="target" value="System.out" />
    
            <layout class="org.apache.log4j.PatternLayout">
                <param name="conversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n" />
            </layout>
            <filter class="org.apache.log4j.varia.LevelRangeFilter">
                <param name="levelMin" value="finest" />
                <param name="levelMax" value="warn" />
            </filter>
        </appender>
    
        <logger name="com.mypackage">
            <level value="trace"/>   <!-- levels : TRACE < DEBUG < INFO < WARN < ERROR < FATAL -->
        </logger>
    
        <logger name="org.springframework">
            <level value="off"/>
        </logger>
        
        <root>
            <priority value="trace" />
             
            <appender-ref ref="CONSOLE-OUT" />
        </root>
    </log4j:configuration>
    
    Then you can see the colored output using your Jetty or Tomcat server.
    You just have to be precise when you specify the level of your log message.
    In fact those levels will be filtered using a threshold one.

    I think we can improve the way it looks inside a single log message by putting the given parameters in bold for example (as it is done in editors using syntax highlighting)
    But this will be for another blog ...
    In the meantime, you can see how to code color sequences :
    ANSI color codes

    For the time being, ENJOY your new way of life with proper logging messages !!

    OpenCaster v2.5

    0 comments
    For this new year, OpenCaster(tm) has been upgraded to v2.5
    In this new version, you can find a new option (set by default)
    in the carousel builder tool.

    The tool called oc-update.sh now contains a new smart compression skill.
    You can have files with .solo filename extension that will be able to be updated
    in their own DSMCC module (in order to have a quick carousel's file update)

    ENJOY this new option that will be useful for HbbTV services on our DTT (Digital Terrestrial Television) channels.

    btw: OpenCaster manual has also been upgraded to v1.8 (file called AvalpaBroadcastServerUserManual-v1.8.pdf)
    Copyright © IT pages