Tuesday, 17 November 2009
Claytronics, if smart robots are in O(scary), then this is in Omega(scary^{scary})
- Imagine a day when you can make your cell phone smaller to fit more comfortably in your pocket, then make it larger so you can text more easily.
- Imagine that you could make your cell phone take the shape of a headset when you want to talk on it or re-shape it like a bracelet so you can wear it while jogging
- Now imagine a robot that could take different shapes depending on a certain line in its code.
Well, imagining time is over because Intel and CMU are now working to create programmable matter. This is how it works, take millions of millimeter-sized robots and enable them, through software and electromagnetic forces, to take on various shapes and sizes. The programmable matter is called claytronics and the tiny robots are called catoms. Each catom will have its own processor. Think of each catom as a tiny robot or computer that has computational power, memory and the ability to store and share power. Then program millions of catoms to work together, much like a swarm of bees or a flock of birds (and this is not ant-colony algorithm btw). Developers are focused on creating software that will focus on a pattern or overall movement of the system of tiny robots. Then each robot will be smart enough to detect its own place in the pattern and respond accordingly. If, for instance, a catom, or robot, detects that it has only one other catom beside it, it will know that it's on an end and can act according to what the end piece should be doing.
And it gets even better, it also could mean that instead of looking at images on a screen, gamers could have animated figures running around their houses(right on the face of project Natal). And instead of calling your co-worker to discuss something, a 3D facsimile of him or her could sit in your office and discuss a new project or the next year's budget.
The challenges involved include creating new programming languages, algorithms and debugging tools to get these massive systems to work together any a host of other things. But this on one dimension of robotics bound to revolutionize life as we know it.
credits: computerworld and acm
Saturday, 14 November 2009
Tired or 'Humankind' Olympix? How about 'Robotkind' Olympix?
PS: The games will be open to only Humanoid robots
What will "A Midsummer Night's Dream" be when done by Robotkind?
read more here
credits: acm
Friday, 25 September 2009
Robot Operating System, the next big thing
Thursday, 27 August 2009
Moral Machines, a joke or just reality in the future
Read more here
Tuesday, 4 August 2009
Responsible Robots? How about responsible humans first?
A robot may not injure a human being, or through inaction, allow a human being to come to harm.
A robot must obey orders given to it by human beings, except where such orders would conflict with the First Law.
A robot must protect its own existence as long as such protection does not conflict with the First or Second Law.
Sunday, 12 July 2009
Robot with moods
“As far as we know, no other research group has used machine learning to teach a robot to make realistic facial expressions,” said Tingfan Wu, the computer science Ph.D. student from the UC San Diego Jacobs School of Engineering who presented this advance on June 6 at the IEEE International Conference on Development and Learning.
The faces of robots are increasingly realistic and the number of artificial muscles that controls them is rising. In light of this trend, UC San Diego researchers from the Machine Perception Laboratory are studying the face and head of their robotic Einstein in order to find ways to automate the process of teaching robots to make lifelike facial expressions.
This Einstein robot head has about 30 facial muscles, each moved by a tiny servo motor connected to the muscle by a string. Today, a highly trained person must manually set up these kinds of realistic robots so that the servos pull in the right combinations to make specific face expressions. In order to begin to automate this process, the UCSD researchers looked to both developmental psychology and machine learning. Read more here.
Thursday, 2 July 2009
Saturday, 6 June 2009
Simplify and beautify documentation using Doxygen
Here is a sneak preview of what doxygen can do;
- It can generate an on-line documentation browser (in HTML) and/or an off-line reference manual (in
) from a set of documented source files. There is also support for generating output in RTF (MS-Word), PostScript, hyperlinked PDF, compressed HTML, and Unix man pages. The documentation is extracted directly from the sources, which makes it much easier to keep the documentation consistent with the source code. - You can configure doxygen to extract the code structure from undocumented source files. This is very useful to quickly find your way in large source distributions. You can also visualize the relations between the various elements by means of include dependency graphs, inheritance diagrams, and collaboration diagrams, which are all generated automatically.
- You can even `abuse' doxygen for creating normal documentation (as I did for this manual).
Saturday, 16 May 2009
Integrating Qt apps on Gnome desktop
install qt3-qtconfig using either yumex if on Fedora, or synaptic on Ubuntu
Then run qtconfig from the commandline.
Click the tune palette button, and make sure you adjust the Base, Background & Button colors to R: 237, G: 233, B: 227. Click OK, and do File, Save and close ‘qtconfig’. If you now restart Scribus you’ll notice it’s still not pretty, but it’s more tolerable now.
Qt4 will incoporate the cleanlooks theme, which make things better.
Saturday, 2 May 2009
Read Mail while programming on emacs
;; Some file locations are relative to my HOME or BIN directories
(defvar home-dir)
(setq home-dir (concat (expand-file-name "~") "/"))
(defvar bin-dir (concat home-dir "bin/"))
;; Basic VM setup
(push (concat bin-dir "emacs/site-lisp/vm") load-path)
(autoload 'vm "vm" "Start VM on your primary inbox." t)
(autoload 'vm-other-frame "vm" "Like `vm' but starts in another frame." t)
(autoload 'vm-visit-folder "vm" "Start VM on an arbitrary folder." t)
(autoload 'vm-visit-virtual-folder "vm" "Visit a VM virtual folder." t)
(autoload 'vm-mode "vm" "Run VM major mode on a buffer" t)
(autoload 'vm-mail "vm" "Send a mail message using VM." t)
(autoload 'vm-submit-bug-report "vm" "Send a bug report about VM." t)
(setq vm-toolbar-pixmap-directory (concat (expand-file-name "~") "/bin/
emacs/site-lisp/vm/pixmaps"))
(setq vm-image-directory (concat (expand-file-name "~") "/bin/emacs/
site-lisp/vm/pixmaps"))
(setenv "PATH" (concat (concat (expand-file-name "~") "/bin/emacs/
site-lisp/vm/bin") ":"
(getenv "PATH")))
(setq send-mail-function 'sendmail-send-it)
(setq user-full-name "User Name")
(setq user-mail-address "username@email.com")
(setq mail-archive-file-name "~/Mail/SENT")
;; Configure inbound mail (POP)
;; edit this details
(setq vm-spool-files
'(("~/INBOX" "pop-ssl:pop.mailserver.com:995:pass:username:*" "
~/INBOX.CRASH")))
;; Use W3M to read HTML email
(require 'w3m-load)
(setq vm-mime-use-w3-for-text/html nil)
(setq vm-url-browser 'w3m)
(load "vm-w3m")
(setq w3m-input-coding-system 'utf-8
w3m-output-coding-system 'utf-8)
;; Configure outbound mail (SMTP)
(setq smtpmail-starttls-credentials '(("smtp.mailhost.com" 587 nil nil))
smtpmail-smtp-server "smtp.mailhost.com"
smtpmail-default-smtp-server "smtp.mailhost.com"
send-mail-function 'smtpmail-send-it
message-send-mail-function 'smtpmail-send-it
smtpmail-smtp-service 587
smtpmail-auth-credentials '(("smtp.mailhost.com"
587
"username@mailhost.com"
nil)))
Have fun coding while updated with your emails.
Thursday, 30 April 2009
OpenUsability
Wednesday, April 29, 2009 at 10:13 AM
Inspired by Google Summer of Code™, the OpenUsability Season of Usability is a series of sponsored student projects to encourage students of usability, user-interface design, and interaction design to get involved with Free/Libre/Open Source Software (FLOSS) projects. Students experience the interdisciplinary and collaborative development of user interface solutions in international software projects while getting into FLOSS development.If you are a student of design, usability, human factors, or other HCI-related field and you are interested in working on an open source project, you could work with an experienced usability mentor on a fun and interesting design project! As a bonus for working 10-15 hours a week between June 1 and August 31, there is a $1000 USD internship stipend at the end of the project.
The OpenUsability Season of Usability will be supporting 10 students to work on 10 open source projects during the June 1 - August 31 2009 season.
* Amarok
* Drupal
* Gallery
* GeneMANIA
* GNOME
* Kadu
* KOrganizer
* OLM
* SemNotes
* Ubuntu
Student applications are due May 20 2009. See http://season.openusability.org/index.php/projects for more information on the projects, student requirements, and how to apply. Questions about the projects or application process may be directed to students@openusability.org.
Thursday, 23 April 2009
Openmoko
Openmoko™ is a project dedicated to delivering mobile phones with an open source software stack. Openmoko is currently selling the Neo FreeRunner phone to advanced users and will start selling it to the general public as soon as the software is more developed.
Writting apps for openomoko is greatly simplified by use of python and GTk, an example script would be;#create a (nonvisible) window
w = gtk.Window()
#create a button (not yet on any window)
b = gtk.Button('Hello')
#put the button on the window
w.add(b)
#create a silly callback function
def hello(target):
print 'Hello world'
exit()
#make the button call the callback when pressed
b.connect('clicked', hello)
#make the window display
w.show_all()
#start processing screen events
gtk.main()
Openmoko is a project which encompasses two related sub-projects, with the combined aim of creating a family of open source mobile phones.[1] The project was founded by FIC.
The first sub-project is Openmoko Linux, a Linux-based operating system designed for mobile phones, built using free software.
The second sub-project is the development of hardware devices on which Openmoko Linux runs. The first device released was the Neo 1973,which was followed up by the Neo FreeRunner on 25 June 2008. Unlike most other mobile phone platforms, these phones are designed to provide end users with the ability to modify the operating system and software stack. Other Openmoko-supported phones are also available.
On 2009-04-02 Openmoko canceled planned phones and will probably concentrate on other kinds of hardware,but will still support and sell the current Neo FreeRunner.
More info can be found at http://wiki.openmoko.org/wiki/Main_Page
Openchange
OpenChange aims to provide a portable Open Source implementation of Microsoft Exchange Server and Exchange protocols.
Exchange is a groupware server designed to work with Microsoft Outlook, and providing features such as a messaging server, shared calendars, contact databases, public folders, notes and tasks.Two main aspects are;
- Provide interoperability with Exchange protocols.
This is the MAPI library development purpose (libmapi). MAPI stands for Messaging Application Programming Interface and is used within Microsoft Exchange. The OpenChange implementation provides a client-side library which can be used in existing messaging clients and offer native compatibility first with Exchange server; and in a near future with OpenChange server. Novell Gnome Evolution and KDE Akonadi (KMail, Mailody) are using the OpenChange MAPI library to access Microsoft Exchange servers natively.
- Provide a transparent replacement to Microsoft Exchange Server with native Exchange protocols support and direct communication with Microsoft Outlook.
This basically means that OpenChange server won't need any plugin installation in Outlook. The server is tighly linked to Samba4 since it is developed as an endpoint module for smbd (the samba server daemon) and is part of the mapiproxy project, an Exchange proxy which can act as a transparent gateway and/or progressively and seamlessly replace an Exchange server with openchange.
During this years Gsoc 2009, Three students
| Student | Project | Mentor | Status |
Exchange2Ical tool | Brad Hards | accepted | |
Thunderbird Integration with OpenChange | jelmer vernooij | accepted | |
GRAPHICAL FRONT END FOR OPENCHANGE | julien kerihuel | accepted |
GSOC 2009: Results are out, its time for community bonding
So what is this community bonding all about?
One of the biggest changes to the program this year is the inclusion of nearly two extra months in the program timeline. "We got some great feedback from our students and mentors last year that three months is often too little time to read necessary documentation, write code and participate in the organization's community in-depth. Since our not so secret desire is for our students to stick around and keep contributing to their organization's code base long after the program ends, we figured we'd give you some extra time to get up to speed on the community side." Says Leslie Hawthorn.
In practice, the community bonding period is all about, well, community bonding. Rather than jumping straight into coding, you've got some time to learn about your organization's processes - release and otherwise - developer interactions, codes of conduct, etc. We also figured it would be easier to socially engage with your fellow developers when the pressure to ship isn't looming in your vision. I know few folks who didn't lurk in a project's IRC channel for weeks or even months before submitting their first patch, let alone saying hello and getting to know the other folks in the channel.
If you've already worked with with your organization's code base and developers, great! Take this time to help out your fellow students who haven't. There's a great deal of undocumented lore in every community, and your previous experience can be invaluable to them as they get started.
And why aren't you mentoring already? ;)
Friday, 17 April 2009
Intelligent Data Interpreter
I currently work on this project as assistant Programmer in C++, and this is really good news for us in the team.
Thursday, 26 March 2009
Google Summer of Code
Tuesday, 13 January 2009
Shuffle Algorithms
Ever wondered why when you select the Shuffle option in your Ipod, MP3 or whatever gadget that you are using to play your music, there is something peculiar with the randomness of teh choice of songs. Somehow some tracks just get repeated too often, especially when your collection is limited alot. Well, I recently took time to explore what goes on behind the 'scenes' and discovered something puzzling. There is a problem with the shuffling, that is, it is random. I know this sounds like am kidding but I am not, be assured. A simple random function implementation in Python for example generates the following:
AACBBCBACABBCCACCCCABBACBACABABB
And I am pretty sure implementation in other languages will generate something of similar manner. Now, it does not take much effort to see that the randomness of the above output is not what we desire. Assuming that A, B, and C are tracks, one can easily notice the biasness to C in the middle of the shuffle. Also there are very few instances of B. This is not what is intuitively believed to be shuffling. Because we want shuffle to give equal chance to every track in the playlist and do so in a random manner, but what do we get; a 'randomness that is random'. To explain the intuitive understanding of shuffle, this is what we expect with shuffle 'on'.
ABCBCABACBACBCABCACBABCACBACBCAB
But, this is where the problem comes, how do we develop a shuffle algorithm that is efficient enough to generate something like the one shown above from the playlist. I will discuss a possible algorithm that solves this problem next time. Till then, have fun pondering over the problem.

