<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>/Dan/.NET - Dan Robey's .NET Dumping Spot : /rants</title><link>http://blogs.mit.edu/CS/blogs/dsrobey/archive/category/22.aspx</link><description>/rants</description><dc:language>en-US</dc:language><generator>CommunityServer 1.1 (Build: 1.1.0.50615)</generator><item><title>strange .net special character quirk</title><link>http://blogs.mit.edu/CS/blogs/dsrobey/archive/2005/08/02/17094.aspx</link><pubDate>Tue, 02 Aug 2005 21:52:00 GMT</pubDate><guid isPermaLink="false">dea6705e-d99c-4a22-9533-aabb455eb28d:17094</guid><dc:creator>dsrobey</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.mit.edu/CS/blogs/dsrobey/comments/17094.aspx</comments><wfw:commentRss>http://blogs.mit.edu/CS/blogs/dsrobey/commentrss.aspx?PostID=17094</wfw:commentRss><description>Apparently doing String.IndexOf("special character") might not always work as you expect it.  The æ character is found in the string "ae" Test yourself by dropping this into a .aspx page:&lt;br /&gt;&lt;br /&gt;  
&amp;lt;% if("ae".IndexOf("æ") == 0) {Response.Write("why?");}%&amp;gt;
&lt;br /&gt;&lt;br /&gt;
I don't really understand why it works that way, but the workaround for this is to use .IndexOf(char) instead:&lt;br /&gt;
&amp;lt;% if("ae".IndexOf('æ') == -1) {Response.Write("all is well in the world");}%&amp;gt;&lt;img src="http://blogs.mit.edu/CS/aggbug.aspx?PostID=17094" width="1" height="1"&gt;</description></item><item><title>firefox/IE ASP.NET textbox</title><link>http://blogs.mit.edu/CS/blogs/dsrobey/archive/2005/04/11/10245.aspx</link><pubDate>Mon, 11 Apr 2005 19:41:00 GMT</pubDate><guid isPermaLink="false">dea6705e-d99c-4a22-9533-aabb455eb28d:10245</guid><dc:creator>dsrobey</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.mit.edu/CS/blogs/dsrobey/comments/10245.aspx</comments><wfw:commentRss>http://blogs.mit.edu/CS/blogs/dsrobey/commentrss.aspx?PostID=10245</wfw:commentRss><description>Just in case anyone else ever has this problem, the asp:textbox in ASP.NET has the two width properties "Width" and "Columns"  if you want to set the width of a textbox to a certain size so it will display correctly across browsers, both width and columns must be set.  Internet Explorer uses the width field to display on a pixel basis, and firefox uses the "size" attribute which Columns will set when rendered.  If you set one and not the other, the textbox width will be the correct size in one but not the other.
&lt;br /&gt;&lt;br /&gt;
Also remember that using the autoindent function in Visual Studio 2003 with inline imperatives will add tabs which IE sometimes sees as extra spaces, screwing up precision page layouts, especially around TD elements.&lt;img src="http://blogs.mit.edu/CS/aggbug.aspx?PostID=10245" width="1" height="1"&gt;</description></item><item><title>Exceptions- use them!</title><link>http://blogs.mit.edu/CS/blogs/dsrobey/archive/2003/12/08/484.aspx</link><pubDate>Mon, 08 Dec 2003 07:20:00 GMT</pubDate><guid isPermaLink="false">dea6705e-d99c-4a22-9533-aabb455eb28d:484</guid><dc:creator>dsrobey</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.mit.edu/CS/blogs/dsrobey/comments/484.aspx</comments><wfw:commentRss>http://blogs.mit.edu/CS/blogs/dsrobey/commentrss.aspx?PostID=484</wfw:commentRss><description>I am annoyed. I am extremely annoyed. I have just taken an hour to debug an error which did not exist. I downloaded the source code for the newest taxi server for 1.124. Installed, set permissions, etc. When I hit the server, it froze. ASPNET went to 99% and never came back. Browsed through the code a bit, it all looked reasonable, figured it was my fault. Did windows update, and .NET framework SP2 doesn't seem to be installing, or maybe it is, but it never seems to figure out that it's already there.&lt;br /&gt;&lt;br /&gt;After about an hour of reinstallation, etc. I debugged the code a little more. I found that the file wasn't loading. And I had no clue. Why? Because someone had commented out a catch statement which would have thrown the error my way. I have just wasted an hour I could be programming a DFS strategy engine on finding a permissions error. (Yes, even when “Everyone” can read a file, that still doesn't mean ASPNET can).  This innocuous little snippet of code went:&lt;br /&gt;&lt;br /&gt;catch&lt;br /&gt;{&lt;br /&gt;//throw(ea);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;why? What is the purpose of a catch statement if not to give some user feedback about why something has gone wrong. I don't write perfect code. You don't write perfect code. Nobody writes perfect code. That's why exceptions should be caught and some feedback given. &lt;u&gt;Always&lt;/u&gt;. Please, for the children's sake, catch the exceptions and give feedback.&lt;img src="http://blogs.mit.edu/CS/aggbug.aspx?PostID=484" width="1" height="1"&gt;</description></item><item><title>dealing with long queries</title><link>http://blogs.mit.edu/CS/blogs/dsrobey/archive/2003/12/04/483.aspx</link><pubDate>Thu, 04 Dec 2003 19:13:00 GMT</pubDate><guid isPermaLink="false">dea6705e-d99c-4a22-9533-aabb455eb28d:483</guid><dc:creator>dsrobey</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.mit.edu/CS/blogs/dsrobey/comments/483.aspx</comments><wfw:commentRss>http://blogs.mit.edu/CS/blogs/dsrobey/commentrss.aspx?PostID=483</wfw:commentRss><description>One of the problems with long web queries is user feedback.  If a SQL command takes seconds or even minutes to complete, or if some other heavy processing must be done, users must wait idly as the status bar creeps along, blindly guessing at how long the response will take.&lt;br /&gt;&lt;br /&gt;
This problem is a general notification problem with web queries which stem from the nature of stateless http client/server protocol.  A possible solution is to place a layer of indirection on anticipated long queries.  Using the web service model, the indirection layer (call it the foyer layer) does the standard query asynchronously, and instead of sending the results, sends a java refresh page, which causes the client to requery the foyer layer every &lt;i&gt;n&lt;/i&gt; seconds.  The foyer layer can hold data about the current query, including what percent is done.  This can be relayed from individual calls, if using SQL can be updated after each SQL statement in the long SQL stored procedure, or previous long calls can be used as an estimation metric.  The data can be used to update a true status bar on the page while serving other information to the client - funny quotes, relevant advertising, customer feedback, etc.&lt;br /&gt;&lt;br /&gt;
The foyer layer can be programmed in any language, and one method which comes to mind would be the recent Shockwave web services, which allow for a stateful client.&lt;img src="http://blogs.mit.edu/CS/aggbug.aspx?PostID=483" width="1" height="1"&gt;</description></item><item><title>sql injection attacks</title><link>http://blogs.mit.edu/CS/blogs/dsrobey/archive/2003/11/20/478.aspx</link><pubDate>Thu, 20 Nov 2003 19:02:00 GMT</pubDate><guid isPermaLink="false">dea6705e-d99c-4a22-9533-aabb455eb28d:478</guid><dc:creator>dsrobey</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.mit.edu/CS/blogs/dsrobey/comments/478.aspx</comments><wfw:commentRss>http://blogs.mit.edu/CS/blogs/dsrobey/commentrss.aspx?PostID=478</wfw:commentRss><description>While your head is still spinning from the last post, don't think that SQL server is the answer either.  If an adversary knows your SQL server setup, they can find weaknesses in your database calls and do "&lt;a href="http://msdn.microsoft.com/library/en-us/dnnetsec/html/SecNetch12.asp?frame=true#secnetch12_sqlinjectionattacks"&gt;sql server injection attacks&lt;/a&gt;."  Basically, since most SQL programmers assume the strings are nicely encoded already, you can send sql commands as your string, which when using function calls like &lt;br /&gt;"SELECT blah FROM blah WHERE blah=$input"&lt;br /&gt; the attacker can send back inputs like &lt;br /&gt;"' ; INSERT INTO adminusers 'Dan Robey'"&lt;br /&gt;If crafted properly (my strings are just examples and won't work), these inputs will end the current query and instead do the "evil" query.  This is one reason why everyone using SQL should disable that convenient little "xp_cmdshell" system call in their SQL server.  Otherwise some hacker can just send "' ; xp_cmdshell("format c:")" or something equally nasty.&lt;br /&gt;&lt;br /&gt;Hope after reading this you all feel safe and secure with the way your system is setup!&lt;img src="http://blogs.mit.edu/CS/aggbug.aspx?PostID=478" width="1" height="1"&gt;</description></item><item><title>BigInts, C#, Crypto</title><link>http://blogs.mit.edu/CS/blogs/dsrobey/archive/2003/11/17/475.aspx</link><pubDate>Tue, 18 Nov 2003 03:29:00 GMT</pubDate><guid isPermaLink="false">dea6705e-d99c-4a22-9533-aabb455eb28d:475</guid><dc:creator>dsrobey</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.mit.edu/CS/blogs/dsrobey/comments/475.aspx</comments><wfw:commentRss>http://blogs.mit.edu/CS/blogs/dsrobey/commentrss.aspx?PostID=475</wfw:commentRss><description>I take back what I said &lt;a href="http://blogs.mit.edu/dsrobey/posts/413.aspx"&gt;here&lt;/a&gt; about the C# BigInt class.  It actually is very well put together.  I take issue with the fact that .Equals() does not take an Object, but aside from that it does everything you'd really want a bigint class to do.  I'm wondering what the mono guys are using for all the security classes in .NET.  Surprisingly (or maybe not), .NET already has a lot of the typical security functions built in.  Check out &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemsecuritycryptographyhierarchy.asp"&gt;System.Security.Cryptography. &lt;/a&gt; if you're interested.  A lot of those functions are in there to do code signing, but are generic enough to use for other things.  Since .NET has AES (Rijndael) built in, I wonder how they get around the strong crypto export restrictions.&lt;img src="http://blogs.mit.edu/CS/aggbug.aspx?PostID=475" width="1" height="1"&gt;</description></item><item><title>.NET more secure than Linux?</title><link>http://blogs.mit.edu/CS/blogs/dsrobey/archive/2003/10/06/401.aspx</link><pubDate>Mon, 06 Oct 2003 17:31:00 GMT</pubDate><guid isPermaLink="false">dea6705e-d99c-4a22-9533-aabb455eb28d:401</guid><dc:creator>dsrobey</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.mit.edu/CS/blogs/dsrobey/comments/401.aspx</comments><wfw:commentRss>http://blogs.mit.edu/CS/blogs/dsrobey/commentrss.aspx?PostID=401</wfw:commentRss><description>&lt;a href="http://www.atstake.com"&gt;@stake&lt;/a&gt; recently published a &lt;a href="http://www.atstake.com/research/reports/eval_ms_ibm/"&gt;survey&lt;/a&gt; claiming that the .NET framework is more easily secured than Linux. Their &lt;a href="http://www.atstake.com/research/reports/eval_ms_ibm/evaluation_methodology.html"&gt;methodology&lt;/a&gt; includesa list of actions system admins needed to perform to harden the web server. Their criteria mainly hinges on usability and the availability of wizards to guide admins through the tasks. However, while they do not evaluate the actual security provided by the systems, they do bring up a nice point: building a secure web server on linux is a pain. There are too many points in the install and hardening process that a user has to google instructions on how to turn on features, or write the config files that will allow you to do things. I'm sure this will come back to haunt me endlessly when I'm trying to do web services with mono.&lt;img src="http://blogs.mit.edu/CS/aggbug.aspx?PostID=401" width="1" height="1"&gt;</description></item><item><title>blog web service needed</title><link>http://blogs.mit.edu/CS/blogs/dsrobey/archive/2003/09/30/385.aspx</link><pubDate>Tue, 30 Sep 2003 18:08:00 GMT</pubDate><guid isPermaLink="false">dea6705e-d99c-4a22-9533-aabb455eb28d:385</guid><dc:creator>dsrobey</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.mit.edu/CS/blogs/dsrobey/comments/385.aspx</comments><wfw:commentRss>http://blogs.mit.edu/CS/blogs/dsrobey/commentrss.aspx?PostID=385</wfw:commentRss><description>&lt;p&gt;we need a blog web service. Or do we already have one?  I want to programmatically author rss.&lt;/p&gt;
&lt;p&gt;The only problem would be security, which we could do through WS-SEC I've been looking through lately.&lt;/p&gt;&lt;img src="http://blogs.mit.edu/CS/aggbug.aspx?PostID=385" width="1" height="1"&gt;</description></item><item><title>pros and woes of Intellisense</title><link>http://blogs.mit.edu/CS/blogs/dsrobey/archive/2003/09/29/380.aspx</link><pubDate>Mon, 29 Sep 2003 16:50:00 GMT</pubDate><guid isPermaLink="false">dea6705e-d99c-4a22-9533-aabb455eb28d:380</guid><dc:creator>dsrobey</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.mit.edu/CS/blogs/dsrobey/comments/380.aspx</comments><wfw:commentRss>http://blogs.mit.edu/CS/blogs/dsrobey/commentrss.aspx?PostID=380</wfw:commentRss><description>Ever since I started using mono to do my 1.124 problem sets, I've noticed that my honed programmer's edge has been dulled by years of working with Intellisense. If I need to take a sqare root of a number, I no longer can remember where to find the function. While Intellisense speeds up programming tenfold, it also frees the programmer's mind from having to remember exactly what the syntax is. I know that any time I have to do a ToString() anymore, I just type in ".tost" and hit tab. I shave a couple seconds off implementation, keeping the overall design in my mind, but it allows me to get lazy.&lt;br /&gt;&lt;br /&gt;While this is a godsend for high-speed implementation, it preys on code correctness. Without the crutch of Intellisense, I take so much more time to try and remember which casing is correct, where the proper functions to call are. If mono gives me an error, usually it turns out to be some unintelligible internal debug line filled with "expected: THIS DEBUG SEMICOLON NEW OPENPAREN", which tells me little about what the real syntax of the line should be.&lt;br /&gt;&lt;br /&gt;The real impact of the dependence on Intellisense comes not in your personal coding, but when you want to program for others. Take for example the standard interview. When the interviewer wants you to sit down and write some example code illustrating reversing a string in place, or inserting an item into a linked list, your dependence on Intellisense becomes painfully obvious.&lt;br /&gt;&lt;br /&gt;Maybe that's why Don Box programs in Emacs.&lt;img src="http://blogs.mit.edu/CS/aggbug.aspx?PostID=380" width="1" height="1"&gt;</description></item><item><title>more on wearable computing</title><link>http://blogs.mit.edu/CS/blogs/dsrobey/archive/2003/09/11/340.aspx</link><pubDate>Thu, 11 Sep 2003 17:58:00 GMT</pubDate><guid isPermaLink="false">dea6705e-d99c-4a22-9533-aabb455eb28d:340</guid><dc:creator>dsrobey</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.mit.edu/CS/blogs/dsrobey/comments/340.aspx</comments><wfw:commentRss>http://blogs.mit.edu/CS/blogs/dsrobey/commentrss.aspx?PostID=340</wfw:commentRss><description>browsing around for more info:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://radio.weblogs.com/0105910/2003/09/11.html"&gt;weblog&lt;/a&gt; mentioned on a slashdot about the BBC article with a little more info.&lt;br /&gt;the &lt;a href="http://naga.mit.edu/enchantment.html"&gt;whitepaper&lt;/a&gt; on MIT group's UI. They bring up some vaild points about the display being very small, task management in that environment, etc. I still think it needs a nice skinning.&lt;br /&gt;Apparently last IAP they integrated the Sharp Zaurus into their design for ease of programming. Very nice.&lt;br /&gt;&lt;br /&gt;They also describe nicelgy some of the &lt;a href="http://www.media.mit.edu/wearables/mithril/intro/topic2.html"&gt;reasons and benefits&lt;/a&gt; behind wearable computing, and their &lt;a href="http://dev-bywater.media.mit.edu/wiki/borglab/MIThril_Construction"&gt;hardware construction&lt;/a&gt;. This is all good for technical details, but the end user doesn't care about that. They care about being able to check their email by pressing a button, or having voice-over-IP seamlessly. MIThril is far from that.&lt;br /&gt;&lt;br /&gt;Oh, and also info about a &lt;a href="http://abcnews.go.com/sections/scitech/CuttingEdge/cuttingedge011012.html"&gt;shoe-based power supply&lt;/a&gt; that provides power from walking.&lt;img src="http://blogs.mit.edu/CS/aggbug.aspx?PostID=340" width="1" height="1"&gt;</description></item><item><title>wearable computing</title><link>http://blogs.mit.edu/CS/blogs/dsrobey/archive/2003/09/11/339.aspx</link><pubDate>Thu, 11 Sep 2003 17:21:00 GMT</pubDate><guid isPermaLink="false">dea6705e-d99c-4a22-9533-aabb455eb28d:339</guid><dc:creator>dsrobey</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.mit.edu/CS/blogs/dsrobey/comments/339.aspx</comments><wfw:commentRss>http://blogs.mit.edu/CS/blogs/dsrobey/commentrss.aspx?PostID=339</wfw:commentRss><description>A recent &lt;a href="http://news.bbc.co.uk/1/hi/technology/3090392.stm"&gt;BBC article&lt;/a&gt; highlighted the oncoming wave of wearable computing devices.  While currently the iPod is the biggest hit, with any luck pervasive computing will grow.  Some issues still need to be resolved before this becomes a reality:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;A power supply currently can only run a laptop for about 3 hours.  While wearable computers will hopefully need much less power than that, a light, rechargable, high power battery solution needs to be found for the always-on wearable devices.  Perhaps something that created energy from compression while walking or solar arrays&lt;/li&gt;
&lt;li&gt;Interface design.  Current software has desktop oriented design, which does not translate to wearable design well at all.  The &lt;a href="http://www.media.mit.edu/wearables/"&gt;MIT wearable computing center&lt;/a&gt; uses a crufty &lt;a href="http://www.media.mit.edu/wearables/mithril/anduin/index.html"&gt;windows manager&lt;/a&gt;, which will not translate well to slick applications.  Perhaps some form of wsdl for apps needs to be created.&lt;/li&gt;&lt;li&gt;another solution to interface design would be a well-written audio I/O.  If a totally verbal "windows manager" could be created, this would solve all interface problems.  This presents many hurdles, but the end would be worth it.  Microsoft has a &lt;a href="http://www.microsoft.com/speech/default.asp"&gt;S/T interface&lt;/a&gt;which might be helpful.  Heres's an &lt;a href="http://www.dotnetforce.com/sitecontent.aspx?Type=24"&gt;intriguing sample&lt;/a&gt; of ease of use of the SDK.&lt;/li&gt;&lt;li&gt;killer app: something really really cool that appeals to everyone.  MP3 players abound.  For a price wireless enabled cell phones can be had.  Palm pilots are a step in the right direction, but a series of games perhaps, which use the wearable devices.  Something like real-world quake arena, where troops can prowl the streets and their "glasses" overlay a halo around enemy team members.  Kind of like laser tag, but always on.&lt;/li&gt;&lt;/ol&gt;&lt;img src="http://blogs.mit.edu/CS/aggbug.aspx?PostID=339" width="1" height="1"&gt;</description></item><item><title>bad design practice</title><link>http://blogs.mit.edu/CS/blogs/dsrobey/archive/2003/09/02/289.aspx</link><pubDate>Tue, 02 Sep 2003 15:19:00 GMT</pubDate><guid isPermaLink="false">dea6705e-d99c-4a22-9533-aabb455eb28d:289</guid><dc:creator>dsrobey</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.mit.edu/CS/blogs/dsrobey/comments/289.aspx</comments><wfw:commentRss>http://blogs.mit.edu/CS/blogs/dsrobey/commentrss.aspx?PostID=289</wfw:commentRss><description>&lt;p&gt;Little annoyed today because when I got to work, my windows messenger account would not work.  I use trillian normally, so that I can be signed onto several different accounts on different services.  Today I got a message that said: “.NET Messenger Service Staff: You are running a version of messenger that requires an immediate security update. Please visit &lt;a href="http://messenger.msn.com/Help/Upgrades.aspx"&gt;http://messenger.msn.com/Help/Upgrades.aspx&lt;/a&gt; to complete the update.“&lt;/p&gt;
&lt;p&gt;This is because microsoft has updated their IM protocol and wants you to do the same.  However, instead of just sending me this message and leaving it at that, they automatically log users out. This is bad software design.  When an interface to a web service changes, one thing developers should do is leave the old interface for “legacy applications“ to use.  While the new version of MS IM might have nice “security updates,“ this forces any code base written against this interface to update their code, including trillian, gaim, jabber, and several others.&lt;/p&gt;
&lt;p&gt;However, MS is licensing usage of its new interface, forcing these programs to pay.  Since gaim and jabber are both open source and free, there is no capital to pay the licensing fee.  The typically paranoid reaction from the open source community is that MS is moving to licensing to shut their projects down.  I object to it because I a) have to spend 30 minutes updating software, and b) it's bad software design that ignores the web service model microsoft preaches.&lt;/p&gt;&lt;img src="http://blogs.mit.edu/CS/aggbug.aspx?PostID=289" width="1" height="1"&gt;</description></item><item><title>google did it!</title><link>http://blogs.mit.edu/CS/blogs/dsrobey/archive/2003/08/26/229.aspx</link><pubDate>Tue, 26 Aug 2003 05:57:00 GMT</pubDate><guid isPermaLink="false">dea6705e-d99c-4a22-9533-aabb455eb28d:229</guid><dc:creator>dsrobey</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.mit.edu/CS/blogs/dsrobey/comments/229.aspx</comments><wfw:commentRss>http://blogs.mit.edu/CS/blogs/dsrobey/commentrss.aspx?PostID=229</wfw:commentRss><description>&lt;a href="http://www.google.com/newsalerts"&gt;google&lt;/a&gt; beat me to it :(&lt;br /&gt;&lt;br /&gt;I run my own little scraper portal called &lt;a href="http://www.webwalkby.com"&gt;webwalkby&lt;/a&gt;, so named because it "walks by" some of the major sites I read frequently every so often and caches their content as rss streams. It grabs me comics, headlines from slashdot, and is of course, running on the xmlportal framework, although not the most recent version.&lt;br /&gt;&lt;br /&gt;Back to Google&lt;br /&gt;&lt;br /&gt;I had been thinking for some time what would make my site even nicer and my life easier. Since I already have all the headlines of my favorite sites, a scrape which doubles my effectiveness at web browsing, I had to have something that would make my browsing even faster and more efficient.&lt;br /&gt;&lt;br /&gt;I came up with the idea of taking my scraped content and filtering it for specific keywords or combinations of keywords and having responses send directly back to me through an IM or email web service. For example, I read &lt;a href="http://bensbargains.net"&gt;bensbargains&lt;/a&gt; every day looking for tech deals. I could instead tell my rss robot to alert me whenever a nice flat panel was mentioned on the site. If the system was robust enough, I would hardly have to browse at all except when things interesting me came along. I rewrote my caching system recently to give me a strong base for that kind of flexibility. And now Google beats me to it.&lt;br /&gt;&lt;br /&gt;However, there are facets google has overlooked. A quick search (or google) leads to several &lt;a href="http://jeremy.zawodny.com/blog/archives/000909.html"&gt;blogs&lt;/a&gt; mentioning that it doesn't support blog filtering yet. This is a serious flaw, especially since blogs can be exported to rss quite easily. I may decide to write my blog trigger system for just that reason. Because all my news feeds are rss feeds (hackish ones for the moment), creating a system similar to google's would be extremely easy.&lt;img src="http://blogs.mit.edu/CS/aggbug.aspx?PostID=229" width="1" height="1"&gt;</description></item><item><title>Longhorn FS &amp; knowledge rep</title><link>http://blogs.mit.edu/CS/blogs/dsrobey/archive/2003/08/20/170.aspx</link><pubDate>Wed, 20 Aug 2003 07:49:00 GMT</pubDate><guid isPermaLink="false">dea6705e-d99c-4a22-9533-aabb455eb28d:170</guid><dc:creator>dsrobey</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.mit.edu/CS/blogs/dsrobey/comments/170.aspx</comments><wfw:commentRss>http://blogs.mit.edu/CS/blogs/dsrobey/commentrss.aspx?PostID=170</wfw:commentRss><description>&lt;p&gt;Everyone's heard by now that &lt;a href="http://www6.tomshardware.com/storage/20030617/winfs-06.html"&gt;Longhorn's&lt;/a&gt; shipping with a relational database driven file system. While all kinds of problems and perks come with this decision, this decision runs deeper than the obvious implications. By using a relational database, winFS is effectively saying that humans don't structure things in a strictly branching manner. NTFS, NFS, ext3, etc all structure data in a strictly branching system (excluding symbolic linking). When we set out to catalogue all the species, philosophers developed the species, genus, family, etc system, which placed all things in a neat little tree, which makes nice posters. However, that's not how humans generally think. When we think of milk we think "drink," but we also think of all the possible uses of milk, that it comes from a cow, and many other related facts about milk, all of which break the tree structure, but fit into an appropriately structured relational database quite well. &lt;/p&gt;
&lt;p&gt;Not only is this a convenient way to find things that a cow produces easily, or which documents you have related to a project at work, but it also provides a valulable foundation AI desperately needs, that of easily creating links between ideas. WinFS grabs onto the fact that human knowledge is not tree structured and runs with it. Depending on how it's implemented this could be a nice step forward or a disaster. A more technical aspect of this is that it will be necessary to have schemas for the different areas of information. There must be some metadata so that the drivers "directory" knows that it contains drivers, and the drivers will know which device they work for, all data contained previously in windows OS and to some extent in the individual driver files It will be interesting to see how WinFS works or doesn't. &lt;/p&gt;
&lt;p&gt;On a side note, any non-tree structure winFS creates could be created with proper symbolic linking techniques within any normal file system. Each file could be in reality a folder, containing symlinks with the names and destinations of the attributes (like filetype, filetype plugin, createdby) and the actual file. Using a relational database just means that all the SQL speed tricks M$ has learned over the years come into play.&lt;/p&gt;&lt;img src="http://blogs.mit.edu/CS/aggbug.aspx?PostID=170" width="1" height="1"&gt;</description></item><item><title>blogportal</title><link>http://blogs.mit.edu/CS/blogs/dsrobey/archive/2003/08/18/152.aspx</link><pubDate>Mon, 18 Aug 2003 05:49:00 GMT</pubDate><guid isPermaLink="false">dea6705e-d99c-4a22-9533-aabb455eb28d:152</guid><dc:creator>dsrobey</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.mit.edu/CS/blogs/dsrobey/comments/152.aspx</comments><wfw:commentRss>http://blogs.mit.edu/CS/blogs/dsrobey/commentrss.aspx?PostID=152</wfw:commentRss><description>Thinking about the IESL blogportal: it would be nice to have an upstream RSS of all our blog entries.  i.e. a combined listing of all the blogs the entire group did.  This shouldn't be that difficult to hack together given the component rss feeds.  Might be a good module to write in general, since there are so many rss providers out there and having a generic system that could filter many sources of rss entries into a combined stream could be the next big thing in news providers.  See &lt;a href="”http://fark.com”"&gt;fark.com&lt;/a&gt; for a good example of this.  Individuals could have their own filter preferences, or sites could filter out relevant info for viewers interested in that site's interests, as in slashdot's tech-oriented crowd.  But that's the big picture.  For now it would be nice to just see all the IESL blogs in one spot, so we can easily see what everyone's posted recently without visiting all the component blogs.&lt;img src="http://blogs.mit.edu/CS/aggbug.aspx?PostID=152" width="1" height="1"&gt;</description></item></channel></rss>