Open Source used to be marked with a heavy weight of being hard to use. This company has used open source to build their business and offers a combination of services which use open source software and third party web services from companies like Amazon.
Enomaly has some really nice products and services. One that interested me in the company is their virtual harddrive which sits on top of the Amazon Simple Storage Web Service. It's called ElasticDrive
Wow. Finally an MVC implentation in ASP.NET which really fits what we're doing in Rainbow. My friend Chris told me about it this morning and I am really stoked about using it.
The ASP.NET MVC Framework - Scott Guthrie's Blog
A friend of mine, Eric M suggested a list of tools by Scott Hanselman. It's a comprehensive list of tools for power users and developers and includes sub lists for regular expressions and xml. Click here to check it out.
I stumbled upon this set of tools today while browsing the internet for .NET components. (Yeah. Fun!)
I found one called Gaia which has a rich set of components that look really good.
Here are some of my favorite demos that show off the really nice functionality.
1. All Demos
2. Page Flakes (Like Google's but looks better)
3. Windows Vista Skin Window (With Transparancy)
The other interesting part about this company is that they love Mono / Linux and have a sufficient "How to do ASP.NET 2.0 on Mono" Tutorial here.
Google never ceases to amaze me what they make. Recently they have released the Google Gears framework for offline data storage for online applications. Now we all know from the Microsoft world, that a "Smart" client does exactly that, if you design and develop it as such.
I don't want to compare or contract Google gears with smart client technology, but rather expose how Google explains simply the need for a data access layer in all applications, it goes on to explain how to abstract the data access layers into a Server DAL and a Local DAL and utilizing a background synchronization process to synchronize the Local Database with the Internet Database.
Even if you don't plan to use Google Gears, I suggest reading up on the Google Gears Architecture.
The history of the public internet started when a young Congressman by the name of Al Gore started pushing towards the development of a high speed internet for the future technological and economic development of the United States of America. (Read further here)
The publication of the TCP/IP protocol allowed organizations to transfer information between computers. Since then, the world has become a different place altogether. (Read further here) The internet is no longer a network of computers that share information on a shared, standard protocol. It is a platform for Education and Trade, the building blocks of society at any level.
It took the invention of the World Wide Web by Tim Berners Lee for the world to realize the internet wasn't just for getting information from one place to another, but also to link and share information that could exist in different places on the internet.
The internet boom was a direct result of the public consumer acceptance of the World Wide Web. After the consumers picked up the internet for knowledge and communications, Business took interest in utilizing the web for various types of products and services, of which a few still exist from the "old days" of the internet such as Yahoo and Amazon. Now with the birth of Web 2.0, Business is taking a strong look at how to use the real estate of the browser screen to impact consumers. (eGovernment, is another topic altogether for another article.)
We know have what I believe a standard as potent and with as much or more potential as TCP/IP. It is XML. XML in the last 10 years has exploded beyond recognition with hundreds of specialized uses for the technology from Presentation Markup (XHTML, XAML, XUL, Flex), to Content Markup (RSS, OpenDoc), to Business Integration Markup (ebXML) , to The Next Big Thing. Where XML is going to go is unknown, but what I do know is what where we can make it go.
I see an immediate shift from current status of the internet to coalesce three basic needs for any Organizations that have a presense on the internet for the purpose of Business. It's not that these technologies already exist, it's how they will become as popular as Database technology in Information Technology teams.
Portals will fill the need for Interfaces for people. The table computer and the iPhone will change our industry. It will endanger our current skill set, however, we can utilize our development capabilities to provide portals and portal implementation and customization. Portals provide frameworks on top of standard HTML generation strategies which standardizes user systems, security, and templating. As portal technology progresses, we will be able to translate applications we build for today's portals into dynamically graphic applications using technologies such as WPF.
Services, spefically XML Web Services will fill the need for data integration on a standard XML platform, whether it's built on a "message oriented" or "service oriented" architecture. The construction of web services will have to be done for Businesses that wish to expose their information in the form of procedures that can give and take information. There are special cases where information transfer will be required in bulk, in which standardized Queue processing can be utilized.
Integration of Services. Services from Business to Business will differ. Implementing a Web Service is half the battle. The other half is integrating services that are already built. Web Service Producers need to have Web Service Consumers, both of which are equally important to the internet ecosystem. As we integrate services, we will begin to see patterns in the information structures and come up with standards. Web Service like services such as RSS and SiteMap XML will are already at the forefront of integrating information
Web Service production and consumption together with Portals, provides all parties, complete end-to-end information exchange needs. Organizations on the internet will linked at both the physical network level and the information level allowing Information of the World at Your Fingertips. Hence the title of this article: "SELECT * FROM INTERNET"
I promised the Developer team that I'd get one thing done on the Rainbow code base. I have made a simple and easy to use Rainbow Web Installer which can be used by people to
configure the web.config BEFORE the Rainbow DB Installer (The current Installer that populates the database after web.config has the right ConnectionString)
Here's are the screens. Click on them to see upclose. Yes, it looks similar to CS's installer, because I observed what they were doing before I started working on this.
Although the "Installer" Directory I have can be put on any current Rainbow build (1.1 and 2.0), I will commit the code as /Rainbow/Installer/ to DevInt tomorrow.
If anyone has any feedback , comment on this, or email me.
However cool Community Server is, it's Web Installer until 3 hours ago
was my model for the way I wanted to make Rainbow's Web Installer.
Now I may be a little pissed because I spent 3 hours on a very stupid little issue.
When using the Community Server Web Installer, in the 3rd step, it asks the user for
the database server, username, password, windows auth or sql.
In the 4th step, if the information from the previous step is correct,
the user is asked to select a databae from a dropdown list.
I noticed that the dropdown list was being populated, but when I clicked next, the installer gave me a message:
Number:18456:logon failed for user 'sa'.
I googled this and found out on Community Server's site that the way to
"fix" this is to give Network Service and ASPNET pemissions as DBO to
the database. WHAT?!
Why should I have to do that? I don't want to give a remote machine's
network service account access to a database serving many users.
The reason that network service needs access is because at the
SelectDB stage, db_password.Text is empty as a string. ( in
I was playing around with
Default.aspx to see if I can learn how they made the web based installer
and no matter what I tried, it still gave me that horrible, stupid
I asked myself, how the heck is this code
connecting to the database server, enumerating a list of available
databases upon connecting and NOT connect to the database afterward.
When I tried to print the assembled connection string in the
errorMessage Literal, it would have ALL of the values (db server,
db username, database) except for db password.
I don't know if this
is an ASP.NET bug, but to fix the problem, I made db_password a regular
textbox ( with no password mode) and all of a sudden the application
I am continuing to make a Rainbow Web Installer
that WONT require network service or ASPNET to access the database. I
really don't care if the user will see the DB password in the web
browser. The user experience of someone being able to install an
application without doing anything except putting in DB details over
the web is more important to me.
So I'm sick and tired of the current installation process. To catch up rainbow to the rest of the systems out there, I'm working on a installer that eliminates the need to edit the web.config under normal circumstances.
I'm borrowing ideas from WordPress, CommunityServer.org and Joomla. Any ideas are welcome. An email was sent to the Development team with the specs today. I hope to have something soon.
So if you haven't been living under a rock or in a cave somewhere, you probably know of a lot of "Web 2.0" online services which are the next generation in software.
Microsoft of course is trying to launch their own "Live" line of products to compete with software such as Google Spreadsheets or Google Writely.
If you didn't already know, Rainbow isn't in the same category. It's meant for small businesses to maintain their own information in a Private database of their own, whether they host it by themselves or let someone else host it. (like http://www.iocluster.com
You can do a lot of cool things with Rainbow to integrate with these services. Take a look at a screenshot of Rainbow running three different Online Spreadsheets.
Coming soon, as part of my efforts to make Rainbow a commercial quality product good enough for the real world, I am making it look better..
Here's another theme in the works, ( actually it's the theme for our new RainbowDirect hosting service ) .
Note the new icons. I think they look a little better than the ones from before.
Keep checking back for more progress. I apologize for not blogging as much, but you'll definately see more of my stuff up here.
Making themes for Rainbow is forcing me to rethink certain parts of the architecture and the software in general which may make it easier for future Rainbow theme designers.
After some pushing from Charles
I had given some classes on Rainbow and CMS last year. I knew that more people should know how to use it, and I went ahead and plunged into my teaching debut as a Rainbow instructor.
The class went ok, however Rainbow needed to improve just a little bit more before I could go mainstream with it. At this point Rainbow has so many good things about it, it's too hard to list anymore. It still needs a lot of work, and I am working on that in small steps.
As I work to design our products, I realize that people need to know what Rainbow is. When I mean people, I mean more than the developers and designers that make websites for businesses, but people who will actually be the endusers.
I am targeting Colleges because every college graduate that I've encountered in the real world as far as the "Web" is concerned is rarely ever qualified to do real work when they walk in the door. College students are also more likely to understand the impact a product like Rainbow has in their world whether it deals with their school, work, or home life.
Check out the curriculum at http://academics.anant.us
and give me some feedback here or email me directly at
Found this theme off of "Open Source Web Design" to show people that it's not that hard to create a good looking Rainbow theme.
Rainbow Theming and Template does what it's supposed to, you just have to *** and complain for hours until you figure it out on your own. I've worn the hat of a web designer and one of the most common tasks is taking a Graphic, converting it to HTML/CSS and then finally importing it into some template system.
I'm making 7 or so templates for our Rainbow product, this is the first. Seemed like the easiest of them all, but it has a few tricks that stumped me.
A couple of years back I was giving a class on Rainbow to a group of 12 or so students. Back then as it is now, it's a *** to install multiple Rainbows.
I looked at the install scripts and realized that the basic steps were really easy and the only variables that really mattered for me were directory names, usernames, passwords, and database names.
Here were my steps.
Using simple T-SQL. I got most of this from the install.sql in the Rainbow setup.
1. Create Database
2. Create Database User
3. Set Database User Password
4. Change Database Ownership to User
This step takes the longest because I was giving each student their own directory with their own source code base.
1. Create SiteDirectory under DomainDirectory
2. Copy latest plain Rainbow codebase from CodeRoot to SiteDirectory
3. Open template web.config.tpl from CodeRoot, search and replace DB settings, copy as web.config to SiteDirectory
I did this manually, but I have some code somewhere that given the IIS instance name and the directory name, it can make folders into applications.
One thing that I discovered today .. thanks to Sahil's command line tricks
post, is "pushd" and "popd" command line tools which I should have learned a LONG time ago. This will help me a lot since deployment of initial rainbows is only part of the over all process. Pretty soon, certain customers will ask for upgrades, and they only need _some_ of their directories updated with code. I see a lot of directory changing in those upgrade programs and pushd/popd will be very beneficial.
I noticed that Sahil Malik had a very succint explanation of how SharePoint takes over an existing server
. He wrongly labels it "Archictecture" .. which is the only reason I peeked at it, but it explains in clear terms the ease of use for the System Administrators.
Not only should we make Rainbow as easy to administer, but also easy to sit side by side with SharePoint.