<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Science and Technology Explained</title>
	<atom:link href="http://www.scitechexplained.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.scitechexplained.com</link>
	<description>Stories, News, Books, and Videos on Science, Technology, Computers, Environment and the Realites of Life, for the general, smart public</description>
	<lastBuildDate>Wed, 08 Feb 2012 19:15:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Qualia, Colors, and nonsense</title>
		<link>http://www.scitechexplained.com/2012/02/qualia-colors-and-nonsense/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=qualia-colors-and-nonsense</link>
		<comments>http://www.scitechexplained.com/2012/02/qualia-colors-and-nonsense/#comments</comments>
		<pubDate>Wed, 08 Feb 2012 18:47:24 +0000</pubDate>
		<dc:creator>kawa</dc:creator>
				<category><![CDATA[Mind / Brain]]></category>
		<category><![CDATA[Science]]></category>

		<guid isPermaLink="false">http://www.scitechexplained.com/?p=8187</guid>
		<description><![CDATA[&#160;&#160;&#160;&#160;&#160;&#160;&#160; It can often get quite amusing watching qualophiles&#8217; self-confidence, mutual assurance and agreement when they talk about something they define as inherently private and un-accessible to third person analysis (i.e. qualia), so they say, but they somehow agree on what they&#8217;re talking about even though as far as I&#8217;ve been able to understand they]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.scitechexplained.com%2F2012%2F02%2Fqualia-colors-and-nonsense%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.scitechexplained.com%2F2012%2F02%2Fqualia-colors-and-nonsense%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<div style="float: left; margin-right:10px;">
<a href="http://www.scitechexplained.com/2012/02/qualia-colors-and-nonsense/"><img alt="Qualia, Colors" src="https://lh4.googleusercontent.com/-sjZRsFI1rVk/TzLCu8k-JpI/AAAAAAAAB1A/C-jyjKB8Z5U/s281/art127%2520-%2520maryrobot.jpg" width="281" height="280"/></a>
</div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; It can often get quite amusing watching qualophiles&#8217; self-confidence, mutual assurance and agreement when they talk about something they define as inherently private and un-accessible to third person analysis (i.e. qualia), so they say, but they somehow agree on what they&#8217;re talking about even though as far as I&#8217;ve been able to understand they don&#8217;t even scarcely believe there could be any theory that could bridge the gap between the inefable what-it-is-likeness (WIIL) of personal experience and the third-person, scientific, objective descriptions of reality. How are we to explain this what-it-is-likeness (WILL) if we can&#8217;t subject it to what science has been and will always be? Third-person analysis. So, here it is: Qualia, one of the last remaining statues for us to rise on the pedestals of science, but we must stop, qualophiles say, because, &#8230; Because what? &#8220;<em>Because the what-it-is-likeness of Qualia!</em>&#8220;. And believe me that&#8217;s the whole argument that they posess if we are to succintly resume their rigurous, inner-gut analysis. I&#8217;ll try to expose the absurdity of their stance by making some analogies while telling the story of how architects and designers build 3D models of reaility with the help of 3D design/rendering software. </p>
<p>The 1s and 0s that make the large variety of 3D modeling software on the market today are all we need in order to bring to <em>virtual-reality</em> whatever model of our world we desire. Those 1s and 0s, which are by the way as physical as the neurons in your brain though not of the same assortment (see below), are further arranged into sub-modules that are further integrated into other different parts and subsystems of the computer onto which the software they are part of is running on, so their arrangement is obviously far from aleatory. One needs to adopt the intentional stance in order to understand the intricacies, detailes and roles that these specific particular modules play in this large and complex software.</p>
<p>You can imagine any model of the world you want and bring it to virtual reality. Let&#8217;s for example take the city of Rome. Every monument, restaurant, hospital, police department can be accounted for in a detailed model of the city that we can design with the help of one of these 3D modeling programs. Every park and mall, even the people and their biomechanics are so well represented that we could ealily mistake the computer model for the real thing. Here we are looking at the monitor screen from our Godlike-point-of-view. Every point, every line, every plane, every object and it&#8217;s physics from that model is 100% traceable to the 1s and 0s, that is, to the voltages on the silica chips that make up your physical computer. You have a 100% description of the city of Rome in your computer in the sense that there is no object in that model that you can&#8217;t say all there is to say about it because they&#8217;re all accounted for in the 0s and 1s saved on the hard-drive and then loaded in the RAM and video-RAM of your state of the art video graphics card. Let&#8217;s call that perspective, the perspective of knowing all there is to know about the 3D-model, the third-person perspective. What&#8217;s interesting is that all of these 3D modeling programs have the option to add a cameras to watever world model you are currently developing. Cameras present a scene from a particular point-of-view (POV). Camera objects simulate still-image, motion picture, or video cameras in the real world and have the same usage here. The benefit of cameras is that you can position them anywhere within a scene to offer a custom view. You can imagine that camera not only as a point of view but also as a area point of view (all the light reflected from the objects in your particular world model enter the lens of the camera), but for our particular mental exercise this doesn&#8217;t matter. What you need to know is that our virtual camera can perfectly simulate real world cameras and all the optical science of the lens is intergrated in the program making the model similar to what you would experience by looking through a real camera in real life. </p>
<p>The point-of-view (POV) of the camera is obvisouly completely traceable and mathematicaly deducible from the 3D geometry of the current model you are simulating and from the physical characteristics of the lens built into the camera through which light reflected of the objects in the model are projected onto. Of course, the software does all that calculation and drawing for you. But if you had the ambition you could practicaly do that for yourself by taking the 3D-model data from the saved computer file containing your particular model and calculate on sheets of paper how objects from it would look and behave from a particular camera-point-of-view (CPOV), and more to that, you could literaly draw those objects by using the widely known techniques of descriptive geometry (the same as the ones used by the software). But what point would that make when we already have computers that achieve this arduous task for us? </p>
<p>So, we can basically take a virtual trip to whatever part of Rome we want by just jumping inside a CPOV provided to us by the software. We can see, experience what it is like to be in Rome by adopting whatever POV which will be calculated and drawed to us by this complex but 100% describable and understandable computer program. The software would be no mystery to us if we were sufficiently trained programmers, architects and mathematicians. The WILL of experiencing Rome will never be a mystery to us also. Of course, as said above, we can achieve the same thing by making strenous calculations and draw on sheets of paper exactly the same POV drawed to us by the computer so we will experience a similar WILL as the one we experienced when we let the 3D design software do the job for us. Whatever our choice one thing stands to pure reason: We achieved to experience the what-it-is-likeness (WILL) of Rome by deducing it from objective third-person data that we can all share by accessing the program file that contains the 3D-model so there is nothing special about it (This is true only if we do the calculations and drawing ourselfes, otherwise the software does that for us but the whole point is that the experience of the WILL can be achieved and built by/for us using third-person data). The WILL only seems to be some other kind of thing because of it&#8217;s circumstantial relatedness with the idiosyncrasies of the POV. No need to concoct metaphysical meanings because of this relatedness. The WIIL is all accounted for, we know all about it: how it comes to existence, how it is 100% physical but non-reducible because of its intentionality, and how the circumstantial relation to its POV makes it seem as if its something separate from it but that&#8217;s an illusion. The WILL is the intentional interpretation of the mathematical description of the physical objects&#8217; properties and relationships to each other which the POV represents. The WIIL and the POV represent the same thing but each are different interpretations if it: one is a reducible, mathematical description of all the objects in the POV, the other one is the non-reducible, intentional interpretation of all data contained in the POV taken as a whole. </p>
<p>The what-it-is-likeness (WILL) of points-of-view (POVs) in our model of Rome are unique in the sense that they each have idiosyncrasies in the arrangement of points, lines, planes, colors and light reflectance that make up the objects in the model, idiosyncrasies caused by the perspective that we randomly chose to be a point or a certain area (lens of the camera) on the map of our model onto which the light reflected by some of the objects from that model are projected onto. The WILL is 100% mathematically, geometrically described and accounted for by the calculations and drawings done in order to design that POV that we experience the WILL through. To make it more clearly lets describe the relatioship between the WILL and the POV a little more! The WILL is not something separate from the POV in one important sense and here sits the crux of my argumentation: The POV which was infered and created from the objective 3D-model, third-person perspective of the city is the WILL in the sense that all we need to know if we are to describe the WILL is the mathematical description of the POV and that is all. For someone to experience objects contained in the city model through a specific CPOV that is how WILL come into existence. The sole act of accesing that POV is the WILL. The question &#8220;And then what happens?&#8221; has no meaning here because nothing happens next. As I&#8217;ve said above you can think of POVs as reducible in the sense that they can be accounted for mathematically by knowing each coordinate of every point in its description, and you can think at WILL as a non-reducible, intentional representation of the objects described by the POV taken as a whole. <em><strong> How the whole world is taken as a whole through the lens of the camera-point-of-view (CPOV) by whatever remains on the other side of the lens is the WILL and nothing more is there to be said; the story is complete.</em></strong>&#8220;Can you describe this WILL?&#8221; Of course, by providing you with all the coordinates of all the points and planes and surface properties that describe that POV through which this wholeness of experience of light reflected from objects in the model comes to reality. How did i get those points and planes and their properties? Again, I got them from the 3D-model of the city. Everybody in my office has access to that file i can provide it to you. Qualia disqualified? You bet! </p>
<h1 style="text-align: left;"><strong><span id="more-8187"></span></strong></h1>
<p>Something on privateness now. The WILL is only private in the sense that only something that experiences a certain POV can experience it&#8217;s WILL but that&#8217;s all. Can this POV be shared with others? Of course. After we create that CPOV in the computer program we can save it to a file and send it via email to whatever part of the globe you want for someone else to experience the WILL of that POV. So the possibilty of sharing it with others make it a not very good candidate for privateness. POVs are only unique, but hardly private so let&#8217;s not confuse the terms. The same, reason should say, goes for the qualia of color, smells, etc. So, I doubt there is any difference with these types of experiences. What it is like to see a color is just experiencing the complete model of a part of the world from a certain POV. Why can&#8217;t that POV be deduced and infered from the widely agreed-upon, sufficient, scientific data eludes me so far as i can see, so that&#8217;s why the qualophiles haven&#8217;t proved anything yet. I doubt they&#8217;ll ever will. If we knew almost everything there is to know about the particles and forces that make up our world we could be able to build models of whatever brains we&#8217;d like that could experience all there is to be possibly designable as an experience.</p>
<p>Daniel Dennett&#8217;s RoboMarry shouldn&#8217;t have a hard job at building color into herself without access to the already build in color-modules that are part of her 100% sillica made brain. And that&#8217;s our next story.</p>
<p><strong>RoboMarry has a busy afternoon</strong></p>
<p>In one of his more recent books, Daniel Dennett answered critics whom do not share his position on the possibility that  Jackson&#8217;s color-bereft Mary, recently eliberated from the black&#038;white, grey-shaded room which she inhabited in the course of her lifetime, could not be fooled into believing that a blue-colored banana shown to her by her masters is in fact yellow. Even though Mary did not experience any colors in here lifetime she somehow managed to put herself into the dispositional states of yellowness and blueness with the help of scientific data she gathered and made sense of in her black&#038;white room. Mary would not be at all fooled by the cheap trick her masters tried on her but Dan&#8217;s critics said Mary wouldn&#8217;t be able to pull this task off. So Dennett devised another but more inginious intuition pump: Locked RoboMary. From now on my story will differ a bit from Dennett&#8217;s in order to make my point clearer (You can check the original story in Sweet Dreams). </p>
<p>Let&#8217;s replace Mary with RoboMary: a robot just as adroit in cognitive skills as any other human being but much more rapid in thinking and with a greater bandwith for information aquiring than any of us could ever imagine  would be possible in the future even by today&#8217;s standards of technological advancement.Even it she&#8217;s a standard Mark20 model RoboMary was stripped of her HD Color Cameras and was equiped with bulk black&#038;white CCDs that have the same performances and resolution but cannot compute colors. Also, RoboMary had been resticted access to her color-experience modules that are part of her sillica-made brain by some set of plugins installed into her by her masters before she was activated. So, RoboMary had never experienced, and could neither experience colors through her black&#038;white cameras because they can&#8217;t render color, nor ever be able to put herself into the state of experiencing red because she was denyied access to the color registers that were accessible by her color-experience modules now blocked by the plugins. So Locked-RoboMary, trapped in her black&#038;white room, with her black&#038;white CCDs, without her color responsible parts of her mechanized brain apparently could never be able to experience colors. Or would she?</p>
<p>Even though her electronic color-experience modules were blocked by the plugins installed at birth into her brain-kernel, the design plans for that part of her electronic brain can be accesed by her if she is trained enough to hack into the servers of the corporation that happens to hold the patents for Mark20 robots. Being trapped in a black&#038;white room in one of the hundreth buildings of that corporation makes it all much easy because she has non-stop general-level network access to databases full of general design data<br />
files of products just like her. More to that she can converse with other Mark20 robots. And, low and be-hold, RoboMary managed to hack into one of her robotic friends&#8217; computer some months ago by installing a version of a tojan horse that she managed to program in her spare time; the fun part is that her friend which is now part of the developing team for Mark21 models thanks to her months of training and million-dollar software installed into her has higher level network access to the complete design files for Marc20 robots. That&#8217;s how RoboMary managed to understand the whole hardware and software that makes up her brain and her, now-missing, HD Color Cameras. She completely understand the functionality of whatever parts make her color-experiencing modules. She understands the physics of colors, has vast knowledge of vission in humans and how is that wired into their brains. Having access to Moogle, which is now the greatest and most used search engine on the Internet3 network, she can easily access all information having to do with vission and vission systems. Nothing about vission and the world of physics, biology, artificial-intelligence and bio-technology is un-known to her. </p>
<p>So, on Sunday afternoon, having some hours off because her training has ended prematurely due to failure of the all the design&#038;development database server farms in the building she happened to be installed, RoboMary put herself on the task of building into herself the experience of colors which were described by her robotic friends as very aweqord and unusual tools used to study the surface properties of objects. She was now ready to do this because she gathered all the data which was needed in order achieve this task. All she lacked up until now was the computing power from the supercomputer located in her building and which she now had access to because  its processors are not as stressed in this afternoon &#8220;thanks&#8221; to the cessation in normal operation of the database server department; she could now use that those extra flops for herself in order to see what&#8217;s so special about these colors. </p>
<p>Being locked inside her room RoboMary had no coloured object she could study. Nothnig coloured ever touched her senses so she had to make use of the ingenuity which always made her the adroitful robot she proved to be. Having access to the higher level network though the trojan she installed in her robotic friend&#8217;s computer she could replicate and simpulate a complete digital model of her brain (and the original HD Color Cameras that ussualy equip Marc20 robots)  inside the currently laid-off supercomputer located in her building; that would be no problem to her because she managed to steal all the Marc20 design files; all she needed now was a few hours in order to built the model into the system and to make a few thousand simulations of that model using as input the few terabytes of video-data gathered from all the security cameras spread inside the corporation building complex she was living in (all those stollen video recordings were in color but that was no use to her because the LCD screen inside her room was black&#038;white also)  plus the gigabytes of scientific information on vission systems, optics, and colors. But how was she going to put herself into the state of experiencing colors if there is no color tingling her senses? All was black&#038; white around her. </p>
<p>Well, if you remember the story of how architects create specific camera-points-of-view (CPOVs) inside their 3D modeling software in order to experience a certain point-of-view (POV) of whatever model of reality or of their imagination they are designing, maybe building color experience inside oneself without ever having experienced colors may not seem that unbelievable after all. Remember that RoboMary knows everything about the physical world there is too be known. Couldn&#8217;t she simulate (that is by a third-person perspective of course) what the brain state of a Marc20 robot would be upon experiencing colors using a computer model of this type of robot and subjecting it to a completely digital replica of a LCD monitor screen onto which the stollen colorised security videos would be projected onto? The CAD/CAM software for integration of optical and electronic mechanics in 2050 is highly advanced so this wouln&#8217;d be at all an impossible task; it&#8217;s would be quite ordinary in fact. Having access to the brain states of the simulated Marc20 brain while its mind experiences colors RoboMary could easily make some print-screens of those states and put herself into that specific POV that would allow her to experience what-it-is-likenes of colors. Also, having a complete list of all the belongings of the corporation, their GPS position, their colors, that means she could easily deduce from their position in the stollen videos how a specific object&#8217;s color is named  so that she could easily build into herself the color-verbal associations that every other Marc20 robot and human being has already built in. So, when the &#8220;playful&#8221; scientists release RoboMary from here color bereft room and give her a blue banana they will be the ones amazed by the lack of non-astonishment in her behavior; RoboMary will completely call their spoof. Many will deny that the above story could ever be true or, more interestingly, some will retort that what RoboMary did was cheating. But why is that so? Is it failure of imagination perfaps?</p>
<p>Consider what Torin Alter has to say about Dennett&#8217;s Locked RoboMary intution pump:&#8221;<strong><em>Why does putting herself in state B enable RoboMary to know what it’s like to see red? B is a dispositional and (let us assume) non-phenomenal state; there is nothing it’s like to be in B. Nevertheless, B involves color phenomenology in that it contains the relevant phenomenal information. Therein lies the problem for Dennett’s argument. By putting herself in a state that involves color phenomenology, RoboMary cheats. Pre-release Mary should be no less puzzled about B than she is about seeing red. If she lacks phenomenal information about seeing red, then she lacks the phenomenal information that B contains. If there are open epistemic possibilities about the nature of phenomenal redness that she cannot eliminate, then there are open epistemic possibilities about the content of B that she cannot eliminate. RoboMary comes by her phenomenal knowledge of color experience not by a priori deduction from physical information but rather by putting herself in a nonphenomenal dispositional state that contains the relevant phenomenal information. (The case for Qualia, p252-253)</em></strong>&#8221;</p>
<p>So Torin Alter&#8217;s argumentation goes like this: &#8220;<strong><em>Why should architects that adopt certain camera-points-of-view (CPOV) in their 3D model of Rome come to experience the what-it-is-likenes (WIIL) of Rome? There is nothing like to be experiencing something from a poinf-of-view (POV). CPOVs are from-this-world, non-penomenal (not-metaphysical) descriptions of reality so how can they account for the WIIL of Rome, right? By accessing the description of the CPOV and experiencing the &#8220;sudden&#8221; and intentional wholeness of this whole richness in description architects cheat because they&#8217;ve already acessed the POV. There is more to the what-it-is-likeness of the POV than its mathematical description</em>.</strong>&#8221; That&#8217;s nonsene of course! The arguments don&#8217;t line up and are obviusly self-contradictory. It&#8217;s like saying the specialeness of POVs are not their mathematical description but the fact that they have something special and out of this world but that is just an illusion because WIILs are intentional representations of the richeness in detail of the descriptions of POVs and that is all there is to it as I&#8217;ve stated above. So what Alter&#8217;s actually saying is that if up to now color-bereft RoboMary would manage to achierve this task of putting herself into the experience of seeing colors only by using third-person scientific data that would mean qualia is just some messed-up term that describes from-this-world phenomena and that would make the mistery go away! How else would Mary build into herself the colors she now enjoys only with third -person data if the &#8220;color quales&#8221;  we&#8217;ren&#8217;t completely accoutable and traceable using the physics studied by third-person objective data?  So, RoboMary&#8217;s gotta cheat, Alter says, otherwise colors. qualea wouldn&#8217;t be out of this world. Alter&#8217;s got an agenda all right but i doubt is finding the truth if he keeps postulating thigs out of this world which will, by definition, defy scientific explanation. Let&#8217;s not confuse failures in imagination with truths about reality. </p>
<p>And still more, some may say what&#8217;s true for architecture and 3D modeling is untrue when talking of special phenomenla like colors, pains, etc. But then again, why would that be a possibility worth takinng into cnsideration? What qualia is , this what-it-is-likeness is not something meaphysical, undescribable by third-party science; it is in fact it&#8217;s just the intentional interpretation of the apparent immediatnes in understanding of the richenes (which is 100% accountable) of whatever particular point of view we are experiencing at the moment. The richness of the POV and its acknowledgement is the what-it-is-likeness; there is nothing metaphysical about it. By using only third-party, objective data RoboMary built into hereself the experience of color so how could she be cheating? How could she put herself into experiecing inefable, private phenomenal qualities of colors by only using scientific data? Would that be because colors are fro mthis world,  not so inefabile , private qualities after all? Qualophiles may retort by further stating that the POV&#8217;s escription doesn&#8217;t explain the speciallnes of the WILL but that is just an illusion because the WILL is the apparently sudden intentional (see above) interpretation of the richness in information contained by the description of the POV. The what-it-is-likeness can only be taken as a whole. There&#8217;s no mistery to it.</p>
<p>Just like an arcihtect enjoys  the custom camera-point-of-view  of whatever properties he wants it to have produced by the 3D modeling software he uses the same way Marc20 robots are given imediate representations of color experiences through the HD color cameras they posses and are able to acknowledge that richness of information through theit color-experiencing modules. In the case of RoboMary that couldn&#8221;t be possible because she was bereft of the HA color cameras and her color-experience modules. But she managed to get around this problem, just like architects that can calculkate and draw camera-points-of-view (CPOVs)  without the help of computers RoboMary managed to &#8220;calculate&#8221; and &#8220;draw&#8221; to herself the WIIL of colors. If was just that it took a lot more time, but it was worth it: she could now appreciate the mechanisms that bring colors to reality; and odly enough, colors are so much more interesting because she now knows that what brings them to realiry are just physical objects build into modulels that are further arranged into intrichate systems of which&#8217;s functnioality is all that matters. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.scitechexplained.com/2012/02/qualia-colors-and-nonsense/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Peak Oil and Dire Straits &#8211; Securing the world oil supply &#8211; But for whom?</title>
		<link>http://www.scitechexplained.com/2011/03/peak-oil-and-dire-straits-securing-the-world-oil-supply-but-for-whom/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=peak-oil-and-dire-straits-securing-the-world-oil-supply-but-for-whom</link>
		<comments>http://www.scitechexplained.com/2011/03/peak-oil-and-dire-straits-securing-the-world-oil-supply-but-for-whom/#comments</comments>
		<pubDate>Mon, 21 Mar 2011 07:06:11 +0000</pubDate>
		<dc:creator>kawa</dc:creator>
				<category><![CDATA[Energy]]></category>
		<category><![CDATA[Environment]]></category>
		<category><![CDATA[Peak Oil]]></category>
		<category><![CDATA[Videos]]></category>
		<category><![CDATA[biofuels]]></category>
		<category><![CDATA[debt]]></category>
		<category><![CDATA[economy]]></category>
		<category><![CDATA[energy crisis]]></category>
		<category><![CDATA[finance]]></category>
		<category><![CDATA[peak oil]]></category>
		<category><![CDATA[shale gas]]></category>

		<guid isPermaLink="false">http://www.scitechexplained.com/?p=8111</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.scitechexplained.com%2F2011%2F03%2Fpeak-oil-and-dire-straits-securing-the-world-oil-supply-but-for-whom%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.scitechexplained.com%2F2011%2F03%2Fpeak-oil-and-dire-straits-securing-the-world-oil-supply-but-for-whom%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<div style="float: left; margin-right:0px; margin-bottom:5px;"><a href="http://www.scitechexplained.com/2011/03/peak-oil-and-dire-straits-securing-the-world-oil-supply-but-for-whom/"><img src="https://lh3.googleusercontent.com/__Yhm-R_Alck/TYb6a08huQI/AAAAAAAABys/TxiciHYawac/art124%20-%20videos%20-%20peak%20oil%20-%20securing%20the%20world%20supply%203.png" alt="Peak Oil and Dire Straits - Securing the world oil supply - But for whom?" width="637" height="159"/></a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.scitechexplained.com/2011/03/peak-oil-and-dire-straits-securing-the-world-oil-supply-but-for-whom/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Creationism vs. Evolution (Who will win the debate?) &#8211; Video (Michael Ruse, Eugenie C. Scott, Barry Lynn, and Kenneth Miller)</title>
		<link>http://www.scitechexplained.com/2011/03/creationism-vs-evolution-who-will-win-the-debate/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=creationism-vs-evolution-who-will-win-the-debate</link>
		<comments>http://www.scitechexplained.com/2011/03/creationism-vs-evolution-who-will-win-the-debate/#comments</comments>
		<pubDate>Sun, 20 Mar 2011 17:20:57 +0000</pubDate>
		<dc:creator>kawa</dc:creator>
				<category><![CDATA[Mind / Brain]]></category>
		<category><![CDATA[Psychology / Behavior]]></category>
		<category><![CDATA[Science]]></category>
		<category><![CDATA[Theory of Evolution]]></category>
		<category><![CDATA[Videos]]></category>
		<category><![CDATA[abiogenesis]]></category>
		<category><![CDATA[animal behavior]]></category>
		<category><![CDATA[atheism]]></category>
		<category><![CDATA[critical thinking]]></category>
		<category><![CDATA[evidence for evolution]]></category>
		<category><![CDATA[evolutionary psychology]]></category>
		<category><![CDATA[human behavior]]></category>
		<category><![CDATA[human evolution]]></category>
		<category><![CDATA[life]]></category>
		<category><![CDATA[panspermia]]></category>
		<category><![CDATA[skepticism]]></category>

		<guid isPermaLink="false">http://www.scitechexplained.com/?p=8095</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.scitechexplained.com%2F2011%2F03%2Fcreationism-vs-evolution-who-will-win-the-debate%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.scitechexplained.com%2F2011%2F03%2Fcreationism-vs-evolution-who-will-win-the-debate%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<div style="float: left; margin-right:0px; margin-bottom:5px;"><a href="http://www.scitechexplained.com/2011/03/creationism-vs-evolution-who-will-win-the-debate/"><img src="https://lh6.googleusercontent.com/__Yhm-R_Alck/TYcx-YoZqUI/AAAAAAAABzQ/upR_xz_R_yo/art123%20-%20videos%20-%20evolution%20debate%202.png" alt="Creationism vs. Evolution (Who will win the debate?) – Video (Michael Ruse, Eugenie C. Scott, Barry Lynn, and Kenneth Miller)" width="637" height="159"/></a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.scitechexplained.com/2011/03/creationism-vs-evolution-who-will-win-the-debate/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>What you should know before you start application development on the Android system</title>
		<link>http://www.scitechexplained.com/2011/03/what-you-should-know-before-you-start-application-development-on-the-android-system/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=what-you-should-know-before-you-start-application-development-on-the-android-system</link>
		<comments>http://www.scitechexplained.com/2011/03/what-you-should-know-before-you-start-application-development-on-the-android-system/#comments</comments>
		<pubDate>Sun, 20 Mar 2011 05:59:03 +0000</pubDate>
		<dc:creator>kawa</dc:creator>
				<category><![CDATA[Android Programming]]></category>
		<category><![CDATA[Information Technology]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[android development]]></category>
		<category><![CDATA[android howto]]></category>
		<category><![CDATA[android java programming]]></category>
		<category><![CDATA[android programming]]></category>
		<category><![CDATA[android software]]></category>

		<guid isPermaLink="false">http://www.scitechexplained.com/?p=8054</guid>
		<description><![CDATA[&#160;&#160;&#160;&#160;&#160;&#160;&#160; First of all, if you want to start developing Android applications you&#8217;re going to first have to get used to the Java programing language because this is the means by which you&#8217;ll code your applications. Of course, if you pretty savvy with C++ or some other object oriented language then simply having some good]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.scitechexplained.com%2F2011%2F03%2Fwhat-you-should-know-before-you-start-application-development-on-the-android-system%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.scitechexplained.com%2F2011%2F03%2Fwhat-you-should-know-before-you-start-application-development-on-the-android-system%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<div style="float: left; margin-right:10px;">
<a href="http://www.scitechexplained.com/2011/03/what-you-should-know-before-you-start-application-development-on-the-android-system/"><img alt="What you should know before you start application development on the Android system" src="https://lh3.googleusercontent.com/__Yhm-R_Alck/TYWXBBi96wI/AAAAAAAABxs/EojUVpXaxzY/art122%20-%20android.png" width="281" height="280"/></a>
</div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; First of all, if you want to start developing Android applications you&#8217;re going to first have to get used to the Java programing language because this is the means by which you&#8217;ll code your applications. Of course, if you pretty savvy with C++ or some other object oriented language then simply having some good Java tutorials bookmarked (i like this <a href="http://download.oracle.com/javase/tutorial/reallybigindex.html" target="_blank">one</a>) and learning it on the way will not be a problem if you think you&#8217;re up to challenges that lie ahead. </p>
<p>Now, what is an Android system? It&#8217;s practically a complete development environment with a complete software stack which contains the operating system (based on the Linux 2.6 kernel), a middle-layer application framework, a set of C/C++ libraries used by various components of the system to which you have access through the  application framework mentioned above, and some core applications that you can also have access to, programmatically (I&#8217;ll explain below how why this is possible).</p>
<p>Having the Linux 2.6 Kernel at the core of the operating systems makes the platform pretty safe and well established when considering the Linux Kernel process management, memory management, networking stack, and driver model have undergone a long and arduous process of R&#038;D for years. </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The most important thing you need to know is that each application runs in its own safe-box: it has a unique <em>user ID</em> assigned by the OS, a unique process and therefore a unique virtual machine. No application can access the files or the memory of another one without being allowed to do so by Android&#8217;s kernel system. </p>
<p><font style="color:#41627E; font-size:20px; font-weight:bold;"><u><em>Application Components:</em></u></font></p>
<p>The second most important thing is the way applications are structured. Each application can be comprised of four distinct parts called <em>Application Components</em>: the <em>Activities</em>, <em>Services</em>, <em>Content Providers</em> and <em>Broadcast Receivers</em> components. What is remarkable is that from your application you can access components that belong to a different application and this is not achieved by loading the code of that component into your process&#8217; address space; no, it&#8217;s simply executed within its own kernel assigned process that has its uniquely assigned user ID. Because the Android system allows every application to start another application&#8217;s component you can practically use components from already developed applications into your own as if they are an integral part of your program. Pretty neat!</p>
<p>Because each application is loaded by its own process into its own address space, and because each application can start (use) any others&#8217; component this means that there is no central station, no entry point of the whole system or as Android&#8217;s Documentation puts it &#8220;<em>Android applications don&#8217;t have a single entry point (there&#8217;s no main() function, &#8230;..)</em>&#8220;. </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; What are the application components? <em>Activities</em> are simply a singe screen or window that contains a user interface. A certain application can contain lots of <em>activities</em> designed to achieve a specific goal. They all are part of the application even though they are treated as separate when you program their functionality. </p>
<p><em>Services</em> are simply background processes which can run for the whole execution time of the application. You can think of them as the core/heart of you application because they can coordinate the activities for the other components, they can trigger specific actions at certain times, they can access the network, etc. </p>
<p><em>Broadcast receivers</em> are simply listeners for system broadcasts or application broadcasts. Your own application can generate broadcasts that can be catched by Broadcast receivers. These components can have a wide variety of uses one being that they can be used as triggers in your application&#8217;s workflow logic when certain system events or other application generated events take place. </p>
<div class="wp-caption aligncenter" style="width: 650px"><img alt="Android Architecture" src="https://lh6.googleusercontent.com/__Yhm-R_Alck/TYZTrVlGEJI/AAAAAAAAByM/1sUjX2FfR2E/s800/art122%20-%20system-architecture%202.png" title="Android Architecture" width="640" height="460" /><p class="wp-caption-text">Android Architecture</p></div>
<p>And finally, <em>Content Providers</em>. They are data storage providers: databases, file system data, web storage, etc., these can all be accessed by means of a <em>Content Provider</em>. What&#8217;s interesting is that different applications can share (read, modify) data contained in the same Content Provider object which is practically a shared set of application data; one interesting example is the contacts (<em>ContactsContract.Data</em>) <em>Content Provider</em> which contains user contact information (such as a phone number) and its associated metadata (such as whether it is a work or home number, email, etc) and can be accessed and modified by applications that have the appropriate privileges (meaning the ones that have been programmed to have these privileges, and subsequently have been installed by the user of the device).</p>
<h1 style="text-align: left;"><strong><span id="more-8054"></span></strong></h1>
<p><font style="color:#41627E; font-size:20px; font-weight:bold;"><u><em>Activating Application Components:</em></u></font></p>
<p>The <em>Activities</em>, <em>Services</em> and <em>Broadcast Receivers</em> components can be activated directly by announcing the kernel your <em>intent</em> to use an <em>activity</em> that is part of your own application or someone else&#8217;s, to start a <em>service</em>, or to start a <em>broadcast</em>. You simply have to pass a <em>Intent</em> object to the Android system through a specific method (<strong>startActivity()</strong> or <strong>startActivityForResult()</strong> for <em>Activities</em>, <strong>startService()</strong> or <strong>bindService()</strong> for <em>Services</em>, and <strong>sendBroadcast()</strong>, <strong>sendOrderedBroadcast()</strong>, or <strong>sendStickyBroadcast()</strong> for <em>Broadcasting</em>).</p>
<p>What is more interesting is that besides, of course, being able to specify the name of the class of the component which you wish to start, the Android system lets you act more implicit by allowing you to use another type of intent : <em>Intent Actions </em>: these represent <em>types of actions</em> which you can let the OS handle for you. For example you can let the Android system know that your application is in need for a <em>&#8220;send&#8221; action</em> of an e-mail, so if the OS finds multiple components that are registered with this action it provides the user with a list to chose from. You can even create your own application components and register them with your own actions. Now that&#8217;s complete modularity! Genius!</p>
<p><font style="color:#41627E; font-size:20px; font-weight:bold;"><u><em>The Manifest File:</em></u></font></p>
<p>The manifest file is practically the application configuration file which the Android System reads in order to find out what components comprise your application. Here you declare all your activities, services, broadcasts, and content providers. </p>
<p>You can even create filters for your application so that only the devices that have the required hardware implementation and the specific software libraries will be able to run it. You can filter for the screen size and density, user input mechanisms, hardware capabilities like the camera, the light sensor, Bluetooth, or the fidelity of the touchscreen, the version of the Android system, etc. You can even create multiple language texts, different UIs for different devices so that your application can automatically load the correct ones with no need to modify the source code. All these can be achieved in the <em>AndroidManifest.xml</em> file.</p>
<p>More <a href="http://developer.android.com/guide/topics/fundamentals.html#ActivatingComponents" target="_blank">here</a> and <a href="http://developer.android.com/guide/basics/what-is-android.html" target="_blank">here</a>. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.scitechexplained.com/2011/03/what-you-should-know-before-you-start-application-development-on-the-android-system/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Shinkansen Hayabusa &#8211; The ultimate bullet train &#8211; VIDEO</title>
		<link>http://www.scitechexplained.com/2011/03/shinkansen-hayabusa-the-ultimate-bullet-train-video/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=shinkansen-hayabusa-the-ultimate-bullet-train-video</link>
		<comments>http://www.scitechexplained.com/2011/03/shinkansen-hayabusa-the-ultimate-bullet-train-video/#comments</comments>
		<pubDate>Sat, 19 Mar 2011 10:11:42 +0000</pubDate>
		<dc:creator>kawa</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Videos]]></category>
		<category><![CDATA[bullet trains]]></category>
		<category><![CDATA[japanesse bullet trains]]></category>
		<category><![CDATA[shinkansen hayabusa]]></category>

		<guid isPermaLink="false">http://www.scitechexplained.com/?p=8006</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.scitechexplained.com%2F2011%2F03%2Fshinkansen-hayabusa-the-ultimate-bullet-train-video%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.scitechexplained.com%2F2011%2F03%2Fshinkansen-hayabusa-the-ultimate-bullet-train-video%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<div style="float: left; margin-right:0px; margin-bottom:5px;"><a href="http://www.scitechexplained.com/2011/03/shinkansen-hayabusa-the-ultimate-bullet-train-video/"><img alt="Shinkansen Hayabusa - The ultimate bullet train - VIDEO" src="https://lh3.googleusercontent.com/__Yhm-R_Alck/TYSGOmdkWeI/AAAAAAAABxU/ovVTp43RfyM/art121%20-%20videos%20-%20hayabusa%20bullet%20train%204.png" width="637" height="159"/></a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.scitechexplained.com/2011/03/shinkansen-hayabusa-the-ultimate-bullet-train-video/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Peak Growth &#8211; Are Humans Smarter Than Yeast?</title>
		<link>http://www.scitechexplained.com/2011/03/peak-growth-are-humans-smarter-than-yeast/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=peak-growth-are-humans-smarter-than-yeast</link>
		<comments>http://www.scitechexplained.com/2011/03/peak-growth-are-humans-smarter-than-yeast/#comments</comments>
		<pubDate>Thu, 17 Mar 2011 05:35:30 +0000</pubDate>
		<dc:creator>kawa</dc:creator>
				<category><![CDATA[Energy]]></category>
		<category><![CDATA[Environment]]></category>
		<category><![CDATA[Peak Oil]]></category>
		<category><![CDATA[Videos]]></category>
		<category><![CDATA[biofuels]]></category>
		<category><![CDATA[economy]]></category>
		<category><![CDATA[energy crisis]]></category>
		<category><![CDATA[finance]]></category>
		<category><![CDATA[human behavior]]></category>
		<category><![CDATA[peak oil]]></category>
		<category><![CDATA[richard heinberg]]></category>
		<category><![CDATA[shale gas]]></category>
		<category><![CDATA[solar energy]]></category>

		<guid isPermaLink="false">http://www.scitechexplained.com/?p=7877</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.scitechexplained.com%2F2011%2F03%2Fpeak-growth-are-humans-smarter-than-yeast%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.scitechexplained.com%2F2011%2F03%2Fpeak-growth-are-humans-smarter-than-yeast%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<div style="float: left; margin-right:0px; margin-bottom:5px;"><a href="http://www.scitechexplained.com/2011/03/peak-growth-are-humans-smarter-than-yeast/"><img alt="Peak Growth - Are Humans Smarter Than Yeast? " src="https://lh6.googleusercontent.com/__Yhm-R_Alck/TYGd8zZpyTI/AAAAAAAABuc/L0cA7TDOGqw/art119%20-%20videos%20-%20peak%20growth%20-%20richard%20heinberg%202.png" width="637" height="159"/></a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.scitechexplained.com/2011/03/peak-growth-are-humans-smarter-than-yeast/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Peak Everything &#8211; Are Humans Smarter Than Yeast?</title>
		<link>http://www.scitechexplained.com/2011/03/peak-everything-are-humans-smarter-than-yeast/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=peak-everything-are-humans-smarter-than-yeast</link>
		<comments>http://www.scitechexplained.com/2011/03/peak-everything-are-humans-smarter-than-yeast/#comments</comments>
		<pubDate>Wed, 16 Mar 2011 20:24:43 +0000</pubDate>
		<dc:creator>kawa</dc:creator>
				<category><![CDATA[Energy]]></category>
		<category><![CDATA[Environment]]></category>
		<category><![CDATA[Peak Oil]]></category>
		<category><![CDATA[Videos]]></category>
		<category><![CDATA[biofuels]]></category>
		<category><![CDATA[economy]]></category>
		<category><![CDATA[energy crisis]]></category>
		<category><![CDATA[finance]]></category>
		<category><![CDATA[human behavior]]></category>
		<category><![CDATA[peak oil]]></category>
		<category><![CDATA[richard heinberg]]></category>
		<category><![CDATA[shale gas]]></category>
		<category><![CDATA[solar energy]]></category>

		<guid isPermaLink="false">http://www.scitechexplained.com/?p=7872</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.scitechexplained.com%2F2011%2F03%2Fpeak-everything-are-humans-smarter-than-yeast%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.scitechexplained.com%2F2011%2F03%2Fpeak-everything-are-humans-smarter-than-yeast%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<div style="float: left; margin-right:0px; margin-bottom:5px;"><a href="http://www.scitechexplained.com/2011/03/peak-everything-are-humans-smarter-than-yeast/"><img alt="Peak Everything - Are Humans Smarter Than Yeast? " src="https://lh5.googleusercontent.com/__Yhm-R_Alck/TYEcYjIpeNI/AAAAAAAABuA/J6uoaJFoXtQ/art118%20-%20videos%20-%20peak%20oil%20-%20richard%20heinberg.png" width="637" height="159"/></a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.scitechexplained.com/2011/03/peak-everything-are-humans-smarter-than-yeast/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Peak Oil Video Update &#8211; Interview with Colin Campbell</title>
		<link>http://www.scitechexplained.com/2011/03/peak-oil-video-update-interview-with-colin-campbell/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=peak-oil-video-update-interview-with-colin-campbell</link>
		<comments>http://www.scitechexplained.com/2011/03/peak-oil-video-update-interview-with-colin-campbell/#comments</comments>
		<pubDate>Mon, 14 Mar 2011 15:19:26 +0000</pubDate>
		<dc:creator>kawa</dc:creator>
				<category><![CDATA[Energy]]></category>
		<category><![CDATA[Environment]]></category>
		<category><![CDATA[Peak Oil]]></category>
		<category><![CDATA[Videos]]></category>
		<category><![CDATA[biofuels]]></category>
		<category><![CDATA[colin campbell]]></category>
		<category><![CDATA[economy]]></category>
		<category><![CDATA[energy crisis]]></category>
		<category><![CDATA[finance]]></category>
		<category><![CDATA[human behavior]]></category>
		<category><![CDATA[peak oil]]></category>
		<category><![CDATA[shale gas]]></category>
		<category><![CDATA[solar energy]]></category>

		<guid isPermaLink="false">http://www.scitechexplained.com/?p=7704</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.scitechexplained.com%2F2011%2F03%2Fpeak-oil-video-update-interview-with-colin-campbell%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.scitechexplained.com%2F2011%2F03%2Fpeak-oil-video-update-interview-with-colin-campbell%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<div style="float: left; margin-right:0px; margin-bottom:5px;"><a href="http://www.scitechexplained.com/2011/03/peak-oil-video-update-interview-with-colin-campbell/"><img alt="Peak Oil Video Update - Interview with Colin Campbell " src="https://lh3.googleusercontent.com/__Yhm-R_Alck/TX4wgbzfNiI/AAAAAAAABo4/cN4eSDvuKDg/art116%20-%20videos%20-%20peak%20oil%20campbell.png" width="637" height="159"/></a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.scitechexplained.com/2011/03/peak-oil-video-update-interview-with-colin-campbell/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>How to write a &#8220;Hello World&#8221; Safari Extension in Windows</title>
		<link>http://www.scitechexplained.com/2011/03/how-to-write-a-hello-world-safari-extension-in-windows/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=how-to-write-a-hello-world-safari-extension-in-windows</link>
		<comments>http://www.scitechexplained.com/2011/03/how-to-write-a-hello-world-safari-extension-in-windows/#comments</comments>
		<pubDate>Sun, 13 Mar 2011 12:40:52 +0000</pubDate>
		<dc:creator>kawa</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web Programming]]></category>
		<category><![CDATA[browser addons]]></category>
		<category><![CDATA[browser extension programming]]></category>
		<category><![CDATA[browser extensions]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[safari addons]]></category>
		<category><![CDATA[safari extensions]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.scitechexplained.com/?p=7515</guid>
		<description><![CDATA[&#160;&#160;&#160;&#160;&#160;&#160;&#160; We&#8217;re going to build a simple Safari extension that will insert a bolded, italicized, Hello World text into the web-page of the current tab after it is loaded. We&#8217;re going to use Safari 5.0 or later in order to have access to Extension Builder, that is, the means by which we&#8217;ll build our extension.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.scitechexplained.com%2F2011%2F03%2Fhow-to-write-a-hello-world-safari-extension-in-windows%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.scitechexplained.com%2F2011%2F03%2Fhow-to-write-a-hello-world-safari-extension-in-windows%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<div style="float: left; margin-right:10px;">
<a href="http://www.scitechexplained.com/2011/03/how-to-write-a-hello-world-safari-extension-in-windows/"><img alt="How to write a Hello World Safari Extension in Windows" src="https://lh5.googleusercontent.com/__Yhm-R_Alck/TV0WrbzaHoI/AAAAAAAABkE/K-8KwVYfGTI/art115%20-%20safari%20hello%20world.jpg" width="281" height="280"/></a>
</div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; We&#8217;re going to build a simple Safari extension that will insert a bolded, italicized, <strong><em>Hello World</em></strong> text into the web-page of the current tab after it is loaded.</p>
<p>We&#8217;re going to use Safari 5.0 or later in order to have access to <strong>Extension Builder</strong>, that is, the means by which we&#8217;ll build our extension. Extensions were introduced in Safari 5.0, and were disabled by default, so in Safari 5.0 you must enable extensions in the Develop menu before you can show Extension Builder. <em>Extensions are enabled by default in Safari 5.0.1 and later.</em></p>
<p><font style="color:#41627E; font-size:20px; font-weight:bold;"><u>[Before we start coding]</u></font>:<br />
The <em>Safari Extensions Development Guide</em> states that before you can build and install an extension, you need to install a developer certificate. You obtain a certificate by first signing up for the Safari Developer Program at <a href="http://developer.apple.com/programs/safari/" target="_blank">http://developer.apple.com/programs/safari/</a>. You must first create an account and register all your personal information (phone, address, country code, etc &#8211; there&#8217;s no need of course to enter genuine information if you care for you privacy on the Internet &#8211; bogus data will suffice) .</p>
<p>You&#8217;ll obtain an Individual ID that will be usable for a period of 12 months. You then have to access <a href="http://developer.apple.com/membercenter/index.action" target="_blank">http://developer.apple.com/membercenter/index.action</a> and install your certificate by double-clicking the Developer Certificate Utility icon in order to Request and manage your Apple-issued Certificates for Mac and Safari. This launches the Certificate Import Wizard on a Windows machine. You then have to click <em>Create Certificates</em>, then <em>Add Certificate</em> and follow the instructions. Pretty arduous operation compared to what you have to do to get things working in Chrome or Firefox but hey, what are you going to do if you need the thing badly ?! (NOTE: Windows XP Professional and Windows Server 2003 will have to download the following <a href="http://www.microsoft.com/downloads/en/details.aspx?familyid=86B71A4F-4122-44AF-BE79-3F101E533D95&#038;displaylang=en" target="_blank">Administration Tools Pack</a> in order to be able to follow the above steps)</p>
<p>After all this you&#8217;ll be prompted to download your certificate (<strong><em>safari_identity.cer</em></strong>). You&#8217;ll have to double-click the downloaded *.cer file to install it.</p>
<p><font style="color:#41627E; font-size:20px; font-weight:bold;"><u>[Activating Extension Builder]</u></font>:<br />
In order to use Extension Builder we&#8217;re going to first activate it; we do this by enabling the Safari developer tools when we click &#8220;<em>Show Develop menu in menu bar</em>&#8221; checkbox in the Advanced pane of Safari Preferences, as shown below. You can access Safari Preferences by clicking the top-right gear button that says &#8220;<em>Display a menu of general Safari settings</em>&#8220;.</p>
<div class="wp-caption aligncenter" style="width: 650px"><img alt="How to activate Develop menu in Safari" src="https://lh4.googleusercontent.com/__Yhm-R_Alck/TX4EKDjVMiI/AAAAAAAABoI/fsrHbwseNsI/s800/art115%20-%20extension%20builder%204.png" title="How to activate Develop menu in Safari" width="640" height="288" /><p class="wp-caption-text">How to activate Develop menu in Safari</p></div>
<p>We then go to the Develop menu and click <em>Show Extension Builder</em>; In the displayed dialog we hit the + button on the left-bottom and click New Extension, chose the path and the folder name and then insert the required fields of your extension:</p>
<div class="wp-caption aligncenter" style="width: 650px"><img alt="Extension Info, Details, Versions, Website Access and Global Page Settings" src="https://lh6.googleusercontent.com/__Yhm-R_Alck/TX4Ey1EcE6I/AAAAAAAABoM/IWyJil_sRec/s800/art115%20-%20extension%20bulder%2055.png" title="Extension Info, Details, Versions, Website Access and Global Page Settings" width="640" height="750" /><p class="wp-caption-text">Extension Info, Details, Versions, Website Access, Global Page, and Global Storage Settings </p></div>
<p>The required fields for the above are : </p>
<ul>
<li><strong>1. Display Name</strong>: the visible name of your extension</li>
<li><strong>2. Bundle Identifier</strong>: this is a string in reverse DNS format : your type of website (com, gov, edu, org, and so on), your company name, and the extension name, separated by dots -> ex: <em>com.lexdesign.hello</em>. </strong></li>
<li><strong>3. Display Version</strong>: the displayed version number for your extension.</li>
<li><strong>4. Bundle Version</strong>, that is, the internal version number used by the OS. One or more digits separated by periods (ex: 1 or 4.1.2). This is the version number Safari uses when checking for updates.</li>
</ul>
<div class="wp-caption aligncenter" style="width: 650px"><img alt="Chrome, Extension Scripts, and Settings " src="https://lh5.googleusercontent.com/__Yhm-R_Alck/TX4FTOYyBvI/AAAAAAAABoQ/HOjQDjlxVn8/s800/art115%20-%20extension%20bulder%2066.png" title="Chrome, Extension Scripts, and Settings " width="640" height="646" /><p class="wp-caption-text">Chrome, Extension Scripts, and Settings </p></div>
<p>The optional fields above can contain the following : </p>
<ul>
<li>The <strong>Extension Chrome</strong> section can include am <em>Extension Bar</em> to be included below the bookmarks bar and above the tab bar, which is uniquely reserved for your extension, <em>Context Menu Items</em>, and <em>Toolbar Items</em>, that is, buttons added to the main Safari toolbar (not your specific extension bar).</li>
<li>The <strong>Injected Extension Content</strong> section can include <em>Start Scripts</em>, that is, scripts executed before the webpage is loaded, <em>End Scripts</em> which execute when the body tag&#8217;s <em>onload</em> event occurs, and <em>Style Sheets</em>: CSS coding used to style the HTML. </li>
</ul>
<p>Of course there are a lot of other fields. If you want to get the grips with all of them you can check Apple&#8217;s Safari Extensions Development Guide -> <a href="http://developer.apple.com/library/safari/#documentation/Tools/Conceptual/SafariExtensionGuide/UsingExtensionBuilder/UsingExtensionBuilder.html#//apple_ref/doc/uid/TP40009977-CH2-SW1" target="_blank">Using Extension Builder</a>. </p>
<p>Now that we&#8217;ve bootstrapped the basic Safari Extension Starting Kit we will start to code the extension that will insert a bolded, italicized, <strong><em>Hello World</em></strong> text into the web-page of the current tab after it is loaded. This application can have various interesting uses: it could be used to insert specialized controls into specific websites that lack certain idiosyncratic features that the user may demand. Let&#8217;s begin!</p>
<p><font style="color:#41627E; font-size:20px; font-weight:bold;"><u>[Injecting the text]</u></font>:<br />
<strong>inject.js</strong> is going to be added as an <em>End Script</em> in the <em>Injected Extension Content</em> section of Extension Builder. Being an end script means that the *.js file will be executed after the body tag’s onload event occurs. We&#8217;ll also use jQuery for easy manipulation of the DOM. We&#8217;ll insert <a href="http://jquery.com/" target="_blank">jQuery</a> as an End Script also. </p>
<p>You can get the latest, Minified (compressed) jQuery from <a href="http://docs.jquery.com/Downloading_jQuery" target="_blank">http://docs.jquery.com/Downloading_jQuery</a>.</p>
<p>Here is the <strong>inject.js</strong> file that will insert our Hello World text :</p>
<pre class="brush: jscript; title: ;">
// &lt;inject.js&gt; insert a Hellow World text into the body of the document

function PageShowHandler(event)
{
	injectText();
}

function injectText()
{
    // get the document body
	var pageBody = jQuery('body', document);
	console.log('entered injectText');
	pageBody.prepend('&lt;h1&gt;Hello World&lt;/h1&gt;');
}

// wait 100 ms in order for jquery-1.5.1.min.js to be injected also
// if you don't want to wait just change the order of loading of jquery-1.5.1.min.js
//   and inject.js in Extension Builder-&gt; Injected Extension Content -&gt; End Scripts
setTimeout(PageShowHandler, 100);
</pre>
<p>Please notice that we use the jQuery <strong>.prepend( content, [ content ] )</strong> function that inserts content, specified by the parameter, to the beginning of each element in the set of matched elements. </p>
<p>Also, instead of directly executing the PageShowHandler function to insert our text into the body of the document, we user a timer and waited 100ms in order for jQuery to load. So, if you want to instantly use <em>PageShowHandler</em>, without a time, you should change the order of injection of the two javascript files in <em>Extension Builder -> Injected Extension Content -> End Scripts</em> as below: </p>
<div class="wp-caption aligncenter" style="width: 650px"><img alt="The order of injection matters; specify the jQuery file first" src=" https://lh3.googleusercontent.com/__Yhm-R_Alck/TX4DYl16VtI/AAAAAAAABoA/EajCECDTeM0/s800/art115%20-%20extension%20builder%203.png" title="The order of injection matters; specify the jQuery file first" width="640" height="300" /><p class="wp-caption-text">The order of injection matters; specify the jQuery file first</p></div>
<h1 style="text-align: left;"><strong><span id="more-7515"></span></strong></h1>
<p>In the code above we simply used the timer in order to prove that the order of injection matters, of course. </p>
<p>Now, if jQuery is loaded first that means our <strong>inject.js</strong> file can do its job without using the setTimeout timer function.</p>
<pre class="brush: jscript; title: ;">
// &lt;inject.js&gt; insert a Hellow World text into the body of the document

function PageShowHandler(event)
{
	injectText();
}

function injectText()
{
    // get the document body
	var pageBody = jQuery('body', document);
	console.log('entered injectText');
	pageBody.prepend('&lt;h1&gt;Hello World&lt;/h1&gt;');
}

PageShowHandler();
</pre>
<p>Now you just have to click the top-right <em>Install</em> button from the Extension Builder dialog and that&#8217;s all. Here&#8217;s the extension in action here : </p>
<p><center>
<p>
<iframe title="YouTube video player" width="640" height="480" src="http://www.youtube.com/embed/Yq930INDY6I" frameborder="0" allowfullscreen></iframe></p>
<p></center></p>
]]></content:encoded>
			<wfw:commentRss>http://www.scitechexplained.com/2011/03/how-to-write-a-hello-world-safari-extension-in-windows/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How to move the position of a certain bit within a byte ( coding the C language )</title>
		<link>http://www.scitechexplained.com/2011/02/how-to-move-the-position-of-a-certain-bit-within-a-byte-c-language/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=how-to-move-the-position-of-a-certain-bit-within-a-byte-c-language</link>
		<comments>http://www.scitechexplained.com/2011/02/how-to-move-the-position-of-a-certain-bit-within-a-byte-c-language/#comments</comments>
		<pubDate>Wed, 16 Feb 2011 14:05:36 +0000</pubDate>
		<dc:creator>kawa</dc:creator>
				<category><![CDATA[C language]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[bit operations in c]]></category>
		<category><![CDATA[bit programming in c]]></category>
		<category><![CDATA[c bitwise operators]]></category>
		<category><![CDATA[c bitwise programming]]></category>
		<category><![CDATA[c language]]></category>
		<category><![CDATA[c# programming]]></category>

		<guid isPermaLink="false">http://www.scitechexplained.com/?p=7456</guid>
		<description><![CDATA[&#160;&#160;&#160;&#160;&#160;&#160;&#160; You want to move bits inside a byte? Unfortunately, there aren&#8217;t any standard functions that deal with these sort of issues so we will have to use some smart and easy hacks. First of all we need to use the tilde operator (~). Tilde is a bitwise not operator; this practically means that applying]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.scitechexplained.com%2F2011%2F02%2Fhow-to-move-the-position-of-a-certain-bit-within-a-byte-c-language%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.scitechexplained.com%2F2011%2F02%2Fhow-to-move-the-position-of-a-certain-bit-within-a-byte-c-language%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<div style="float: left; margin-right:10px;">
<a href="http://www.scitechexplained.com/2011/02/how-to-move-the-position-of-a-certain-bit-within-a-byte-c-language/"><img alt="How to move the position of a certain bit within a byte ( coding the C language )" src="https://lh3.googleusercontent.com/__Yhm-R_Alck/TVvZFZLC1PI/AAAAAAAABjI/7Kw6uCMItSA/art114%20-%20code%20bits.jpg" width="281" height="280"/></a>
</div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; You want to move bits inside a byte? Unfortunately, there aren&#8217;t any standard functions that deal with these sort of issues so we will have to use some smart and easy hacks. </p>
<p>First of all we need to use the tilde operator (~). Tilde is a bitwise not operator; this practically means that applying it to a certain operand&#8217;s binary value converts all the 1s to 0s and viceversa (~b0001 0010 = b1110 1101). </p>
<p>So what&#8217;s the use of tilde in our little program. We&#8217;re going to use it to create a mask that will delete (make 0) the bit of a certain location, that is, the bit we&#8217;re trying to move to another position, but we&#8217;ll also delete the bit from the destination position. </p>
<p>For example we have the byte 0xc3, and we need to move the bit from position 1 to position 5. Tilde will create a mask that will be used to delete the bit in position 1 (all the mask&#8217;s bits are 1s besides the bit at the position we&#8217;re trying to delete from which is of value 0) and position 5 (see line 14 and 15). </p>
<p>The mask achieves the delete of the bit by being AND-ed with our byte. Then we will OR the byte that we deleted the bits from (<strong>oldvalue</strong>) with another mask that contains the bit &#8211; of which value we read at line 12 with <u>0&#215;01 &#038; ((*our)>>indexold)</u> &#8211; we will be writing at position 5. This new mask is of course made of all zeros besides the bit at position 5 which is of value <strong>valuetochange</strong>(=1 in our case) :</p>
<pre class="brush: cpp; title: ;">    //  example 1 (move bit from position 1 to position 5)
	//  1100 0011
    //    ^    ^     BYTE        MASK        DEL BIT
    //               bit to be changed position has value 1
	//               1100 0011 &amp; 1111 1101 = 1100 0001
    //               1100 0001 &amp; 1101 1111 = 1100 0001 

    //               DEL BIT     MASK        NEW BYTE
	//               1100 0001 | 0010 0000 = 1110 0001</pre>
<p>So practically we begin by registering the value of the bit we want to move in the <strong><em>valuetochange</em></strong> variable. We then delete the bits from both the current position of the bit we want to change the position of and its future position. Finally, we write the value from <strong><em>valuetochange</em></strong> into out byte. This is all achieved by: </p>
<pre class="brush: cpp; title: ;">	//
	valuetochange = 0x01 &amp; ((*our)&gt;&gt;indexold);         // get the value of the bit to be moved

	oldvalue = (*our) &amp; (~(1&lt;&lt;(indexold)));            // del the bit from position indexold
	oldvalue = oldvalue &amp; (~(1&lt;&lt;(indexnew)));          // del the bit from position indexnew

	newvalue = oldvalue | (valuetochange&lt;&lt;(indexnew)); // write bit in new position (indexnew)
	//</pre>
<p>Here&#8217;s all the code. I&#8217;ve compiled it using Visual Studio 2010, but earlier version should suffice for this little project. </p>
<pre class="brush: cpp; title: ;">#include &lt;stdio.h&gt;
#include &lt;malloc.h&gt;

typedef unsigned __int8 byte;

byte move(byte* our, int indexold, int indexnew)
{
	byte oldvalue;
	byte newvalue;
	byte valuetochange;

	valuetochange = 0x01 &amp; ((*our)&gt;&gt;indexold);         // get the value of the bit to be moved
	printf(&quot;value to change : %d\n&quot;, valuetochange);
	oldvalue = (*our) &amp; (~(1&lt;&lt;(indexold)));            // del the bit from position indexold
	oldvalue = oldvalue &amp; (~(1&lt;&lt;(indexnew)));          // del the bit from position indexnew
	printf(&quot;deleted: %x\n&quot;, oldvalue);

	newvalue = oldvalue | (valuetochange&lt;&lt;(indexnew)); // write bit in new position (indexnew)

	return newvalue;
}

int main()
{
	byte* example_byte;
	byte* new_byte;

	example_byte = (byte*)malloc(sizeof(byte));
	new_byte     = (byte*)malloc(sizeof(byte));

	*example_byte = 0xc3;  //  hex 0xc3 = binary 1100 0011
	printf(&quot;\n&quot;);

	//*****************************************************
	// example 1 (move bit from position 1 to position 5)
	// example_byte  1100 0011
    //                 ^    ^
    //               memorize bit -&gt; valuetochange = 0x01 &amp; ((*our)&gt;&gt;indexold) = 1
	//               1100 0011 &amp; 1111 1101 = 1100 0001 delete bit from oldindex (1)
	//               1100 0001 &amp; 1101 1111 = 1100 0001 delete bit from newindex (5)
	// new_byte      1100 0001 | 0010 0000 = 1110 0001
	*new_byte     = move(example_byte, 1, 5);

	printf(&quot;old byte : %x\n&quot;, *example_byte); // 0xc3 (1100 0011)
	printf(&quot;new byte : %x\n&quot;, *new_byte);     // 0xe1 (1110 0001)
	printf(&quot;\n&quot;);

	//*****************************************************
	// example 2 (move bit from position 6 to position 3)
	// example_byte  1100 0011
    //                ^   ^
    //               memorize bit -&gt; valuetochange = 0x01 &amp; ((*our)&gt;&gt;indexold) = 1
	//               1100 0011 &amp; 1011 1111 = 1000 0011 delete bit from oldindex (6)
	//               1000 0011 &amp; 1111 0111 = 1000 0011 delete bit ftom newindex (3)
	// new_byte      1000 0011 | 0000 1000 = 1000 1011
	*new_byte     = move(example_byte, 6, 3);

	printf(&quot;old byte : %x\n&quot;, *example_byte); // 0xc3 (1100 0011)
	printf(&quot;new byte : %x\n&quot;, *new_byte);     // 0x8b (1000 1011)
	printf(&quot;\n&quot;);

	//*****************************************************
	// example 3 (move bit from position 2 to position 6)
	// example_byte  1100 0011
    //                ^    ^
    //               memorize bit -&gt; valuetochange = 0x01 &amp; ((*our)&gt;&gt;indexold) = 0
	//               1100 0011 &amp; 1111 1011 = 1100 0011 delete bit from oldindex (2)
	//               1100 0011 &amp; 1011 1111 = 1000 0011 delete bit from oldindex (6)
	// new_byte      1000 0011 | 0000 0000 = 1000 0011
	*new_byte     = move(example_byte, 2, 6);

	printf(&quot;old byte : %x\n&quot;, *example_byte); // 0xc3 (1100 0011)
	printf(&quot;new byte : %x\n&quot;, *new_byte);     // 0x83 (1000 0011)
	printf(&quot;\n&quot;);

	//*****************************************************
	// example 4 (move bit from position 2 to position 4)
	// example_byte  1100 0011
    //                  ^  ^
    //               memorize bit -&gt; valuetochange = 0x01 &amp; ((*our)&gt;&gt;indexold) = 0
	//               1100 0011 &amp; 1111 1011 = 1100 0011 delete bit from oldindex (2)
	//               1100 0011 &amp; 1110 1111 = 1100 0011 delete bit from oldindex (4)
	// new_byte      1100 0011 | 0000 0000 = 1100 0011
	*new_byte     = move(example_byte, 2, 4);

	printf(&quot;old byte : %x\n&quot;, *example_byte); // 0xc3 (1100 0011)
	printf(&quot;new byte : %x  &quot;, *new_byte);     // 0xc3 (1100 0011)
	printf(&quot;\n&quot;);

	free(new_byte);
	free(example_byte);
	return 0;
}</pre>
<h1 style="text-align: left;"><strong><span id="more-7456"></span></strong></h1>
<p><img alt="Results" src="https://lh4.googleusercontent.com/__Yhm-R_Alck/TVwpdO3HexI/AAAAAAAABjw/Wq2yhVQjg8Q/arter.JPG" title="Results" class="aligncenter" width="600" height="297" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.scitechexplained.com/2011/02/how-to-move-the-position-of-a-certain-bit-within-a-byte-c-language/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>

