<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6491320</id><updated>2012-02-19T18:19:07.098-08:00</updated><category term='gas stations'/><category term='flash'/><category term='form factor'/><category term='parallel computing'/><category term='protocol'/><category term='suggestion'/><category term='crystal'/><category term='cheap'/><category term='safety'/><category term='social service'/><category term='ip'/><category term='memory bus'/><category term='spam'/><category term='homeless shelter'/><category term='pyramids'/><category term='motherboard'/><category term='automobile safety'/><category term='actionscript'/><category term='speedometer'/><category term='work'/><category term='cars'/><category term='sort'/><category term='voting'/><category term='thrift'/><category term='recycle'/><category term='quantum uncertainty'/><category term='chiron fs'/><category term='peace'/><category term='optimising'/><category term='automobiles'/><category term='menus'/><category term='optimizing'/><category term='networking'/><category term='milk'/><category term='tcp/ip'/><category term='RGB'/><category term='categories'/><category term='unemployment'/><category term='optimization'/><category term='network'/><category term='project'/><category term='cruise control'/><category term='refurbish'/><category term='compiler'/><category term='google'/><category term='space'/><category term='nasa'/><category term='uPnP'/><category term='democracy'/><category term='net'/><category term='eco-friendly'/><category term='pi'/><category term='solitaire'/><category term='HSB'/><category term='search engine'/><category term='substrings'/><category term='paging'/><category term='allocation'/><category term='bank robbing'/><category term='midi'/><category term='ports'/><category term='homeless'/><category term='non-profit organization'/><category term='washer'/><category term='LAN'/><category term='speedometers'/><category term='green'/><category term='water'/><category term='space lift'/><category term='voice'/><category term='memory allocation'/><category term='infinity'/><category term='ipc'/><category term='math'/><category term='speed'/><category term='election'/><category term='job seeking'/><category term='silverlight'/><category term='transport-layer'/><category term='sockets'/><category term='awesome'/><category term='teraflops'/><category term='port forwarding'/><category term='transformers'/><category term='world'/><category term='music'/><category term='helping'/><category term='file system'/><category term='chocolate milk'/><category term='electronics'/><category term='malloc'/><category term='google earth'/><category term='sql'/><category term='wireless'/><category term='kernel'/><category term='lifesaver'/><category term='feature suggestion'/><category term='electric cars'/><category term='color model'/><category term='card game'/><category term='health'/><category term='reuse'/><category term='flight simulation'/><category term='astronomy'/><category term='color space'/><category term='flops'/><category term='flight sim'/><category term='memory management'/><category term='web'/><category term='exposition'/><category term='drier'/><category term='telescope'/><category term='art'/><category term='syntax'/><category term='memory controller'/><category term='page table'/><category term='HSV'/><category term='shelter'/><category term='tax'/><category term='chocolate'/><category term='collision detection'/><category term='novel'/><category term='quantum mechanics'/><category term='non-profit organisation'/><category term='dryer'/><category term='keyboard'/><category term='power supply'/><category term='home networking'/><category term='dance'/><category term='cpu'/><category term='backup'/><category term='RYB'/><category term='simulation'/><category term='heap'/><category term='hashtable'/><category term='cone types'/><category term='quantum physics'/><category term='os'/><category term='wires'/><category term='security'/><category term='efficient'/><category term='economy'/><category term='fractals'/><category term='CAPTCHA'/><category term='Heisenberg uncertainty'/><category term='save'/><category term='social services'/><category term='algorithm'/><category term='mirroring'/><category term='gui'/><category term='working'/><category term='purification'/><category term='petaflops'/><category term='color'/><category term='html'/><category term='ssl'/><category term='tires'/><category term='coconut'/><category term='architecture'/><category term='workforce'/><category term='ide'/><category term='overboard'/><category term='optimisation'/><category term='coconut milk'/><category term='javascript'/><category term='organization'/><category term='CMY'/><category term='microkernel'/><category term='environment'/><category term='transport layer'/><category term='anti-spam'/><category term='charging'/><category term='transactions'/><category term='environmentalism'/><category term='fsb'/><category term='batteries'/><category term='internet'/><category term='layout'/><category term='coreography'/><category term='language design'/><category term='sorting algorithm'/><category term='idea'/><category term='actuator'/><category term='conservation'/><category term='translation'/><category term='heads'/><category term='programming'/><category term='culture'/><category term='sorting'/><category term='front side bus'/><category term='applets'/><category term='website'/><category term='Christmas tree'/><category term='rocket'/><category term='Jelly'/><category term='tcp'/><category term='turing machine'/><category term='stack'/><category term='feature'/><category term='jobs'/><category term='swapping'/><category term='hard drive'/><category term='dictionary'/><category term='ship'/><category term='search'/><category term='composition'/><category term='connectivity'/><category term='LaB'/><category term='Copenhagen interpretation'/><category term='metadata'/><category term='keywords'/><title type='text'>Ideas</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default?start-index=101&amp;max-results=100'/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>117</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6491320.post-7341989439617758298</id><published>2012-01-20T16:11:00.001-08:00</published><updated>2012-01-20T16:11:16.198-08:00</updated><title type='text'>formspring.me</title><content type='html'>Ask me anything &lt;a href="http://www.formspring.me/inhahe" target="_blank"&gt;http://www.formspring.me/inhahe&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-7341989439617758298?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/7341989439617758298/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=7341989439617758298' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/7341989439617758298'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/7341989439617758298'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2012/01/formspringme.html' title='formspring.me'/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-4887848620247857014</id><published>2011-05-04T08:25:00.000-07:00</published><updated>2011-05-04T08:25:17.366-07:00</updated><title type='text'></title><content type='html'>I heard a joke today, "Why are camels called the ships of the desert?" "...because they're full of Arab seamen"&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;and it got me thinking, you really could make ships of the desert. all you really need is a huge vehicle with a) gigantic tires, and b) sails. &amp;nbsp;it works just like a ship, and the tires are big enough to make running over bumps and cacti negligible.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-4887848620247857014?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/4887848620247857014/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=4887848620247857014' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/4887848620247857014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/4887848620247857014'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2011/05/i-heard-joke-today-why-are-camels.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-3517541134375380298</id><published>2011-03-01T18:39:00.000-08:00</published><updated>2011-03-01T18:41:33.938-08:00</updated><title type='text'></title><content type='html'>skimming over my previous post and i have nfi what i was talking about. anyway, here's a good idea.&lt;br /&gt;&lt;br /&gt;make a book of one-liners creatively describing depression.  no, idon't think it'll just make people more depressed; i think it mayhelp cure it.here's an example:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;»&lt;br /&gt;&lt;br /&gt;shelbyfero shelby fero &lt;br /&gt;I think depression must feel like getting kicked off of every reality show first.&lt;br /&gt;4 minutes ago Unfavorite Undo Retweet Reply&lt;br /&gt;&lt;br /&gt;just ask like 300 people how they think of depression - on creative terms.. and compile. voila!&lt;br /&gt;&lt;br /&gt;hmmm.  i bet weird al likes this idea. &lt;prays al="" to="" weird=""&gt;&lt;prays al="" to="" weird=""&gt;&lt;/prays&gt;&lt;/prays&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-3517541134375380298?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/3517541134375380298/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=3517541134375380298' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/3517541134375380298'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/3517541134375380298'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2011/03/skimming-over-my-previous-post-and-i.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-334669944106756467</id><published>2011-01-09T14:06:00.000-08:00</published><updated>2011-01-09T14:06:10.440-08:00</updated><title type='text'></title><content type='html'>ok so my idea&lt;br /&gt;it's like a school, but part of the function is to impregnate people's minds with a collection of symbols that will do them well for a long, long time.&lt;br /&gt;&lt;br /&gt;i can give you a couple of candidate lists&lt;br /&gt;&lt;br /&gt;1a - courage, bravery, loyalty, nerve and (yuck) chivalry&lt;br /&gt;1b - hard work, tolerance, loyalty, and fair play&lt;br /&gt;1c - intelligence, creativity, learning, and wit&lt;br /&gt;1d - ambition, cunning, leadership, resourcefulness, expertise &lt;br /&gt;&lt;br /&gt;2a - http://www.ascendpress.org/language-of-light/LOLsingle.html&lt;br /&gt;2b1 - http://www.ascendpress.org/language-of-light/LOLdual.html&lt;br /&gt;2b2 - http://www.ascendpress.org/language-of-light/LOLdual2.html&lt;br /&gt;2b3 - http://www.ascendpress.org/language-of-light/LOLdual3.html&lt;br /&gt;2c1 - http://www.ascendpress.org/language-of-light/LOLtri1.html&lt;br /&gt;2c2 - http://www.ascendpress.org/language-of-light/LOLtri2.html&lt;br /&gt;&lt;br /&gt;3 - http://www.ascendpress.org/loone-main.html &lt;br /&gt;&lt;br /&gt;warning: 3 is really high info - you could get dizzy - take the symbols slowly.&lt;br /&gt;&lt;br /&gt;impregnation could work through a) meditating on the symbols, b) sharing in groups with other people on the same symbol path, andor c) having people take a symbol, and then practice on it for a while to the mentor's satisfaction..  if they want.&lt;br /&gt;&lt;br /&gt;this is all just an idea, and i don't really know if it's a good one. i'll let you be the judge of that.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-334669944106756467?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/334669944106756467/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=334669944106756467' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/334669944106756467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/334669944106756467'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2011/01/ok-so-my-idea-its-like-school-but-part.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-6444947142209080476</id><published>2011-01-03T06:56:00.000-08:00</published><updated>2011-01-03T06:56:00.779-08:00</updated><title type='text'></title><content type='html'>To help ease the tension of cops saying what you are and aren't allowed to do to fulfill their ego, I propose that cops' uniforms be brighter colors.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-6444947142209080476?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/6444947142209080476/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=6444947142209080476' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/6444947142209080476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/6444947142209080476'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2011/01/to-help-ease-tension-of-cops-saying.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-1222457828962577389</id><published>2010-12-01T12:59:00.001-08:00</published><updated>2010-12-01T12:59:07.703-08:00</updated><title type='text'></title><content type='html'>I always think a good icebreaker would be to give away gifts.  Like you just need to carry one around with you in your pocket or something.&lt;br /&gt;So… what we need, is a social excuse for ppl to bring around gifts to give to supposedly random people!&lt;br /&gt;Now, the excuse is…&lt;br /&gt;You buy the gifts in contract with some charity cause - the gifts that are sold that way, in the stores that support it - and the trick is that the charity money can only be activated by somebody who didn’t buy the gift.  &lt;br /&gt;I don’t know how to verify it - obviously the cashier would have to know something about your information.  If you pay with cash or credit, I suppose that part’s easy.  If you pay with cash, who knows… a driver’s license number or phone number maybe.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-1222457828962577389?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/1222457828962577389/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=1222457828962577389' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/1222457828962577389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/1222457828962577389'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2010/12/i-always-think-good-icebreaker-would-be.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-8862238555356449239</id><published>2010-11-24T07:50:00.000-08:00</published><updated>2010-11-24T07:50:58.091-08:00</updated><title type='text'></title><content type='html'>i used to keep this idea to myself because I wanted to be the one to start and/or run the organization.  Now I care about other things..&lt;br /&gt;&lt;br /&gt;The idea is called ProCat, or Project Catalyst Organization.  The idea is to establish a non-profit organization, with legal bindings, and they allow it to allow the citizens to establish ideas, submit variations on ideas, and vote on them - ideas for improving the town, like, for example, establishing a new park.  But it's not this simple.&lt;br /&gt;&lt;br /&gt;The citizens themselves -- maybe, at least sometimes -- pay for the project (because there may be no other way).  So, how does it work?&lt;br /&gt;&lt;br /&gt;Say 1,000 people vote on a new park.  Bob submitted an idea, Marly modified it, more people voted on Marly's modification, all 1,000 of them (or maybe not all) committed to paying a certain amount toward the project, but ONLY IF the project passes successfully.  They probably committed varying amounts of money, but if it adds up to being enough then they all win.  If it doesn't?? Nobody pays!&lt;br /&gt;&lt;br /&gt;Obviously we can't trust somebody with that last $100 it takes to make a park just because they committed to it, so what the idea should probably be is that they *already* pay and THEN if it falls through - for lack of enough funds or for some other reason - then they all get paid back; the organization we *can* trust.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-8862238555356449239?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/8862238555356449239/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=8862238555356449239' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/8862238555356449239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/8862238555356449239'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2010/11/i-used-to-keep-this-idea-to-myself.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-1150208528499146476</id><published>2010-11-24T07:39:00.001-08:00</published><updated>2010-11-24T07:39:44.724-08:00</updated><title type='text'></title><content type='html'>i always want to see - i don't know if exists - i know something like it did for a while - a forum where people review bills, people translate bills to plain english, to varying levels of detail, and make sure not to forget the zingers, and and people - average citizens - comment on bills, rate them, submit ideas for variations, rate them, rate variations, submit variations of variations, and rate or vote up/vote down others' comments.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-1150208528499146476?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/1150208528499146476/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=1150208528499146476' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/1150208528499146476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/1150208528499146476'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2010/11/i-always-want-to-see-i-dont-know-if.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-6037850275709382888</id><published>2010-11-21T16:12:00.001-08:00</published><updated>2010-11-21T16:12:47.684-08:00</updated><title type='text'></title><content type='html'>i will never say goodbye but you will not talk to me and everyone hates me and i don't want to inflict twilight upon you.&lt;br /&gt;&lt;br /&gt;two tries with twitter is enough for me.&lt;br /&gt;&lt;br /&gt;if you want anything, please contact me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-6037850275709382888?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/6037850275709382888/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=6037850275709382888' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/6037850275709382888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/6037850275709382888'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2010/11/i-will-never-say-goodbye-but-you-will.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-6908266695086860271</id><published>2010-11-21T15:03:00.001-08:00</published><updated>2010-11-21T15:03:49.912-08:00</updated><title type='text'></title><content type='html'>I always think a good icebreaker would be to give away gifts.  Like you just need to carry one around with you in your pocket or something.&lt;br /&gt;&lt;br /&gt;So… what we need, is a social excuse for ppl to bring around gifts to give to supposedly random people!&lt;br /&gt;&lt;br /&gt;Now, the excuse is…&lt;br /&gt;You buy the gifts in contract with some charity cause - the gifts that are sold that way, in the stores that support it - and the trick is that the charity money can only be activated by somebody who didn’t buy the gift.  &lt;br /&gt;&lt;br /&gt;I don’t know how to verify it - obviously the cashier would have to know something about your information.  If you pay with cash or credit, I suppose that part’s easy.  If you pay with cash, who knows… a driver’s license number or phone number maybe.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-6908266695086860271?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/6908266695086860271/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=6908266695086860271' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/6908266695086860271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/6908266695086860271'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2010/11/i-always-think-good-icebreaker-would-be.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-2239712961633454523</id><published>2010-10-15T02:25:00.001-07:00</published><updated>2010-10-15T02:25:07.237-07:00</updated><title type='text'></title><content type='html'>for tv shows and cartoons&lt;br /&gt;have one individual writer write for each individual character.&lt;br /&gt;(more or less, even.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-2239712961633454523?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/2239712961633454523/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=2239712961633454523' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/2239712961633454523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/2239712961633454523'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2010/10/for-tv-shows-and-cartoons-have-one.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-593068814506074165</id><published>2010-08-24T04:08:00.000-07:00</published><updated>2010-08-24T04:09:09.620-07:00</updated><title type='text'></title><content type='html'>Graphics cards should be able to mix indexed 256-color palette modes with 32-bit color modes, as a texture or 2-d overlay or something.  That way you could do cool tricks that involved changing the palette without having to change your system's screen mode.&lt;br /&gt;&lt;br /&gt;Even cooler, allow this in JavaScript.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-593068814506074165?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/593068814506074165/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=593068814506074165' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/593068814506074165'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/593068814506074165'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2010/08/graphics-cards-should-be-able-to-mix.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-4597859149779605459</id><published>2010-08-17T15:41:00.000-07:00</published><updated>2010-08-17T15:44:02.061-07:00</updated><title type='text'></title><content type='html'>Wouldn't it be great if I could, say, for example, listen to music playing Winamp visualizations and stream it to one of my blogs as a dynamically changing background?&lt;br /&gt;&lt;br /&gt;As the communication channels get faster, how will IT technology adapt to take advantage of it?&lt;br /&gt;&lt;br /&gt;NativeClient (one of Gooogle's pet projects) takes native code and rigorously proves using proof theory that it can't commit any kind of violation or infraction under any circumstances, so it's safe.  That allows websites to send native code to the client for execution, which is probably dozens of times faster than JavaScript with JIT.  The drawback is, of course, that any CPU architecture that isn't supported - well - won't be supported.  But x86 isn't the only architecture they're pursuing, and as of now, Windows, Linux, FreeBSD and Mac computers all use x86 anyway.  Mobile devices don't, but some of them don't even show Flash..(&gt;:)).. and ARM is probably one of the architectures they're pursuing anyway. &lt;br /&gt;&lt;br /&gt;With NativeClient I could program my *own* visualizations to be running as a page background, all the time. &lt;br /&gt;&lt;br /&gt;But let's say I wanted to stream it?  HTML 5 might be able to handle that, with sufficient speed.  But of course if it's a public blog site, the blog site must allow that kind of connectivity for me to stream it.  How generalized would this ability be?  Quickest solution: JavaScript can send requests to domains other than the document's origin.  XmlRpcRequests aren't that good at streaming, though; you'd normally have to use a hidden frame for that.  &lt;br /&gt;&lt;br /&gt;And let's say 5 people read my blog simultaneously? Would I want to have to waste bandwidth streaming the same visual to all 5 of them?  Why couldn't I just use multicast?  But now we have to allow the consumer to use multicast, and we have to allow JavaScript to tap in.. &lt;br /&gt;&lt;br /&gt;I imagine new APIs usable by blogger sites or any other site that would make such communications (and much more) possible, but what exactly will the APIs contain?  &lt;br /&gt;&lt;br /&gt;Basically we're talking about shifting into a more dynamic and freely flowing information age.  I have mixed feelings about that in general, but it's -going- to happen, so the sooner we get to thinking about how we're going to do it *right*, the better.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-4597859149779605459?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/4597859149779605459/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=4597859149779605459' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/4597859149779605459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/4597859149779605459'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2010/08/wouldnt-it-be-great-if-i-could-say-for.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-4138194379687834786</id><published>2010-08-16T23:27:00.000-07:00</published><updated>2010-08-16T23:27:18.025-07:00</updated><title type='text'></title><content type='html'>inhahe: i just thought of a good prank to pull on telemarketers&lt;br /&gt;inhahe: first time one calls, answer, don't speak, record their reaction&lt;br /&gt;theteofscuba: they don't even use the do not call registry any more&lt;br /&gt;inhahe: second time one calls, play back the recording of the first one&lt;br /&gt;inhahe: and record their response&lt;br /&gt;theteofscuba: we get telemarketers calling daily&lt;br /&gt;inhahe: third time one calls, play back the second telemarkter's response and record their response&lt;br /&gt;inhahe: etc.&lt;br /&gt;theteofscuba: hmm&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-4138194379687834786?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/4138194379687834786/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=4138194379687834786' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/4138194379687834786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/4138194379687834786'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2010/08/inhahe-i-just-thought-of-good-prank-to.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-1324355053106996147</id><published>2010-06-30T15:17:00.001-07:00</published><updated>2010-06-30T15:22:16.960-07:00</updated><title type='text'></title><content type='html'>Ngodot1800: we were talking about my former or her present boss Barbara &lt;br /&gt;inhahe: oh, my mom was talking about bosses today.&lt;br /&gt;inhahe: she had a great idea&lt;br /&gt;inhahe: it was&lt;br /&gt;Ngodot1800: which was?&lt;br /&gt;inhahe: there should be a radio show called 'be careful, your boss may be listening'&lt;br /&gt;inhahe: people can call in to complain about their bosses&lt;br /&gt;inhahe: and now and then play a song like 'shove this job'&lt;br /&gt;inhahe: and once a year have a thing where you praise bosses who are nice&lt;br /&gt;Ngodot1800: I will spend one nanosecond per decade doing that&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-1324355053106996147?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/1324355053106996147/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=1324355053106996147' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/1324355053106996147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/1324355053106996147'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2010/06/ngodot1800-we-were-talking-about-my.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-4392734370224196888</id><published>2010-04-22T15:01:00.000-07:00</published><updated>2010-04-22T15:45:38.020-07:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Idea for images.google.com&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A link under each image for "similar images."  This isn't some AI comparison feature.  This is simply finding more-or-less identical images, that may just be in other resolutions or image formats. &lt;br /&gt;&lt;br /&gt;The way to do this would be to scale each picture down into a smaller grid, i hear 4x4 is a good number.  Then just take a hash of the 16 color values.  (the color gamut should also be scaled down, but not sure by how much.)  Everything with the same hash is an identical picture.  &lt;br /&gt;&lt;br /&gt;It would be nice if relative comparisons could be made, i.e. ordering pictures by similarity, too.  How many pixels (and the color gamut) you scale the image down to determines how precise a match has to be to fit; so google could choose a level that they think will satisfy the average user.  Or, they could even create multiple hashes for each image based on different scales, then order image results by which hashes match...&lt;br /&gt;&lt;br /&gt;Even more convenient would be if there were some kind of hash where the linear difference between any two hashes is also the level of difference between two pictures.  I'm not quite sure if that's logically possible, but then, the above idea can actually be thought of that way..&lt;br /&gt;&lt;br /&gt;To actually compare image distances, a good way could be to take color distance between every corresponding pixel between the two grids, square each distance, sum them, then take the square root of that.. but that's way too intensive a comparison for a google search.  (Also it ignores the dimension of object borders changing location, but that could be solved by a 2-dimensional levenshtein distance.. which is even more insanely computation-intensive. and i wonder how you can integrate that with a color distance formula.. i wonder if it would work to take an n-dimensional levenshtein distance ( http://www.itl.nist.gov/iad/mig/publications/storage_paper/lrec06_v0_7.pdf )  where L*a*b are three dimensions and x, y location are two more..)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-4392734370224196888?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/4392734370224196888/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=4392734370224196888' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/4392734370224196888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/4392734370224196888'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2010/04/idea-for-images.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-3378847183018985963</id><published>2010-03-11T09:56:00.000-08:00</published><updated>2010-03-11T10:34:35.315-08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;This needs to be done.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Wouldn't you like to be able to take a day - or a week - off, whenever you wanted?&lt;br /&gt;&lt;br /&gt;Is it me, or is one of the main stresses in life due to having to be at work *every* work day for years on end, *on time*, or risk being fired, which poses the further risk of living on the street?&lt;br /&gt;&lt;br /&gt;Aside from the needlessly totalitarian exactly-on-time aspect, I can see why a company wouldn't let you just take a day, or a week, off whenever you wanted.  If there's only 10 other people working there who can fulfill your position, then they can't necessarily afford to lose a spot unplanned.  Even if there's 1,000 people working for the company who can fulfill your position, most of them are probably in other cities.  &lt;br /&gt;&lt;br /&gt;If there were 1,000 people who could fill in for the same position working within one facility, they should be able to afford to let people take some time off whenever they want (barring holidays, etc.), because statistically it will even out and you'll always have roughly the same amount of people who *want* to work that day because they need to make enough money to live.  Of course, whether companies actually *would* provide that grace to their employees just because they can is probably a different matter, but that's not the point here.&lt;br /&gt;&lt;br /&gt;What if people, in general, had say...5 different jobs?  Instead of working the same job every day, you'd work a different one every day of the week.  Except it would be more efficient if you didn't always work the same job the same day of the week - if it switched around according to need.  Now, instead of hiring one person for a position, they'd hire 5, and each person would work 1/5th of the time, more or less.  If a company otherwise had 10 people interchangeable for a certain position, now they have 50.  Arrangements would have to be made, somehow, inter-company and between companies and employees, on a day-by-day basis.  This could all be automated online, by simply letting the employee bid for a day or string of days off, and letting the computer do the rest of the work and tell people where to go.&lt;br /&gt;&lt;br /&gt;This also makes life more fulfilling for the employee, by breaking the monotony of having to do the same thing, and work with the same people, every single work day, and by expanding his/her working skillset.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-3378847183018985963?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/3378847183018985963/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=3378847183018985963' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/3378847183018985963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/3378847183018985963'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2010/03/this-needs-to-be-done-really.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-8307763867385784312</id><published>2010-03-10T02:01:00.001-08:00</published><updated>2010-03-10T02:01:39.850-08:00</updated><title type='text'>formspring.me</title><content type='html'>Ask me anything &lt;a href="http://formspring.me/inhahe" target="_blank"&gt;http://formspring.me/inhahe&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-8307763867385784312?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/8307763867385784312/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=8307763867385784312' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/8307763867385784312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/8307763867385784312'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2010/03/formspringme.html' title='formspring.me'/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-137033812307660398</id><published>2010-03-05T23:59:00.000-08:00</published><updated>2010-03-06T00:14:31.658-08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Uniform / easier PC's&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;PCs would be a lot easier for a lot of people if there were only one type of connection - for everything. &lt;br /&gt;&lt;br /&gt;ps/2 ports for keyboard and mouse are all but obsolete, pretty much any new k/b or mouse uses usb.  but we still have, for example, cat-5e ports.  why not make network cables use USB ends?  &lt;br /&gt;&lt;br /&gt;that still leaves a few more things that could be converted - at least once we get the new usb 3.0 spec. &lt;br /&gt;&lt;br /&gt;SATA?  Why?  Just replace it with USB.  Put USB ports inside the computer. &lt;br /&gt;&lt;br /&gt;PCIe?  Replace it with USB.  Provide sufficient means for cards to dock inside the computer.  In fact, strategically place the USB port inside the dock so we don't have to use wires.  This could be done with internal drives, too.&lt;br /&gt;&lt;br /&gt;That pretty much leaves just HDMI, VGA, and DVI output.  VGA is analog but totally obsolete.  There's no reason to use VGA anymore.  In fact it's a travesty unless you have a CRT.  HDMI is a bit outside our domain of consideration because it's an interface to a non-computer device; you can't control that, there are too many non-computer devices out there.  DVI, on the other hand, could be usurped by USB.  Let's see.. usb 3.0 will be 3.2 gbit/s after protocol overhead, one pixel is 24 bits, that's a possible 64 frames per second at 1920x1080 resolution.  Well, I guess it just barely cuts it in that department.  We can always sell new monitors with USB connectors that require up to 3.2 gbit/s, and after that use dvi... until we get USB 4.0&lt;br /&gt;&lt;br /&gt;Wouldn't it be awesome if there all computers had exactly one type of port and came with about 12 of them?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-137033812307660398?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/137033812307660398/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=137033812307660398' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/137033812307660398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/137033812307660398'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2010/03/uniform-easier-pcs-pcs-would-be-lot.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-6889937374811554772</id><published>2010-01-13T06:39:00.000-08:00</published><updated>2010-01-13T07:04:02.143-08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Better Translating Service&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;the problem of making an intelligible automated translation -- much more one that's actually reasonable-sounding -- is not easy, and it's not exactly solved anywhere.&lt;br /&gt;&lt;br /&gt;the proposal is to make translations more direct and decipherable by not "sugar-coating" them trying to put them into regular English (or any other recipient language obviously) grammar.  For example, Mandarin grammar is *completely* different from English grammar.  When translating from Mandarin, notation (brackets, etc.) could be used instead of normal English grammatical structures to relay the grammatical structure of the Mandarin phrase.  Most people aren't too stupid to get the hang of such a system after a couple of translations; the bigger problem is simply not knowing the words of another language.  &lt;br /&gt;&lt;br /&gt;Another example of this feature is how to handle agglutination.  To translate a complicated German agglutinated word into English, we could simply say present something like zeitgeist, for example, as "time-spirit."  People are intelligent enough to infer the real meaning behind such things based on context in a lot of cases; again, the translator only needs to come half-way.  The reader simply can't be bothered to spend years learning a language just to translate one text.&lt;br /&gt;&lt;br /&gt;Another great feature would be the ability to click on any word in the translation and get a pop-up list of various other words it could have been translated as.  Obviously translations aren't strictly word-by-word, but most of the time a word should be able to be tagged (in html id attribute for example) as having been a translation of another word in the foreign text, for use during lookup.  &lt;br /&gt;&lt;br /&gt;Also, in some cases where there are only 2 or 3 different possible translations of a word but they're significantly different from each other, the word could be presented in a way that shows all of them; for example, "geist" could be show up as "[ghost|spirit]"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-6889937374811554772?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/6889937374811554772/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=6889937374811554772' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/6889937374811554772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/6889937374811554772'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2010/01/better-translating-service-problem-of.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-7124882613196222816</id><published>2009-12-04T14:26:00.000-08:00</published><updated>2009-12-04T19:56:14.621-08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;SimpleSort&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is an algorithm to compete with the current slowest sorting algorithms.&lt;br /&gt;&lt;br /&gt;1. We're given our list to sort, L&lt;br /&gt;2. Create a list of length 0, M&lt;br /&gt;3. Randomly, either append a random* value to the end of M, or remove the last value.  If M has length 0 then we do not remove the last non-existent value.&lt;br /&gt;4. Check if all elements of M are in L.**&lt;br /&gt;5. If yes, check if all elements of L are in M.&lt;br /&gt;6. If yes, check if M is in order.***&lt;br /&gt;7. If no, repeat from Step 3.  If yes, we've sorted it.&lt;br /&gt;&lt;br /&gt;* this could be problematic.&lt;br /&gt;if it's an int of size 32 for example, we can just add a number from -2^31 to 2^31-1.  &lt;br /&gt;if it's a float, we could do something similar for the 80-bit or 64-bit floating point value. &lt;br /&gt;if it's a bignum, we can apply step 3 to the number itself as a string of digits.&lt;br /&gt;if it's a string, we could also apply step 3 here. &lt;br /&gt;if it's some arbitrary object, we can randomize every primitive type it's composed of in the above manners&lt;br /&gt;&lt;br /&gt;** something like:&lt;br /&gt;for x in M:&lt;br /&gt;  if not x in L: &lt;br /&gt;     break&lt;br /&gt;else:&lt;br /&gt;  it's in there.&lt;br /&gt;and vice versa for Line 5.&lt;br /&gt;&lt;br /&gt;*** something like:&lt;br /&gt;M += [+inf]&lt;br /&gt;for i in 0...len(M):&lt;br /&gt;  if M[i] &gt; M[i+1]:&lt;br /&gt;    break&lt;br /&gt;else:&lt;br /&gt;  it's sorted&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-7124882613196222816?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/7124882613196222816/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=7124882613196222816' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/7124882613196222816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/7124882613196222816'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/12/simplesort-mi1-break-else-its-sorted.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-6750848548451423716</id><published>2009-12-04T01:23:00.000-08:00</published><updated>2009-12-04T01:27:04.261-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='applets'/><category scheme='http://www.blogger.com/atom/ns#' term='idea'/><category scheme='http://www.blogger.com/atom/ns#' term='silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='actionscript'/><category scheme='http://www.blogger.com/atom/ns#' term='flash'/><category scheme='http://www.blogger.com/atom/ns#' term='html'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;RJavaScript&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;theteofscuba: it would be veryu cool if html provided support for the same idea behind silverlight and allow people to use javascript to script it instead of using actionscript in flash or .net in silverlight&lt;br /&gt;theteofscuba: and providing support for an xml format of 3d models so javascript could be the basis for a 3d engine&lt;br /&gt;theteofscuba is offline (3:59:46 AM)&lt;br /&gt;&lt;br /&gt;Your IM will be delivered when the buddy goes online.&lt;br /&gt;inhahe: i agree&lt;br /&gt;inhahe: that javascript should be integrated with something like silverlight&lt;br /&gt;inhahe: so that you use teh same language for everything&lt;br /&gt;inhahe: there is one problem wit hthat though&lt;br /&gt;inhahe: silverlight/flash apps might be more cpu intensive in some case because they're more graphics involved&lt;br /&gt;inhahe: and javascript, even the next-gen js engines, is very slow compared to .net &lt;br /&gt;inhahe: not sure about flash, i would imagine actionscript is faster too&lt;br /&gt;inhahe: this is a fundamental limitation given by the afct that javascript is a more dynamic language&lt;br /&gt;inhahe: one interesting prospect would be to provide something syntactically similar to javascript but that is really just a subset of the language, so operations requiring teh particular dynamicism of javascript won't work within a restricted javascript block&lt;br /&gt;inhahe: so that they can  be compiled into faster code and used for things that need more speed&lt;br /&gt;inhahe: ideally you would be able to define a restricted javascript block whether or not you're doing graphics-speciifc thinsg and you should be able to do graphics-specific things whether or not you're using restricted jaovascript&lt;br /&gt;theteofscuba's offline IM storage is full.&lt;br /&gt;&lt;br /&gt;RJavaScript would be to JavaScript what RPython is to Python.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-6750848548451423716?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/6750848548451423716/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=6750848548451423716' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/6750848548451423716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/6750848548451423716'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/12/rjavascript-theteofscuba-it-would-be.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-5423671414337379788</id><published>2009-12-03T08:00:00.000-08:00</published><updated>2009-12-04T03:11:03.979-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='idea'/><category scheme='http://www.blogger.com/atom/ns#' term='sorting algorithm'/><category scheme='http://www.blogger.com/atom/ns#' term='sorting'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Hash Table Sort&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;For a given input list of size n, make a hash table of size n*2.  &lt;br /&gt;&lt;br /&gt;Run through the list once to determine its maximum and minimum values.  &lt;br /&gt;&lt;br /&gt;Create a hash function that puts an item in a slot depending on where it lies in between the minimum and maximum values.  For example, if there are 50 slots, the minimum value is 10, and the maximum value is 20, then a value of 12 would go into the 10th slot.  (A comparable formula *can* be used for strings.)&lt;br /&gt;&lt;br /&gt;After placing all the items, go through the hash table and sort each individual linked list, using the sorting method most efficient for its size (probably always an insertion sort where the input list is randomly distributed).  Concatenate all the sorted lists end-to-end.&lt;br /&gt;&lt;br /&gt;This algorithm is less particularly advantageous the less unevenly distributed the input list, but we can always mitigate that problem by using an n*n hash table or just a larger hash table to any degree.  Even an n*(n/x) hash table where each secondary table is a table of linked lists.&lt;br /&gt;&lt;br /&gt;This algorithm could also use a histogram to determine individual slot ranges and secondary table sizes.&lt;br /&gt;&lt;br /&gt;Where the range of values is smaller than the length of the list, you don't actually need a hash table of size n*2.  It can be of size range*2.&lt;br /&gt;&lt;br /&gt;I think this whole idea is just reinventing the bucket sort.  Oh well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-5423671414337379788?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/5423671414337379788/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=5423671414337379788' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/5423671414337379788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/5423671414337379788'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/12/hash-table-sort-for-given-input-list.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-14366894345924195</id><published>2009-10-18T12:29:00.001-07:00</published><updated>2009-11-29T03:47:32.893-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='idea'/><category scheme='http://www.blogger.com/atom/ns#' term='keywords'/><category scheme='http://www.blogger.com/atom/ns#' term='categories'/><category scheme='http://www.blogger.com/atom/ns#' term='organization'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Category-key-words&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Keywords are superior to directory hierarchies because things often fit into more than one category and there's more than one way of categorizing things.&lt;br /&gt;&lt;br /&gt;But categories are kind of easier to browse without having to think too much.&lt;br /&gt;&lt;br /&gt;Solution: each entry is entered using keywords, but the category system is generated automatically&lt;br /&gt;&lt;br /&gt;-a top-level category for each key word&lt;br /&gt;-the second level of each category has a sub-category for each other keyword existing in all its elements&lt;br /&gt;-and so on&lt;br /&gt;&lt;br /&gt;for example&lt;br /&gt;&lt;br /&gt;object a, keywords b, c, e&lt;br /&gt;object b, keywords d, e&lt;br /&gt;object c, keywords q&lt;br /&gt;&lt;br /&gt;hierarchy:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;b        (object a)&lt;br /&gt;  c      (object a)&lt;br /&gt;    e    (object a)&lt;br /&gt;  e      (object a)&lt;br /&gt;    c    (object a)&lt;br /&gt;c        (object a)&lt;br /&gt;  b      (object a)&lt;br /&gt;    e    (object a)&lt;br /&gt;  e      (object a)&lt;br /&gt;    b    (object a)&lt;br /&gt;d        (object b)&lt;br /&gt;  e      (object b)&lt;br /&gt;e        (object a, object b)&lt;br /&gt;  d      (object b)&lt;br /&gt;  c      (object a)&lt;br /&gt;    b    (object a)&lt;br /&gt;  b      (object a)&lt;br /&gt;    c    (object a)&lt;br /&gt;q        (object c)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;it might look like a really complicated hierarchy, but my theory is that it's not so complicated when you're collapsing and expanding branches at will from the top down.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-14366894345924195?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/14366894345924195/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=14366894345924195' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/14366894345924195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/14366894345924195'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/10/category-key-words-keywords-are.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-363792225394674877</id><published>2009-10-15T18:25:00.001-07:00</published><updated>2009-10-15T19:24:39.525-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='substrings'/><category scheme='http://www.blogger.com/atom/ns#' term='idea'/><category scheme='http://www.blogger.com/atom/ns#' term='search'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Efficient searching for substrings&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I don't know if this idea's ever been done before, so I'll post it.&lt;br /&gt;&lt;br /&gt;It's a way to search for substrings within a large dataset.  Google's code, for example, I'm sure is very efficient, but doesn't do substrings.  It just indexes words.  The same method wouldn't work for substrings, because the sentence "I heard it through the grape vine" has 561, give or take, possible substrings.&lt;br /&gt;&lt;br /&gt;So here's my way.  It uses SQL, but obviously using hash tables or binary trees directly would also work.  It's just easier to implement it in SQL, and possibly even more efficient on account of the DBE's query optimizer and so forth.&lt;br /&gt;&lt;br /&gt;So I'm indexing the string "I heard it through the grape vine", say it's in Record 1.&lt;br /&gt;&lt;br /&gt;my fields are (autonumber id, int nextid, char letter, int record)&lt;br /&gt;we'll call the table t, just because it's convenient.&lt;br /&gt;&lt;br /&gt;here's what i index:&lt;br /&gt;&lt;br /&gt;(0, 1, 'I', 1) //or normalize it to lower-case so we can do non-case-sensitive searches&lt;br /&gt;(1, 2, ' ', 1)&lt;br /&gt;(2, 3, 'h', 1)&lt;br /&gt;(3, 4, 'e', 1)&lt;br /&gt;(4, 5, 'a', 1)&lt;br /&gt;(5, 6, 'r', 1)&lt;br /&gt;(6, 7, 'd', 1)&lt;br /&gt;(7, 8, ' ', 1)&lt;br /&gt;(8, 9, 'i', 1)&lt;br /&gt;(9, 10, 't', 1)&lt;br /&gt;(10, 11, ' ', 1)&lt;br /&gt;(11, 12, 't', 1)&lt;br /&gt;(12, 13, 'h', 1)&lt;br /&gt;(13, 14, 'r', 1)&lt;br /&gt;(14, 15, 'o', 1)&lt;br /&gt;(15, 16, 'u', 1)&lt;br /&gt;(16, 17, 'g', 1)&lt;br /&gt;(17, 18, 'h', 1)&lt;br /&gt;(18, 19, ' ', 1)&lt;br /&gt;(19, 20, 't', 1)&lt;br /&gt;(20, 21, 'h', 1)&lt;br /&gt;(21, 22, 'e', 1)&lt;br /&gt;(22, 23, ' ', 1)&lt;br /&gt;(23, 24, 'g', 1)&lt;br /&gt;(24, 25, 'r', 1)&lt;br /&gt;(25, 26, 'a', 1)&lt;br /&gt;(26, 27, 'p', 1)&lt;br /&gt;(27, 28, 'e', 1)&lt;br /&gt;(28, 29, ' ', 1)&lt;br /&gt;(29, 30, 'v', 1)&lt;br /&gt;(30, 31, 'i', 1)&lt;br /&gt;(31, 32, 'n', 1)&lt;br /&gt;(32, null, 'e', 1)&lt;br /&gt;&lt;br /&gt;now i'll search for "rape".&lt;br /&gt;&lt;br /&gt;Now here's my search query. &lt;br /&gt;&lt;br /&gt;select a.record from t a, t b, t c, t d on a.nextid = b.id inner join b.nextid = c.id inner join c.nextid = d.id inner join a.letter = "r" inner join b.letter = "a" inner join c.letter = "p" inner join d.letter = "e"&lt;br /&gt;&lt;br /&gt;Or something like that.  I'm actually not that experienced with SQL.  But you know what I'm getting at here.&lt;br /&gt;&lt;br /&gt;The result of that search (after it's turned into sql that will actually work) will be 1, because "rape" occurs in record 1.&lt;br /&gt;&lt;br /&gt;---&lt;br /&gt;&lt;br /&gt;Another thing we can do is this&lt;br /&gt;&lt;br /&gt; (0, 1, 'I', 1, 0)&lt;br /&gt; (1, 2, ' ', 1, 1)&lt;br /&gt; (2, 3, 'h', 1, 2)&lt;br /&gt; (3, 4, 'e', 1, 3)&lt;br /&gt; (4, 5, 'a', 1, 4)&lt;br /&gt; (5, 6, 'r', 1, 5)&lt;br /&gt; (6, 7, 'd', 1, 6)&lt;br /&gt; (7, 8, ' ', 1, 7)&lt;br /&gt; (8, 9, 'i', 1, 8)&lt;br /&gt;&lt;br /&gt;etc.&lt;br /&gt;&lt;br /&gt;where the last field is the index within the record at which that letter occurs. &lt;br /&gt;it just happens to match id and nextid-1 in this example, but it wouldn't necessarily, because the same table would include many records.  &lt;br /&gt;&lt;br /&gt;that way if I searched for "rape" i would instantly know that it occurs in Record 1, at index 24, without having to do a string search through record 1's text (which is stored as a normal sting in some other table).&lt;br /&gt;&lt;br /&gt;Also, we might want to use ints instead of chars for the letters to speed it up.&lt;br /&gt;&lt;br /&gt;Also, for unicode you might have to do it a little differently.  The same principle still applies.&lt;br /&gt;&lt;br /&gt;It might also be safe to forgo the "nextid" field and do "...a.id = b.id-1 inner join a.id = c.id-2 inner join a.id = d.id-3...", but i don't know which way is more efficient.  i suspect this way would be much less optimized. &lt;br /&gt;&lt;br /&gt;oh, one other thing: obviously index the "nextid" and "letter" fields.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-363792225394674877?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/363792225394674877/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=363792225394674877' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/363792225394674877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/363792225394674877'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/10/i-dont-know-if-this-ideas-ever-been.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-1478934587746695986</id><published>2009-10-10T20:17:00.000-07:00</published><updated>2009-10-11T13:47:42.374-07:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;*Possibly* Crack-Pot Idea&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Have millions of users take random photos of the night sky with their digital cameras.  Let them send them in to a central server.  The server uses software to automatically align/rotate them with each other and group by time of year.  It averages them out in order to get a very precise image of the entire night sky.  It would probably want to use this precision to be able to remove the effect of light pollution from the result.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-1478934587746695986?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/1478934587746695986/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=1478934587746695986' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/1478934587746695986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/1478934587746695986'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/10/possibly-crack-pot-idea-have-millions.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-4526913248469144889</id><published>2009-10-10T17:14:00.000-07:00</published><updated>2009-10-22T18:35:26.978-07:00</updated><title type='text'></title><content type='html'>Consider this an anti-idea..&lt;br/&gt;&lt;br /&gt;&lt;b&gt;The Virtual Species: Post-Modernism Gets Physical&lt;/b&gt;&lt;br&gt;or&lt;b&gt; Humanity's Launch into Hyper-Reality.. Next Stop: Oblivion&lt;/b&gt;&lt;br/&gt;&lt;br /&gt;It's an interesting phenomenon whereby some people actually infiltrate home computers to install programs like SETI@home or Folding@home on them without their owners' permissions.  It would invoke mixed feelings in me if it happened to me: it has all the nuisance of a trojan, but the intention behind it is different.  It's something like, "I COMMAND that your computer work to serve humanity (&lt;i&gt;and without your knowledge or consent&lt;/i&gt;)."  Add to that the fact that I don't even agree with the Folding@home-and-ilk initiative, and I almost want to roll my eyes at such a person's choice to boldly get on that kind of a high horse.  &lt;br/&gt;&lt;br /&gt;I don't run Folding@home, and not because I want to save electricity, but because I don't believe in it.  It's just a bunch of fucking manipulation.  Einstein said, "the significant problems we have cannot be solved at the same level of thinking with which we created them," and I think that maxim really applies here.  Forget the Power of Creation.  Forget the Heart.  Forget even all the modern causes of disease.  Just solve the problem with manipulation.  And not even physical manpilation, just some sort of abstract conceptual manipulation.  But don't use human thought to do this, use computers.  But don't use *one* computer, use hundreds of thousands of these silicone machines, not even individually created by humans but rather mass-produced in factories, solving our health problems by searching for virtual solutions in some ridiculously huge abstract mathematical possibility space.  If the Greys really exist, and if they actually are infertile and hence creating human-Grey hybrids in order to continue their species, then this is why: they went down the same road we're going down now a long time ago.&lt;br/&gt;&lt;br /&gt;Fuck Folding@home, Fuck Rosetta@home, Fuck Predictor@home, Fuck Foldit, and Fuck Robetta.&lt;br/&gt;&lt;br /&gt;Fuck It Fuck It Fuck It Fuck It Fuck It!&lt;br/&gt;&lt;br /&gt;I can feel the healing already..&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-4526913248469144889?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/4526913248469144889/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=4526913248469144889' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/4526913248469144889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/4526913248469144889'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/10/consider-this-anti-idea.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-3843561515833276563</id><published>2009-10-02T07:54:00.000-07:00</published><updated>2009-10-02T07:55:56.193-07:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;More efficient color-adjusted bulbs&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Give incandescent lights a better color temperature by using phosphors on the glass, instead of the typical way of using neodymium.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-3843561515833276563?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/3843561515833276563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=3843561515833276563' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/3843561515833276563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/3843561515833276563'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/10/more-efficient-color-adjusted-bulbs.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-6664171425985544965</id><published>2009-10-02T07:22:00.000-07:00</published><updated>2009-10-02T07:25:57.158-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='idea'/><category scheme='http://www.blogger.com/atom/ns#' term='bank robbing'/><title type='text'></title><content type='html'>&lt;div&gt;&lt;b&gt;If Bank Robbers Were Smart..&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;Bank robbers should wear all black with horizontal orange or red stripes going all the way around the body.  Orange and red are 'danger' colors in nature, and this would trigger the same unconscious response in the employees and customers.   The robbers would be less likely to be challenged. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-6664171425985544965?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/6664171425985544965/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=6664171425985544965' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/6664171425985544965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/6664171425985544965'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/10/if-bank-robbers-were-smart.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-6361220609540788409</id><published>2009-09-29T02:13:00.000-07:00</published><updated>2009-09-29T03:42:43.100-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='helping'/><category scheme='http://www.blogger.com/atom/ns#' term='non-profit organization'/><category scheme='http://www.blogger.com/atom/ns#' term='work'/><category scheme='http://www.blogger.com/atom/ns#' term='workforce'/><category scheme='http://www.blogger.com/atom/ns#' term='social service'/><category scheme='http://www.blogger.com/atom/ns#' term='non-profit organisation'/><category scheme='http://www.blogger.com/atom/ns#' term='working'/><category scheme='http://www.blogger.com/atom/ns#' term='homeless shelter'/><category scheme='http://www.blogger.com/atom/ns#' term='shelter'/><category scheme='http://www.blogger.com/atom/ns#' term='tax'/><category scheme='http://www.blogger.com/atom/ns#' term='idea'/><category scheme='http://www.blogger.com/atom/ns#' term='unemployment'/><category scheme='http://www.blogger.com/atom/ns#' term='homeless'/><category scheme='http://www.blogger.com/atom/ns#' term='jobs'/><category scheme='http://www.blogger.com/atom/ns#' term='job seeking'/><category scheme='http://www.blogger.com/atom/ns#' term='social services'/><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;"&gt;The Expanding Homeless Utility&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I've had this idea for a while, but I decided I won't be the one to implement it, or at least not any time soon.  So I'm sharing it with you.&lt;br /&gt;&lt;br /&gt;The idea is for something like a homeless shelter, only it also provides opportunity for homeless persons to get back into the job market.  It actually wouldn't be one homeless shelter, but many across the nation, handled by a single not-for-profit organization.&lt;br /&gt;&lt;br /&gt;Any given center should provide:&lt;br /&gt;-food&lt;br /&gt;-clothing (including professional attire to borrow)&lt;br /&gt;-shelter&lt;br /&gt;-bathing&lt;br /&gt;-transportation&lt;br /&gt;-a usable address&lt;br /&gt;-computers with internet&lt;br /&gt;-help with resumes by someone competent in resume-making&lt;br /&gt;-training in certain job skills&lt;br /&gt;-a small library (with books pertaining to those skillsets, and on landing jobs)&lt;br /&gt;&lt;br /&gt;But that's not all.&lt;br /&gt;Every homeless person who enters into this program must sign a contract.  The contract states that, if they get a job using this service, they must pay a certain percentage of their wages to the organization for as long as they're working.  That means until retirement.  This is how the organization would be able to afford all these services; without this, it might be impractical, or at least it wouldn't have the ability to expand into something very large.&lt;br /&gt;It might seem harsh to garnish someone's wages for the rest of their working life.  Some people think it's exploitation.  But it's the only way to provide an opportunity for *mass* numbers of homeless people to get off the streets (with enough money, the program could afford also to take care of some homeless people who have no interest and/or no capability to get a job..), and for those working, I'm sure they'd rather be working and paying gratuities than still being on the streets.  One could even consider it like any other tax and its accompanying social service, applicable only to a certain sub-economy within the United States.  The US, as it is, has the lowest taxes of almost any developed nation, and in some of the richer countries, like Switzerland, those without jobs can collect unemployment benefits indefinitely; so rather than exploitation, the program can be considered a step in the direction of other developed nations.&lt;br /&gt;&lt;br /&gt;Of course, it would be cruel to demand money of people who are just barely making it by as it is: consider someone who's just gotten off the streets, has 3 kids, one in college, and has some chronic medical condition.. while "expenses rise to meet income" and therefore we need to be careful with providing breaks to those "barely making it" by their own standards, in some situations we really should provide breaks.  This should be a part of the contract, with the general rules laid out, though specific cases would, of course, be handled by third-party arbiters (or at least would be in the cases in which the person denied a break files an appeal).&lt;br /&gt;&lt;br /&gt;Another option to explore, would be to require payback only during the first year (or two years, or three years or whatever) of employment directly after use of the services.  This would seem less heavy-handed to would-be objectors, but it would provide only a *small fraction* of the funding otherwise available, so the program might be able to help only a small fraction of homeless persons that it otherwise might -- particularly among those who simply can't (or won't) enter into the workforce.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-6361220609540788409?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/6361220609540788409/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=6361220609540788409' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/6361220609540788409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/6361220609540788409'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/09/expanding-homeless-utility-ive-had-this.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-1744813276560649664</id><published>2009-09-28T01:05:00.000-07:00</published><updated>2009-09-28T01:07:58.377-07:00</updated><title type='text'></title><content type='html'>&lt;div&gt;&lt;b&gt;Duh.  Benchmarks&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Why does everyone struggle with unrealistic benchmarks? &lt;div&gt;Just do some logging of key presses and mouse strokes as users do normal activities within certain usage categories.  Play them back within the system/language/application being benchmarked and see what the total time is.  Do this for a number of different common tasks for each usage category, run them all and average the times&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-1744813276560649664?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/1744813276560649664/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=1744813276560649664' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/1744813276560649664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/1744813276560649664'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/09/duh.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-3404156980185942450</id><published>2009-09-26T03:03:00.000-07:00</published><updated>2010-10-03T11:01:56.221-07:00</updated><title type='text'></title><content type='html'>&lt;b&gt;Maze-in-a-pocket (A Mazing Idea!)&lt;/b&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A hand-held device with either accelerometers or a GPS receiver (probably the latter), that can randomly generate mazes  that it stores in memory.   You walk around holding this device, and when you hit a wall it does one visual/sound, and when you find the exit it does another visual/sound.  So you basically navigate this invisible maze until you make it out. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;(it won't let you walk through walls -- if you try it'll just keep giving you the ugly noise until you get back to within eyeshot (within the maze) of the point at which you transgressed.  or alternatively, it'll scrap the maze and you'll have to try a new one.)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Should be able to specify dimensions (in feet) of the maze and maze complexity (which determines thinness of the corridors).&lt;/div&gt;&lt;br /&gt;i've changed my mind. don't just generate a random maze.  take one from a database, or seed from a random number in a database (that implies you don't change the generation formula).  also, perhaps have a way of networking maze entries among your friends, etc.  what i'm aiming toward here is Sheldrake's morphic resonance.&lt;br /&gt;&lt;br /&gt;this can most easily be issued as an iPhone app.&lt;br /&gt;but you'd better hurry. i purchased my first iphone today.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-3404156980185942450?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/3404156980185942450/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=3404156980185942450' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/3404156980185942450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/3404156980185942450'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/09/maze-in-pocket-mazing-idea-hand-held.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-151699059889713227</id><published>2009-09-26T02:17:00.000-07:00</published><updated>2009-09-26T03:02:10.217-07:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Cheap, Tiny Computers&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You know how they sell old-style gaming systems in little boxes nowadays?&lt;br /&gt;Well, just do the same thing with the PC&lt;br /&gt;&lt;br /&gt;-Use the Atom processor, so you don't need a cooling system, and you can run normal x86 apps.&lt;div&gt;-Make the whole thing a little box like no more than 3"&lt;sup&gt;3&lt;/sup&gt;&lt;div&gt;&lt;sup&gt;&lt;/sup&gt;&lt;span class="Apple-style-span"  style="font-size:100%;"&gt;&lt;span class="Apple-style-span"  style="font-size:13px;"&gt;-TV out instead of monitor out, so you just connect it to your TV (or, in alternative models, DVI or VGA output).  simple graphics, about 2mb, no hardware 3d support&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:100%;"&gt;&lt;span class="Apple-style-span"  style="font-size:13px;"&gt;-ethernet port (and/or WiFi in alternative models)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:100%;"&gt;&lt;span class="Apple-style-span"  style="font-size:13px;"&gt;-SSD harddrive, size depending on model - can go down to very small because you might want to use an OS for mobile devices&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-size:13px;"&gt;-DC-in and includes an adapter&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:100%;"&gt;&lt;span class="Apple-style-span"  style="font-size:13px;"&gt;-6 or so USB ports, for all your peripherals, keyboard, and mouse.  (just forgo the ps/2 ports and any other ports.)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:100%;"&gt;&lt;span class="Apple-style-span"  style="font-size:13px;"&gt;-RAM?  Nowadays 1 GB goes for $10, at least for PC RAM.  On the downside, for cost, PC RAM is more mass-produced, but on the upside this RAM doesn't have to be nearly as fast. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:100%;"&gt;&lt;span class="Apple-style-span"  style="font-size:13px;"&gt;-main board?  *shrug* make something up.  this device is meant to be *functional*,  it doesn't necessarily have to be super-fast.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:100%;"&gt;&lt;span class="Apple-style-span"  style="font-size:13px;"&gt;-OS? Linux geeks might get a kick out of these, so make a version with linux.  Also, maybe one with XP.  Maybe even Windows 7, it's pretty efficient.   Other considerations: Windows CE, Windows XP Embedded, Google Chrome OS, FreeBSD, ReactOS? (probably not finished enough), Xandros, PCLinuxOS, Mandriva, Aurox (all easy linux distributions)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:-webkit-xxx-large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-151699059889713227?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/151699059889713227/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=151699059889713227' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/151699059889713227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/151699059889713227'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/09/cheap-tiny-computers-you-know-how-they.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-6280434059535991025</id><published>2009-09-26T02:11:00.001-07:00</published><updated>2009-09-26T02:15:19.284-07:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Night Vision Without Electronics&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;a way to have night vision goggles&lt;br /&gt;-in full color&lt;br /&gt;-not requiring any electronics&lt;br /&gt;-perfect resolution&lt;br /&gt;&lt;br /&gt;Use BINOCULARS except having a magnification of exactly 1x. &lt;br /&gt;if your front lenses are, say, twice as wide as your viewing lenses, your view will be gathering 4x as much light.  if they're three times as wide your view will be gathering 8 times as much light, etc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-6280434059535991025?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/6280434059535991025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=6280434059535991025' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/6280434059535991025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/6280434059535991025'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/09/night-vision-without-electronics-way-to.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-4644494986882884910</id><published>2009-09-15T16:11:00.000-07:00</published><updated>2009-09-15T16:30:23.974-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='feature suggestion'/><category scheme='http://www.blogger.com/atom/ns#' term='idea'/><category scheme='http://www.blogger.com/atom/ns#' term='feature'/><category scheme='http://www.blogger.com/atom/ns#' term='suggestion'/><category scheme='http://www.blogger.com/atom/ns#' term='gui'/><category scheme='http://www.blogger.com/atom/ns#' term='menus'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Grey WHAT!?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The most frustrating thing in today's software that's common to all applications, by design, and unnecessary, is greyed-out menu choices.  I mean I understand the need for greying out choices, but the frustrating thing is that apps don't tell you /why/ a given choice is greyed out at a given time, and it's not at all clear in the majority of cases.  &lt;br /&gt;&lt;br /&gt;My idea is simple: provide tooltips when you hover over a greyed-out choice that give a brief mention of why the option is greyed out, and/or what you can do to rectify it.  Applications could do this manually, but it would be easier if provided as a feature of the Windows (and/or even Linux) API, and that would also encourage the use of this new GUI feature.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-4644494986882884910?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/4644494986882884910/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=4644494986882884910' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/4644494986882884910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/4644494986882884910'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/09/grey-what-most-frustrating-thing-in.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-2109929514950689757</id><published>2009-09-08T11:29:00.000-07:00</published><updated>2009-09-15T16:32:01.215-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='idea'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='search engine'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Tailored Search Results&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Google should adapt the primacy of its search results for the individual based on their past clicking history for related searches.  They already have a program to do this on a global scale, but not for the individual, afaik.  This way subsequent searches for the same or a related thing will get you faster to your results.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-2109929514950689757?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/2109929514950689757/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=2109929514950689757' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/2109929514950689757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/2109929514950689757'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/09/google-should-adapt-primacy-of-its.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-4541806344284559994</id><published>2009-09-08T01:40:00.000-07:00</published><updated>2009-09-08T04:21:47.671-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='sockets'/><category scheme='http://www.blogger.com/atom/ns#' term='tcp/ip'/><category scheme='http://www.blogger.com/atom/ns#' term='ssl'/><category scheme='http://www.blogger.com/atom/ns#' term='transport layer'/><category scheme='http://www.blogger.com/atom/ns#' term='transport-layer'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><category scheme='http://www.blogger.com/atom/ns#' term='networking'/><category scheme='http://www.blogger.com/atom/ns#' term='connectivity'/><category scheme='http://www.blogger.com/atom/ns#' term='tcp'/><category scheme='http://www.blogger.com/atom/ns#' term='ip'/><category scheme='http://www.blogger.com/atom/ns#' term='idea'/><category scheme='http://www.blogger.com/atom/ns#' term='protocol'/><category scheme='http://www.blogger.com/atom/ns#' term='net'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;For Internet Persistence&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A standard for a transport-layer internet protocol that will automatically and try to re-connect to a host indefinitely on unexpected connection loss or ping timeout, and not break the connection for the application layer in the meantime.  Also it should try to reconnect based on domain name instead of IP, because IPs can change -- except where the host doesn't have a domain name or DNS fails.  I guess it should also send the host a Session ID so that it knows which connection is being attempted to reestablish.  One other possibility would be to also allow the host to simultaneously try to reconnect to the client, via a standard listening port for the protocol, though that may be superfluous. &lt;br /&gt;&lt;br /&gt;I think this capability would almost automatically make a lot of internet things refreshingly simpler and even more reliable..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-4541806344284559994?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/4541806344284559994/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=4541806344284559994' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/4541806344284559994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/4541806344284559994'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/09/more-persistence-on-internet-standard.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-6285130086140205824</id><published>2009-09-08T01:21:00.000-07:00</published><updated>2009-09-08T04:23:18.782-07:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Enough with the Gay Plastic Halloween Periphenelia&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;For halloween - get a stunt dummy, that approximates human flexibility, dress him all up, but use lifecasting with makeup for the hands and face.  you should probably carve his head smaller before you add the face so that the result isn't unnaturally large.  give him a normal-looking wig too.  set up some sort of large hook, which goes all the way through him from the back and out his chest, which he hangs from.  make him wear a white t-shirt, and inject a cup or so of fake blood at the puncture point to let it saturate the t-shirt in a realistic pattern.  also inject some into his mouth until it oozes down his face.  set up the whole contraption in your front yard, perhaps as an addition to your garden. as an added touch, you could put a (slow) pump inside him and a reservoir of fake blood that makes sure blood is constantly, but verry slowly, flowing from his mouth and down his face, hopefully dripping off at some point.  also, just to give it a bit more context, hang a sheet of paper on him with the words  "Trick-or-Treaters Be Warned".&lt;br /&gt;&lt;br /&gt;oh, and you might want to let the police in on it ahead-of-time because if you've done it right somebody's going to end up calling them. :)&lt;br /&gt;&lt;br /&gt;oh, i guess you'll need lifecasted arms too with seemless integration with the hands, unless you use a long-sleeved shirt. but if you use a long-sleeved *white* shirt i think it'll look a bit hackneyed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-6285130086140205824?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/6285130086140205824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=6285130086140205824' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/6285130086140205824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/6285130086140205824'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/09/enough-with-gay-plastic-halloween.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-4692745045230702425</id><published>2009-08-30T18:40:00.000-07:00</published><updated>2009-09-08T04:25:31.095-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='speedometers'/><category scheme='http://www.blogger.com/atom/ns#' term='idea'/><category scheme='http://www.blogger.com/atom/ns#' term='cruise control'/><category scheme='http://www.blogger.com/atom/ns#' term='speedometer'/><category scheme='http://www.blogger.com/atom/ns#' term='cars'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Sleeker Cruise Control&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;for cars: A speedometer that's closer up, or a secondary pseudo-speedometer, that you can just touch a particular mph on it and the car will gradually speed up to that mph and stay there.  it'll be just like regular cruise control, but with a cooler and more convenient interface.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-4692745045230702425?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/4692745045230702425/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=4692745045230702425' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/4692745045230702425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/4692745045230702425'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/08/sleeker-cruise-control-for-cars.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-2121635923541861728</id><published>2009-08-30T13:49:00.000-07:00</published><updated>2009-08-30T13:50:44.559-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='milk'/><category scheme='http://www.blogger.com/atom/ns#' term='chocolate milk'/><category scheme='http://www.blogger.com/atom/ns#' term='idea'/><category scheme='http://www.blogger.com/atom/ns#' term='coconut'/><category scheme='http://www.blogger.com/atom/ns#' term='coconut milk'/><category scheme='http://www.blogger.com/atom/ns#' term='chocolate'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Chocolate Coconut Milk&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Three Words: Chocolate Coconut Milk&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-2121635923541861728?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/2121635923541861728/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=2121635923541861728' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/2121635923541861728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/2121635923541861728'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/08/chocolate-coconut-milk-three-words.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-3996634439392612771</id><published>2009-07-24T15:45:00.001-07:00</published><updated>2010-01-04T17:11:19.253-08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;JITting native code&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Although arguably it hasn't happened yet, JIT technology can theoretically exceed statically compiled C code, as far as I know. &lt;br /&gt;&lt;br /&gt;What if there were a way to take execution of a normal (perhaps compiled from C) native program, trace its execution paths, and then do in-lining and whatever else JIT functions upon it?  Perhaps just treat the x86 like any other bytecode and emulate it, except or the JIT'd parts which are more-or-less directly copied?  &lt;br /&gt;&lt;br /&gt;Although the problem with that is that emulating x86 (even on x86) is probably way slower than emulating normal language bytecodes, because x86 instructions are a lot more primitive and involve the architecture's peculiarities of register usage, etc.  But I wonder if there's a way to trace paths without emulating it?  It seems that somehow V8 does that, because they claim that it never executes bytecode.  I don't really understand it myself.&lt;br /&gt;&lt;br /&gt;*update*&lt;br /&gt;idea: &lt;br /&gt;modify the compiler to include calls in the (originally statically compiled) code that update an object by telling it that it execution passed through that code.  then another thread can analyze this data  and based on waht's there, and perhaps based on other meta-data included in the compiled program such as function boundaries and so on (if not even a complete or semi-complete bytecode, that's never executed), can take those paths and do things like in-lining, condition guards, moving variables to registers, and so on by creating new code sections in memory.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-3996634439392612771?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/3996634439392612771/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=3996634439392612771' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/3996634439392612771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/3996634439392612771'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/07/although-arguably-it-hasnt-happened-yet.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-9006539096229258511</id><published>2009-07-10T03:45:00.000-07:00</published><updated>2009-07-10T14:11:40.116-07:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Better LEDs?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I heard that one of the things making LEDs inefficient is the fact that, since they're encased in plastic, half the light is refracted back in off the edges of the plastic.  That's a 50% reduction in efficiency.. &lt;br /&gt;&lt;br /&gt;Why can't we just put LEDs inside glass bulbs (or, for that matter, plastic bulbs) like we do incandescent lights?  That is, nothing contacting the surface of the diode. &lt;br /&gt;&lt;br /&gt;Another idea: why are we using many small conventional-sized LEDs to make up light sources that actually put out a decent amount of light?  Why don't we just make single LEDs with longer and/or wider diodes to put out more light?  Maybe put them in larger zig-zag patterns?&lt;br /&gt;&lt;br /&gt;Not that I would buy LED lighting anyway, until the QLEDs come out.  &lt;br /&gt;&lt;br /&gt;I also heard something about using salmon sperm to intensify LED light, something about trapping photons within the polymers or whatever.  I'm not sure how I feel about us sexually violating salmon for our energy-efficient lighting purposes, but I don't see a reason why we can't synthesize the critical, uhh, ingredient in our labs.  Once I mixed a bunch of soap with a little bit of hot water and let it cool for a while.  ..That stuff was pretty damned gooey.&lt;br /&gt;&lt;br /&gt;So here's the ideal solution:&lt;br /&gt;&lt;br /&gt;* Quantum Dot LEDs&lt;br /&gt;* Encased in a vacuum&lt;br /&gt;* Widened/elongated actual diodes&lt;br /&gt;* Synthesized polymers or, alternatively, a lot of soap, water and time.&lt;br /&gt;&lt;br /&gt;There, ridiculously energy-efficient natural light at the color temperature of your choice.&lt;br /&gt;&lt;br /&gt;I suspect that what would be even better, though, is thermally isolated, adjustable-temperature, &lt;span style="font-style:italic;"&gt;actual blackbodies&lt;/span&gt;..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-9006539096229258511?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/9006539096229258511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=9006539096229258511' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/9006539096229258511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/9006539096229258511'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/07/leds-i-heard-that-one-of-things-making.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-1863263307857961593</id><published>2009-07-09T10:22:00.000-07:00</published><updated>2009-07-09T11:22:25.289-07:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Idea for a nutrition website&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The website has a database of foods and which nutrients they contain (not just on the vitamin and mineral level, but also proteins, enzymes, glyconutrients, etc. etc.), and knows in what proportions the body needs all these nutrients&lt;br /&gt;&lt;br /&gt;Then the user can put in things they definitely want to eat, and how much of them, and&lt;br /&gt;the website can fill in for them what the rest of their diet needs to consist of to get the full gamut of nutrients.  Then from those suggested foods they can also exclude certain things and/or choose between options and maybe specify how much of what they want to eat, which it then reacts to with further suggestions, and so on.&lt;br /&gt;&lt;br /&gt;A wide variety of foods is really needed for good health, and hopefully the website's flow of suggestions would reflect that fact.&lt;br /&gt;&lt;br /&gt;The person should probably be able to, or maybe have to, put in certain parameters regarding their body, such as weight, height, gender, age, fat index, blood pressure, cholesterol, etc.&lt;br /&gt;&lt;br /&gt;Perhaps they can also put in specific areas they want to improve, such as "hair, skin and nails"&lt;br /&gt;&lt;br /&gt;Allegedly nutrition isn't as simple as just ingesting this or that nutrient, in that certain nutrients and together and one might not be effective without the other.  The site should also be aware of these interdependencies.&lt;br /&gt;&lt;br /&gt;The user should be able to specify whether they want only natural foods, only vegetarian, only vegan, no red meat, only live foods, etc.&lt;br /&gt;&lt;br /&gt;They might also should be able to include allergies to specific substances, lactose intolerance, etc., although maybe the same effect would be just as easily or easilier achieved through the exclusion of specific suggested foods.&lt;br /&gt;&lt;br /&gt;It would be nice if this website didn't just have a database of staple foods, but also a vast database of specific products.  And that should also come with the ability to exclude certain substances like polyunsaturated fats, aspartame, partially hydrogenated oils, high fructose corn syrup, sucralose, etc. — although the website could also exclude all such things, or least the really bad ones like what I just mentioned, by nature.&lt;br /&gt;&lt;br /&gt;Though the specific products idea carries the problem of certain products only being available in certain areas and certain grocery store chains.&lt;br /&gt;&lt;br /&gt;Another consideration is that, while certain substances (like sodium) are listed in terms of specific quantities, most of the ingredients, even though they're listed in &lt;i&gt;order&lt;/i&gt; of quantity, don't specify their actual amounts.   So to really effectively be able do the products idea, the website's owners would have to "rock the boat", in a sense, and get manufacturers to release specific ingredient amounts, by making the deal with them that, in exchange for releasing that data, their products can be suggested within, and thus promoted by, the world's most useful dietary website.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-1863263307857961593?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/1863263307857961593/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=1863263307857961593' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/1863263307857961593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/1863263307857961593'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/07/idea-for-nutrition-website-website-has.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-7174257917498669475</id><published>2009-06-18T15:50:00.001-07:00</published><updated>2009-06-18T16:09:20.540-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ide'/><category scheme='http://www.blogger.com/atom/ns#' term='idea'/><category scheme='http://www.blogger.com/atom/ns#' term='feature'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;for faster programming&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;to eliminate a lot of needless typing, the F-keys could be mapped to the most common key words and symbols for the given language.  of course, symbols that don't require the shift key would be left out.  &lt;br /&gt;&lt;br /&gt;intellisense helps but it's not the same.  it's easier just to type 'new', for example, than to try to let intellisense complete it for you.  with this system typing 'new' would be one keypress.&lt;br /&gt;&lt;br /&gt;this could also support binding to any arbitrary words/symbols you want.  &lt;br /&gt;&lt;br /&gt;the ide could even optionally track what you're using most and bind those things and have a display at the top of the screen constantly showing you the current bindings. &lt;br /&gt;&lt;br /&gt;the only problem is that the F-keys are so far up on the keyboard that it may defeat the purpose -- having to shift your entire hand every time you use one.  one solution could be to have a second key below the spacebar.  it would be like another ctrl, shift, or alt, but more easily accessible.  perhaps call it Func.  whenever the Func key is pressed, the entire keyboard is mapped to symbols/keywords/whatevers.&lt;br /&gt; the only problem with that is (besides the fact that it requires somebody to manufacture a new kind of keyboard), it's radical enough that probably only extreme programmers (not to be confused with eXtreme Programmers) would be interested in it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-7174257917498669475?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/7174257917498669475/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=7174257917498669475' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/7174257917498669475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/7174257917498669475'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/06/for-faster-programming-to-eliminate-lot.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-82909411167834570</id><published>2009-06-15T19:15:00.000-07:00</published><updated>2009-09-08T01:53:08.790-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='idea'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Easier Integration for Programming Languages&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;inhahe (9:59:43 PM): you know what would be neat &lt;br /&gt;inhahe (10:00:16 PM): a scripting language like python, supported in .net (ironpython already is this), but with the ability to arbitrarily create functions and classes in c# or msil &lt;br /&gt;inhahe (10:00:24 PM): within the same source file&lt;br /&gt;&lt;br /&gt;I mentioned it in the context of .net, but the idea doesn't have to be limited to .net.  For example it could be just Python (or any other scripting language) intermixed with, say, C++, just without having to use external modules.  However that kind of requires hacking two different languages together, but in the .net case both IronPython and C# compile to .net so it's not such a hack.  The point of doing it is that Python (or some other scripting language) is higher-level than, say, C++ or even C#.  (I believe that even though IronPython compiles to CLI, it's slower than C#, VB.net, etc. because of its higher level of dynamicism.)  So by being able to include different levels of languages within the same source (hey, how about being able to in-line direct CLI, too?) it makes it easier for people to take advantage of both RAD languages and high-performance languages at the same time by writing the most CPU-intensive loops in a lower level language.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-82909411167834570?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/82909411167834570/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=82909411167834570' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/82909411167834570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/82909411167834570'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/06/inhahe-95943-pm-you-know-what-would-be.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-3336093650498450433</id><published>2009-06-11T21:40:00.000-07:00</published><updated>2009-06-11T21:42:01.242-07:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;share&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;new wiki for sharing ideas for my possible OS: &lt;a href="http://inhahe.kicks-ass.net:8000"&gt;inhahe.kicks-ass.net:8000&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-3336093650498450433?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/3336093650498450433/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=3336093650498450433' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/3336093650498450433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/3336093650498450433'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/06/share-new-wiki-for-sharing-ideas-for-my.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-8209509104328935907</id><published>2009-06-11T20:49:00.000-07:00</published><updated>2009-06-11T21:37:01.407-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cpu'/><category scheme='http://www.blogger.com/atom/ns#' term='os'/><category scheme='http://www.blogger.com/atom/ns#' term='idea'/><category scheme='http://www.blogger.com/atom/ns#' term='ipc'/><category scheme='http://www.blogger.com/atom/ns#' term='microkernel'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Per-function memory protection&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;There should be a way for the CPU to support confining a function's memory access without putting that function in another thread.  By modularizing something in that way you incur the overheads of context switching and IPC, but without it a module carries the risk of corrupting the memory for the whole process and making the caller unstable.  What's needed is for the CPU to support memory segments that apply only for a particular function call, so that if it segfaults we can catch that and have the function return a failure.  So how do we do this?&lt;br /&gt;&lt;br /&gt;* We could provide an opcode for switching only the segment registers&lt;br /&gt;* We could set up associations for the MMU beteen certain EIP ranges and certain segments&lt;br /&gt;* We could create a second "call" opcode that takes a second parameter which is an index to a segment context&lt;br /&gt;&lt;br /&gt;Would this actually save any time, or does switching segments actually imply most of the overhead you'd get from a complete context-switch anyway?&lt;br /&gt;&lt;br /&gt;If it works, this would allow us to have the benefits of a monolithic kernel and a microkernel at the same time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-8209509104328935907?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/8209509104328935907/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=8209509104328935907' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/8209509104328935907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/8209509104328935907'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/06/per-function-memory-protection-there.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-5225607663359843286</id><published>2009-04-23T20:06:00.000-07:00</published><updated>2009-04-23T20:18:20.509-07:00</updated><title type='text'></title><content type='html'>there should be an OLE function to drag and drop colors.  &lt;br /&gt;&lt;br /&gt;so when configuring something, just drag a color from anywhere - another application that you're trying to make it look like, a color picker, a theme palette on the web, whatever.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-5225607663359843286?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/5225607663359843286/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=5225607663359843286' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/5225607663359843286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/5225607663359843286'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/04/there-should-be-ole-function-to-drag.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-3628879285125634144</id><published>2009-04-23T05:12:00.000-07:00</published><updated>2009-04-23T06:38:14.087-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hashtable'/><category scheme='http://www.blogger.com/atom/ns#' term='dictionary'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;efficient hashtable&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;i've never seen a hashtable implementation, but i don't see how it could be more efficient than what i've come up with.  according to the chart at http://burtleburtle.net/bob/hash/doobs.html , the 'generalized' crc algorithm has by far the best uniformity, and is one of the faster ones on the list (depending on how long your keys are, i guess).  most, almost all, of those functions like to have table sizes in powers of two.  so here's the algorithm, in unoptimized quasi-psuedo-code:&lt;br /&gt;&lt;pre&gt;def init(orig_size): # must be power of two!&lt;br /&gt;  table_size = orig_size&lt;br /&gt;  table = malloc(table_size*whatever)&lt;br /&gt;  current_hash_bitmask = table_size-1&lt;br /&gt;&lt;br /&gt;def add_key(key, value):&lt;br /&gt;  if table_size &lt; (num_keys+1)*2:&lt;br /&gt;    double_table_size()&lt;br /&gt;  _add_key(table, hash_function(key), key, value)&lt;br /&gt;  num_keys++  &lt;br /&gt;&lt;br /&gt;def del_key(key):&lt;br /&gt;  _del_key(key)&lt;br /&gt;  num_keys--&lt;br /&gt;  if table_size/2 &gt; num_keys:&lt;br /&gt;    halve_table()&lt;br /&gt;  &lt;br /&gt;def double_table():&lt;br /&gt;  table_size *= 2&lt;br /&gt;  current_hash_bitmask = table_size-1&lt;br /&gt;  new_table = malloc(table_size)&lt;br /&gt;  for 32_bit_hash, key, value in table:&lt;br /&gt;    _add_key(new_table, 32_bit_hash &amp; current_hash_bitmask, key, value)&lt;br /&gt;  table = new_table&lt;br /&gt;&lt;br /&gt;def halve_table():&lt;br /&gt;  table_size /= 2&lt;br /&gt;  current_hash_bitmask = table_size-1&lt;br /&gt;  new_table = malloc(table_size)&lt;br /&gt;  for 32_bit_hash, key, value in table:&lt;br /&gt;    _add_key(new_table, 32_bit_hash &amp; current_hash_bitmask, key, value)&lt;br /&gt;  table = new_table&lt;br /&gt;&lt;br /&gt;def _add_key(table, 32_bit_hash, key, value);&lt;br /&gt;  insert 32_bit_hash, key and value into the linked list at &lt;br /&gt;      table[32_bit_hash &amp; current_hash_bitmask]&lt;br /&gt;&lt;br /&gt;def del_key(key):&lt;br /&gt;  should be obvious&lt;br /&gt;&lt;br /&gt;def get_key(key):&lt;br /&gt;  should be obvious&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;---&lt;br /&gt;&lt;br /&gt;i started making a very efficient asm version of this, but i haven't finished because i don't have a memory allocation function yet, and i'm really tired right now, so i'll put something up later.  here's what i have so far:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;gencrctab:&lt;br /&gt;  dd 0x46d1e192, 0x66edf9aa, 0x927fc9e5, 0xa53baacc, 0x29b47658, 0x5a411a01&lt;br /&gt;  dd 0x0e66d5bd, 0x0dd5b1db, 0xcb38340e, 0x04d4ebb6, 0x98bc4f54, 0x36f20f2c&lt;br /&gt;  dd 0x4a3047ed, 0x1ec1e0eb, 0x568c0c1f, 0x6a731432, 0x81367fc6, 0xe3e25237&lt;br /&gt;  dd 0xe7f64884, 0x0fa59f64, 0x4f3109de, 0xf02d61f5, 0x5daec03b, 0x7f740e83&lt;br /&gt;  dd 0x056ff2d8, 0x2026cc0a, 0x7ac2112d, 0x82c55605, 0xb0911ef2, 0xa7b88e4c&lt;br /&gt;  dd 0x89dca282, 0x4b254d27, 0x7694a6d3, 0xd229eadd, 0x8e8f3738, 0x5bee7a55&lt;br /&gt;  dd 0x012eb6ab, 0x08dd28c8, 0xb5abc274, 0xbc7931f0, 0xf2396ed5, 0xe4e43d97&lt;br /&gt;  dd 0x943f4b7f, 0x85d0293d, 0xaed83a88, 0xc8f932fc, 0xc5496f20, 0xe9228173&lt;br /&gt;  dd 0x9b465b7d, 0xfda26680, 0x1ddeab35, 0x0c4f25cb, 0x86e32faf, 0xe59fa13a&lt;br /&gt;  dd 0xe192e2c4, 0xf147da1a, 0x67620a8d, 0x5c9a24c5, 0xfe6afde2, 0xacad0250&lt;br /&gt;  dd 0xd359730b, 0xf35203b3, 0x96a4b44d, 0xfbcacea6, 0x41a165ec, 0xd71e53ac&lt;br /&gt;  dd 0x835f39bf, 0x6b6bde7e, 0xd07085ba, 0x79064e07, 0xee5b20c3, 0x3b90bd65&lt;br /&gt;  dd 0x5827aef4, 0x4d12d31c, 0x9143496e, 0x6c485976, 0xd9552733, 0x220f6895&lt;br /&gt;  dd 0xe69def19, 0xeb89cd70, 0xc9bb9644, 0x93ec7e0d, 0x2ace3842, 0x2b6158da&lt;br /&gt;  dd 0x039e9178, 0xbb5367d7, 0x55682285, 0x4315d891, 0x19fd8906, 0x7d8d4448&lt;br /&gt;  dd 0xb4168a03, 0x40b56a53, 0xaa3e69e0, 0xa25182fe, 0xad34d16c, 0x720c4171&lt;br /&gt;  dd 0x9dc3b961, 0x321db563, 0x8b801b9e, 0xf5971893, 0x14cc1251, 0x8f4ae962&lt;br /&gt;  dd 0xf65aff1e, 0x13bd9dee, 0x5e7c78c7, 0xddb61731, 0x73832c15, 0xefebdd5b&lt;br /&gt;  dd 0x1f959aca, 0xe801fb22, 0xa89826ce, 0x30b7165d, 0x458a4077, 0x24fec52a&lt;br /&gt;  dd 0x849b065f, 0x3c6930cd, 0xa199a81d, 0xdb768f30, 0x2e45c64a, 0xff2f0d94&lt;br /&gt;  dd 0x4ea97917, 0x6f572acf, 0x653a195c, 0x17a88c5a, 0x27e11fb5, 0x3f09c4c1&lt;br /&gt;  dd 0x2f87e71b, 0xea1493e4, 0xd4b3a55e, 0xbe6090be, 0xaf6cd9d9, 0xda58ca00&lt;br /&gt;  dd 0x612b7034, 0x31711dad, 0x6d7db041, 0x8ca786b7, 0x09e8bf7a, 0xc3c4d7ea&lt;br /&gt;  dd 0xa3cd77a8, 0x7700f608, 0xdf3de559, 0x71c9353f, 0x9fd236fb, 0x1675d43e&lt;br /&gt;  dd 0x390d9e9a, 0x21ba4c6b, 0xbd1371e8, 0x90338440, 0xd5f163d2, 0xb140fef9&lt;br /&gt;  dd 0x52f50b57, 0x3710cf67, 0x4c11a79c, 0xc6d6624e, 0x3dc7afa9, 0x34a69969&lt;br /&gt;  dd 0x70544a26, 0xf7d9ec98, 0x7c027496, 0x1bfb3ba3, 0xb3b1dc8f, 0x9a241039&lt;br /&gt;  dd 0xf993f5a4, 0x15786b99, 0x26e704f7, 0x51503c04, 0x028bb3b8, 0xede5600c&lt;br /&gt;  dd 0x9cb22b29, 0xb6ff339b, 0x7e771c43, 0xc71c05f1, 0x604ca924, 0x695eed60&lt;br /&gt;  dd 0x688ed0bc, 0x3e0b232f, 0xf8a39c11, 0xbae6e67c, 0xb8cf75e1, 0x970321a7&lt;br /&gt;  dd 0x5328922b, 0xdef3df2e, 0x8d0443b0, 0x2885e3ae, 0x6435eed1, 0xcc375e81&lt;br /&gt;  dd 0xa98495f6, 0xe0bff114, 0xb2da3e4f, 0xc01b5adf, 0x507e0721, 0x6267a36a&lt;br /&gt;  dd 0x181a6df8, 0x7baff0c0, 0xfa6d6c13, 0x427250b2, 0xe2f742d6, 0xcd5cc723&lt;br /&gt;  dd 0x2d218be7, 0xb91fbbb1, 0x9eb946d0, 0x1c180810, 0xfc81d602, 0x0b9c3f52&lt;br /&gt;  dd 0xc2ea456f, 0x1165b2c9, 0xabf4ad75, 0x0a56fc8c, 0x12e0f818, 0xcadbcba1&lt;br /&gt;  dd 0x2586be56, 0x952c9b46, 0x07c6a43c, 0x78967df3, 0x477b2e49, 0x2c5d7b6d&lt;br /&gt;  dd 0x8a637272, 0x59acbcb4, 0x74a0e447, 0xc1f8800f, 0x35c015dc, 0x230794c2&lt;br /&gt;  dd 0x4405f328, 0xec2adba5, 0xd832b845, 0x6e4ed287, 0x48e9f7a2, 0xa44be89f&lt;br /&gt;  dd 0x38cbb725, 0xbf6ef4e6, 0xdc0e83fa, 0x54238d12, 0xf4f0c1e3, 0xa60857fd&lt;br /&gt;  dd 0xc43c64b9, 0x00c851ef, 0x33d75f36, 0x5fd39866, 0xd1efa08a, 0xa0640089&lt;br /&gt;  dd 0x877a978b, 0x99175d86, 0x57dfacbb, 0xceb02de9, 0xcf4d5c09, 0x3a8813d4&lt;br /&gt;  dd 0xb7448816, 0x63fa5568, 0x06be014b, 0xd642fa7b, 0x10aa7c90, 0x8082c88e&lt;br /&gt;  dd 0x1afcba79, 0x7519549d, 0x490a87ff, 0x8820c3a0&lt;br /&gt;&lt;br /&gt;gencrc :&lt;br /&gt;  pop edi          ; string object&lt;br /&gt;  mov ecx, [edi]   ; str len&lt;br /&gt;  add edi, 4       ; start of str&lt;br /&gt;  pop eax          ; hash function &lt;br /&gt;  gencrcloop:&lt;br /&gt;    mov ebx, eax&lt;br /&gt;    shr ebx, 8    &lt;br /&gt;    xor al, [edi+ecx-1]&lt;br /&gt;    mov eax, [eax+gencrctab]&lt;br /&gt;    xor eax, ebx&lt;br /&gt;    loop gencrcloop&lt;br /&gt;&lt;br /&gt;tablesize:&lt;br /&gt;  pop ecx      ; number of entries&lt;br /&gt;  bsr ebx, ecx ; bsr == expensive&lt;br /&gt;  mov eax, 4&lt;br /&gt;  shl eax, ebx ; this should be the smallest power of 2 that's at least twice eax.&lt;br /&gt;  ret&lt;br /&gt;&lt;br /&gt;addkey:&lt;br /&gt;  pop eax          ; table object&lt;br /&gt;  pop edi          ; string object&lt;br /&gt;  pop ebx          ; value&lt;br /&gt;  mov ecx, [eax+4] ; number of keys&lt;br /&gt;  mov edx, [eax]   ; table size&lt;br /&gt;  inc ecx&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-3628879285125634144?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/3628879285125634144/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=3628879285125634144' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/3628879285125634144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/3628879285125634144'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/04/efficient-hashtable-ive-never-seen.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-4725784334785848667</id><published>2009-04-23T03:58:00.000-07:00</published><updated>2009-04-23T05:11:34.576-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='efficient'/><category scheme='http://www.blogger.com/atom/ns#' term='memory allocation'/><category scheme='http://www.blogger.com/atom/ns#' term='malloc'/><category scheme='http://www.blogger.com/atom/ns#' term='idea'/><category scheme='http://www.blogger.com/atom/ns#' term='memory management'/><category scheme='http://www.blogger.com/atom/ns#' term='algorithm'/><category scheme='http://www.blogger.com/atom/ns#' term='compiler'/><category scheme='http://www.blogger.com/atom/ns#' term='allocation'/><category scheme='http://www.blogger.com/atom/ns#' term='language design'/><category scheme='http://www.blogger.com/atom/ns#' term='heap'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Efficient Malloc&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So say you have some flat memory space and you're making a memory manager for it.  It's not involved in page tables.  This is something in the same vein as the "buddy block" system, only better.&lt;br /&gt;&lt;br /&gt;Have an array of doubly-linked lists, the indexes to the array being steps of minimum amounts of memory to allocate.  For example, the first linked list pointed to could be for chunks of at least 4 bytes, the second could be for chunks of at least 8, the third for chunks of at least 16, etc.  Perhaps after a certain point we would stop doubling it, though, for example, 1024, 2048, 3072, 4096.., although we may still increase our granularity at certain points (while still making it possible to, via a formula, look directly to the right index without a search). &lt;br /&gt;&lt;br /&gt;Each linked list is a linked list of available chunks of memory of a size in between its minimum size and the next-highest minimum size in the array.  The end of the linked list simply runs off to the beginning of the next linked list, so that if all memory is taken for that chunk size then it automatically resorts to the next higher chunk size. &lt;br /&gt;&lt;br /&gt;Of course, when a chunk is allocated it's removed from the linked list.  When the chunk is freed it's inserted into the linked list.  We can keep a hashtable of memory locations that remembers their sizes and locations of their list elements, or we can just return a memory object that contains more than just a pointer to the free memory.&lt;br /&gt;&lt;br /&gt;Now, here's the method for consolidating otherwise adjacent blocks of free memory: when memory is freed, the addresses just before the beginning and just after the end of the chunk can be looked up in the hashtable.  If the hashtable says that the memory chunk whose last byte is pointed to by the former is a free one, then the one we've just freed is conjoined with it (the exact location of the linked list item for the other block being stored within the hashtable value), and the same goes for if the memory chunk whose first memory location is pointed to by the latter is recorded as being free.  Obviously we update the hashtable whenever we conjoin or split up some free memory, with both the chunk's first and last memory locations. &lt;br /&gt;&lt;br /&gt;Oh, I forgot to mention: there is never any searching of these linked lists, because you always pop an item from the beginning of one to allocate a chunk, and insert one somewhere (for example, at the beginning of the appropriate linked list) to free one.  (Obviously collisions can and will occur within the hashtable, but that only requires searching 2 or 3 elements now and then, by comparing ints.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-4725784334785848667?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/4725784334785848667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=4725784334785848667' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/4725784334785848667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/4725784334785848667'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/04/efficient-malloc-so-say-you-have-some.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-7755575207005427550</id><published>2009-04-21T14:04:00.000-07:00</published><updated>2009-04-21T14:30:42.491-07:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;'Nother sort idea: Hash Sort&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;so if a hash function can distribute keys uniformly in slot space, then all we have to do is make a hash function that distributes uniformly and guarantees that the slots are in alphabetical order, then we can iterate over the slots and do compares for the ones with multiple entries in one slot.  a hash function to distribute alphabetically for strings would be something like: num_slots*s[0]/256 + num_slots*s[1]/512 + num_slots*s[2]/1024 etc.  of course this doesn't work very well if your strings actually have some sort of pattern to them, like for example they're readable. :p&lt;br /&gt;&lt;br /&gt;since it's probably impossible to guarantee uniformity this way, you may want to use an n*n hash table.  or perhaps an n*n*n.  etc.&lt;br /&gt;&lt;br /&gt;i guess you could say this algorithm is approximately O(n*log_256 k) where k is average element length in bytes?  assuming you're not using unicode..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-7755575207005427550?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/7755575207005427550/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=7755575207005427550' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/7755575207005427550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/7755575207005427550'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/04/nother-sort-idea-hash-sort-so-if-hash.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-2912413459274766763</id><published>2009-03-30T06:52:00.000-07:00</published><updated>2009-03-30T06:55:47.744-07:00</updated><title type='text'></title><content type='html'>So I just tried this experiment&lt;pre&gt;&amp;lt;html&gt;&amp;lt;body&gt;&lt;br /&gt;&amp;lt;div&gt;&lt;br /&gt;  &amp;lt;div style="height: 100%; background-color: red; float:left"&gt;&lt;br /&gt;    this&amp;lt;br/&gt;&lt;br /&gt;    is&amp;lt;br/&gt;&lt;br /&gt;    a&amp;lt;br/&gt;&lt;br /&gt;    test&lt;br /&gt;  &amp;lt;/div&gt;&lt;br /&gt;  &amp;lt;div style="background-color: blue; float:left"&gt;&lt;br /&gt;    hi&lt;br /&gt;  &amp;lt;/div&gt;&lt;br /&gt;  &amp;lt;div style="height: 100%; background-color: green; float:left"&gt;&lt;br /&gt;    foobar&lt;br /&gt;  &amp;lt;/div&gt;&lt;br /&gt;&amp;lt;/div&gt;&lt;br /&gt;&amp;lt;/body&gt;&amp;lt;/html&gt;&lt;/pre&gt;If only the outer container would auto-adjust its height (or width) according to the max height or width of its inner containers, alignment wouldn't be such a pita.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-2912413459274766763?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/2912413459274766763/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=2912413459274766763' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/2912413459274766763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/2912413459274766763'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/03/so-i-just-tried-this-experiment-if-only.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-7866196039171761846</id><published>2009-03-27T00:10:00.000-07:00</published><updated>2009-03-27T08:33:44.701-07:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;CSS Ideas&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So I'm working with CSS, and for once I'm going to try to separate content from presentation from the outset, since that's such an in thing to do these days.  &lt;br /&gt;&lt;br /&gt;Immediately a pretty big limitation of CSS came to mind in regards to doing that, exactly what they're always beating you over the head with that you're suppposed to be using CSS for. I've already written a little bit about &lt;a href="http://inhahe.nullshells.org/how_css_should_have_been_done.html"&gt;how CSS should have been different&lt;/a&gt; before, but here are some of the thoughts that came to mind now and some that have been brewing for a couple of weeks, ensuing my more recent work with &lt;a href="http://ecography.com"&gt;Ecography.com&lt;/a&gt;..&lt;br /&gt;&lt;br /&gt;So what tags do we have for containing content, other than div?  Span would be nice, except that it has strange limitations: it can't contain certain other HTML tags, and apparently it can't even contain line breaks.  So we just have div, and then whenever we don't want a damn margin, because all we want to do is demarcate data, we have to write CSS code to specify that.  Divs also by default come below each other in sequence, unlike normal information which flows left to right, so that's another thing you sometimes have go out of your way to change in CSS.  &lt;br /&gt;&lt;br /&gt;So clearly we're missing something here, something in between div and span, or at least a span that likes people.&lt;br /&gt;&lt;br /&gt;I've also seen ul's used with CSS, for menus.  You have to modify them extensively to get rid of the bullets and margins, maybe make them go left-to-right, etc.  It seems like they're being used in cases like these for something other than their intended purpose, and I tried doing the same thing in some other way than using ul's, and it didn't work.  So that implies that ul's are being used to fill in for some other shortcoming.&lt;br /&gt;&lt;br /&gt;What I really was thinking right now, though, is that the degree of separation of content from separation in CSS is very limited.  Basically you can specify sequences of information-elements and in specific hierarchies, and then display those elements and hierarchies in any way you want, but if the way you want to display it involves changing the order of the information (without using absolute positioning) that's a no-go.  That can only be done by editing the HTML or the scripting code.  Since a CSS file is designed to define only attributes of classes/tags on a syntactic level, there really isn't remotely a way for it to specify order of information.  It would have to be changed dramatically.  &lt;br /&gt;&lt;br /&gt;To preserve backward compatibility, and its ease of specifying attributes, a new kind of syntactical entity should probably just be introduced that can specify sequences and hierarchies of information.  The content itself, which would be found in the HTML code, would simply be referred to by id attributes.  In the interest of the XML movement and consistency with HTML, the new syntax should probably be HTML-like, perhaps a subset of HTML.  But then again in the interest of consistency/simplicity, why limit the HTML?  Just make it full HTML, the only difference being the referring to of information by id attribute.  And what if the HTML itself contains id attributes?  Just allow it to refer to those too, I think..  &lt;br /&gt;&lt;br /&gt;But this just begs for a much simpler and somewhat more generalized and versatile solution: a) allow *all* HTML to convey other parts of the HTML, referred to by their id attributes, and b) allow HTML to include other HTML files.  B) isn't so radical, since HTML can already include .css, .js, and image files.  We're only making it more consistent here.  &lt;br /&gt;&lt;br /&gt;Now the only problem is that there's the possibility for circular references.  It's only a philosophical problem, though, since they can easily be detected and ignored.  Meaning that the simple solution here is: Don't Code Circular References. &lt;br /&gt;&lt;br /&gt;Admittingly, it is a little awkward to have to specify that the content be hidden so that it can be shown in the correct place.  But there is a solution: relegate all such content to &amp;lt;content&gt; tags, which are automatically hidden.  Actually "content" is a rather ironic name for things that will be automatically hidden, but you get the picture: the tag can be called anything.&lt;br /&gt;&lt;br /&gt;Another shortcoming, and this is really the one that bugs me most often, is alignment.&lt;br /&gt;&lt;br /&gt;There's a *big* issue in CSS where all the CSS gurus yell DON'T USE TABLES, not for layout purposes.  Now here's the rub: people use tables for a reason.  It's *easy*.  In HTML, and in almost every other area of computer technology and life itself, simple things should be able to be done simply.  Doing the same things you can do with a table with CSS is a real P.I.T.A.  It's not at all obvious how to do it (to understate the problem), it's not quick and easy, and even a highly paid web front-end guru admitted to me that CSS has shortcomings in this area, when I asked him if there should perhaps be a CSS-equivalent to tables.&lt;br /&gt;&lt;br /&gt;Is there a way to create a feature something like tables, per se, for CSS?  I don't know, because I don't know precisely what the contention is with using tables;  i.e., in exactly what ways does using tables prevent one from customizing layout in CSS?  Tables provide alignment.  What do they disprovide, and would this same limitation apply to adding, per se, a table-like feature to CSS?  How would we do that anyway, on a semantic level?&lt;br /&gt;&lt;br /&gt;I think a more generalized/flexible solution would be to provide some kind of alignment tokenization.  Like you insert a token A at point B, then at point C say align this edge or that edge of this element with token A.  Since you don't really have a place *in* HTML *at* the right/bottom/etc edge of a layout element, then either Token A has to specify which edge of the padding, margin or border it's binding to, or Token A can simply bind to a layout element and Token B would specify which edge and such of Token A to align to. &lt;br /&gt;&lt;br /&gt;It can be much simpler than that, though.  You'll almost always want to align a left edge with a left edge, a right edge with a right edge, a border with a border, a content edge with a content edge, etc.  This symmetry can be the only thing allowed, or it can be assumed by default allowing a simpler syntax in the most common usage, probably just by leaving out extra parameters: for example, you could align B's left border with "A" (implying A's left border), "A/content" (implying the left edge of A's content), "A/right" (implying A's right border), or "A/right/content".  &lt;br /&gt;&lt;br /&gt;There should probably be even further shortcuts: for aligning both the top and bottom with another element, both the left and the right, or the content, margin and border all at once.  To align B's top and bottom with A's top and bottom, at all three box layers, we could just align "B/horiz" with "A".  To align only the top and bottom borders, align "B/horiz/border" with "A". &lt;br /&gt;&lt;br /&gt;Then of course, we could also use relative positioning via the normal syntax to shift Element B's left or right content, margin, or border left or right of A's, if we so wanted.  &lt;br /&gt;&lt;br /&gt;I've decided the only way to specify tokens we need is the id attribute.  So A is called A because that element's id="A".  This simplifies things.&lt;br /&gt;&lt;br /&gt;Exactly how to specify the alignment remains in question.  Associating somehow "B/left/border" with "A/margin" doesn't really fall into either CSS's or HTML's syntax.  There are just no conventions for associating two relatively arbitrary values.  We could just say, within B's definition, &lt;code&gt;align-top-border: A/bottom&lt;/code&gt;, but then that would combinatorily create 12 to 24 new CSS key words.  If CSS's syntax were a little more flexible, we could say &lt;code&gt;align {top-border}: A/bottom&lt;/code&gt;, or better, something like &lt;code&gt;position: relative; top-border: {align: A/bottom; whatever: 2px}&lt;/code&gt; (to align B's top border with A's bottom border and shift it down 2 pixels).  &lt;br /&gt;&lt;br /&gt;And perhaps it should be.  Then we could even then do this, for example:&lt;br /&gt;&lt;code&gt;top-margin: {position: absolute; whatever: 100px} &lt;br /&gt;bottom-margin: {position: relative; whatever: 2px}&lt;/code&gt;&lt;br /&gt;Or perhaps it would be &lt;br /&gt;&lt;code&gt;top-margin: {position: absolute; 100px};&lt;br /&gt;bottom-margin: {position: relative; 2px}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Of course another idea would be to simply have a completely separate alignment table:&lt;pre&gt;align &lt;br /&gt;  {&lt;br /&gt;  B/horiz/border: A/content;&lt;br /&gt;  C/horiz: D; &lt;br /&gt;  }&lt;/pre&gt;That syntax would have to exist alongside one of the other formulations if at all, though, because it allows no cascading definitions, it's not object/class-oriented, and it can't be done in-line.&lt;br /&gt;&lt;br /&gt;This idea so far can't do everything tables do.  It can't size a bunch of cells (divs) according to the widest or highest automatic size.  Do we *really* need to do that for content layout, though?  (Actually, i think we do.)  And what if we wanted to align two or more left or top margins where they would naturally go if it were one long margin?  So in these cases we're not specifically aligning A after B, nor B after A, but we want those margins all in the same alignment class.  What could we do?  Probably the best solution is just to align them to an arbitrary common name, the same way in which we would otherwise use an id.  This name would never be followed by /top, /horiz/content, etc., though, because that would be meaningless.  &lt;br /&gt;&lt;br /&gt;*Now* our alignment can do everything tables can do (I think?).  &lt;br /&gt;&lt;br /&gt;But this behavior should not be an automatic fall-back when no object happens to have the given name as its id, because it's doing a rather different thing.  But instead of inventing new key words to align this way, we probably should just precede the name with a special symbol, like a %.&lt;pre&gt;&amp;lt;div style="align-top: %hitop; align-bottom: %hibot; float:left"&gt;&lt;br /&gt;  This div's&amp;lt;br/&gt;&lt;br /&gt;  height adjusts&amp;lt;br/&gt;&lt;br /&gt;  to the height&amp;lt;br/&gt;&lt;br /&gt;  of its text.&lt;br /&gt;&amp;lt;/div&gt;&lt;br /&gt;&amp;lt;div style="align-top: %hitop; float:left"&gt;&lt;br /&gt;  This div is smaller.&lt;br /&gt;&amp;lt;/div&gt;&lt;br /&gt;&amp;lt;div style="align-top: %hitop; align-bottom: %hibot; float:left&gt;&lt;br /&gt;  This div goes down just as far as the first div does.&lt;br /&gt;&amp;lt;/div&gt;&lt;br /&gt;&lt;/pre&gt;That was just an example to summarize and to show how simple it can all be, but it also raises a minor issue I hadn't thought of: how can we do a "horiz" or "vertical" align (implying left &amp; right or top &amp; bottom) with a %-preceded name?  Well I can't think of a sound and consistent way, so we may have to do it just as coded above.  We *could* just have the right or bottom margin be a second value that's used only for "horiz" or "vertical" alignments, while anything else referring to that name simply uses the top or the left value, and if only *one* element does a horiz or vertical align with it, but other elements do single aligns, then said element would only align its left or its top side.  But that's if CSS has a "tolerant" coding philosophy, which I know browsers do but I don't know if the w3c does.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-7866196039171761846?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/7866196039171761846/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=7866196039171761846' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/7866196039171761846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/7866196039171761846'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/03/css-ideas-so-im-working-with-css-and.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-5581426410764976078</id><published>2009-03-26T07:26:00.000-07:00</published><updated>2009-03-26T07:51:15.732-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='automobiles'/><category scheme='http://www.blogger.com/atom/ns#' term='idea'/><category scheme='http://www.blogger.com/atom/ns#' term='cars'/><category scheme='http://www.blogger.com/atom/ns#' term='automobile safety'/><category scheme='http://www.blogger.com/atom/ns#' term='tires'/><category scheme='http://www.blogger.com/atom/ns#' term='safety'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Wheels that Won't Kill You?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;How to make car wheels NOT poppable?&lt;br /&gt;&lt;br /&gt;First of all, unless you can find some utterly indestructible elastic material to contain it, don't fill them with any kind of liquid or gas. &lt;br /&gt;&lt;br /&gt;So...&lt;br /&gt;&lt;pre&gt;  Make them out of some sort of solid rubber?&lt;br /&gt;   would this cause too much energy loss or melting due to internal friction?&lt;br /&gt;  Just put a bunch of radially oriented springs inside?&lt;br /&gt;    would need multiple parts of springs with different tensile strengths to &lt;br /&gt;     absorb shocks/vibrations at various frequencies/amplitudes?&lt;br /&gt;  Just have a hollow metal drum or perhaps a solid really hard rubber, and perhaps &lt;br /&gt;   with a thin layer of (softer?) rubber outside, with a sensitive suspension that &lt;br /&gt;   absorbs all the small stuff?&lt;br /&gt;&lt;br /&gt;Or, maybe they can be gas-filled, but compartmentalized, much like with the &lt;br /&gt; hugely successful Titanic. &lt;br /&gt;  Fill them with some sort of rubber or otherwise elastic aerogel substance?  &lt;br /&gt;  Use normal tire rubber, but organized in rather large 3-d cells?  'Rather large'   &lt;br /&gt;   might be 1-8 cubic inches.. just enough to mitigate damages while the tire can &lt;br /&gt;   remain flexible, not melt due to internal friction, and not be too heavy&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Some of these options could call for an inner core that rarely needs replaced, but an outer rubber covering that could be replaced as needed (for treading and other wear-down) by the auto mechanic.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-5581426410764976078?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/5581426410764976078/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=5581426410764976078' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/5581426410764976078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/5581426410764976078'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/03/wheels-that-wont-kill-you-how-to-make.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-8400784830759193248</id><published>2009-03-26T07:03:00.001-07:00</published><updated>2009-03-27T07:38:57.830-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='idea'/><category scheme='http://www.blogger.com/atom/ns#' term='transformers'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Just a Retarded Theory&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Electrical transformers (such as wall adapters) are pretty clunky and inefficient and emit harmful EMF radiation.  What if there's a better way?  &lt;br /&gt;&lt;br /&gt;You obviously can't just stick a component into the middle of the circuit that increases the voltage or the amperage.  If it increases the voltage at the expense of amperage, where do all those extra electrons holes go?  If it increases the amperage, where do all the extra electron holes come from?  So obviously you need a completely separate closed circuit, somehow powered by the original, which is exactly what a transformer is but in an inefficient way.  Is there a more direct way for Circuit A to pump Circuit B?  Perhaps there is.  Perhaps there are two.  &lt;br /&gt;&lt;br /&gt;In a battery voltage is multiplied by hooking them up in series, amperage by hooking them up in parallel.  I would imagine this is true for charging, too, in an opposite sense.  So..&lt;br /&gt;a) charge the battery in series (this does not need a transformer; charge-pump capacitors, rectifiers, resistors, etc. can be used), while simultaneously draining the battery in parallel, or vice versa.&lt;br /&gt;b) Don't optimize the chemicals for storage capacity; optimize them to efficiently immediately transfer ions or whatever on a constant basis.&lt;br /&gt;&lt;br /&gt;..But wait! if we could just capture electrical energy for a second, say in the form of a static charge, in parallel, via Circuit A, and then release it in series, via Circuit B, or vice versa, then couldn't we have Circuit A pumping Circuit B with a V&lt;-&gt;A conversion ratio?  And wouldn't capacitors be exactly what we need to do this?  Just use some more capacitors to alternate between charge and discharge, smooth out the output voltage, etc.  &lt;br /&gt;&lt;br /&gt;I don't know.. I never really understood electronics.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-8400784830759193248?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/8400784830759193248/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=8400784830759193248' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/8400784830759193248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/8400784830759193248'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/03/just-retarded-theory-electrical.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-7586388960640741671</id><published>2009-03-26T06:18:00.001-07:00</published><updated>2009-03-26T07:02:22.455-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cheap'/><category scheme='http://www.blogger.com/atom/ns#' term='washer'/><category scheme='http://www.blogger.com/atom/ns#' term='idea'/><category scheme='http://www.blogger.com/atom/ns#' term='drier'/><category scheme='http://www.blogger.com/atom/ns#' term='save'/><category scheme='http://www.blogger.com/atom/ns#' term='dryer'/><category scheme='http://www.blogger.com/atom/ns#' term='green'/><category scheme='http://www.blogger.com/atom/ns#' term='economy'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Washer/Drier Combos&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;*Why* don't people sell washers and driers as one unit?  Not one unit for washing, one unit for drying, stacked on top of each other, but one unit the size of one that does both?  &lt;br /&gt;&lt;br /&gt;That would *so* save resources, to say nothing of money and space.&lt;br /&gt;&lt;br /&gt;It's not that difficult.  You just need a mechanism for pumping hot air into that drum that is impervious to the water when it's washing.  Here are some ways to do that:&lt;br /&gt;&lt;br /&gt;(this is the style of washing machine that opens from the side.)&lt;br /&gt;have two layers of drum.  washing machines must have this anyway so that all the water can escape out the holes and be captured by the larger drum during the spin cycle.  &lt;br /&gt;Have a tube that delivers hot air come up and back down right over the top of the inner drum.  hot air can push in through the holes in the drum.  this can be optimized by making very loong (but thin) holes at that distance around the whole cylinder.  the tube can have a valve on the end of it, which for simplicity's sake automatically opens whenever hot air coming out pushes it open; when it's closed it's water-tight.  that way no water will get into the tube.  &lt;br /&gt;or&lt;br /&gt;have this tube come into a back part that doesn't spin (like with a dryer), but right near the top.  equal anti-water advantage, no inner drum to block it.  as the back part would be part of the outer drum, the inner drum is free to turn without having a back to it.  just put the inner drum pretty close to the back so clothes don't fall through.  &lt;br /&gt;for the outgoing air, just have a large intake portal in the top of the larger drum.  water shouldn't get that high, but if it does, the whole passage from there to the outside can be water-compatible, so it would just end up coming out the outside vent.  we don't really want water constantly splashing into it and drizzling out, though, so have that passageway go a few inches up over the top of the drum, before it goes back down.  or, just put something under it like what goes over chimneys to keep the water out.  &lt;br /&gt;or&lt;br /&gt;just have an electrically opened/closed flap for the outtake passage that's relatively water-tight.  &lt;br /&gt;this could also apply to the hot air opening, of course. &lt;br /&gt;btw, the hot air pipe should also go up a little after the drum before coming back down, in case the valve fails so water doesn't splash into it.  &lt;br /&gt;don't worry about water overflowing into it because there can be protections for that&lt;br /&gt;1) electronic sensing to stop water from filling if it overflows&lt;br /&gt;2) a drain near the top of the drum, just like in a bathroom sink.  the drain leads into the pipe that drains used wash water.&lt;br /&gt;You don't really need a flap for the air outtake vent because it can be put above the level of the overflow drain and then also rise further up before it goes back down.  the same pretty much applies to the hot air input passageway. &lt;br /&gt;although you don't really want your outtake vent getting the hot air back that was just put in there because it's next to the hot air input.  so you could &lt;br /&gt;1) have the hot air input deflect the hot air to the right or the left like a jet--the same direction the clothes spin in, and have the air outtake vent receive air from the opposite direction&lt;br /&gt;2) have the hot air input in the back of the drum and the hot air outtake vent near the front (by the door).  also should try 1) in conjunction with this. &lt;br /&gt;&lt;br /&gt;that sounded complex, it's all really very simple.&lt;br /&gt;&lt;br /&gt;now you can program the washing/drying cycle as one sequence, controllable from one single interface. &lt;br /&gt;-clothes don't get left in the washer undried &lt;br /&gt;-users don't have to take the clothes out of one drum and put them into another&lt;br /&gt;-obviously, saves double the space, money, resources, manufacturing pollution, transportation pollution, time and effort.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-7586388960640741671?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/7586388960640741671/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=7586388960640741671' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/7586388960640741671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/7586388960640741671'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/03/washerdrier-combos-why-dont-people-sell.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-6442276920032316824</id><published>2009-03-26T05:17:00.001-07:00</published><updated>2009-03-26T06:16:27.873-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='idea'/><category scheme='http://www.blogger.com/atom/ns#' term='cars'/><category scheme='http://www.blogger.com/atom/ns#' term='safety'/><category scheme='http://www.blogger.com/atom/ns#' term='collision detection'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Car Impending Collision Detection&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Cars should have RF transponders in them that communicate with all other cars near them instantaneously.  GPS wouldn't be sufficent to gather each other's immediate positions and velocities, but radio triangulation might.  This data can be used to avoid potential collisions: if two cars detect that they're on a collision path, they can together make an avoidance plan and execute it (with automatic steering and/or breaking).  This must be last-second (calculated based on speed, traction, weight of car, direction, etc.) because sometimes cars can appear to be on a collision course but it's just due to the shape of a road, traffic lights, etc.&lt;br /&gt;&lt;br /&gt;I don't think attenuation-based or pulse-based radio triangulation would work, but maybe phase-based triangulation could?&lt;br /&gt;How to triangulate several cars at once, though?  &lt;br /&gt;--they can coordinate to time their output signals to not happen simultaneously&lt;br /&gt;--there can be a whole matrix of tiny antennas and an algorithm sorts it all out.&lt;br /&gt;--each car can operate on a different frequency.  the circuitry then either separates the frequencies and then take the phase info (or does it have to use interferometry to get the phases shifts?), or there can be a grid of independent sets of triangulation antennas each working on a different frequency.&lt;br /&gt;&lt;br /&gt;or instead of radio, could use ultrasonic location signals?  but windspeed must be known?&lt;br /&gt;this could be hell on animals' ears, but perhaps that will keep them away from the roads.  not good for pets living very near said roads, though..&lt;br /&gt;&lt;br /&gt;Also, a car could have a camera or two (fast FPS) and a computer to in real-time deduce positions and velocities of objects nearby that stand out, then avoid anything that's too big or matches a certain profile (last-second, of course).&lt;br /&gt;this has the following advantages:&lt;br /&gt;-planning collision avoidance can take the environment besides other cars into &lt;br /&gt;account&lt;br /&gt;-it can avoid collisions with other things than just cars.&lt;br /&gt;-it can be used instead of a radio/ultrasonic (relative) positioning system if those are impractical&lt;br /&gt;-it doesn't require other cars to support the same technology.&lt;br /&gt;although it would still help if these cars, independently sensing each others' positions via cameras, could communicate via radio to coordinate their avoidance plans.&lt;br /&gt;&lt;br /&gt;perhaps the avoidance algorithm should have some heuristics for dealing with failed tires.&lt;br /&gt;&lt;br /&gt;maybe also alternative avoidance branches for people wearing their seatbelt vs. people not wearing their seatbelt.  for a person wearing their seatbelt, a head-on collision is better than a collision from their side?  and better than a roll?  which may not be true of persons without seatbelts on?  actually a head-on or rear collision is probably always better now because cars are required to have airbags.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-6442276920032316824?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/6442276920032316824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=6442276920032316824' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/6442276920032316824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/6442276920032316824'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/03/econo-automobile-for-people-who-can.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-5591911435950565824</id><published>2009-03-26T05:17:00.000-07:00</published><updated>2009-03-26T05:40:58.156-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='automobiles'/><category scheme='http://www.blogger.com/atom/ns#' term='idea'/><category scheme='http://www.blogger.com/atom/ns#' term='cars'/><category scheme='http://www.blogger.com/atom/ns#' term='environmentalism'/><category scheme='http://www.blogger.com/atom/ns#' term='green'/><category scheme='http://www.blogger.com/atom/ns#' term='economy'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Econo-automobile&lt;/span&gt;&lt;br /&gt;for people who can barely afford some transportation (and can boldly 'live simply') and for saving resources.&lt;br /&gt;&lt;pre&gt;  no auto door locks&lt;br /&gt;  no power windows&lt;br /&gt;    windows don't crank, just have something to slide them up and down with and lock &lt;br /&gt;     in place.&lt;br /&gt;  some windows are plastic or acrylic?&lt;br /&gt;  no a/c or heating&lt;br /&gt;  no radio&lt;br /&gt;  dials: odometer, spedometer, fuel&lt;br /&gt;  buy battery separately, you might have one laying around.&lt;br /&gt;  manual trans.&lt;br /&gt;  no power steering&lt;br /&gt;  rudimentary shock absorbers - just fancy enough that it won't kill you.&lt;br /&gt;  make cylinders fire on both sides, so each one is a double cylinder?&lt;br /&gt;  rotary engine?&lt;br /&gt;  but shoudl probably use a completely different engine with better efficiency anyway&lt;br /&gt;    like those new ones in PopSci.   &lt;br /&gt;  no back doors&lt;br /&gt;  no inside light - bring a flashlight if you need it. &lt;br /&gt;  no glove compartment - bring a box if you need it.&lt;br /&gt;  instruments are lit just by shining an LED on them&lt;br /&gt;  crank to start car? &lt;br /&gt;  have model without back seats&lt;br /&gt;  seats are cheap.&lt;br /&gt;    just a hard surface with some type of gel/water/air-filled sack &lt;br /&gt;     (compartmentalized into cells) over it? (this should probably help with the      &lt;br /&gt;     shock-absorber issue better than a normal, expensive seat would, too.)&lt;br /&gt;    can't slide forward/backward, but can adjust tilt of back. just lock and unlock &lt;br /&gt;     with notches? (no springs, turning things, or continuously variable positions)&lt;br /&gt;  no microchip, those things are a pita anyway.&lt;br /&gt;  no paint job, or just something to make the surface legal if it's metal.  in &lt;br /&gt;   which case, the paint has to stay on but it doesn't have to be consistent or     &lt;br /&gt;   smooth or be a nice color.&lt;br /&gt;  no trunk?&lt;br /&gt;  really simple door handles?  just push something left or right to latch / unlatch &lt;br /&gt;   which also serves as a handle to pull it open?  the lock and key mechanism   &lt;br /&gt;   would just block that sliding thing.  or is it cheap enough already to do &lt;br /&gt;   it the normal way&lt;br /&gt;  can we do away with windshield wipers in lieu of anti-water windshield coating?&lt;br /&gt;  contracts with junkyards to use used parts?&lt;br /&gt;    could make several different types of fittings for some things to accomodate &lt;br /&gt;     different models&lt;br /&gt;    maybe could even use used engines, transmissions, bodies&lt;br /&gt;  small form&lt;br /&gt;  have no back of the car, except for support for the rear wheels, lights and &lt;br /&gt;   license plate?&lt;br /&gt;&lt;br /&gt;  don't skimp on safety&lt;br /&gt;    airbags&lt;br /&gt;    abs&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-5591911435950565824?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/5591911435950565824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=5591911435950565824' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/5591911435950565824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/5591911435950565824'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/03/blog-post.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-7549729197366993456</id><published>2009-03-25T20:25:00.000-07:00</published><updated>2009-03-27T07:54:45.375-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='translation'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Automatic Translation&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;All language translators out there currently on the web suck.&lt;br /&gt;&lt;br /&gt;One idea for a very effective translator would be to feed a self-teaching AI program tons and tons of documents that already have existing translations, and have it automatically generate rules for proper translation. This would *automatically* accommodate for correct grammar, loose grammar, idioms, jargon, etc. This would require *a lot* of computing power, but it only has to be done *once*. Training documents can be found in existing corpora, or translated by hand specifically for the project. Two possible ways to generate rules would be: genetic algorithms, or some sort of exhaustion of many possible rule formulations (this could be bootstrapped with various types of data, for example, a word-sense-&gt;part-of-speech key, and a word-sense-&gt;popularity-of-use key.). Incidentally a week after I had this idea I heard a couple of people were working on just such a project, but I've yet to see the fruits of their results anywhere..&lt;br /&gt;&lt;br /&gt;Rather than determining rules for translating to and from each possible combination of two languages, it's probably best to come up with *one* language that all languages can be translated to/from with no loss. Just making a collation of linguistic categories for words and clauses in each known language, and using these in an X-bar kinda structure, should be enough. Then any given language would be translated to this intermediate language, and then from that to the target language. &lt;br /&gt;&lt;br /&gt;This greatly reduces the costs of furnishing texts for the learning algorithm and of the running it. This intermediate language's lexicon should be the superset of all the senses of all the words of the input languages, but with words identical in grammatical function and alike in meaning grouped into synsets, where each word in a synset is linked to each other word in the synset with a particular weight, which is their level of similarity (this may have to be done by hand). A word in a source text would, via a table, point to a word in some synset (if the word has any synonyms), and then the closest word to that (weight-wise), or the word itself, that some word in the target language points to, would be used. &lt;br /&gt;&lt;br /&gt;A problem arises when a language possessing a certain tense/aspect/modality is translated to a language not possessing that. Possible solutions are: compromise and translate to a similar tense/aspect/modality that gets the point across, or totally rearrange the semantics of the sentence in the resultant text. This should not be too difficult given that the algorithm fully groks the grammatical structure of the sentence in the first place. Similarly some words won't exist in all languages. They can be handled by: using a similar-enough word that won't cause too much misunderstanding, or substituting the given word with a phrase (or, in some languages, possibly using agglutination).  &lt;br /&gt;&lt;br /&gt;Obviously I'm not implying that the semantic rearranging or phrase substitution would be wholly "figured out" by the translator; it would rely on a pre-programmed (or self-learned, via particular patterns found in the training texts) ruleset for such rearrangements. &lt;br /&gt;&lt;br /&gt;"Similar-enough" words could be implemented using a weight mechanism just like the one used within a synset, but applying cross-synset/non-synonym. (In fact, we might as well just do away with a categorical consideration of synonym sets altogether.. unless lack of a bona fide synonym is used as a cue to look for a phrasal substitute?) Just enough vague linkages have to be drawn to accomodate all combinations of source/target languages. In fact for the sake of laziness, perhaps unlimited-length chains of weight-linkages could be used, when necessary. I suppose this requires a function for generating an overall priority value based on X number of Y-valued weights. For example, would we favor an a--(1)--&gt;b--(2)--&gt;c link, or an a--(3)--&gt;d link? (1 means highest priority, because there is no bottom limit.) In this case, it would do to specify weights in arbitrary decimals rather than simply orders of priority.&lt;br /&gt;&lt;br /&gt;We could effectively have myriad already-made translation texts available for training in this one-language approach, by creating a pretty darn good English&lt;-&gt;the-one-language translator, and then using texts translated to and from English (it probably being the most widely translated language), with the English part being converted to/from the one language for the purposes of training. It remains in question how much trouble we should go through, if any, to make the program aware of whether a given training pair was actively translated from X to Y or from Y to X. This goes for the non-one-language approach also.&lt;br /&gt;&lt;br /&gt;Machine learning may not be necessary: humans could perhaps construct perfectly comprehensive BNF notations (including idioms) and use a GLR parser, but I don't know how well this will work for (not-so-atypical) taking of grammatical liberties. If this approach is taken, the machine should obviously be programmed to understand affixes so that base words and inflections can be deduced for inflected words that aren't specifically in any dictionary. Another possible adaptation could be Damerau–Levenshtein distance or similar, to account for typos, misspellings, spelling variants, and OCR miscalculations. Also, a list of commonly misused words might also be helpful, though maybe not.&lt;br /&gt;&lt;br /&gt;One trick to this translating could be to resolve ambiguous meanings, or connotations, of words in a sentence based on surrounding sentences. Meaning that if the word is used in such a way in a surrounding sentence that it definitely, or probably, means this or that, then we can induce that it probably means this in the given sentence, too. It could even be determined (by the given sentence or by a surrounding sentence) based on some pattern recognitions afforded by the training process. (These may even include subtle and holistic inferences.)  &lt;br /&gt;&lt;br /&gt;Meaning and grammar resolution can go both ways: grammar can help determine the sense of a word, and a known word sense could help determine the grammar of a sentence. &lt;br /&gt;&lt;br /&gt;Connotation inferences (whether being done as-such, or effectively for consideration purposes but not internally tokenized on that level, per se) can even help determine the most germane translation synonym. &lt;br /&gt;&lt;br /&gt;We *may* want to even layer our conferencing of meaning-resolution amongst sentences according to paragraph, chapter, document, author/source, and/or genre, but that's probably overkill, beyond just having a sentence-level tier and a document-level tier. Actually genre and source seem to be good too, since they're categories where you'd find words used in particular ways. Oh, I guess a sub-sentence-level tier could be relevant too (because the word could be used twice in the same sentence), but this layer would be treated a little differently of course, since self-contained syntax trees (mostly) start and end at the sentence level.&lt;br /&gt;&lt;br /&gt;People can arbitrarily create new words on-the-fly in an agglutinating language. This would be hard for a translator to automatically substitute with defining phrases..but it would be easy to simply use a form of pseudo-agglutination in the given target language; for example, if poltergeist weren't already a well-known and established word, it would be translated into English as "rumble-ghost" or "rumble-spirit."  Perhaps a little awkward, but I think it's pretty effective for getting a point across.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-7549729197366993456?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/7549729197366993456/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=7549729197366993456' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/7549729197366993456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/7549729197366993456'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/03/automatic-translation-all-language.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-328882950353492579</id><published>2009-03-23T18:00:00.000-07:00</published><updated>2009-03-23T18:11:42.107-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ports'/><category scheme='http://www.blogger.com/atom/ns#' term='home networking'/><category scheme='http://www.blogger.com/atom/ns#' term='uPnP'/><category scheme='http://www.blogger.com/atom/ns#' term='LAN'/><category scheme='http://www.blogger.com/atom/ns#' term='port forwarding'/><category scheme='http://www.blogger.com/atom/ns#' term='networking'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Better Home Networking&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Any time an application tries to listen on a port, and the firewall allows it and has the option set to do this, the OS should send a special control signal (such as uPnP port forwarding) to the router for it to forward that port to the listening PC.  When the port is no longer being listened on the OS can tell the router to un-forward that port.  If that port is already being forwarded to another PC on the LAN, then the socket listen command could return an error.  &lt;br /&gt;&lt;br /&gt;This way multiple PCs on a LAN can occasionally use the same port numbers without having to explicitly set up/change port forwarding in the router setup, or one PC can always use that port without the user having to manually set anything up.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-328882950353492579?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/328882950353492579/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=328882950353492579' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/328882950353492579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/328882950353492579'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/03/better-home-networking-any-time.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-6321488118323236966</id><published>2009-03-23T07:08:00.000-07:00</published><updated>2009-03-26T03:27:42.880-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='syntax'/><title type='text'></title><content type='html'>I don't think I posted this one yet.. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Universal Programming Syntax&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Any programming language syntax can basically be decomposed into nested lists.  Something like XML.  The lists would include parameters, keywords, function calls, whatever.   It's essentially taking every structure and ordering its terms in the same way and conveying every operator to hierarchical structure or keywords.  The idea is that if we could make a generalized language grammar, somewhat like XML but easier to type/read and perhaps more rich with structures, we could express any programming language is this form.  That way learning a new language would be much easier, because you don't have to learn a new syntax or grammar--merely its constructs and functions--and also you wouldn't have to put up with really ugly syntax.  &lt;br /&gt;&lt;br /&gt;It isn't necessarily that every new language would have to use this specification, but that people could write front-ends that can convert from this specification to given languages and back, preferably as IDE plugins.  &lt;br /&gt;&lt;br /&gt;How exactly this language should be designed is hypothetical--I could take a shot at it, but that doesn't mean that my suggestion for a universal language is inextricably linked to my particular idea of an implementation of it.&lt;br /&gt;&lt;br /&gt;One thing that comes to mind is that, although every nested structure in the program could be nested in the universal language in the same way, that could make it much less readable.  &lt;br /&gt;take, for example: for(int x=0;x&lt;=255 &amp;&amp; !y;x++) {do_this(exp((x+1),2)+3); }&lt;br /&gt;you could write it as&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;for:&lt;br /&gt;  initial: &lt;br /&gt;    declare int x 0&lt;br /&gt;  compare:&lt;br /&gt;    and:&lt;br /&gt;      le x 255&lt;br /&gt;      not: y&lt;br /&gt;   action:&lt;br /&gt;     inc x&lt;br /&gt;   do:&lt;br /&gt;     function do_this:&lt;br /&gt;       sum:&lt;br /&gt;         exponent: &lt;br /&gt;           sum: x 1&lt;br /&gt;           2&lt;br /&gt;         3&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;and the above works okay for control structures, but is horrible for and's and or's and math--basically any operators. &lt;br /&gt;&lt;br /&gt;and on the other hand, you could do it like this:&lt;br /&gt;&lt;br /&gt;for(int(x,0), and(le(x,255),not(y)), inc x, function(do_this, sum(exp(sum(x,1), 2), 3))))&lt;br /&gt;&lt;br /&gt;which is a little better for operators, but isn't so good for control structures.  &lt;br /&gt;and, of course, you could simply allow arbitrary line breaks and do it like this&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;for(&lt;br /&gt;  int x 0,&lt;br /&gt;  and(le(x,255),not y), &lt;br /&gt;  inc x, &lt;br /&gt;  function(do_this, sum(exp(sum(x,1), 2), 3))&lt;br /&gt;  )&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;but that still could be made a little bit more elegant, by allowing two forms of nesting:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;for:&lt;br /&gt;  int x 0&lt;br /&gt;  and(le(x,255),not y)&lt;br /&gt;  inc x&lt;br /&gt;  function(do_this, sum(exp(sum(x,1), 2), 3))&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;(there indentation is being used as a grouping mechanism.) &lt;br /&gt;and even futher, we could be more kind to operators, and technically we wouldn't even be changing the definition of the universal language:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;for:&lt;br /&gt;  int x 0&lt;br /&gt;  ((x le 255) and not y)&lt;br /&gt;  inc x&lt;br /&gt;  function(do_this, ((x plus 1) exp 2) plus 3)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;although it might do to make some standards about how things in lists are ordered, so for example, you can't have the function/operator name be the 4th element in the list unless there are only three elements in which case it's the first  element but only on tuesdays and depending on the price of beans as declared earlier in the source.&lt;br /&gt;&lt;br /&gt;one thing we should not allow, though, is inexplicit priority of operators.  all nesting should be explicit, that way you don't have to worry about learning the order of precedence for the particular language or thinking about it when you interpret some source code.  exceptions maybe should be made, though, for basic numerical operators.  i.e., everyone learns in elementary school or junior high that it goes: explicit grouping, then ^, then * and /, then + and -.  although it's still on the table whether or not symbolic operators should be allowed in the specification.   in some cases it makes it more readable, in other cases words would make their meaning more obvious.   one solution would be to allow only &gt;, &lt;, &lt;=, &gt;=, *, /, +, -, . (namespaces), and either &lt;&gt; or !=.   ^ shouldn't be allowed since it means exponent in some languages and XOR in others.  and % can mean percent, modulus, string interpolation, etc.  i'm being strict about it to make it easier for those who haven't done any learning of the language, although it  could, perhaps, be made a language intended for people who do a little bit of studying.  but that could make it a little more concise but a little less 'accessible'.. &lt;br /&gt;&lt;br /&gt;while it's up to whomever to specify how a particular language is translated into the universal language, there should probably be some guidelines set to foster consistency at little cost.  for example, for loops exist in most every language, and we could dictate that for loops should start with the name 'for' as the first item.  which they would probably do anyway, but perhaps there are other cases that are less normative.   and more than just the 'for' would be specified.&lt;br /&gt;common elements of a for loop include:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  initialization&lt;br /&gt;  comparison&lt;br /&gt;  incrementation or whatever &lt;br /&gt;  variable name(s)&lt;br /&gt;  list you're selecting from&lt;br /&gt;  what to do&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;different languages would use different items of that list.  each item could be given an official name, and a language uses whichever items are appropriate. it would be somewhat like the first example of code in this text, rather than the later examples where i just allowed positions in the list to determine meanings.&lt;br /&gt;&lt;br /&gt;obviously mechanisms for literal strings and also comments need to be included.  i'm a fan of Python's flexibility when it comes to literals. for comments i like C, I think they visually stand out well as being extraneous to the code.  even moreso if it's all //'s but then you need an editor that can block comment and uncomment for convenience.  &lt;br /&gt;&lt;br /&gt;you may have noticed that i pulled some tricks with being able to use spaces to separate list items in some cases and commas in others.  basically i tried to allow as much flexibility for the programmer in that as possible while maintaining that it can be interpreted determinately.  so the three levels of separators/grouping would be spaces, commas and newlines, but they can be shifted up or down at whim.  and parentheses can help too&lt;br /&gt;&lt;br /&gt;i suppose other things that really demand symbols are dereferencers and subscripts.  moreso dereferencers, because &lt;br /&gt;a[10] can be handled as (a 10), a 10 or a(10), or even a sub 10, but dereferencers might be get tedious with having to type ptr ptr a, ptr ptr (ptr b), etc.  however, instead of doing that we can do this: p2 a, p2(p b), etc. or _p _p (_p b) isn't too bad anyway.  Should we have a mechanism for distinguishing language keywords from arbitrary names?  this mechanism should probably be some non-enforced kind of Hungarian notation defined by the language translator.  for example, key words could always be all caps. &lt;br /&gt;&lt;br /&gt;another remaining issue is string literals.  in what universal way should they be implemented?  I would go for &lt;a href="http://www.python.org/doc/2.5.2/ref/strings.html"&gt;Python's syntax&lt;/a&gt;, with the possible exception that the 'u' modifier might become superfluous, as we could make everything always unicode, then translate to ascii or other encodings when necessary in the language translation.  also we could add PHP's &lt;a href="http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.nowdoc"&gt;nowdoc syntax&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;one other issue: the plain list vs. named sections formats, for example the way i did the 'for' command the first time vs. the subsequent times.  should the language itself determine which one one uses, or should the user be able to use both styles for any given language?  the parser could specify the components needed in a way similar to Python's defining function parameters, such that arguments may passed name, or just listed, and if particular grammar allows then names can even be passed that weren't pre-defined.&lt;br /&gt;&lt;br /&gt;for those familiar with compiler technologies, yes, this is basically just a flexible, human-friendly way of specifying abstract syntax trees.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-6321488118323236966?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/6321488118323236966/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=6321488118323236966' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/6321488118323236966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/6321488118323236966'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/03/i-dont-think-i-posted-this-one-yet.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-8549137811957458563</id><published>2009-03-17T03:39:00.000-07:00</published><updated>2009-03-26T03:33:34.540-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='petaflops'/><category scheme='http://www.blogger.com/atom/ns#' term='cpu'/><category scheme='http://www.blogger.com/atom/ns#' term='turing machine'/><category scheme='http://www.blogger.com/atom/ns#' term='parallel computing'/><category scheme='http://www.blogger.com/atom/ns#' term='flops'/><category scheme='http://www.blogger.com/atom/ns#' term='teraflops'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Many Little Turings FTW&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The latest Intel chips (Xeon, I7 Core, etc.) have 700-800 million transistors.  If one were to make the simplest logic-gate setup possible to run a Universal Turing Machine -- or not necessarily the simplest but making a few simplicity-vs.-efficacy trade-offs --, then parallel-scale it to around 800 million transistors, we could possibly have thousands, maybe even hundreds of thousands, of general-purpose CPU cores at once running in a single half-an-inch CPU.  &lt;br /&gt;&lt;br /&gt;Graphics cards, the current latest ones pushing 1 teraFLOPS, do something similar to this but their cores (or more accurately, stream processors) are not Turing-complete -- that is, they can't do general computing --, and they probably still take orders of magnitude more transistors per "core" (because they perform many sophisticated kinds of manipulations, such as floating-point instructions and specifically CGI-related functions, directly), thus meaning far fewer parallel units than this computer could have.&lt;br /&gt;&lt;br /&gt;Multiplying two 16-bit numbers, for example, might take over 256 cycles, and adding two numbers could take at least 16, but with thousands/hundreds of thousands of cores it might all be worth it.  (I come up with the values 256 and 16 because I'm thinking this machine would have no intrinsic conception of bytes and would process everything a bit at a time, but perhaps it wouldn't be that way.)&lt;br /&gt;&lt;br /&gt;This idea is for a computer intended for very specialized applications, not general home computing as with a PC; average PC users have no use for thousands of simultaneous general-purpose cores. &lt;br /&gt;&lt;br /&gt;It might be neat if we could actually make this self-programmable in a way, perhaps like a Turing machine with a self-modifiable state table.  This kind of dynamicism would be very useful for a machine with such a limited instruction set.  Maybe an AND could be re-written as an XOR, and so on.  I'm not sure how that can be done in a way that doesn't incur so many extra transistors that they'd be better put to use by simply extending the instruction set andor adding more cores.  Perhaps there can be intermediate router circuits that can re-route the flow of bits through the core's parts -- for example, through an AND gate instead of through an XOR gate.  Or, perhaps there can be a number of different types of cores that have slightly different functionality, and the code determines which type of core a given thread goes to.  Maybe a thread can even switch core-types mid-way through; its state information would be transferred to another core. (this could be effectively the same as reprogramming a core, but more limited.) The proportions of numbers of cores available for the various core-types would hopefully be determined by the most common use-case scenarios. &lt;br /&gt;&lt;br /&gt;The Tile64 had a good idea for inter-core communication: each core has its own router, and a message passing from one core to another steps through each core in between to get there.  This may be a reasonable way to do it, although it seems like it would be a rather complex thing for a system going for (per-core) minimalism.  Perhaps the system could have very localized clouds of shared memory for X number of cores, and then those clouds of memory can themselves communicate with other clouds of memory.  The CPU's scheduler would group tasks according to which tasks need to either communicate a lot with or share memory with which other tasks, or perhaps the operating system itself could.  If the different-type-of-cores idea is used, then each localized core-cloud should probably contain a variety of different core-types.  That way threads can more quickly switch core-type, and super-tasks involving different kinds of functions can more easily have their different functions inter-communicate -- though the second argument can go either way;  perhaps some features should be locally grouped and some not. &lt;br /&gt;&lt;br /&gt;Anyway, this is all on one chip.  If we could have 100,000 cores on one chip, imagine how many petaFLOPS a supercomputer made up of these chips would do!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-8549137811957458563?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/8549137811957458563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=8549137811957458563' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/8549137811957458563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/8549137811957458563'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/03/latest-intel-chips-have-700-800-million.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-1888242606830039611</id><published>2009-02-15T13:32:00.000-08:00</published><updated>2009-03-26T03:35:56.805-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='optimizing'/><category scheme='http://www.blogger.com/atom/ns#' term='optimisation'/><category scheme='http://www.blogger.com/atom/ns#' term='optimization'/><category scheme='http://www.blogger.com/atom/ns#' term='optimising'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;...continued from previous post&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Perhaps we could limit and specialize this idea somewhat for some purposes by, instead of simply trying to find optimal algorithms for any given purpose, considering it a domain of constraints, to make something analogous to a really, really complex calculus problem.  &lt;br /&gt;&lt;br /&gt;For example, take image compression.  Your constraints could be that the resultant image be not necessarily the original but not differ from it more than a certain amount, either per pixel, something like per wavelet, or as an average over the whole pic, or some combination of those, in a number of separate dimensions.  One dimension would be a rendered color's distance from the original color within a particular ergonomic color space, one could be the presence of specific distorting artifacts, some could get into theory of the qualitative differences between an artificially stochastic aspect of an image and data that the rendered image is based on which we consider to be virtually random in specific aspects.  Another constraint could be how close to optimal the solution must be, or we could even look for an optimal balance between compressed size and the time it takes to compute the compressed image, and/or the time it would take to decompress it.  &lt;br /&gt;&lt;br /&gt;We obviously don't have the tools necessary to even begin to evaluate such a complex quasi-mathematical problem, but we could, perhaps, explore methods of evaluating such constraint or optimality problems using the principle of exploring methods of evaluating problems, and so forth and so on, recursively.  &lt;br /&gt;&lt;br /&gt;We don't have to work strictly by starting from an enormously complicated constraint &amp; optimality problem expressed formally and trying to evaluate that, either.  We could perhaps gain some tools that are useful for solving problems on *both* ends of the recursive progression by starting with evaluations of simpler systems, then gradually working our way up, thus adding a whole other dimension to the learning curve.  Some tools we might use, BTW, other than the various analytical problem-solving methods we know of from all of maths, may be artificial neural networks, particle swarms, and genetic algorithms.  We could even end up developing new alternatives or variants to all those methods, by means of our new methodology.&lt;br /&gt;&lt;br /&gt;Ultimately, there is no knowing what we might be able to do for civilization in this manner, since we may apply what we discover to optimizing systems across the board, from data compression, to CPU design, to aerodynamics, to new kinds of gasoline engines, to manufacturing processes to economics.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-1888242606830039611?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/1888242606830039611/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=1888242606830039611' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/1888242606830039611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/1888242606830039611'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/02/perhaps-we-could-limit-and-specialize.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-7200993009109026496</id><published>2009-01-29T23:43:00.001-08:00</published><updated>2009-02-15T15:26:03.820-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='optimization'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Optimal Optimizing Program&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;create a program that reads a program in machine language and does some periphery optimizations on it wherever it can, even if they're a little expensive&lt;br /&gt;&lt;br /&gt;run the program on itself, then modify the program slightly so that, with its improved speed, it can afford to make some more serious optimizations&lt;br /&gt;&lt;br /&gt;run the program on itself again, repeat cycle until your program completely refactors machine code to make it better. &lt;br /&gt;&lt;br /&gt;the ideal goal would be to make a program that takes a program as input, and gives the most optimal possible program that does the exact same thing.  that, per se, may not be practical, but it would be nice to see how far we can go with the idea.  &lt;br /&gt;&lt;br /&gt;once we have a pretty good optimizing program, we can run it once for a given program, even on a supercomputer if necessary, and then disseminate the result to all the end users. &lt;br /&gt;&lt;br /&gt;there probably is not an optimal optimizing program that creates the best possible optimization in earthly time, because even if it had come up with clever ways to make specific kinds of optimizations, it could never *prove* that the result is the best possible optimization, in the most general case, without iterating through every possible program to verify.  so a program that does *perfect*, per se, optimization, may not be a useful thing to aim for, that is by trying to optimize a program that originally *does* iterate through every possibility. &lt;br /&gt;that same idea applies if we were to make the best sound compression software, etc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-7200993009109026496?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/7200993009109026496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=7200993009109026496' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/7200993009109026496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/7200993009109026496'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/01/optimal-optimizing-program-create.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-2523294222123772271</id><published>2009-01-14T18:32:00.001-08:00</published><updated>2009-01-14T18:34:37.157-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='quantum physics'/><category scheme='http://www.blogger.com/atom/ns#' term='Copenhagen interpretation'/><category scheme='http://www.blogger.com/atom/ns#' term='quantum uncertainty'/><category scheme='http://www.blogger.com/atom/ns#' term='quantum mechanics'/><category scheme='http://www.blogger.com/atom/ns#' term='Heisenberg uncertainty'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Heisenberg Uncertainty&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Consider a sympathetic resonator from which you take intensity samples 30 times every second.  Now consider that its resonant frequency is 20 hertz.  So at each sample you may get an exact number, which depends on all its previous activity, but yet, since a single wave itself is larger than the sampling period, the exact number doesn't have complete meaning.  Or the time you sample it at doesn't have complete meaning.  Either way you look at it.  &lt;br /&gt;&lt;br /&gt;This is reminiscent of the Heisenberg uncertainty principle, by which two variables like position or velocity can be individually known but their combined precision (multiplied) can't exceed h/2, and also since it's about waves it alludes to wave-particle duality. &lt;br /&gt;&lt;br /&gt;So the two ways of looking at the amplitude/phase problem in the resonator example could correspond, somehow, to the two ways of sampling an object: position, or velocity.  A different way of sampling it is a different way of looking at the object.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-2523294222123772271?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/2523294222123772271/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=2523294222123772271' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/2523294222123772271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/2523294222123772271'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/01/consider-sympathetic-resonator-from.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-7503235325656133775</id><published>2009-01-10T17:47:00.001-08:00</published><updated>2009-01-10T17:49:39.795-08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;The next level of HTTP tags&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;inhahe (6:12:28 PM): inhahe (5:46:22 PM): the idea is a simple mechanism to highlight a particular part of a webpage, which adds something to the url string &lt;br /&gt;inhahe (5:46:41 PM): which you can then send to another person so they can see the webpage with the same thing highlighted, circled, whatever.&lt;br /&gt;inhahe (5:47:01 PM): it would be an extension to the http syntax&lt;br /&gt;inhahe (5:47:08 PM): /writes it&lt;br /&gt;inhahe (5:47:32 PM): i see problems with the idea&lt;br /&gt;inhahe (5:47:37 PM): hmm&lt;br /&gt;inhahe (5:48:28 PM): nah i guess it works &lt;br /&gt;phaldo (5:48:47 PM): why not just copy the text you want to highlight&lt;br /&gt;inhahe (5:49:54 PM): that too but there are several reasonsyou might not want to.  1, if you copy the text, the formatting, font sizes colors, graphics etc. might not cross over depenidng on the medium your'e using to chat with&lt;br /&gt;inhahe (5:50:01 PM): 2. a url is a lot shorter&lt;br /&gt;inhahe (5:50:15 PM): 3. it's more useful to use as citations or references&lt;br /&gt;inhahe (5:50:53 PM): i think the only problem with the idea is that if a document changes, the highlight information could become wrong or invalid&lt;br /&gt;inhahe (5:50:58 PM): i just reaolized that&lt;br /&gt;inhahe (5:51:07 PM): but we can just say too bad and let it become wrong or invalid in those cases&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-7503235325656133775?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/7503235325656133775/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=7503235325656133775' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/7503235325656133775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/7503235325656133775'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2009/01/inhahe-61228-pm-inhahe-54622-pm-idea-is.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-7013057764957194768</id><published>2008-12-17T00:58:00.000-08:00</published><updated>2008-12-17T00:59:41.909-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='algorithm'/><category scheme='http://www.blogger.com/atom/ns#' term='sorting algorithm'/><category scheme='http://www.blogger.com/atom/ns#' term='sorting'/><category scheme='http://www.blogger.com/atom/ns#' term='sort'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Three sorting algorithm ideas&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Binary Sort&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A sorting algorithm that sorts in constant amortized time, but which is proportional to the average length, in binary, of the elements being sorted&lt;br /&gt;&lt;br /&gt;Let's say we have a function that returns a list of {0, 1} values which is a given element's binary representation.   Now we make an array of the size of our input list, which we will use as a binary tree.  Each node will be a struct instance.  For each element in our list to be sorted, we navigate this tree using the element's binary sequence as the path, creating new branches as necessary.   When we get to the end, we insert a reference to the original object into the beginning of a linked list of references to objects belonging at that node (i.e., equivalent elements).  Then at the end of our sorting we simply walk the tree and traverse its linked lists to return our sorted list.  If we want equivalent objects to appear in the same order in which they appeared in the original list, we can append them to the end of the linked lists instead and have the node store a pointer to the current last linked list item.  &lt;br /&gt;&lt;br /&gt;This is only the naive version, though.. we don't really have to make the full path for every element.  Instead of having a function that returns an object's binary representation, we'll have a function that returns an iterator for it.  Then instead of navigating/creating nodes to the end of the path, we navigate until we find a node who simply stores a pointer to an iterator for an element that's somewhere underneath it.  Now, since a node can only contain one such iterator pointer, when you come to such a node you must poll values from *both* iterators (your current element's and the node's) and create a path until the values diverge, at which point you create two children and put your respective iterator and element pointers in those.   Of course you'd nullify the pointers in the original node.  You have a 50/50 chance of this happening on the first poll, a 3/4 chance of it happening by the second poll, etc.   When an iterator exhausts itself you delete the iterator object, nullify the iterator pointer and start the linked list of equivalent elements for that node. &lt;br /&gt;&lt;br /&gt;Alternatively to the  linked lists we could simply have a pointer to the first instance of an equivalent member and a count value that specifies how many times it repeats, but that only works with members that don't have any 'hidden variables'  with respect to their binary representations.  Plain old strings or numbers would work just fine that way.  Sorting person objects by last name, wouldn't. &lt;br /&gt;&lt;br /&gt;This algorithm isn't generally suitable for mixed-type collections or any type that uses a special comparison function.  Strings, ints, floating points and fixed decimals should work fine.  The above is optimized for strings.  For a numerical type, all iterators are exhausted at the same branching level (8, 16, 32, or 64), although that doesn't change the algorithm a whole lot -- maybe provides for some minor optimizations.  But because comparing two numbers might be less expensive than grabbing a value from a binary iterator, we could forgo the binary representations altogether for numbers.  Instead of a node storing a pointer to an iterator and an element, it would simply store a number.  That could be a huge improvement.  And even if we still used binary representations, most numeric values probably start with lots of 0's, so we could speed up the process by performing a BSF assembly command on it to determine the number of leading zeros, then jump directly to a node, skipping the first portion of the path constituting zeros, based on a table of pointers for numbers of leading zeros up to 8, 16, 32 or 64. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Binary Search Library Sort&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Use the Library Sort method ( http://en.wikipedia.org/wiki/Library_sort ), but instead of just iterating through the list to find where an item belongs, do a binary search.  Since we're starting with an empty gapped list, our elements in it will always be sorted.   A new element will be placed in the first empty binary search location, so our search will never have to worry about traversing gaps.  &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Binary Search Sort&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is actually not a sorted list; it's a sorted linked list.  Take one element and put it in the list.   That element becomes the first search point.  The next element becomes the next search point either larger than or smaller than the previous element.  And so and and so on (except that identical elements exist in the same search point).  This method actually seems to be identical to the binary sort method above where we use comparison instead of a binary representation.  But we can perhaps improve the algorithm by changing search points.  For example, each node can store the average value of the two nodes it's 'between' (its parent and grandparent, and we can also use the max and min of the whole collection for the first two two depths if we want), and if a value comes along that is about to be placed undeneath it, but it's closer to the parent's average value than its parent is, then it swaps itself with its parent node.  For strings our average might just have to be a character and its place in the string.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-7013057764957194768?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/7013057764957194768/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=7013057764957194768' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/7013057764957194768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/7013057764957194768'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2008/12/three-sorting-algorithm-ideas-binary.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-8185152191827206190</id><published>2008-12-15T22:55:00.000-08:00</published><updated>2009-03-26T03:45:02.089-07:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;The ultimate hacker's ensemble&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. A WiFi NIC that supports monitor/RFMON mode, likely a Cisco&lt;br /&gt;2. A high-gain directional parabolic WiFi antenna, like the RadioLabs 24dB Parabolic Grid WiFi Antenna ($70)&lt;br /&gt;3. Kismet to record packets, detect networks, etc. (free)&lt;br /&gt;3. Aircrack-ng to crack WEP encryption (free)&lt;br /&gt;4. A web browser.  Now the trick is to feed those HTTP streams to the web browser.  Since normally a web browser isn't accepting a web page from a server unless it had sent a request, we'd have to hack the web browser.  I.e., we'd have to download the source to Firefox (open-source), or perhaps code our own web browser from webkit.  There might be an easier way, though.  Given a web browser that support the experimental Reverse HTTP, we could first send the command to put it into Reverse HTTP mode, and then every subsequent web page will be server-push.  This still wouldn't likely work for AJAX or dynamic Flash, etc. applications with two-way stateful communications.  But for regular old HTML it'll still be cool.&lt;br /&gt;5. Wireshark to decode AIM, Live Messenger, etc. messages&lt;br /&gt;6. A laptop (for war-driving/stalking), or a normal desktop PC if we just want to eavesdrop on networks from around our house&lt;br /&gt;7. A car with heavily tinted windows (again, only if we want to stalk particular people/organizations or go war driving)&lt;br /&gt;&lt;br /&gt;Now we stitch it all together programatically so that we can just point the antenna, select a random NIC on a random BSSID, and view their web sessions as if they were our own, and possibly have pop-ups for IM messages too.  And we'd do this all completely passively - i.e., it would be &lt;span style="font-weight:bold;"&gt;physically&lt;/span&gt; impossible for them to detect that we're doing it or to know where we are.  Sweeet&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-8185152191827206190?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/8185152191827206190/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=8185152191827206190' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/8185152191827206190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/8185152191827206190'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2008/12/ultimate-hackers-ensemble-1.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-8508789517832384619</id><published>2008-12-15T20:49:00.000-08:00</published><updated>2009-03-26T05:17:16.412-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='memory bus'/><category scheme='http://www.blogger.com/atom/ns#' term='fsb'/><category scheme='http://www.blogger.com/atom/ns#' term='front side bus'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Wider memory bus&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We could probably make computers faster with a wider memory bus.  Say, for example, that the bus speed is 800 Mhz and the CPU speed is 1.8 ghz.  Then for every cycle of the bus, the CPU can process at most about 2 64-bit values, or 2 128-bit values with SIMD, or with four cores, perhaps 8 128-bit values.  Thus, if we have a bus width of X bytes, we can define an opcode to retrieve up to X bytes of RAM from location Y and put it in the cache, and do it in fewer cycles.  X could be, say, 128 bytes. (In the above scenario, requesting more than 32 bytes at once wouldn't be necessary for a given core, but perhaps a 128-byte-wide memory bus would aid in 4 cores each requesting 32 bytes at once.) &lt;br /&gt;&lt;br /&gt;Since we don't know what the future of CPUs and bus speeds holds, for future compatibility we should probably make this bus width as wide as is practical, unless it can be increased later but in a way that's easily scalar as far as programmers are concerned. &lt;br /&gt;&lt;br /&gt;This would save time every time memory is accessed sequentially, which is often.  &lt;br /&gt;&lt;br /&gt;I guess the pipelines within the RAM would have to be changed too?  I don't know much about RAM.&lt;br /&gt;&lt;br /&gt;Apparently a CPU has its own prediction mechanisms and automatic pre-caching.  This automated pre-caching can equally take advantage of a wider memory bus, and conversely, my explicit op-code idea for pre-caching carries its own advantage independently of the idea of extending the bus width.  That is, why leave it all up to the processor to predict what's going to happen, when the programmer (or possibly compiler/VM) can just *tell* it?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-8508789517832384619?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/8508789517832384619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=8508789517832384619' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/8508789517832384619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/8508789517832384619'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2008/12/we-could-probably-make-computers-faster.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-7517904897106068977</id><published>2008-12-15T19:35:00.000-08:00</published><updated>2009-03-26T03:49:52.976-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='transactions'/><category scheme='http://www.blogger.com/atom/ns#' term='ipc'/><category scheme='http://www.blogger.com/atom/ns#' term='memory controller'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Memory controller transactions&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To help with IPC, the memory controller should support transactions.  Since all CPUs must use the same memory controller in order to use the same RAM, this is analogous to a DBS supporting transactions that multiple clients may simultaneously connect to.  By supporting it in hardware at the point where memory updating is necessarily done one-at-atime anyway, you could eliminate the convolutions and dilemmas of trying to eliminate race conditions in software.&lt;br /&gt;&lt;br /&gt;Actually, I don't know how transactions work very much.  But the memory controller could implement a lock so that the first CPU to request a transaction can have exclusive use until the transaction is over.  I hear that transactions normally use a queue, but that doesn't seem necessary in this case.  In the same amount of time it would take a cpu to queue a transaction, the memory controller could already have committed the last one to memory.  So it's really just about a lock.&lt;br /&gt;&lt;br /&gt;Perhaps while one core/cpu is completing a "transaction", another can be modifying memory in a different place, that's defined to not be in the area of that transaction.  For example, the opcode for a "transaction" could include a number of bytes of contiguous memory to be considered as part of that transaction.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-7517904897106068977?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/7517904897106068977/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=7517904897106068977' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/7517904897106068977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/7517904897106068977'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2008/12/memory-controller-transactions-to-help.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-156645804206619834</id><published>2008-12-15T18:57:00.000-08:00</published><updated>2009-03-26T05:01:48.088-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='os'/><category scheme='http://www.blogger.com/atom/ns#' term='swapping'/><category scheme='http://www.blogger.com/atom/ns#' term='page table'/><category scheme='http://www.blogger.com/atom/ns#' term='paging'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;CPU paging support&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The CPU should store, probably within the page tables, a value indicating the last time any given page of memory was accessed.  That way the OS can ask the CPU when a page was last accessed to help it with its swapping algorithm.  It seems to me that swapping by time since last accessed would be almost as effective as, and a lot simpler than, using some sort of frequency of use algorithm.  Without this feature, the OS has no way of knowing when the last time a page of memory in RAM was accessed was.&lt;br /&gt;&lt;br /&gt;I don't know what mechanism the OS uses now for knowing what and when to swap, but I know it must be vastly less efficient than this.  I would recommend just swapping out and in at the granularity of memory pages.  If I remember correctly, conveniently a page is 4 Kb which is the same minimal amount of storage a harddrive can read or write in one command.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-156645804206619834?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/156645804206619834/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=156645804206619834' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/156645804206619834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/156645804206619834'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2008/12/cpu-paging-support-cpu-should-store.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-8357507251493536292</id><published>2008-12-13T03:15:00.001-08:00</published><updated>2008-12-13T03:15:59.947-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='metadata'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Search-related metadata&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I just sent this to google&lt;br /&gt;--&lt;br /&gt;I was thinking about the schemas idea behind WinFS, and how it might be applied to the intarweb.  I decided WinFS isn't particularly relevant to the web, and started looking up metadata for html.  I don't think it's exactly what I had in mind either.  I was trying to think of something that would make it easier to map the interrelations between webpages and allow authors to write metadata that aids in intelligent web searching capability.  WinFs-like schemas and XSD are only about breaking down particular things, like addresses.  So I decided to think up my own schema for this purpose.  &lt;br /&gt;&lt;br /&gt;The reason I'm telling you guys this is that Google supporting a particular metadata schema for its search would probably be the most effective--maybe the only--way for such a schema to become widely used.  (The point of its becoming widely used is to make web searching more powerful.)&lt;br /&gt;&lt;br /&gt;This schema would not have any mechanism for defining relationships between parts of a webpage -- only relationships between the webpage and various ideas/words or perhaps even other webpages, at least in its main intention, although doing that may also be possible -- parts of a web page could possibly be sectioned off with respect to the pertinent metadata, so perhaps in somewhat the same way they can relate to other webpages, they can relate to other parts of the webpage.  This may or may not be useful for search engine purposes, but it could be useful for other general metadata-related purposes. &lt;br /&gt;&lt;br /&gt;Here are my ideas for relationships:&lt;br /&gt;  - this webpage is vaguely relevant to Y in some way&lt;br /&gt;  - this webpage is closely relevant to Y in some way&lt;br /&gt;  - this webpage is about something particular to Y, in understanding&lt;br /&gt;  - this webpage is about something particular to Y, in function&lt;br /&gt;  - this webpage is about something that Y is is particular to, in understanding&lt;br /&gt;  - this webpage is about something that Y is is particular to, in function&lt;br /&gt;  - this webpage is about something particular to Y and that Y is dependent on, for understanding&lt;br /&gt;  - this webpage is about something particular to Y and that Y is dependent on, in function&lt;br /&gt;  - this webpage is about something that complements Y, in understanding&lt;br /&gt;  - this webpage is about something that complements Y, in function&lt;br /&gt;  - this webpage is about something that is dependent on Y, in understanding&lt;br /&gt;  - this webpage is about something that is dependent on Y, in function&lt;br /&gt;  - this webpage is about something that Y is dependent on, in understanding&lt;br /&gt;  - this webpage is about something that Y is dependent on, in function&lt;br /&gt;  - what this webpage is about and Y are mutually dependent, in understanding &lt;br /&gt;  - what this webpage is about and Y are mutually dependent, in function&lt;br /&gt;&lt;br /&gt;..where Y could possibly be a word, a phrase, a key word out of a predefined set of key words, a URL, a metadata-delineated section of a webpage, or a list of any of the above.  In all but the first two, Y is most likely a URL or webpage section. &lt;br /&gt;&lt;br /&gt;  - any of the above with the added qualifier that it applies ONLY to Y&lt;br /&gt;  - any of the above with the added qualifier that it was designed specifically to apply to Y&lt;br /&gt;  - by design, this webpage is particular to Y and is useless without Y in its functionality &lt;br /&gt;  - by design, Y is particular to this webpage is useless without Y in its functionality&lt;br /&gt;&lt;br /&gt;The last two have to do with the mechanics of a website -- for example, a page for filling out a form would be useless without the main website.  This is why they don't say "is about"; the webpages ARE the functionality.  "by design" isn't coupled with "in understanding" for more relations because those are already covered by above relations including the added qualifiers.&lt;br /&gt;&lt;br /&gt;I'm not saying one way or another on whether the two added qualifiers above are to be used as qualifiers in the syntax or to combinatorily create 48 more relationnship types.  With enough good ideas, the metadata syntax could actually grow into a grammar of its own, which would definitely call for making them qualifiers. &lt;br /&gt;&lt;br /&gt;I'm sure there are more good ideas for general relationships that I haven't thought of. &lt;br /&gt;&lt;br /&gt;The syntax could also specify domains that a webpage falls under.  Some examples would be:&lt;br /&gt;  - technical document&lt;br /&gt;  - interactive &lt;br /&gt;  - entertainment&lt;br /&gt;  - media&lt;br /&gt;&lt;br /&gt;Perhaps even a hierarchy of domains, perhaps modeled after Yahoo! Directory, dmoz.org, or similar.  And then a tree relationship between webpages could be automatically generated, so people can search for coordinate sisters, etc.  &lt;br /&gt;&lt;br /&gt;But even in the above, they're not all mutually exclusive.  They could be made into key words, but then you'd lose the hierarchical aspect -- or maybe not.  You could combine the two and have key words that aren't mutually exclusive but have hierarchical relationships to each other.  Or, you could forgo hierarchies altogether and have a more web-like system where everything is interconnected according to various relationships but there's no top or bottom to it; it's not a tree-like structure.  The interrelationships between the key words could be pre-defined, or perhaps they could be extrapolated somehow from analyzing the topology of hyperlinks in webpages with key words defined -- but then the relationship probably wouldn't be very semantical.  &lt;br /&gt;&lt;br /&gt;Speaking of semantics, whatever words or key words that appear in WordNet would lend themselves to automatic relational mappings according to all the relationships that that WordNet covers.  Also, the relationship-type metadata defined above would lend itself to a hierarchical or web-like structures wherever chains of sub-part or complement relationships can be found, which could also aid in searching ability. &lt;br /&gt;&lt;br /&gt;I haven't included any ideas for raw syntax of the metadata because I consider that implementation details.  Needless to say, it would be something in XML that's invisible to web browsers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-8357507251493536292?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/8357507251493536292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=8357507251493536292' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/8357507251493536292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/8357507251493536292'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2008/12/search-related-metadata-i-just-sent.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-4339091607530102800</id><published>2008-12-12T18:50:00.000-08:00</published><updated>2008-12-15T19:40:59.235-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='anti-spam'/><category scheme='http://www.blogger.com/atom/ns#' term='CAPTCHA'/><category scheme='http://www.blogger.com/atom/ns#' term='spam'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Google Captchas&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;most captchas out there can be cracked by software nowdays with enough effort.&lt;br /&gt;&lt;br /&gt;google had a program the other year where they would show any random two users who are participating a given image, and for x amount of time they'd both type in as many possible tags for that image as they could, and the tags that they both happened to type in are associated with that image.&lt;br /&gt;&lt;br /&gt;my idea is to use that database to show those images - as thumbnails - as captchas, and let the user type in an image tag. if it matches any tag in the database for that picture, they pass.   this would have to be a captcha service provided by google.&lt;br /&gt;&lt;br /&gt;so as not to frustrate users, we should probably include all tags typed in by both parties - not only teh ones agreed upon - presuming that information is included in the database.&lt;br /&gt;&lt;br /&gt;in case thumbs are too small in too many cases, there could be a button to show the image full-size , perhaps in a new window, although it would be just as easy to recycle the image.  or images could be shown full-size by default--perhaps in a new window, perhaps on the same page, or perhaps it could pop up just when you mouse over the thumb, like profile pictures in apps.facebook.com/yesnomaybe.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-4339091607530102800?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/4339091607530102800/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=4339091607530102800' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/4339091607530102800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/4339091607530102800'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2008/12/google-captchas-most-captchas-out-there.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-4034429982288674155</id><published>2008-12-03T18:33:00.000-08:00</published><updated>2008-12-03T19:02:28.804-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flight sim'/><category scheme='http://www.blogger.com/atom/ns#' term='idea'/><category scheme='http://www.blogger.com/atom/ns#' term='google earth'/><category scheme='http://www.blogger.com/atom/ns#' term='flight simulation'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Google Earth Flight Sim&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Use Google Earth data, including but not limited to the 3d building data in certain cities, to provide accurate worldwide data for a flight simulation application.  Since Google Earth uses 70+ TB, distribution would have to be limited to relatively small areas, or the flight simulator would have to be constantly communicating with Google Earth if the bandwidth would be sufficient.  &lt;br /&gt;&lt;br /&gt;It won't be long, though, until HDD's are large enough to store the whole thing (they're up to a TB now, and it was just a few years ago that 1 GB was a huge harddrive), although media to distribute the program in might be a different matter (blu-ray is only 25 GB, and we don't even really have it yet).&lt;br /&gt;&lt;br /&gt;Algorithms should probably be used to sharpen the images for very low flying, and perhaps create tree structures where there appears to be vegetation, extrapolate houses and buildings to 3d, and simulate water where there appears to be lakes, and try to extrapolate height data for hills and mountains.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-4034429982288674155?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/4034429982288674155/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=4034429982288674155' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/4034429982288674155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/4034429982288674155'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2008/12/google-earth-flight-sim-use-google.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-3527725420211957975</id><published>2008-12-03T18:18:00.000-08:00</published><updated>2008-12-03T18:25:14.699-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='telescope'/><category scheme='http://www.blogger.com/atom/ns#' term='idea'/><category scheme='http://www.blogger.com/atom/ns#' term='astronomy'/><category scheme='http://www.blogger.com/atom/ns#' term='nasa'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Balloon Telescopes&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Make a very large, clear balloon, fill the bottom portion of it with water, and presto, you have a huge lens.  Then make the smaller lenses in the appropriate shapes to complement the odd shape of the larger lens, and presto, you have a gigantic telescope.  &lt;br /&gt;&lt;br /&gt;Or, make the balloon and air balloon and coat the bottom of the inside of it with silver, then put the complementary mirrors inside of it.  Presto, a gigantic reflecting telescope.  You could even float it up to high in the atmosphere.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-3527725420211957975?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/3527725420211957975/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=3527725420211957975' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/3527725420211957975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/3527725420211957975'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2008/12/balloon-telescopes-make-very-large.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-9172804723708831364</id><published>2008-11-26T12:40:00.001-08:00</published><updated>2008-11-26T12:41:37.896-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='space'/><category scheme='http://www.blogger.com/atom/ns#' term='rocket'/><category scheme='http://www.blogger.com/atom/ns#' term='nasa'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Space Needle&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;to get into space: use a balloon - heat or helium - to rise the craft as far as possible.  then you start moving as fast as you can using a solar power or maybe a rocket. the balloon should be shaped like a very, very large needle so that it can be aerodynamic.  if you go fast enough maybe you can rise above the atmosphere and start skipping across the surface.  keep going faster and faster until you hit escape velocity.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-9172804723708831364?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/9172804723708831364/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=9172804723708831364' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/9172804723708831364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/9172804723708831364'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2008/11/space-needle-to-get-into-space-use.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-5219856746216844570</id><published>2008-11-25T21:29:00.001-08:00</published><updated>2009-03-26T04:06:13.490-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cpu'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='stack'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Stack&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Stack is a sticky situation.  The way it's implemented an application more or less has a fixed stack size (typically 1 MB?) which is not free to be used by anything else, even when most of it is not in use, and neither can it expand its stack size when it runs out.  &lt;br /&gt;&lt;br /&gt;I understand why it was implemented this way -- to make pushing to and popping from the stack efficient.  But I think it could be improved with no loss to performance.  Just implement in the CPU architecture a check for each push and pop.  If the push would go beyond the stack segment, raise an interrupt that calls an OS function that can then allocate more pages to the stack segment, then continue operation of that thread.  And if a pop recedes by a certain amount, you can also raise an interrupt that calls an OS function that may free a page of memory if it's at least x bytes behind the stack pointer.  This would obviously require a stack pointer that pushes up and pops down, as opposed the other way around which is only the case anachronistically anyway due to the old programs that put the stack and the other segments in the same memory space.  &lt;br /&gt;&lt;br /&gt;Realistically, you'd need backward compatibility with software, so you'd have to emulate the backwards stack pointer by starting it off at 0xFFFFFFF on 32-bit systems or 0xFFFFFFFFFFFF on 64-bit even though the memory addressed can't necessarily actually go down to zero without allocating more or raising an exception. &lt;br /&gt;&lt;br /&gt;The OS could even start swapping out the uppermost stack data to disk upon interrupt if the pointer goes down too far to allocate more memory, thus giving us, say.. 300 GB of stack space, if'n we ever really need it.  And it woudln't have to impinge on speed, because it only does this stuff when there would have been a stack overflow otherwise anyway.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-5219856746216844570?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/5219856746216844570/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=5219856746216844570' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/5219856746216844570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/5219856746216844570'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2008/11/stack-stack-is-sticky-situation.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-5942342675345810514</id><published>2008-08-26T19:42:00.001-07:00</published><updated>2008-08-26T20:05:30.342-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='charging'/><category scheme='http://www.blogger.com/atom/ns#' term='idea'/><category scheme='http://www.blogger.com/atom/ns#' term='electric cars'/><category scheme='http://www.blogger.com/atom/ns#' term='batteries'/><category scheme='http://www.blogger.com/atom/ns#' term='gas stations'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;for electric cars&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Electric cars should come with batteries that are easily replaceable.  That way you stop at a gas station that supports electric, they take out your spent batteries and replace them with fully charged ones.  No waiting.&lt;br /&gt;&lt;br /&gt;theteofscuba: using a fork lift?&lt;br /&gt;inhahe: i dont know, i suppose they could design the car to make it easily exchangeable with a machine&lt;br /&gt;theteofscuba: mayb&lt;br /&gt;theteofscuba: the chevy volt uses electricity for u p to 40 miles&lt;br /&gt;theteofscuba: and when it ruins out of batery it uses gas&lt;br /&gt;theteofscuba: but the tesla roadster goes like 400 miles on one charge and the batteries are huge so replacing it doesnt seem feasible&lt;br /&gt;inhahe: if they instated this system the batteries would conform to some particular voltage and size standard&lt;br /&gt;inhahe: so the roadster would just have more of them&lt;br /&gt;&lt;br /&gt;Obviously some people might consider it an issue that the gas station may give out a battery that's newer and has a longer lifetime left than the one they receive.  The problem is basically what happens when a gas station is stuck with a battery that's used enough that they're obligated to throw it away/recycle it (and there should be a code for this).  I think the answer is that the gas station simply foots the cost, and it averages out over all the service they do.  After all there's not really opportunity for the motorists to defraud the gas stations in this way, especially if they don't even have to worry about the age of their batteries because of this system being instated.  Although not even the gas stations necessarily have to foot the cost per se; they could have deals with the battery companies.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-5942342675345810514?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/5942342675345810514/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=5942342675345810514' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/5942342675345810514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/5942342675345810514'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2008/08/for-electric-cars-electric-cars-should.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-6058343225909471174</id><published>2008-08-22T22:12:00.000-07:00</published><updated>2008-08-22T22:14:25.680-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='speed'/><category scheme='http://www.blogger.com/atom/ns#' term='idea'/><category scheme='http://www.blogger.com/atom/ns#' term='hard drive'/><category scheme='http://www.blogger.com/atom/ns#' term='actuator'/><category scheme='http://www.blogger.com/atom/ns#' term='heads'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Faster Harddrives&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Why just one head on an actuator arm?  Put as many heads as will physically fit in a series, to put different heads on different tracks simultaneously. If you interlace the data right, you'll get throughput increased by a factor of X, where X is the number of heads on an arm.  You can also put them in a grid rather than a line, with successive rows offset to each other, to get more in-between tracks.  This will work a lot better (or at all) if the range of head motion is perfectly along a radius of the platter (and so would be its row(s) of heads).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-6058343225909471174?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/6058343225909471174/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=6058343225909471174' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/6058343225909471174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/6058343225909471174'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2008/08/faster-harddrives-why-just-one-head-on.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-6923263487803178185</id><published>2008-08-15T13:58:00.000-07:00</published><updated>2008-08-15T13:59:11.517-07:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;How To See Ghosts&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Make 2-dimensional FET array, with a fair amount of resolution.  Put it in a Faraday cage with a pinhole in the front to make the FET array work like a pinhole camera, except it'll be one that captures EMF.  Now go somewhere where there's haunting activity and start shooting.  I read once that someone had captured flying spirits around the pyramids of Egypt using a FET array somehow.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-6923263487803178185?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/6923263487803178185/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=6923263487803178185' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/6923263487803178185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/6923263487803178185'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2008/08/how-to-see-ghosts-make-2-dimensional.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-2255518524697607568</id><published>2008-08-15T06:47:00.000-07:00</published><updated>2008-08-15T06:50:58.732-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wires'/><category scheme='http://www.blogger.com/atom/ns#' term='motherboard'/><category scheme='http://www.blogger.com/atom/ns#' term='form factor'/><category scheme='http://www.blogger.com/atom/ns#' term='wireless'/><category scheme='http://www.blogger.com/atom/ns#' term='power supply'/><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;"&gt;Wireless M/b Form Factor&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;myriachromat&gt; i just had a cool idea&lt;br /&gt;&amp;lt;myriachromat&gt; make a new type of motherboard that carries the power through the motherboard so you don't have to have wires (at least not power wires)&lt;br /&gt;&amp;lt;myriachromat&gt; of course you could do the same with data&lt;br /&gt;&amp;lt;myriachromat&gt; i guess i was inspired by this new dell computer that has no wires to the monitor, the thing that holds it carries everything&lt;br /&gt;&amp;lt;myriachromat&gt; you can't really change the standard for power to the devices though or their mounting &lt;br /&gt;&amp;lt;myriachromat&gt; so you'd need the motherboard to have little power supplies and data  sticking out &lt;br /&gt;&amp;lt;myriachromat&gt; from the sides&lt;br /&gt;&amp;lt;myriachromat&gt; hmm&lt;br /&gt;&amp;lt;myriachromat&gt; i was thinking you could have it transitional, where new devices are made with both inputs, so that they can be made so that just mounting it gives it power and data if the m/b supports that&lt;br /&gt;&amp;lt;myriachromat&gt; but then if you have any one device that still needs wires&lt;br /&gt;&amp;lt;myriachromat&gt; then you need a traditional power supply and all those wires it has defeats the purpose &lt;br /&gt;&amp;lt;myriachromat&gt; sort of&lt;br /&gt;&amp;lt;myriachromat&gt; unless you were to get a $600 modular one&lt;br /&gt;&amp;lt;tommjames&gt; mine costed about £60&lt;br /&gt;&amp;lt;tommjames&gt; which i guess is about 120 dollars&lt;br /&gt;&amp;lt;myriachromat&gt; ah ok&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-2255518524697607568?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/2255518524697607568/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=2255518524697607568' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/2255518524697607568'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/2255518524697607568'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2008/08/wireless-mb-form-factor-i-just-had-cool.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-2886003204600404700</id><published>2008-08-03T03:29:00.000-07:00</published><updated>2008-08-03T06:31:38.470-07:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Web 4.0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Here are some of the languages one currently might use and integrate when making a webpage, and also a few of the things that a browser needs to have added to be able to support the whole world wide web:&lt;br /&gt;&lt;br /&gt;(X)HTML&lt;br /&gt;CSS&lt;br /&gt;Javascript&lt;br /&gt;Java&lt;br /&gt;Flash&lt;br /&gt;ActiveX&lt;br /&gt;Silverlight (not extremely popular)&lt;br /&gt;&lt;br /&gt;So for the next incarnation of the web, I recommend combining the best features of all of these into one language. &lt;br /&gt;&lt;br /&gt;Of course Java, Flash, ActiveX and Silverlight almost serve the same function so I don't have to explain how to integrate those.  JavaScript is more integrated with HTML, so integrating that is just a matter of giving our new language access to the DOM.  Although there might &lt;span style="font-style:italic;"&gt;not&lt;/span&gt; be HTML or a DOM.  This language will allow much more flexible webpages - more comparable to applications, and applications don't use a DOM.  But then who wants to have to create an object for every element of text, so we probably should keep XHTML and the DOM.  XHTML will still be its own language; it wouldn't be as readable to implement it as a set of functions within the procedural language, and implementing a procedural language in X(HT)ML would look horrible as well as being a PITA to code by.  But there are four different ways we can integrate these two languages as separate languages:&lt;br /&gt;&lt;br /&gt;1 is to use a procedural command to output XHTML (defined as a literal string, for the purposes of this question) to the screen.  This can be a print statement, perhaps shortened as ? (after BASIC), although it would be more consistent to use the function that changes the contents of a DOM element, as it has to exist anyway for dynamic content.  (The top-most DOM element, representing the whole window, would always exist by default.)  We could make a print statement that can take a target, although if we do that then one should still be able to change content using a DOM-object-bound function, because those objects will already have a set of functions so that function should be included for completeness, so that makes the print statement somewhat redundant.  But it *might* also be more convenient.&lt;br /&gt;&lt;br /&gt;2 is to have separate sections of the document for code and XHTML.  We still need 1 for dynamic content.&lt;br /&gt;&lt;br /&gt;3 is to use a template language.   Using a template language could be a pain, because who wants to keep having to escape lines of code?  But then we'd still have 1 to work with, because you can't target a specific DOM object using the template way, AFAIK.  Well, maybe you can but only by putting the template code within a DOM object so the object would have to be hard-coded into the page.&lt;br /&gt;&lt;br /&gt;4 is to use an XHTML tag just like Javascript does.  This is like 3 but just more limited.  This, too, requires option 1. &lt;br /&gt;&lt;br /&gt;None of these options are mutually exclusive.&lt;br /&gt;&lt;br /&gt;We could make web 4.0 backward-compatible with Web 1.0 or Web 2.0 (and that would imply Option 2), but then we have sort of defeated the purpose because instead of replacing 7 languages with 1 we have added 1 to make 8.  Actually, though, web browsers would most likely support Web 1.0 and 2.0 as well as 4.0 because of the need for transition, so it's just a difference of whether they would support them in the same page or not.  The real issue is that if we don't give the new language enough important features, people will still have reason to continue expanding development of, and making new websites in, the old languages, and then we &lt;span style="font-style:italic;"&gt;would&lt;/span&gt; have defeated our purpose.&lt;br /&gt;&lt;br /&gt;CSS and HTML should not quite be separated the way they are.  It's a legacy issue.  Many functions are available in both CSS and HTML, and some are available in CSS but not HTML.  I don't recommend having two different ways to do the same things.  I recommend having only HTML attributes, which would include everything that CSS does now, and making CSS simply a way of using those HTML attributes in a way that does what its name suggests: cascading style sheets.  I wrote more about this at &lt;a href="http://inhahe.nullshells.org/how_css_should_have_been_done.html"&gt;http://inhahe.nullshells.org/how_css_should_have_been_done.html&lt;/a&gt;.  One of the features described there - embedding JavaScript in CSS - requires either Option 2, or a special provision in CSS.&lt;br /&gt;&lt;br /&gt;One neat thing to do would be to allow this language to be used as a server-side language too.  Then we would use some convention in the language for determining which parts are processed on the server (like PHP) and which parts are processed on the client (like JavaScript), but the distinction would be somewhat seamless for the programmer.  This feature, BTW, definitely begs for Option 3 above.  The use of Option 3 escapes could actually be the sole determiner for whether it's client-side or server-side code, but then you couldn't embed template language code in dynamic content.  Also, I have another idea of how to do it..&lt;br /&gt;&lt;br /&gt;Security concerns would imply whether or not something is executed client-side or server-side.   They obviously do anyway, but I mean automatically instead of manually.  Certain objects could be demarcated as "no-read", and then those objects will not be sent to the client.  Certain objects could be demarcated as "no-write" and then their value can't be set by the client.  An example of a "no-read" object would be someone else's password.  An example of a "no-write" object would be an SQL string.   We may need to put consideration into what to do about objects and parameters whose values are determined from no-read objects but aren't the objects themselves and about no-write objects and parameters that are determined from other objects, because we don't want to make it easy to create subtle security leaks, but perhaps it would just be a no-brainer on the part of the programmer to make those objects no-read and/or no-write too.&lt;br /&gt;&lt;br /&gt;Other considerations need to determine how the code is relegated too, though.  &lt;br /&gt;&lt;br /&gt;1. CPU bandwidth issues.  Is the client likely fast enough?  Would the server be too overloaded to process that information for each client?  &lt;br /&gt;2. The cost of client&lt;-&gt;server communication: the issues of latency and bandwidth.  Code could be delineated to minimize object transference.   This might perhaps be possible to do automatically - delineate code by tracking information dependincies.  But then information that depends on information from both sides is not always determinable because the compiler can't predict program flow and you don't know which variables are going to be asked most for.  It's determinable for depencies in loops but not depencies in conditions, and not for groups of loops with different side-of-dependency ratios &lt;span style="font-style:italic;"&gt;and&lt;/span&gt; dynamic loop counts (this raises Issue 3).  This issue could be mitigated though because information gotten from server-side calls comes very fast and information that can only be gotten from the client side is slow and infrequent, because it requires user interaction, so we can always be biased toward running code on the server side where information from both is required. &lt;br /&gt;3. How finely does it granulate its delineation?  When does it put one code block on one side and one on the other, vs. when it would stick them together?&lt;br /&gt;&lt;br /&gt;So we probably will need to provide a convention for manually determining which side code executes on, and that might make automatic security-based delineation pointless, but not necessarily if the convention is used infrequently.&lt;br /&gt;&lt;br /&gt;I would personally recommend a modified version of Python for this unified www language.  I may just sound like a Python fan, but it's just that I've noticed that, at every turn, Guido picks the design implementation that's simple enough for novices and yet powerful enough for veterans or even language theorists, facilitates simplicity and consistency, is very consise, and borrows the best features from every other language, all the while being extremely elegant-looking and about as readable as pseudo-code.  (And where there's a balance between those features he always seems to know the best middle-ground.)&lt;br /&gt;&lt;br /&gt;It's also almost the fastest scripting language, although it seems to be significantly slower than Java and that concerns me because I'm not sure if it could do some things like those fire simulations or ripple-in-water effects that some of those Java applets do.  I guess we could always have another Java but with Python-like syntax and language features, or just have RPython. &lt;br /&gt;&lt;br /&gt;With all of this seamless server-side and client-side scripting, we may need the server side to implicitly keep its own mirror of the client-side DOM.   This would facilitate another feature that I've been thinking about for a web framework, but that could perhaps be made a feature of the language.  For web 1.0 clients without JavaScript, we could have a restricted form of AJAX *automatically* fall back to page-based browsing, so you don't have to code your website in both AJAX and Web 1.0.  Basically your code would add an event handler for when a particular object is clicked, which makes changes to the DOM and then calls submit(), or we could make submit() implicit with the event handler's return.  If the server is serving a non-JS browser, the clickable things in question will be sent as regular HTML buttons or links, and the changes will be made to the server's DOM and then upon submit() the entire page will be sent with its new modifications.  If the server is serving a JS-enabled browser (not web 4.0), buttons or links will be sent with JavaScript events associated with them in which XMLHTTPRequests are sent (unless no server interaction is necessary) and the page elements are modified locally.  Some types of script could be included, such as roll-overs, that aren't crucial to the user's understanding or navigation, that would be automatically ignored (by the server) for non-JS users, so that not every sacrifice has to be made to have fall-back for the non-JS users.  But some types of interaction would still have to be illegal.  Or perhaps those restrictions don't have to exist in the language; perhaps it can just ignore all dynamic content that's not in the right form, but the coder should still take heed of those restrictions if he's using the fall-back feature, or else the page just won't make sense to non-JS users.  It would be better to do it that way, if possible, because otherwise some pieces of code might not be allowed that actually wouldn't pose a real problem. &lt;br /&gt;&lt;br /&gt;One feature this language definitely needs to have is the ability to download parts of code, widgets, dialog boxes, etc. to the client on-demand, but in a way that's easy for the web developer, perhaps even automatic.  The point is that if you load a very complicated and customized interactive page, you shouldn't have to wait a long time for it to load, because that would just put people off of Web 4.0.  &lt;br /&gt;&lt;br /&gt;BTW, The reason I call it Web 4.0 is that I already have Web 3.0 reserved; it's the idea to have Java applets have this load-on-demand feature and for websites to not only be dynamic, but to use Java to behave just like regular applications, with all the freedoms implied (except for the security restrictions, obviously).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-2886003204600404700?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/2886003204600404700/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=2886003204600404700' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/2886003204600404700'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/2886003204600404700'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2008/08/web-4.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-3303244479573887316</id><published>2008-08-01T17:04:00.001-07:00</published><updated>2008-08-03T06:34:34.109-07:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Easier registration and login&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;For practically every forum or other kind of social website that I use I have to first register, putting in my name, e-mail address, password, etc. etc.  And then when I go back to it later I have to provide username and login information.  There are cookies, but they don't help if you login months later.  I have to enter the same information for all of these sites.  Wouldn't it be nice if they could just detect my information for registration and login? &lt;br /&gt;&lt;br /&gt;My idea is to have a personal file including all the personal information you're willing to give out (or perhaps some items that you're willing to give out with user confirmation).  The website is able to access this information, but only the fields it requests; that way the user doesn't have to worry about confirming information that the website doesn't need.  This could also be used to eliminate passwords.  I use the same password for every site, so why have to type it in?  Some people prefer to use a different password on every site, but then they have to keep track of all their passwords.   You can get the security of the latter with the convenience of the former by using PGP.   The user may still want to define a password, though, so that they can logon when they're not at their computer which possesses the private key.  Perhaps the information file could store a default username and password.  Either way the user should be able to specify a site-specific username and/or password.&lt;br /&gt;&lt;br /&gt;How should the protocol be implemented?  &lt;br /&gt;&lt;br /&gt;Perhaps it could be a browser add-on or capability, implemented as a JavaScript function.  We should not go arbitrarily (browser-specifically) adding JavaScript functions which websites may require, though; a website supporting this protocol should, and most likely will, allow the user to input information manually if such function does not exist.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-3303244479573887316?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/3303244479573887316/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=3303244479573887316' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/3303244479573887316'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/3303244479573887316'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2008/08/easier-registration-and-login-for.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-7375980358548642424</id><published>2008-07-31T01:28:00.000-07:00</published><updated>2009-03-26T04:22:24.728-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='idea'/><category scheme='http://www.blogger.com/atom/ns#' term='election'/><category scheme='http://www.blogger.com/atom/ns#' term='voting'/><category scheme='http://www.blogger.com/atom/ns#' term='democracy'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;A better voting system&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Here are two paradoxes in voting:&lt;br /&gt;&lt;br /&gt;1. You want your vote to count, so you vote for a candidate you think might have a chance to win, which means one of the most popular candidates.  Everyone else is also voting according to that philosophy, which means that popularity itself becomes self-magnifying.  It gives certain meaning to the statement, "a celebrity is a person who's well known for how popular they are."  This serves to: a) give the underdog candidates even *less* of a chance in hell to win, and b) magnify the problem of mere campaign funds determining how popular a candidate is..because campaign funds affect how well recognized a candidate is to start with, and then from there we merely magnify that value.  And the funny thing is, your vote's not going to change who becomes president anyway, so you might as well vote for the candidate you like.&lt;br /&gt;&lt;br /&gt;2. Let's say you have a republican candidate, let's call him Kodos, and a democratic candidate, let's call him Kang.  The voters nearly equally like Kodos and Kang on average, but there's another, independent candidate, let's call him Ralph Nader.  The problem here is that the voters who like Kang more also like Ralph Nader.  Some of them vote for Nader instead, which means Kodos wins.  Why is that a problem?  Consider this possibility: 60% of voters want either Kang or Ralph Nader, and don't want Kodos.  40% of voters want only Kodos.  The just solution?  Give them Kang or Nader (obviously Kang, because he was more popular of the two.)  The actual result?  Kodos (because, e.g., 35% voted for Kang, and 25% voted for Nader).&lt;br /&gt;&lt;br /&gt;There is a single solution to both of these problems.&lt;br /&gt;&lt;br /&gt;Make voting a rating system.  You get to give each candidate a percentage of preferability, adding up to 100, or at least an order of rankings, and a sophisticated algorithm determines what outcome would satisfy the most people.  I'm not sure what this algorithm is..perhaps something like one of the chess rating systems, such as the Glicko system, adapted for this purpose. Chess ratings are based on who beats whom, so in our adaptation candidate X beats candidate Y every time X comes before Y in anyone's list.  Whatever the best algorithm is, it might even make the primary elections completely unnecessary, since, e.g., one democrat wouldn't 'take votes' from another democrat.&lt;br /&gt;&lt;br /&gt;Alternatively, we could simply use a system where we vote for more than one candidate.  No ratings, just put a check mark next to each candidate you like.  Or, perhaps, yes's for ones you like and no's for ones you dislike.  The latter option seems a little less positive psychologically, mostly since the next president would likely enough be someone you had no'd..however, it seems to be necessary given the two-party system.  For example, without no's, most democrats would check every democrat, and most republicans would check every republican. That leaves very little to determine which democrat wins or, alternatively, which republican.  If there are no's, however, one could, for example, 'yes' Hillary, leave Obama neutral, and 'no' McCain.  This is probably not a big issue, though, if the primaries remain instated.&lt;br /&gt;&lt;br /&gt;I just noticed this useful comment -- thanks Sylvain&lt;br /&gt;&lt;br /&gt;"Why reinvent the wheel. It is well-known to mathematicians since long ago, that the best voting system to avoid strategic biases, is the Condorcet method."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-7375980358548642424?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/7375980358548642424/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=7375980358548642424' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/7375980358548642424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/7375980358548642424'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2008/07/better-voting-system-here-are-two.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-779007071225640065</id><published>2008-07-30T23:03:00.000-07:00</published><updated>2008-08-01T17:02:31.920-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='file system'/><category scheme='http://www.blogger.com/atom/ns#' term='mirroring'/><category scheme='http://www.blogger.com/atom/ns#' term='idea'/><category scheme='http://www.blogger.com/atom/ns#' term='chiron fs'/><category scheme='http://www.blogger.com/atom/ns#' term='backup'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;An optimal backup+mirroring system.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Backing up to something other than a harddrive has the disadvantage that you can't backup everything up-to-the-minute.   &lt;br /&gt;Backing up using RAID 1 or another form of mirroring has the disadvantage that it reduces the amount of logical harddrive space to a fraction of its physical combined size.  &lt;br /&gt;&lt;br /&gt;You could get the best of both worlds by:&lt;br /&gt;a) backing up new data to DVD-R or maybe DVD-RW periodically, for example once a day&lt;br /&gt;b) mirroring what *isn't* yet backed up on other harddrive(s)&lt;br /&gt;&lt;br /&gt;The filesystem would keep track of everything that's backed up and automatically mirror either sectors or files that are added or changed, until they're backed up.  The mirrored data would exist as separate files, or one large file, on the (partially) mirrored harddrive(s) so that it can grow and shrink and not need the entire harddrive or even a fixed-sized partition on it.  &lt;br /&gt;&lt;br /&gt;If the mirroring works by sectors then the one large file could have an allocation table of sectors and, since they're all the same size, when one is removed the last sector in the file can be copied to its location and then deleted from the end.  For efficiency implemented on the file system level the sectors being mirrored could sit squarely on sectors in the file system they're being mirrored on.&lt;br /&gt;&lt;br /&gt;In the above case you don't even have to copy a sector from the end when one is deleted: just change the info in the FS of which sectors the file uses.  But the kind of file system fragmentation that would cause might defeat the purpose.  &lt;br /&gt;&lt;br /&gt;If, instead of files or sectors, the mirroring works on arbitrarily small chunks of files, then the one large file could be a database, which should be periodically compressed. &lt;br /&gt;&lt;br /&gt;Partially mirrored harddrives should be able to be any harddrive whether it's on the same system or on any other system on the network, such as with Chiron FS.  &lt;br /&gt;&lt;br /&gt;Each system used as a mirror should also be able to have its own data mirrored, except of course for the data that's already acting as a mirror.  That way, for example, if its harddrive crashes you won't have to reinstall the OS: just sync a new harddrive with a mirror (and/or DVD backup) and then install it.&lt;br /&gt;&lt;br /&gt;I'm not sure how incremental DVD backups are usually handled, so that you don't have to go back 10 years and put in 100 different DVDs in series to reconstruct the original data, but I'm sure this question has already been handled.  But if not, I have some ideas.&lt;br /&gt;&lt;br /&gt;1) when possible, erase the entire DVD and rewrite it.  Make sure you don't rewrite a DVD too many times so that it doesn't work.  Have the software keep track of how many times it's been rewritten.  Also use multisession for incremental changes.  If used in combination with erasing, a multisession DVD wouldn't have to be erased until it gets full due to incremental additions.&lt;br /&gt;&lt;br /&gt;2) Have a limit to how many backup DVDs a given filesystem state can depend on.  The software should know exactly what's on what DVD so it can automatically enforce this limit.  When it's too many, it can start over from the beginning and backup to new DVDs, or better, erase the old DVDs and write over them.  OR it can only rewrite just enough to keep the number of backup DVDs below the limit.&lt;br /&gt;&lt;br /&gt;--i've been informed that tape backup is better than dvd for large scale servers.   so replace dvd with tape backup in the above. and remove 1 and 2.  unless dvd is still an economical solution for small scale.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-779007071225640065?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/779007071225640065/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=779007071225640065' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/779007071225640065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/779007071225640065'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2008/07/optimal-backupmirroring-system.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-955529882197911178</id><published>2008-07-30T06:03:00.000-07:00</published><updated>2008-07-30T06:05:09.043-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='idea'/><category scheme='http://www.blogger.com/atom/ns#' term='world'/><category scheme='http://www.blogger.com/atom/ns#' term='peace'/><category scheme='http://www.blogger.com/atom/ns#' term='website'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Solve world strife through understanding&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Description 1&lt;br /&gt;&lt;br /&gt;Have a project where you interview all the world's leaders, especially heads of state, to get their philosophy on life.. morals, religion, politics..  Make them available on the website.  Follow current events and keep people posted with the website's blog.  Every event will be presented interpreted according to the involved parties' philosophies.  It would be best to write this neutrally, regardless of how immature someone's point of view may be.&lt;br /&gt;&lt;br /&gt;Events should also include hyperlinks to related events in the blog, and there could also be a visual diagram showing titles of all the events (which link to the blogs themselves) and the links between them.  Countries involved could be signified in the diagram elements by their respective flags.  Perhaps events could be laid out in (roughly?) chronological order on the vertical or horizontal axis.  Or if that would detract too much from the network's optimal layout then just color according to date or recentness.&lt;br /&gt;&lt;br /&gt;Description 2&lt;br /&gt;&lt;br /&gt;hold interviews with various world leaders, that is, anyone with weight, which includes politicians, terrorists, and businessmen.   try to eliminate as much superfice as possible. be as direct and honest as you can get /them/ to be.  find out what they *really* think and believe.  behind any belief system or justification is a simple psychological reason, just like what how people say different things when they're drunk.  find out not only this, but this in relation to the decisions that they make that affect the country or the world at large, and how that country (or terrorist organization, or religion, or business, etc.) relates to other countries/entities, be it peace, war, trade, embargos, strife, amory, or otherwise.  i imagine a static base of deeply delving interviews into the philosophies and political positions (and perhaps goals) of these people, combined with a constant news source that reports earth-shaking events as they relate to the interviews/philosophies of the active parties.  events related to strife, war, exploitation, etc. are probably the most important to cover.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-955529882197911178?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/955529882197911178/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=955529882197911178' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/955529882197911178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/955529882197911178'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2008/07/solve-world-strife-through.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-2638054916937204287</id><published>2008-07-30T05:46:00.000-07:00</published><updated>2008-07-30T05:47:03.646-07:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;The Pulse of America&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A website for issues that will be voted on by congress or decided by governors, mayors, etc.  For bills, it would automatically list all the ones that need to be decided on, from usa.gov.  For issues only affecting only legislation in a particular area, perhaps only people from that area would be allowed to vote.   With each issue could be an explanation of what factors need to be considered, preferably posted by congress members or mayors, etc.  Also, for bills, it would be nice if congress members posted summaries, including the gotchas that are tacked on just because they can.  Bills don't seem that easy to read.&lt;br /&gt;&lt;br /&gt;This doesn't have to be a government-supported website, because the idea isn't that the voters legally or necessarily determine the outcome--it's for politicians to peruse results and feedback at their liesure.  Voters should be able to attach explanations about their feelings/opinions along with their votes.  Also have the ability for users to post their own bills or other suggestions for changes in legislation or budget, vote for user proposals, or create new branch versions of existing  proposals/bills.  Attached explanations should be rateable so that it's easy to see which sentiments have a lot of support and are well-presented.  User proposals/branches should also be rateable.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-2638054916937204287?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/2638054916937204287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=2638054916937204287' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/2638054916937204287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/2638054916937204287'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2008/07/pulse-of-america-website-for-issues.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-7965978665747852722</id><published>2008-07-30T05:05:00.001-07:00</published><updated>2008-07-31T03:17:03.977-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='idea'/><category scheme='http://www.blogger.com/atom/ns#' term='purification'/><category scheme='http://www.blogger.com/atom/ns#' term='water'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Water Purification&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;For efficient water purification: Electrocute water to extract the H and O.  Perhaps you'd need to separate the H and O somehow from anything in the water that may have risen up with vapor, such as by using a centrifuge, a microscopically fine filter, or electrostatic filters (one for H and one for O, so that you can't ignite it).  Pipe the H and O to another area and burn it, using as much of the heat from that as possible to fuel the electricity generation.  Also mechanically allow the gas volume lost from that process to balance out the gas volume gained from extracting the H and O, so that you're not working against atmospheric pressure.  Or, just do both processes completely in vacuo.  Collect the vapor (or water, if you extracted the heat &lt;span style="font-style:italic;"&gt;that&lt;/span&gt; well) created from the combustion process, condense it (if necessary) using a heat sink, and distribute it.&lt;br /&gt;&lt;br /&gt;The key points here are to a) use the heat from the burning process, and b) not work against atmospheric pressure, if that's also a big issue.  If this system is implemented ideally, it will operate at near-100% efficiency and take very little external power, and it requires no chemicals except for whatever you want to add before distribution (such as chlorine and/or fluoride).  &lt;br /&gt;&lt;br /&gt;This system can even work on *salt water*, and  perhaps even sewer water.  Although that raises questions of what to do with the residue.  If a little bit of the water is left unextracted, you can simply let it flow through continuously to pass most of the residue, and then the only question left would be one of periodically cleaning / replacing the cathodes and anodes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-7965978665747852722?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/7965978665747852722/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=7965978665747852722' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/7965978665747852722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/7965978665747852722'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2008/07/water-purification-for-efficient-water.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-5703114474671563959</id><published>2008-07-30T05:03:00.000-07:00</published><updated>2008-07-31T04:55:56.157-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='idea'/><category scheme='http://www.blogger.com/atom/ns#' term='space lift'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Space Elevator&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;way to have a rope (buckytube or whatever) to space:&lt;br /&gt;have a massive foundation, anchored in bedrock, attached to the bottom of the rope at the earth's equator. have a satellite attached to the top of the rope, somewhat further (or perhaps way further) than a geostationary orbit, orbiting obviously coplanar with the Earth's equator. having the satellite farther than a geostationary orbit will cause the rope to pull it along faster than it would otherwise orbit, thus keeping the rope up (including the weight of whatever is currently elevating up the rope) by centrifugal force, just like a sling.&lt;br /&gt;&lt;br /&gt;the longer the rope is, the less massive the satellite has to be, though the rope itself may be very expensive so the most economical length could be minimal (Clarke belt), maximal (the length at which you need no satellite), or some specific length in between.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-5703114474671563959?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/5703114474671563959/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=5703114474671563959' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/5703114474671563959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/5703114474671563959'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2008/07/space-elevator-way-to-have-rope.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-3865253703651961208</id><published>2008-07-30T04:56:00.001-07:00</published><updated>2008-07-30T04:56:56.905-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='idea'/><category scheme='http://www.blogger.com/atom/ns#' term='health'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Datamining for Health&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Users submit to the website lists of everything they eat everyday.  This could be a tedious process, so the idea would be more viable if users are allowed to just send in receipts for everything they buy (food-wise), or fax them or scan and then e-mail them.  That method would be imperfect, but still valuable since the whole system is statistical anyway.  Doing that would work especially well with people living alone, but for families the system is aware that the receipts applies to a family unit.&lt;br /&gt;&lt;br /&gt;Whenever somebody in the family of a user (or a user living alone) has a health issue, they report it to the website, and they can even report casual results of their physicals, blood tests, or pulse blood pressure and weight when they have these things done, or even answer questionnaires about subjective measures such as energy levels, concentration and general happiness.. users can do those things once, periodically, spuriously or not at all, if they so desire. but they *are* obliged to report any clinical health problems that may arise. &lt;br /&gt;&lt;br /&gt;The website uses all this data to perform data mining and draw correlations between foods people eat (primarily on the level of granularity of their ingredients) and health issues, as well as any aspects of health statuses or changes thereof at all, whether negative or positive.  This study should include pharmaceuticals along with food -- anything that's injested, really -- so users should also report their medications and over-the-counter stuff.&lt;br /&gt;&lt;br /&gt;The results of a study like this could be invaluable, in fact, they would show in black and white all the things that 'til now the experts can only speculate about, including the damages caused by the things we're being sold as food.&lt;br /&gt;&lt;br /&gt;Oh, the timespans involved in finding correlations between cause and effect would be decades, i.e., the project would run for decades; hopefully some users would submit for decades, or at least decades apart; so for example, if partially hydrogenated oils (or even aspartame) cause multiple sclerosis after 40 years of consumption, this project will find out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-3865253703651961208?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/3865253703651961208/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=3865253703651961208' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/3865253703651961208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/3865253703651961208'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2008/07/users-submit-to-website-lists-of.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-6866100619068092865</id><published>2008-07-30T04:50:00.000-07:00</published><updated>2008-07-30T04:52:14.440-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='keyboard'/><category scheme='http://www.blogger.com/atom/ns#' term='idea'/><category scheme='http://www.blogger.com/atom/ns#' term='layout'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Determine the best keyboard layout&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;application that takes logs of keystrokes for many users and calculates an optimal keyboard layout for that dataset.   it would take into account the basic mechanics of typing such as&lt;br /&gt;&lt;br /&gt;-it's easier to alternate hands than use the same hand in succession&lt;br /&gt;-letters right above/below eachother take longer to type in succession because the finger has to move&lt;br /&gt;-is it easier to type keys in the top row than the bottom row or vice versa?&lt;br /&gt;&lt;br /&gt;keyboards could be developed for&lt;br /&gt;&lt;br /&gt;-the average user&lt;br /&gt;-the average C++ programmer&lt;br /&gt;-the average programmer in other languages &lt;br /&gt;-etc.&lt;br /&gt;&lt;br /&gt;the mechanics of typing rules could alternatively be automatically inferred by analyzing the timing of key presses with any given pre-existing keyboard layout.   times between key presses greater than a small fraction of a second would obviously be ignored.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-6866100619068092865?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/6866100619068092865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=6866100619068092865' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/6866100619068092865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/6866100619068092865'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2008/07/determine-best-keyboard-layout.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-7491674454167732632</id><published>2008-07-30T01:02:00.001-07:00</published><updated>2008-07-30T01:02:35.766-07:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;LED ideas&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Instead of having many conventional LEDs to make up a bright light, why not just make one LED where the actual diode part of it is very fat, long, or multi-stranded?&lt;br /&gt;&lt;br /&gt;also instead of wasting 50% of the light because of refraction within the plastic, make the actual light emitting part like the filament of a regular bulb. don't touch it with anything, just surround it with a vacuum and a bulb.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-7491674454167732632?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/7491674454167732632/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=7491674454167732632' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/7491674454167732632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/7491674454167732632'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2008/07/led-ideas-instead-of-having-many.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-7024591896396413735</id><published>2008-07-30T00:50:00.000-07:00</published><updated>2008-07-30T00:56:17.666-07:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Freaky toy idea&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A toy that's shaped kind of like a rake (but very small) and without the handle.  You wind it up and as it unwinds, a helix or other shape inside that's connected to all the inner prong ends that spins causes the outer ends to move in a pattern that makes the toy 'crawl' forward... very quickly.  No wheels, just rake-like prongs in front and a smooth curve on back to slide on the floor.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-7024591896396413735?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/7024591896396413735/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=7024591896396413735' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/7024591896396413735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/7024591896396413735'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2008/07/freaky-toy-idea-toy-thats-shaped-kind.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-1281524396490428668</id><published>2008-07-30T00:42:00.000-07:00</published><updated>2008-07-30T00:48:50.996-07:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;More food ideas&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;-Liquour-filled dark chocolate cherry cordials&lt;br /&gt;&lt;br /&gt;-Carbonated White Grape Peach juice&lt;br /&gt;&lt;br /&gt;-Carbonated White Grape Cherry juice&lt;br /&gt;&lt;br /&gt;-Carbonated Juicy Juice&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-1281524396490428668?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/1281524396490428668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=1281524396490428668' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/1281524396490428668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/1281524396490428668'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2008/07/more-food-ideas-liquour-filled-dark.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-8467667712314814233</id><published>2008-07-30T00:30:00.000-07:00</published><updated>2008-07-30T00:41:40.217-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='keyboard'/><category scheme='http://www.blogger.com/atom/ns#' term='idea'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;A better keyboard&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Make a keyboard that detects slight movements in fingers, so all you have to do is twitch, basically.  Make an impulse in the direction that your finger would normally have to move to press a given key.  Perhaps use technology related to that used in a pointing stick, to detect twitches.  (let it also detect down-pressure)&lt;br /&gt;&lt;br /&gt;Of course this alone couldn't account for all the keys on a keyboard.  Some keys you would just have to move your finger for.  &lt;br /&gt;&lt;br /&gt;Who knows how fast people could type with this..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-8467667712314814233?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/8467667712314814233/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=8467667712314814233' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/8467667712314814233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/8467667712314814233'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2008/07/better-keyboard-make-keyboard-that.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-1379825215060471182</id><published>2008-07-30T00:29:00.000-07:00</published><updated>2008-07-30T00:30:36.735-07:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Floating aerogel&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Aerogel is very light and mostly air, but very strong.  You probably need to include some amount of gas to make aerogel, but if you could make it in a really low-pressure environment, and perhaps even with a light gas, like hydrogen, perhaps when exposed to normal atmospheric pressure it will retain its structure and be light enough to float!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-1379825215060471182?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/1379825215060471182/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=1379825215060471182' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/1379825215060471182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/1379825215060471182'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2008/07/floating-aerogel-aerogel-is-very-light.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-4472663476741832380</id><published>2008-07-30T00:28:00.001-07:00</published><updated>2008-07-30T05:59:23.671-07:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Glass tree with butterflies&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;glass (or crystal) tree with silver-colored (or pure silver) butterflies in it that are designed so that their wings flap slowly in any light breeze.&lt;br /&gt;&lt;br /&gt;Gold-colored butterflies might be another option.&lt;br /&gt;&lt;br /&gt;Also, a silver tree with gold butterflies.  (really needs fine detail in the tree)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-4472663476741832380?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/4472663476741832380/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=4472663476741832380' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/4472663476741832380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/4472663476741832380'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2008/07/glass-tree-with-butterflies-glass-or.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-9164600610249600748</id><published>2008-07-29T23:50:00.000-07:00</published><updated>2009-03-26T04:33:56.342-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='crystal'/><category scheme='http://www.blogger.com/atom/ns#' term='awesome'/><category scheme='http://www.blogger.com/atom/ns#' term='Christmas tree'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Spectacular Christmas tree&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Christmas tree (life-sized?) made of titania-coated pieces, cubic zirconia, or leaded crystal, detailed down to the pine needles which are cut into crystalline shapes. &lt;br /&gt;&lt;br /&gt;That would be AWESOME.&lt;br /&gt;&lt;br /&gt;oh, apparently the best refraction treatment is Aurora Borealis.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-9164600610249600748?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/9164600610249600748/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=9164600610249600748' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/9164600610249600748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/9164600610249600748'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2008/07/spectacular-christmas-tree-christmas.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-3421141116806619235</id><published>2008-07-29T23:49:00.000-07:00</published><updated>2008-07-29T23:50:03.280-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='idea'/><category scheme='http://www.blogger.com/atom/ns#' term='safety'/><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Door feature&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Make the crack of the door out of something flexible so that children don't get their fingers caught in it.  A kind of insulation  so that the AC/heater doesn't escape.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-3421141116806619235?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/3421141116806619235/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=3421141116806619235' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/3421141116806619235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/3421141116806619235'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2008/07/door-feature-make-crack-of-door-out-of.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6491320.post-3326815765530342399</id><published>2008-07-29T23:48:00.001-07:00</published><updated>2008-07-29T23:48:17.383-07:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Cheap spectrometer&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A cheap spectrometer can be made, within the visible light range, by simply having a prism and a 1-dimensional CCD array within an enclosed case.  And the circuitry to read the CCD array.  Lenses can be used to focus light onto a point in the prism; the wider the lens the less time it will take for a shot.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6491320-3326815765530342399?l=inhahe.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://inhahe.blogspot.com/feeds/3326815765530342399/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6491320&amp;postID=3326815765530342399' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/3326815765530342399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6491320/posts/default/3326815765530342399'/><link rel='alternate' type='text/html' href='http://inhahe.blogspot.com/2008/07/cheap-spectrometer-cheap-spectrometer.html' title=''/><author><name>inhahe</name><uri>http://www.blogger.com/profile/16554709976493679009</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_q2BoNwCPD4I/S_nlNb6mdTI/AAAAAAAAAFI/h5Qoq3OHCj8/S220/DSCF0005.JPG'/></author><thr:total>0</thr:total></entry></feed>
