A “wasted” evening !

Yesterday I completed a long pending task. Something that I’d wanted to do for a very long time but never had the need, nor the compulsion to do it.

Over the past couple of days my router had been exhibiting DNS resolution issues. DNS resolution is the process of translating a URL like google.com to an ip address which a computer can understand.

This DNS resolution happens at multiple places:

1. Your internet service provider (ISP) has a DNS server. Which is like a constantly updating online table. Which maps URLs to ip addresses.

2. Your router (wifi modem) has another piece of software which stores (caches) the URL to ip mappings that the DNS server returns, so that it can get you to the URL faster.

3. Your computer (laptop or desktop) has software that caches the URL, ip mappings as well.

To identify the source of the problem I first connected the Ethernet cable that my ISP provides directly to my computer. All the URLs openednup fine. So the problem was not with my ISP’s DNS server. So problem with #1 is ruled out.
Some of you might not be able to follow this step signce your ISP gives you internet via a telephone cable which needs to go through a modem to connect to a computer.

Next, I cleared the DNS cache on my Mac (the command to do that is : dscacheutil -flushcache;sudo killall -HUP mDNSResponder) and tried to traceroute google.com , no change in latency. So, the only problem could be the DNS cache on my router.

So, I tried rebooting my router, Resetting it to factory settings, Flashing the latest firmware, to no avail.

Now, I had the motive, the will and the need to change the firmware of my router to dd-wrt. The open source router firmware running the latest linux kernel #superAwesome. After a couple of minutes of flashing the firmware and couple more to configure the settings I had the router working as new again !

Dd-wrt brings along with it, a bunch of goodies ! But that’s something I’ll leave for the dd-wrt website to explain.

Until next time ….
Kunal

[1] http://dd-wrt.com/site/content/about

Advertisements

Rare Insight ( Blinking an LED )

Just the other day I was going though my YouTube subscriptions and came across a recommendation for an Embedded Systems Programming course. Off late I had started taking interest in hobby electronics ( Arduino , Stellaris launchpad .et.al ) so the recommendation was quite welcome !

Quite a few lessons had already been delivered so I started catching up.

The first few lessons were pretty typical of an embedded systems programming course. You start with the target board ( in this case the stellaris launchpad ) setup your IDE, and brush up the fundamentals of C programming ( no C is not passé 😉 ) . The tutor ( Miro Samek ) also went over some number systems fundamentals ( binary , decimal , hexadecimal ).

Now it was time for the customary blinky program. The “Hello World” of embedded programming and trust me this version of hello world is much more satisfying !  Ah, the thrill of watching an LED blink 🙂 . By now you must be wondering what is the “rare” insight to gain from all of this ? Hang on 😉 we’re almost there.

Unlike most Blinky tutorials on YouTube, Instead of importing a standard header file and writing the LED toggling Logic ( LED on -> DELAY -> LED off -> DELAY ) inside a while loop. Miro started with the datasheet of the microcontroller and then gradually built up to the Blinky program ! I’d leave the explanation to the one who does it best. Below is the youtube video where Miro explains the Blinky program from “scratch”.

The “rare” insight gained from the above video is that, that’s exactly how Memory Mapped I/O happens ! I have read about it a million times but somehow, watching EXACTLY how it happens, makes so much more sense.

Also in his whole video series ( http://www.youtube.com/playlist?list=PLPW8O6W-1chwyTzI3BHwBLbGQoPFxPAPM) he always takes you from the basics and leaves you with a confidence that, given any development board you can find your way around , even if there are no standard header files provided with it ! ( As long as you have the datasheet ).

Overall, a great tutorial ! definitely worth the Time and Effort.

Youget – My take at downloading youtube videos

hey there,
i recently changed my broadband plan to HOME 500C(BSNL) and get 2am to 8am free download.So i wrote a small shell script to download the videos during free time, can be used with “at” linux command.
please see the code, use it and post comments,
the file:ftp.kunalghosh.net46.net/my_files/youget.sh

kunalghosh

IDEs in LINUX the good bad and the not so ugly !!

TARGET AUDIENCE:HIGH SCHOOL & UNDER GRADUATE COLLEGE STUDENTS

Well in undergraduate college courses we all are taught to write programs in C/C++ etc we all are very happy and enthusiastic about it but little do we know about the stark realities of real word programming !!
the TURBO C++ IDE used in most colleges and homes by students is though easy ( if i may call it so :)) to learn doesn’t teach us good project management skills. I know that project management skill like code reuse , splitting the code into many files etc can be done even in this IDE but the point is that it doesn’t enforce it !!

So let me point out a few popular IDEs

(i will not feature CODE::BLOCKS as i myself have not used it fellow developers are welcome to leave comments about the use of CODE::BLOCKS IDE)

that are available to students using linux

( i am a staunch supporter of linux )

1.GEANY

it is a very simple IDE and IDEAL for beginners if you are using UBUNTU you’ll most probably find it in the repositories.

NOTE: it does not have a debugger built in.And has very elementary project management features.

to compile a sample C code

/*————hello world.c————–*/

#include <stdio.h>

int main()

{

printf(“Hello, World !!\n”);

return(0);

}

/*——————————-*/

step 1.click on File->New

step 2.replace all the text with the code given above.

step 3.save the file

step 4.click Build->compile (it should not give any errors)

step 5.click Build->build (it should not give any errors)

step 6.click Build->execute.

Voila !! there you have your output.

Note: incase you are using math.h header file

goto build->set includes & arguments

and change the compile entry to gcc -Wall -c -lm “%f”

and build entry to gcc -Wall -lm “%f”

2.Anjuta

It is a very mature and stable and useful and …. IDE ideal for many practical uses but for now i will explain only how to write and compile a sample C code

1.click on File->New->project

2.forward

3.Project Type select “Generic” under the C tab.

4.give a relevant project name (***without spaces***) and forward

5.destination :select the path of an empty folder.

6.Apply

7.in the files sidebar select “src”->”main.c”

8.you are by default given a sample hello world program

9.click on Build->compile

10.Build->build

11.Build->execute program.

you should be able to see the “Hello world” output in a seperate window

NOTE:in case you are using the math.h header file

in files sidebar select “src”->MakeFile

in that replace the entry on the 86th line

“CPP = gcc -E” with “CPP = gcc -E -lm”

and save the makefile you may need to change the g++

entries if you are using c++ to code.

I am leaving KDEVELOP and NETBEANS for you to practice on.

incase this article of mine has been of any use to you please leave a message.

(you could help me monitarily by taking a survey by clicking the add snippet at the bottom right

when you make an account i will be credited with 1.25USD)

regards and Best of Luck

kunal ghosh

(kunalghosh)

having a tough time adopting LINUX for my C programming :(

I accept the fact that linux is a brilliant and a very promising platform for every day use ! but I often find it very hard to use it for my elementary C programming needs . I use UBUNTU 8.04 and gcc for compiling my C programs.Also I do understand the fact that GCC is not giving me problems ( which many people donot understand ;-P) it is the header files. I am used to many outdated header files like CONIO.H and DOS.H , Graphics.H and ironically it is still being taught in college 😦 . Surfing around the web got me some solutions and a set of new problems 😦 (what the heck !!)

1.Use ncurses.h instead of conio.h for most of my needs i.e getch() etc !

2.Dos.h is obsolete because it was for single user OS and is not suitable for an Multiuser, Multiprocessing OS like LINUX.

3.Graphics.h is obsolete and we are encouraged to use GTK and other APIs for graphics programming which are far more capalbe.

PROBLEMS

1.well not as many as solutions but i cannot find ncurses.h in my installation CAN ANYBODY PLEASE HELP ME OUT WITH THIS !!

well that was my “SUKH DUKH ki BATEIN” and hope i get some solutions to them.

IF you happen to have any solutions please leave entries at my guest book

well i also found this article to be a bit of help 🙂

http://math.hws.edu/orr/s04/cpsc225/curses.html

check out the link for getting apt-get like power in OPENsuse10.3

http://www.blogtoplist.com/out.php?id=27192&article=1801715

This is a link to a site called “SathyaSays.com” which has articles on Linux and open Source topics.This particular topic in specific deals with configuring “SMART” a command line package management toolfor openSUSE (i wonder if it works for versions before 10.3). it works pretty much the same way as apt-get in DEBIAN with minor syntax differences.

by

kunal ghosh

(kunalghosh)