10 things you must pitch for while going to a VC for money

I had an email from a friend which contained the below presentation showing what is important when you talk to VC’s for getting them to invest on you or your company. I would not want to write too much in detail, but will leave you with the video for you to see and enjoy.

There are many comments for and against this presentation. Its upto my readers to make their opinions out of this presentation for themselves !

Technorati : , , , , , , , , , ,

Enabling TFTP based linux kernel boot up (kernel loads directly into RAM of target board)

TFTP (or Trivial File Transfer Protocol) is used by the boot rom in several vendors’ machines to download the boot loader and/or the kernel. This service runs over TCP/IP, so the client must first obtain an IP address, typically via rarp, bootp, or dhcp means

1. firstly there should be a directory called ‘tftpboot’ under ‘/’, if not this must be set up by doing a mkdir -p /tftpboot (this is on the linux host and not on target)
2. copy the linux kernel into this directory
3. we also need to start the tftp service if not already there, with some minor changes
4. edit the file /etc/xinetd.d/tftp and change the value ‘disable’ to ‘no’ from ‘yes’

# default: off
# description: The tftp server serves files using the trivial file transfer \
# protocol. The tftp protocol is often used to boot diskless \
# workstations, download configuration files to network-aware printers, \
# and to start the installation process for some operating systems.
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
disable = no <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
per_source = 11
cps = 100 2
flags = IPv4
}

5. Save the file, and restart the xinetd service by issuing ‘/sbin/service xinetd restart’
6. now the TFTP service should be started and the linux kernel should be available for boot from the target side.

and finally on a target which has a CFE terminal (Custom Firmware Extender), we can use a command such as :

boot -z -elf vvv.xxx.yyy.zzz:vmlinuz_full_kernel_name ‘console=<console_name>,<baud_rate> rootfstype=<root file system type> root=<partition name for root dir> <mode of boot for this file sys> ‘

vvv.xxx.yyy.zzz = the IP address of the linux host which has the linux kernel to be used for booting target

some typical examples for

console name = ttys1, ttys2, etc
baud rate = 115200, 9600 etc
rootfstype = ext3, swap etc
partition name = /dev/hda1, /dev/sda3, etc
mode of boot = r - read, w - write, rw - read/write

NOTE: it is important that we first set up the target board for ethernet connectivity via DHCP or other means such as giving it a static IP address
This is easily done with the command: ifconfig eth0 -addr=155.44.55.77;

Technorati : , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

Using GDB Server through GUI IDEs like Eclipse

I found a presentation on using gdbserver backend through applications (IDE) such as Eclipse. It outlines a few important facts about how to configure Eclipse for debugging programs running on remote targets. Though the document itself goes on to talk about how to debug stacks and heaps, what I found relevant for now is the configuration of eclipse for using remote debugging.

Read on to find out more for yourself.

Read this document on Scribd: Debugging Linux Applications
This slideshow is courtesy : Tuxology.net


Technorati : , , , , , , , , , , , , , ,

GDB - the simple, yet elegant debugger

The GDB or the GNU Debugger has by far been the most simplest to learn, use and yet its elegance in terms of what it can do to help out is amazing. Even the most complex of debugging IDEs use GDB internally. One such example is the Data Display Debugger under Linux. Another IDE that can use GDB is Eclipse.

Here the most common commands are presented in the form of a quick reference card:

Read this document on Scribd: gdb-refcard

Technorati : , , , , ,

Digital Set Top Fundamentals Whitepaper

I found this interesting paper by B.Sundareshan on the open architecture and interoperability issues concerning a Digital Set Top Box. Though I was expecting to read specifically about these topics, the paper also covers a general overview of what an STB is made of and what in essence defines an STB in a very simplistic manner. I have tried to contact the author, but could not succeed because his contact details are missing in the document. I am producing the same whitepaper here for educational purposes and would gladly credit the author for his work.


It is worth noting that the paper talks about the following:

  • Types of data transmission
  • Modulation techniques for these transmissions
  • Open architecture and interoperability across networks
  • Major components of a typical STB
  • Interactivity using modems/cable modems on STBs
  • Front ends and switchable front ends
  • CA modules with EMM and ECMs
  • Kernel and Loader applications for over the air downloads
  • Drivers and middleware (subscriber applications)
  • EPG
  • Enhanced and Interactive mode TV applications
  • MHP reference model running on Java JVM
  • Internet access using STBs and MHP
  • Open Cable Digital STB architecture
  • Open Cable Application Platform (OCAP)

You must read this paper completely if you don’t want to miss out on important elements of an STB architecture.

Technorati : , , , , , , , , , , , , , , , , , , , , , , ,

Fred’s C++ notes: A must read sequence of good C++ examples

I was going through Fred’s C++ site for an example of string streams. This was for a basic requirement of putting in any value into a string, such as a float or an integer, or even more complex values.


#include <iostream>
#include <sstream>
using namespace std;
. . .
ostringstream outs;  // Declare an output string stream.
. . .
outs << sqrt(2.0);   // Convert value into a string.
s = outs.str();      // Get the created string from the output stream.

This example was so simple, yet conveyed the point. The square root of 2.0 was stored into a string stream designated as outs. One could then always get back the string value from ‘outs’ as and when required. If the ostringstream class were not to be there, you can only imagine what pain one has to go through using itoa or its equivalents such as the sprintf command, etc to get the same job done!

For those who would like to know more about these examples, please do read through this CHM help file which has a compilation of all Fred’s works until now (with his prior permission)

Hi Srikanth,

I don’t have any PowerPoint slides — sorry. You are free to use my online notes in any way you want. I’m glad you find them useful.

Yours, Fred.

Do click here to get access to Fred’s programming tricks and techniques. You won’t leave the site unhappy I promise!

Technorati : , , , , , , , ,

DVB service information

We have all heard of the term Digital Video Broadcasting or DVB which refers to the means by which live or recorded digital media content is transmitted to individual homes. This obviously involves the following:

  1. Preparation of the media at transmitter end
  2. Applying security or conditional access parameters to this media
  3. Attaching specific information about the media being transmitted
  4. Sending this data through a delivery channel such as terrestial or satellite or cable
  5. Receiver side processing of the data to provide decrypted content to user

The item (3) above refers to information about the channels, the programmes in the channels and this is called service information in technical terms. This presentation bears relevance to how the Service Information or SI is transmitted along with video and audio data in DVB.

It is preferred that you watch the presentation in full screen mode.

Technorati Tags: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

Trees - they are the same even in real life!

I was researching a bit on trees, and found this useful presentation on Binary Trees. Though it also has a mention of N-Ary trees, the real crux of N-Ary trees can be found in books by O’Rielly. I shall speak about this a bit later, but for now I’ ll leave you with this presentation:

(courtesy and copyrighted by Rick Mercer)


Technorati Tags: , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

Codecs and container formats

I found this snippet from the Video-LAN-Streaming HowTo document about Muxers and Codecs which clearly explains the possible video encoding formats, the container formats, the differences between container formats and codecs, etc. I am reproducing it here for reference and better understanding:

What is a codec ?
To fully understand the VideoLAN solution, you must understand the difference between a codec and a container format A codec is a compression algorithm, used to reduce the size of a stream. There are audio codecs and video codecs.MPEG-1, MPEG-2, MPEG-4, Vorbis, DivX, … are codecs
What is a container format ?
To start off, think of a container format as a standard shipping box. You get a box in the mail and you think, "Cool! What’s inside." You don’t really care about the box itself, you care about what’s in that box. The problem? You can’t see into the box. So what do you do? You get a knife and cut it open.
A container format follows this same basic idea. It contains one or several streams already encoded by codecs. Very often, there is an audio stream and a video one. AVI, Ogg, MOV, ASF, MP4 … are container formats. The streams contained can be encoded using different codecs. In a perfect world, you could put any codec in any container format. Unfortunately, there are some incompatibilities. You can find a matrix of possible codecs and container formats on the features page (http://www.videolan.org/streaming/features.html)
Encoding a video
This is the first step where you are going to create the shipping box. First you need to encode your file. That means that a file, wheter it is an audio, video file, is compressed to another format that normally takes up less physical drive space than the previous format. Common video encoding methods are DivX, MPEG-1, MPEG-2, MPEG-4 … most common audio encoding method is MP3 or ogg-vorbis. Then you have to mux (or multiplex). This means basically a process where separate parts of the video (or streams) are joined together into one file.
Playing a video
Now that you have your box, you need to open it before to see the content. That’s exactly what VLC will do. To decode a stream, VLC first demuxes it. This means that it reads the container format and separates audio, video, and subtitles, if any. Demuxing files doesn’t weaken the video nor audio quality, it doesn’t do anything for these data streams, it justs simply saves them into separate files, each containing one element of the original file. Then, each of these are passed decoders that do the mathematical processing to decompress the streams.
There is a particular thing about MPEG:
MPEG is a codec. There are several versions of it, called MPEG-1, MPEG-2, MPEG-4, …
MPEG is also a container format, sometimes refered to as MPEG System. There are several types of MPEG: ES, PS, and TS.
When you play an MPEG video from a DVD, for instance, the MPEG stream is actually composed of several streams (called Elementary Streams, ES): there is one stream for video, one for audio, another for subtitles, and so on. These different streams are mixed together into a single Program Stream (PS). So, the .VOB files you can find in a DVD are actually MPEG-PS files. But this PS format is not adapted for streaming video through a network or by satellite, for instance. So, another format called Transport Stream (TS) was designed for streaming MPEG videos through such channels.

Technorati Tags: , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

Using current time of day to timestamp execution logs

I keep coming back to timers these days as my work is involving their usage heavily :-). The latest was a requirement by me for knowing a current time for timestamping a certain sequence of logs. I found this program at a sourceforge website, which just wonderfully and blissfully did what I wanted …

Here is the small tiny program for reference:

/* C routine: sample gettimeofday with time in milliseconds
   mmc mchirico@users.sourceforge.net

   Downloads:
   http://prdownloads.sourceforge.net/cpearls/date_calc.tar.gz?download

*/
#include <sys/time.h>
#include <time.h>
#include <stdlib.h>
#include <stdio.h>

int mainvoid
{
  char buffer[30]
  struct timeval tv

  time_t curtime

  gettimeofday&tv, NULL
  curtime=tv.tv_sec

  strftimebuffer,30,"%m-%d-%Y  %T.",localtime&curtime
  printf"%s%ld’n",buffer,tv.tv_usec

  return 0

}

My execution logs looked something like this:

RESULT : EName:[02-25-2008 15:26:50.MS: 520548] Sub : –[1]– EvID : –[1]– Pub : –[0×9163788]– PName : –[pub1]–
RESULT : EName:[02-25-2008 15:26:50.MS: 520708] Sub : –[1]– EvID : –[1]– Pub : –[0×91638d0]– PName : –[pub2]–
RESULT : EName:[02-25-2008 15:26:50.MS: 520799] Sub : –[1]– EvID : –[1]– Pub : –[0×91639f8]– PName : –[pub3]–
Close
E-mail It