Solving big business problems in our little toolbox application. A use case for Project Distributor.Project Distributor: Introduction to our distributed web service model
So Darren and I have put in about a month now on the Project Distributor website. We are starting to reach that critical point where the site is pretty cool, we have plenty of users, we are thinking about running out of the allowable bandwidth for the demo site, and all sorts of other things that tend to happen all at once. Now, there are some problems you can design yourself out of, and others that you really have to throw some money at. Our latest enhancements can be summed up in a short list.
- Buy a domain name and start hosting in two places. Project Distributor.com should be up fairly soon to accompany MarkItUp.ASPXConnection.com
- Have people host their own versions of the application. And that means a big source release is in the future. At this juncture risk fragmentation.
- Design away fragmentation with a series of ingenious features that will make everyone want to use the application at hand.
I'm here to talk about the last two, since Darren already bought some additional hosting for us. The concept will be to release a fairly stable version of the application so that groups can host tools, code snippets and other source/binary releases for their teams to share. The application is very lightweight and easy to set-up, so it won't require a bunch of hand holding and configuration to get up and running initially. From our standpoint we solve a number of issues at this juncture. The most obvious problem is what we classify the Lutz Roeder use case. .NET Reflector is the key type of application we'd love to get hosted because it makes it a bit easier to find, not that Google does a bad job, we'd just like to get a bunch of tools in one place, with some features for feedback, new releases, and some cool client tools for publishing.
Now, Lutz would put his application up and he'd whack our bandwidth. He is the prime example of someone that should be hosting their own tools, but possibly using our interface. He doesn't have to, we haven't even asked him yet in fact, but if he decides to do so, then all the better for the web application moving forward. Users such as Lutz probably want a certain level of control over their own sites as well in terms of branding and controlling access. This will only come from hosting the application yourself (and maybe some other features we'll see later).
From a security standpoint many teams will also want to host their own servers. In this manner they get control over the hardware their sources and binaries are stored on. They can accept tools up to any maximum (instead of our imposed limits) and provide unlimited download bandwidth if they choose. Or they can take advantage of our gating mechanisms to make sure their server doesn't get overloaded with downloads and open their tools up to the public.
The only major problem from this source release is that the initial problem we were trying to solve, promoting the visibility of tools, starts to erode. You see, the more sites that host their own tools the harder it is to find the right site with the right tools. We are trying to solve this in a number of ways. The first is allowing users of a site to store bookmarks to other projects and external resources. This is only a temporary fix, because it still doesn't allow a mass search and categorization infrastructure required to truly promote the visibility of the tools being hosted. We have to come up with a solution that brings all of the sites, but we don't want to create just another portal or gateway site. That is boring. Now you have the background, so how will we solve the fragmentation issue?
Designing away Fragmentation
I won't lie to you, I've implemented this model several times, but have never had a project that was capable of really showing off the feature set we are about to talk about. The concept is to unify all of the sites, by allowing them to easily manage views of data from all of the sites combined. Each site owns their own content, maintains their own users, but in turn peers with other sites to obtain additional content.
Web services provide a dual feature set in this model. At the current level they allow us to generate really great client-side tools for managing, well, your tools! We have a drop-client target right now so you can drag and drop new releases to existing projects in just a few seconds. Some new tools for working with build systems to promote the source code up to the server are in the works. We natively integrate with your RSS reader and will have our own alert services in the drop client just in case you don't have one. There aren't any search or local caching features, but those are also planned for the drop client so you can background download new releases, just like Windows Update.
That doesn't solve fragmentation though, that just makes me realize how much work I have left to do. The second feature of web services lies in the ability for each site to aggregate data from the many other sites that are out there hosting the application. Remember, everything we make available at the service layer can also now be remoted. The more caching we put into the data layer, the more performant the entire process will be, and we can even tune the caching depending on whether the data layer is merging off-site contents or database contents.
Peer Sites
I'm sure there is another name out there somewhere, but for the past 2 years I've called these peer sites. Each instance of the project distributor will have a number of options allowing for adding peers that will be aggregated and added to the local collection while users traverse the site. The first step is to get the peer sites running in a read-only mode. And set up some really great options so the entire process can be controlled. This solves a number of use case scenarios for us including the following.
- Fragmentation can be mitigated through proper configuration. If everyone aggregates 5 or 6 sites into their peers, then we have a huge network now of interconnected peers and users can pick and choose which one they use for purposes of searching the tool network.
- Peer connections are unidirectional or bidirectional. Access is configurable. Teams can include tools from external sites while keeping their own tools completely private. They can exist behind a DMZ or a private network.
- Users can host their own personal tool sites in the same manner as the team sites. They can configure statically which projects to make available even. In this way you can build a collection of personal tools that you love, and have the latest information automatically update on your machine for your perusal.
Peer sites solve plenty of visibility issues, but that is pretty much all they solve for now. We still want to enable all of the features available to the client tools. After all, the web service methods and proxy infrastructure is in place to do so much more.
Master Sites
Well, we want to solve another problem. That is where you edit your data. A master site is where the users, groups, projects, etc... are all hosted, but thankfully, you'll be able to log in through any site (assuming it is peered with your master site) and then edit your own projects and such. This is a remote principal context and is actually one of the cooler features associated with the peering functionality of project distributor. We'll be fully secure in our login and credentials region, but unfortunately we'll still be transferring data in open text in the short term. Maybe we'll fix that with enough push back.
Clone Sites
A clone site is where we empower a site to act on behalf of a master site. For me, my local project distributor is currently cloned to the main project distributor site. What does this mean? Right now it means I get all of the data from PD, and that users who trust my site can log-in to their project distributor accounts and cross edit data. Pretty nice if you ask me. It basically means you can fully host a project distributor installation and never, ever have to install a database server. Users can just act on behalf of a remote server.
Configuration
This isn't a super reusable model like some of those you read about in the popular software architecture books, and it probably accounts for why master/peer/clone sites don't exist very often. The considerations for every option are heavily customized to the problem being solved, and I'm sure we'll be making modifications or updating the configuration context for a while. Right now you can independently configure your primary server type, whether master or clone, whether or not users can use you for a pass-through authentication and edit server, whether or not web services are enabled so peers can enable unidirectional only communications, setting up asymmetric security credentials. Man, you name it and it is in there
For the peer section we have full and selective modes. A full peer pulls all of the data on the remote peer locally for display (in a delay caching manner, just like you'd expect, unless you set up a scheduled pull which is also possible). I expect most people to configure full peers because they really are really easy to set up and maintain. A selective peer is where you specify the groups/projects that you want to display. This is best for a user setting up their own personal toolbox who wants to select a couple of items from many different peers.
We have an extensively exhaustive configuration module already and we'll be continuously adding more to it. The concept is to easily modify your toolbox to your own designs without having to touch the code. If we haven't given you enough options to satisfy your need then we'll have to make something up, because I'm just about running out ;-)
These are the basics of the model ideas I have for project distributor. That doesn't mean Darren doesn't have other great ideas happening as well. He has some pretty extensive UI enhancements, but I'll let him talk about those. We even have another product idea that is kind of a bolt-on for project distributor, but that is probably a couple of months out putting it into next year. Unfortunately we have too many ideas for our own good right now. Better than not having any ideas I guess. I'll try to drop some code with some of the ideas above, that way you can get a look at how the entire system is implemented. I have some diagrams as well, but I'm far too tired right now to add the img tags to the HTML view.
Accessing Information through Natural Language InterfaceThe natural language interface (NLI) is a module that allows the user to access the information stored in the underlying database by typing requests expressed in a natural language.
Kovacs, Laszlo and Sieber, Tanjaread more: Tutorials - Photoshop,Dreamweaver,Vb.Net.Photoshop, Dreamweaver, Excel, Flash Mx, Vb.Net, Spyware + Windows Xp Video Tutorials from $14.95 to $49 - Affiliates earn 50%
read more: The Art in Computer Programming By Andrew Hunt and David Thomas, Pragmatic Programmers, LLCIn a way, we programmers are quite lucky. We get the opportunity to create entire worlds out of nothing but thin air. Our very own worlds, complete with our own laws of physics. We may get those laws wrong of course, but it's still fun.
Click here for the full article.
read more: Improving Developer Productivity With Domain-Specific Modeling Languages By Steven Kelly, PhDWhat is DSM? How is it different from UML and MDA? Can DSM languages produce significant programming productivity gains? Can software development be truly model-driven?
Click here for the full article.
read more: Amazon DBD DBI interfaceThere's a new perl module out that interfaces Amazon web services like a database...
read more: AmazType - your word in book cover artworkAmaztype is a nice new application from Japan, drawing your words using Amazon book cover artworks... your have to check this out - Flash is required and it's definately fun to play around there and zoom in/out of the covers......
read more: Threadwatch overloadReally keen to know what's going on at threadwatch.org Warning: mysql_connect(): Too many connections in /home/wilson/public_html/includes/database.mysql.inc on line 31 Too many connections Nick &Co were slashdotted or something like that :-) ... or are those link injection tricks the reason???...
read more: JSP Login PageI am working on a login page in JSP using NetBeans 5.5 beta and I am having some issues with connecting to the database to verify account

read more: Rationalizing Relational and OOMoving forward with relational: looking for objects in the relational model, Chris Date finds they were there all the time. "The question is how to integrate the good ideas of object-oriented database with relational ideas. The wonderful thing is, it turns out you don't have to do anything to the relational model. Absolutely nothing. The relational model is so solid and so robust..."
"The key notion underlying The Manifesto is thus the equation: domain = object class. A domain, or an object class, is a data type that is encapsulated, which means that the only way you can operate on values of that type is through operators that are defined for the type. You don't actually see the way the data is represented. That's not relevant. You only know that there are certain functions you can perform. It might be a primitive system-defined data type. More generally, it's going to be a user-defined data type. The values of these data types can be arbitrarily complex."
"The values in row and column slots can then be anything you like. They can be simple integers. They can be strings. They can be arrays. They can be books. They can be engineering drawings. They can be videos... They can be anything you like - as long as you can define the data type. In fact, I believe do one of the reasons we're hearing so much hype about object-oriented is because of a failure on the part of the relational vendors to step up to the mark. They haven't supported the relational model. If they had, we wouldn't be having these silly arguments now."
"In my opinion, there are precisely two good ideas. One is the data type concept - user-defined data use of arbitrary complexity, with encapsulation and user-defined functions. The other is inheritance. For example, in a geometric database you might have an object class called polygons, and one called rectangles, where rectangles are a subclass of polygons because every rectangle is a polygon. Therefore it follows that everything that works for polygons automatically works for rectangles too."
"If under the covers, the representation changes - if polygons are represented by a sequence of points for the vertices, and rectangles are represented by just the bottom left and the top right corner or something like that - the code to implement the operator has to change too, but that's implementation. From the model's point of view, if you have a function called area that returns the area of a polygon, automatically it means that you can invoke the area function on a rectangle and get the right answer. Under the covers, it may be desirable to reimplement that function. I don't care. That's implementation."
read more: JRudy now does Rails**"** We are able to generate and run the cookbook demo from rolling with rails tutorial (http://www.onlamp.com/pub/a/onlamp/2005/01/20/rails.html) with what we have and all appears to work. With this said, it is likely that there are several aspects of rails that are not working correctly. See docs/README.rails for known issues/instructions in release."
JRuby "WEBrick runs...Ruby on Rails runs on top of WEBrick (and generation scripts work)**"
Time for a
free lunch:
"I believe I've found a 'free lunch' in Ruby on rails. Oh, it's not always free. If I need to do two-phased commit or hardcore object relational mapping, this lunch may cost me more than I'm willing to pay. But often enough, it's for all practical purposes free.
* I can train a team of Rails developers faster than I can teach a new Java developer Spring plus Hibernate plus whatever web mvc you want plus all of the other frameworks and tools Java developers have to know.
* I can build my applications much faster than I could before.
* For many applications, the latency in the database is the overriding concern, so I don't even notice differences in performance.
* I can trivially expose web services, letting other applications, potentially written in other languages, quickly access my Rails services.
Now, I know that some will tell me that the lunch really isn't free. But you can tell that to my customers that pay a fraction of the price they'd pay for a Java application, and get something that's easier to maintain, just as fast, and on an earlier schedule. From that exec's perspective, the lunch is free."
read more: At War with OurselvesI read this a while ago but it seems somewhat relevant recently.
The Vietnam of Computer Science "Although it may seem trite to say it, Object/Relational Mapping is the Vietnam of Computer Science. It represents a quagmire which starts well, gets more complicated as time passes, and before long entraps its users in a commitment that has no clear demarcation point, no clear win conditions, and no clear exit strategy."
Solutions:
"Developers simply give up on objects entirely, and return to a programming model that doesn't create the object/relational impedance mismatch. While distasteful, in certain scenarios an object-oriented approach creates more overhead than it saves, and the ROI simply isn't there to justify the cost of creating a rich domain model. ([Fowler] talks about this to some depth.)"
Fowler's piece I believe is, "
GetterEradicator" which links to "
Tell, Don't Ask", which makes an important point about Design by Contract, "According to Design by Contract, as long as your methods (queries and commands) can be freely intermixed, and there is no way to violate the class invariant by doing so, then you are ok. But while you are maintaining the class invariant, you may have also dramatically increased the coupling between the caller and the callee depending on how much state you have exposed."
"Developers simply give up on relational storage entirely, and use a storage model that fits the way their languages of choice look at the world."
"Developers simply accept that it's not such a hard problem to solve manually after all, and write straight relational-access code to return relations to the language, access the tuples, and populate objects as necessary."
"Developers simply accept that there is no way to efficiently and easily close the loop on the O/R mismatch, and use an O/R-M to solve 80% (or 50% or 95%, or whatever percentage seems appropriate)..."
"Developers simply accept that this is a problem that should be solved by the language, not by a library or framework...bring relational concepts (which, at heart, are set-based) into mainstream programming languages, making it easier to bridge the gap between "sets" and "objects". Work in this space has thus far been limited, constrained mostly to research projects and/or "fringe" languages, but several interesting efforts are gaining visibility within the community, such as functional/object hybrid languages like Scala or F#, as well as direct integration into traditional O-O languages, such as the LINQ project from Microsoft for C# and Visual Basic. One such effort that failed, unfortunately, was the SQL/J strategy; even there, the approach was limited, not seeking to incorporate sets into Java, but simply allow for embedded SQL calls to be preprocessed and translated into JDBC code by a translator."
"Developers simply accept that this problem is solvable, but only with a change of perspective. Instead of relying on language or library designers to solve this problem, developers take a different view of "objects" that is more relational in nature, building domain frameworks that are more directly built around relational constructs."
read more: Concealed Weapon Permits Win Sheriff, Police Support? Watch Video News Blog (8 min)A growing number of Sheriffs and Police Officials have joined the debate over Concealed Weapon Permits (CCW) as shown in an eight minute Full Disclosure Network™ Video News Blog featuring high ranking law enforcement officials in the Western United States. Available FREE at this URL: http://www.fulldisclosure.net/flash/VideoBlogs/VideoBlog31.php 24/7, on demand as a public service. (PRWEB Jul 5, 2006) Trackback URI: http://www.prweb.com/zingpr.php/Q3Jhcy1TdW1tLUluc2UtUGlnZy1JbnNlLVplcm8=
read more: TattooFinder.com Announces Free Premiere Accounts for Tattoo Industry ProfessionalsTattooFinder.com announces the release of Premiere Accounts (TFPA) as a free upgrade from a standard TattooFinder.com account. This service is offered exclusively to tattoo industry professionals, providing top level discounts on design purchases to tattooists and their customers. Premiere accounts can increase overall business at a studio by offering numerous competitive advantages, and a TFPA operates under several different business models to best fit a shop’s needs. A TFPA provides the ability for customers to purchase flash for the tattoo studio that the studio can store online and access again for future use at no additional charge. (PRWEB Jul 13, 2006) Trackback URL: http://www.prweb.com/chachingpr.php/WmV0YS1Qcm9mLUNvdXAtU3F1YS1JbnNlLVplcm8=
read more: MGMA's Dan Stech Joins Denver's Pinnacle Group; Former MGMA Survey Director Slated to Lead Pinnacle's Healthcare Innovation InitiativesDan Stech has been named Executive Director of Innovation for the Pinnacle Group, a Denver-based healthcare consulting, physician practice management and medical billing company. Stech is a longtime Medical Group Management Association (MGMA) executive and national authority on physician practice benchmarking and best practices analysis. As MGMA’s Director of Survey Operations for the past five years, Stech led the association’s efforts to improve physician practice performance through data collection and analysis. Under Stech’s leadership, the association enhanced its database of practice performance measures, expanded its line of analytical products and firmed up its position as the market leader in physician data resources. (PRWEB Jul 11, 2006) Trackback URI: http://www.prweb.com/dingpr.php/WmV0YS1FbXB0LVNpbmctU3F1YS1JbnNlLVplcm8=
read more: Finding the Gold in Your Denial DatabaseMost providers track denials to measure the overall extent of the denial problem in their organization and to establish the success of their appeal efforts. But what more should providers be getting out of their denial database? And how else can they use the denial database to reduce denials and increase the effectiveness of recovery efforts? (PRWEB Jun 21, 2006)
read more: Error ''Codec Initialization Error'' when attempting to export as Flash Video (FLV) (Premiere Pro 2.0)IssueWhen you try to export a Timeline as Flash Video, the export fails and Adobe Premiere Pro displays the error message "Codec Initialization Error".DetailsYou are exporting to a hard disk with low disk space.SolutionsDo one or more of the...
read more: Supported file formats in Adobe Premiere Pro 2.0This table lists the file formats that Adobe Premiere Pro can import and export. For more information about importing and exporting files, see Adobe Premiere Pro Help.Format Import ExportVideo Flash Video (.flv) - - xMicrosoft AVI Type 1 (.avi)...
read more: Aware IM 2.0 Makes Creation of Web Database Applications Easier than EverAwaresoft Pty Ltd today announced the release of Aware IM 2.0 - a new, more powerful version of its popular easy-to-use web database management software. Aware IM™ 2.0 allows solution-focussed developers and experienced computer users to create comprehensive Web database applications without programming. (PRWEB Jul 17, 2006) Trackback URI: http://www.prweb.com/dingpr.php/Q291cC1TdW1tLVBpZ2ctU3F1YS1JbnNlLVplcm8=
read more: Jigsaw Business Contacts Marketplace Soars Past 3 Million Contacts; MySQL Open Source Database to Power User-Generated GrowthJigsaw Data Corp., the online global marketplace for buying and trading business contact information, announced that it has selected MySQL, the world's most popular open source database software, to power its popular online user-generated database of over 3.3 million business contacts at more than 360,000 companies. (PRWEB Jul 17, 2006) Trackback URI: http://www.prweb.com/zingpr.php/Q291cC1Db3VwLVpldGEtU3F1YS1JbnNlLVplcm8=
read more: McObject?s Perst Pure Java Embedded Database Integrated with Solutions from CA?s Wily Technology DivisionMcObject today announced that the Wily Technology Division of CA (NYSE: CA) has leveraged McObject’s pure Java embedded database, Perst™, in the development of its industry leading enterprise application management solutions. Adopting McObject’s proven database has enhanced the performance of Wily solutions while accelerating product development. (PRWEB Jul 11, 2006) Trackback URI: http://www.prweb.com/zingpr.php/TG92ZS1JbnNlLVByb2YtUGlnZy1JbnNlLVplcm8=
read more: Data Guard Systems Consolidates Hardware and Slashes Data Center Power Consumption by 80%Data Guard Systems has consolidated 45 backup database servers on their network with virtualized Dell servers to help reduce power consumption in their data center. Utility costs are reduced by as much as US $10,000 per month, with power consumption slashed by 80%. (PRWEB Jul 11, 2006) Trackback URI: http://www.prweb.com/zingpr.php/Q3Jhcy1JbnNlLVByb2YtUGlnZy1JbnNlLVplcm8=
read more: TheFreeDictionary.com Welcomes 350,000,000th VisitorFarlex, Inc., publisher of the world’s most comprehensive online database of reference information (www.thefreedictionary.com), announced that it has welcomed its 350,000,000th visitor since the website’s launch in the spring of 2003. (PRWEB Jul 10, 2006) Trackback URI: http://www.prweb.com/dingpr.php/UHJvZi1NYWduLUNyYXMtUGlnZy1JbnNlLVplcm8=
read more: Fighting the Evil-Doers: A Database Security Workshop on Tuesday, July 113 horror stories and how to be victorious in the battle to protect your customer database and your network. (PRWEB Jul 9, 2006)
read more: Kognitio and IBM BladeCenter provide fastest, scalable database platform for Data AnalyticsKognitio has completed a highly successful benchmark of its WX2 analytical database software on IBM BladeCenter System X hardware. The joint solution is targeted at business users who want to gain fast access to data for reporting, data exploration and analysis. Following the benchmark, IBM and Kognitio will run targeted seminars on 12 and 13 July in London to educate end-users about the joint solution. (PRWEB Jul 7, 2006) Trackback URI: http://www.prweb.com/zingpr.php/Q3Jhcy1QaWdnLVRoaXItUGlnZy1JbnNlLVplcm8=
read more: SPAMfighter Choose ScimoreDB DatabaseScimore UAB, a developer of distributed/parallel high-performance RDBMS, today has announced partnership with SPAMfighter, Europe's leading anti spam developer. (PRWEB Jun 30, 2006)
read more: Lumtron Announces Release of New AccuraImage 2006? Document Management and Control SolutionNew document management and control solution features bulletproof security to comply with HIPAA, Sarbanes-Oxley and Gramm-Leach-Bliley legislation. All new .NET programming and customizable workflow process, document retention and OCR search modules make AccuraImage one of the most robust document management system available. [PRWEB Nov 10, 2005]
read more: Meck Technology, Inc. Announces New Customer Service Programs for Property ManagersMeck Technology, Inc., the leader in Condo-Coop Property Management Systems, announced today that it has expanded its leading customer service programs to include custom programming services. [PRWEB Nov 10, 2005]
read more: DataHub Scripting Puts Live Data into ODBC DatabasesAny ODBC-compliant database can now track live financial or process data with up-to-the-millisecond accuracy. [PRWEB Nov 2, 2005]
read more: Online Trends for e-fulfilment Retailers Look for AlternativesPresenting accurate and a well researched database has become a priority for bricks+clicks as well as online retailers. The need for retailers is to populate their websites with detailed product information. [PRWEB Nov 12, 2005]
read more: SEO Chat Forums - Flash Elements on Index PageDate: July 17th, 2006 02:44 AM - Levi - UntitledPost: If I create 2 versions of my site, a static & flash version, can I possibly suffer from a duplicate content penalty since the content...
read more: Book: 'Things a Computer Scientist Rarely Talks About'It's said that you can't judge a book by its cover, but that's no excuse for buying Knuth's 'Things a Computer Scientist Rarely Talks About' without even looking inside, as I did. Based on that impulse-buying experience, I fear I may be the kind of fool the famous have to thank for the fact that they can pretty much just crap in a box and be guaranteed to sell it.
It's not often you buy a book from the CS shelves and end up wondering 'Am I any better than a teenage girl who buys Britney Spears perfume?'
I can't even claim I wasn't forewarned. Years ago I bought, read, and passed on to a friend a copy of Knuth's earlier '3:16'. So I was fully aware of the perp's prior. But hope triumphed over experience and I assumed that this time he'd be talking about esoteric CS or mathematical topics. Like 'Selected Papers', only less famous.
But mainly Knuth wanted to waste 200 pages of once-lovely trees, $20 of my money, and several hours of my precious reading time on, well, nothing really. Nothing stood out as I read it, and nothing much has stuck with me. I remember him describing the religious symbolism in some of the calligraphy in '3:16', which for me finally explained why there were so many weak works in that book: the effort of shoehorning in symbolism can compromise anyone's work. (Interestingly, Knuth describes how he made a 'correction' to one artist's work because he didn't get it; I remember that as one of the uglier examples, but uncorrected it actually works.) I also remember him commenting that the ratings for '3:16' on a certain well-known patent-abusing bookseller's web site were all either 1 (the lowest) or 5 (the highest).
The website ratings for '3:16' go to the heart of the matter. The problem with books like this, or, to be more accurate, the authors of books like this, is that they're only really good at preaching to the choir. You might expect that the rigorous Knuth of the 'Art of Computer Programming' complexity analyses might avoid this trap, but he doesn't. If you don't already find mysticism interesting, you won't after reading this book. Really, this book is interesting only in the same way that Buckminster Fuller's 'Critical Path' is interesting, only it's rather less funny because Knuth's crackpot side is so much more commonplace than Fuller's: the friend I gave my copy of '3:16' has (to an outsider) the same beliefs as Knuth, but I'm pretty sure I've never known anyone quite like Fuller.
If you're a stoner or a drunken student, you might like this book. Then again, if you are either of those things, you probably get enough of this kind of blather every time you sit down with your friends. Sound and fury, signifying nothing. It's not even as forehead-slappingly 'let them eat cake' wrong-headed as C.S. Lewis' 'Mere Christianity' (a book I usually think of as in many ways the opposite of Aldous Huxley's 'Brave New World') because, as far as I could make out, Knuth and his friends don't really say anything.
Funnily enough, I've read Star Wars fiction that gave me more to think about.
I promised myself a while back that I'd stop writing reviews of books and films that weren't directly related to computing, but since I've just saved you $20, I have a couple of suggestions of what you might spend it on. If you want (often religious) craziness tranformed into art, try
'A Scanner Darkly'. For once this adaptation really does Dick justice, even to the extent of poking gentle fun at him (or taking on his style so completely that the invented bits were totally convincing). If you're more of a book person, you could read the original book, or you might prefer T.E. Lawrence's 'Seven Pillars of Wisdom', about Lawrence's time fighting in the desert in WWI. It took me two months to read, but it was worth every page. And it coincidentally contains some of the most interesting writing on religion I've read in years.
Plus shit gets blown up every couple of chapters, and you can't buy quality like that.
read more: 'Designing Effective Database System' put up for sale in eZineStoreFront
read more: DirectX Programming in C# - Article by tomd123Tom gives a step by step introduction of DirectX programming.
read more:
You Searched for flash database programming
Click flash database programming to go to MMK Technologies
SEARCH RSS NEWS USING THE WORDS BELOW
flash database programming |
flash graphics |
graphics design |
graphics disign |
flash disign |
web disign |
web design |
website design |
internet marketing |
web marketing |
web site marketing |
programming |
web sites designer |
web designs |
internet design |
programming developer |
website marketing |
web development |
marketing internet |
web sites designing |
site designs |
sites designs |
internet designer |
internet designs |
e-commerce store |
web development |
web site development |
design webs |
internet site marketing |
internet hosting |
internet host |
web hosting |
web host |
sell on the internet |
sell on the web |
e-commerce store |
internet development |
webdesign |
florida web site design |
website development |
ecommerce store |
sell online |
affiliate program |
asp web store |
marketing program |
marketing software |
submission software |
asp programmer |
cgi store |
perl store |
internet store |
database programmer |
internet database |
online marketing |
ecommerce software |
streaming media |
video streaming |
secure video streams |
media streams |
audio streaming |
MP3 security |
avi security |
Windows Media Security |
protect video |
secure web cam |
webcam security |
video piracy |
media piracy |
windows media player security |
secure media |
protect audio |
video stream protection |
MMKTechnologies |
MMK Technologies |
prevent audio theft |
prevent video theft |
web page design |
ecommerce shopping cart |
shopping store ASP |
sell online |
sell products |
products to sell online |
web technology |
website builders |
web site builder |
bradenton web design |
florida web design |
bradenton website design |
protect MP3 |
keep video from being copied |
sarasota web design |
secure upload video |
web programming |
cgi programming |
net hosting |
net development |
flash design |
flash programming |
cool flash |
action script |
flash database programming |
First Step .net
Web Design Hosting and internet marketing by MMK Technologies
(c) Copyright 2005 MMK Technologies.