watch this interesting video! i liked the speaker way too much...
do you think it's really important that every calculation you make gives a correct result? of course it is !! but maybe not for all applications, let's see...
for example, if you're making a bank transaction, does it really matter the number of pennies or cents? what about computer simulations? it's already based on probabilistic models, so maybe a little bit of randomness in the results won't hurt too.
still not convinced? think about a DVD player generating many frames per second, if it messed up some pixels in a number of frames, it won't degrade the overall viewing experience, so maybe signal processing and sensor applications can find advantages to that new technologies.
but why should we bother developing new technologies given the undertaken risks in tolerating the incorrect results? that's because this can significantly reduce the power consumption without compromising user experience.
researchers are now developing a new type of transistors called PCMOS or Probabilistic-CMOS that will be available in 5 years, by making hardware a little bit unstable, we can realize the required randomness while significantly reducing the consumed power. actually this topic is very new that i can't find many articles about it, maybe you can check these links about a new embedded system architecture based on PCMOS, and a demo of PCMOS based DSP.
i think that's a very revolutionary approach in chip design, don't you agree?
Friday, March 28, 2008
Probabilistic Chips
Tuesday, March 18, 2008
Setup your Symbian C++ Development Environment on WindowsXp
this semester, we're studying Symbian OS Development for mobile phone software, the course started with C++ development using Carbide C++ and will move later to J2ME, we are currently interested in the S60 platform.
preparing for my next lab assignment, i invite you to join me in installing Carbide C++ on my WindowsXp PC, we'll proceed as follows:
- install ActivePerl-5.6.1 (required to build your projects) (this setup adds some env variables).
- install S60 SDK for Symbian, i don't recommend beta versions.
- install JRE (required by the Carbide Eclipse-based IDE).
- install Carbide C++.
- for console apps to run, you'll need to add "textshell" in a separate line at the beginning of your "{SDK_PATH}\Epoc32\Data\epoc.ini" file.
Troubleshooting:
- when i first tried to run, i got this error "BLDMAKE ERROR: Platform ARMV5 not supported by \Symbian\Carbide\workspace\Test\group\BLD.INF" i found that the BLD.INF file contained the project information specially the platform details, as a windows user you expect that to be: "PRJ_PLATFORMS WINSCW GCCE" i found it was "PRJ_PLATFORMS DEFAULT" u can change it manually but to avoid doing that everytime i found it can be customized in the Carbide under Windows-> Preferences-> Carbide.C++-> Platform Filtering Preferences where i unchecked everything except WINSCW and GCCE.
update: i found later that you can choose not to install the ARMV5 and GCCE in the SDK setup and everything will still work fine for you - as far as we are concerned. - Windows Vista users may face other problems but i can't cover everything here, however i can say that the Symbian online community is very active and you're likely to find the solution to ur problem after a simple search, just be patient it may seem difficult at the beginning.
Wednesday, February 27, 2008
Hardwood Solitaire III - A Revolutionary Card Game
"A revolutionary collection of solitaire card games with engaging full-color graphics, original music, intriguing sound effects, and captivating 3D game play." Download here.
i really liked this game, i'm not that interested about card games but what got me hooked was the fascinating MIDI music in the background, like a medieval epic or a fairy tale, that always reminds me of the sweet vague thoughts of the past, i had that game when i was a kid and i got it again last year, i open it from time to time to listen to the music and remember my childhood :)
Enjoy the game.
Monday, February 25, 2008
Write Parallel Code
i was reading through the Computer Architecture textbook - Computer Architecture A Quantitative Approach, 4th Edition, when this caught my attention just on the 4th page "Whereas the compiler and hardware conspire to exploit ILP implicitly without the programmer’s attention, TLP and DLP are explicitly parallel, requiring the programmer to write parallel code to gain performance."
well, i've been hearing a lot of talk about parallelism and multi-cores during the last month, like when we had a session about Parallel Lock-Free Programming to talk about the advanced synchronization techniques the Microsoft PFX team is working on, also the Computer Architecture course this semester is specially interested in this stuff - as it was upgraded to the advanced level.
all that kept me thinking for some days what can we do to really exploit the power behind multi-core computers? this is a big question that i'm sure some of the smartest minds are working on and i find myself interested in the subject.
the sentence i quoted up there inspired me about a tool that will help programmers harness the power of multi-cores in the same way they do their normal work, the tool should help the programmer to write parallel code by viewing multiple code areas like in the compare editor and adding compiler directives, also it should support debugging support and auto-tests/suggests concurrency control. This should handle a variable number of cores for the target machine and maybe a variable platform too, regardless of the developer machine. The plug-in can be published as an open source project so everyone can benefit and contribute.
i didn't forget to check what have been done so far and i was not amazed to find that there is some work in this field but the Google search didn't return that many matches, that's a very new and open approach and we expect to witness a lot of achievements in the next years. I'd like to mention Model-Driven Development Tool for Parallel Applications and The Grid Compute Server Plug-in for NetBeans IDE besides the Microsoft PFX. You can also check this paper, it was published in 1989 and provides a theoretical treatment of the subject.
Wednesday, February 13, 2008
Prallel Multi-Threaded Lock-Free Programming
today we had a session by eng.Emad Ali - Software Design Engineer(SDE) at Microsoft Corp. PFX Team, where he first reviewed the multi-threading synchronization objects in C++ and C# and the thread execution model on single-core and multi-core systems,
he then introduced the new synchronization techniques intended to be added to the .Net libraries like SemaphoreLight, Event, Monitor and Parallel.for - which executes independent loop iterations in parallel instead of waiting for each iteration to complete first with support to load balancing between cores too - and showed the advantages of Lock-Free programming in implementing more efficient synchronized data structured like stacks and queue that operate far much better with multiple threads.
he also mentioned the introduction of parallel techniques to LINQ - the Language Integrated Query added to the .Net framework by the end of 2007 that enables you to query any IEnumerable
if you found yourself interested in the subject you can continue with the following links:
Parallel Extensions to the .NET Framework
LINQ: .NET Language-Integrated Query
101 LINQ Samples
Task Parallel Library
Lock-Free Programming (Great)
PFX Team Blog
Computers and Artificial Intelligence at the Bibliotheca Alexandrina with Dr. Ismail Serageldin
yesterday a bunch of engineering students specially from our departement, attended the Computers and Artificial Intelligence three part series at the Bibliotheca Alexandrina. The department was kind enough to give the day off so all the students are able to attend this big event. It was long and rich with information, a lot of history too but i can say this helped to set the base for the thorough discussion introduced by Dr.Ismail.
The sessions outlined the development of computer systems along side the advancements in communications to the age of the internet and the ICT Revolution. A variety of visions were introduced from purely philosophical to purely technical to show the controversy about the definition of intelligence and the idea of creating intelligent machines and whether it's possible or not.
maybe it's suitable to mention the strongest of both sides of this controversy: the Chinese Room Argument that confines any machine intelligence to a set of predefined rules that can only be enlarged which is not real intelligence, opposed by Raymond Kurzweil who says that computers were able to break any borders that have been set before and predicted that computers will be able to defeat the world champion in chess by 1998 and it happened in 1997, 1 year earlier than predicted. there's more on that in the slides, but without the great presentation given by Dr.Ismail.
I added the links for you here, you can get that and more from Dr. Ismail's website.
Sunday, February 3, 2008
Learn about RSS from Common Craft
i've been very amused about these kind of videos, they call it "XYZ in Plain English", which corresponds to our Arabic expression "بالعربى الفصيح", they aim to introduce complex ideas in a very intuitive and story like way guided with pointing fingers and simple sketches, that makes it easy for you to follow up and get the idea, without having to bear with much jargon.
These videos are created by Common Craft and uploaded to YouTube by leelefever, they made many wonderful videos and have some kind of a show too, very creative and inspiring...
one good example that's suitable for our new blog is RSS in Plain English, RSS makes it easy for you to keep track of your favorite blogs and news updates, the video introduces the idea non-technically which isn't enough for you, since it only introduced the illusion of the service,
i prefer you read a little bit more about it on Wikipedia, you can start from here, and to make this discussion more thorough, i have to mention pinging and its implications.
do want to know what an rss feed looks like? click this link to view my blog feed, maybe your browser will suggest registering the feed too, it's a kind of xml that contains some or all the data you need to get, you can view the page source to have a closer look.