Friday, May 20, 2011

PingGuin, Net Notifier Software


Software is about making life easier. It's right that to check whether internet is available we make command line ping requests. To know whether the connection is really active we can just ping to www.anydomain.com i.e; www.saosx.com. Whenever this ping fails we ping to our default gateway to check whether gateway is reachable. A gap between the host and gateway will result unreachability to web servers. When gateway is reachable we further need to check whether DNS servers are reachable. So we need more two pings. I always thought about automating these tasks. I have once indeed written a script that does all these works. Well, that's another story.

I wanted to create a software for general people who can use this tool to automate the ping process to all three servers (gateway, pri dns, sec dns) . Moreover, I implemented feature to show balloon tips on the taskbar notification area whenever internet is available.

I have made attempts to make the software as user friendly as possible. When start the software the initial dialog box is shown which has a static box that updates whether internet is available or not. In that window I have enabled automatic retrieval of network interface settings so that user don't have to go through tedious typing everytime he/she starts the software.


It is really amazing that the entire internet is running on kindness and openness of people. Why not I contribute some from my side! That's the reason behind my delivering of this software as open-source. Together we make a better world. I don't want others to go through same tedious procedure during building components for my software. You can straight visit my project source code here:
http://code.google.com/p/pingguin/source/browse/#svn%2Ftrunk

 It's an opensource project. You have freedom to use my code. But please acknowledge me and my project in comment. I will also welcome anyone to contribute in this project. Contribution can be of many forms. May be pointing out a bug, suggesting features that should be included in the future release or working with the code directly and improving the quality of work.

I would like to acknowledge my endless debts to msdn, microsoft forums, codeproject and all the forgotten resources of internet that helped me to get new ideas and develop and nourish them. msdn is Microsoft Developer Network and forum for VC++ is available here: http://social.msdn.microsoft.com/Forums/en/category/visualc while codeproject is an awesome website for helping developers across many programming languages and frameworks.

Native Software developers can take help on following topics from my this project:
  1. Standard mechanism of accessing Windows Management Instrumentation information
  2. DNS Lookup and PING API (alway check msdn for reference)
  3. Showing Balloon Tips and adding icon in the taskbar
  4. Displaying menu from resource using tray icon
  5. Creating Windows Threads using structure
  6. Unicode string manipulation (using tchar library)
  7. Creating Installer for Native Software (see PingGuin_Installer in the svn trunk)
I'm building an API for network tools and parsing other types of information some of which release under project sasubsync, Wireshark Parser, Stutdown Timer, Blogger Code editor etc. A compendium will be provided in my site in future. So in related topics you are welcome to take help. If some code isn't available you can ask me.

By this time when I'm writing this post this software is available for Windows only. I'm checking user responses. According to that I'll decide whether to release for other platforms. You can download installer of pingguin for windows from here:
http://code.google.com/p/pingguin/downloads/list


This software is built in my off-time (killing my traveling time, yeah I call this little exploring in this universe as traveling, you can't sue me until you're oracle! :P). Hence, this software has still no relation with my software company, Reve Systems. It's all about pingguin, a net notifier software. You are welcome to visit: http://code.google.com/p/pingguin/