Thinking About Abandoning Project Skin Spider
Posted April 4, 2007 at 7:09 PM by Ben Nadel
I haven't worked on it in a few months, but originally, project Skin Spider was going to be a hugely comprehensive walk through of an application life cycle. I really liked where the project was headed and I think it was actually helping people understand ColdFusion applications. I had gotten most of the way through the "no framework" framework phase of the application and was trying to polish if a bit before adding more structure.
Unfortunately, my life got a little crazy and I had to put it on the back burner. Now that some of my time is beginning to free up, I was thinking about going back to work on it again. But, upon reflection, I am not sure if this is where I want to put in the effort. Now, don't get me wrong, I think the demonstrative purposes of the application are fantastic - my concern is only of the content. It is adult in nature and this limited my ability to work on it during the day (on my lunch hour) and, I am sure, limited other people's ability to learn from it (either due to being offended or being at work, or a combination of things).
So, now I think I may scrap the project and start over using a different application; I am thinking a much more "appropriate" application that I can open up at work without being fired :) Also something that isn't bandwidth intensive (the Skin Spider demo had to be taken down for bandwidth reasons). Does any one have any thoughts on this? Does anyone even care :) Does anyone even know what the heck I am talking about?
Anyway, more to come.
- Wanted: Full-Time ColdFusion Developer at Intoria Internet Architects
- Cold Fusion Senior Developer at Edge Information Management
- Back-End Web Developer-Information Technologist at Michigan State University
- ColdFusion Developer at Nonfat Media
- Mid-to-Senior Level Web Application Developer at SiteVision, Inc.
Hopefully your head doesn't get too big from this:
You're a hell of a programmer. I personally think you should be using your talents to contribute to a project that will help either the ColdFusion and/or jQuery communities. I know you want to help people learn CF but your blog does a great job of that already.
One advantage of starting a new project is that you could do it from the perspective of things that you learned in the previous project. It seemed like the Skin Spider was supposed to be a bit "Tabula Rasa", so a new project could be more of a "extending previous learning" project.
Although I wouldn't want to discourage you from contributing to other projects, I have found it interesting to see how you work through technical challenges.
I've read very little of the project Skin Spider source code, but I must say I was quite interested in eventually looking more closely at how you approach your ColdFusion application design.
There is of course part wanting to help people learn, but there is also a good part of it that is to help me learn. I have never done a Model-Glue framework or even a FuseBox framework. What I would like to do is walk through an application and eventually get to use one of those - see how the framework gets applied, see what problems it solves, see what problems it might not solve, etc. etc. etc.
So, as a learning tool for myself, I think this is something that I definitely want to do. Now, I just have to think of an application to make. It has to be simple, yet demonstrate some key points:
- CRUD (Create, Read, Update, Delete)
- One-to-Many joins (cause I can't figure out how that works in MVC... when I get there).
- Application and session management
- Stuff that can be applied to AJAX
Time to put the thinking cap on!
I think it would be cool to see what you do with FuseBox. Just a thought.
What I would like to do is hack my own framework... fail... and then be like "Ok, now let's apply FuseBox".
I agree with Tony, you're one heck of a good programmer and you have a knack for technical writing.
I've recently just upgraded our server to CF 7.02 and I'm getting up to speed on OO in CF and some of the frameworks like Fusebox and Model-Glue. I haven't implemented a framework yet, but I have about 5 projects coming up that will benefit from a framework and code reuse. It would be great to follow your blog to see what you learn as I'm trying to wrap my brain around a MVC framework myself. It would be great to see a walk through of a complete application being built in one of these frameworks, or maybe your own MVC framework.
I'm also big into security, so I would like to see how/where data validation and secure programming techinques, per OWASP (http://www.owasp.org) or webappsec (http://www.webappsec.org/) guidelines, fits into a MVC framework.
So, project ideas:
1. Make skin spider general so you can use it for anything, not just skin pics, ie. videos, pics, or any type of files related to my interest
2. Trading post app that will integrate with a discussion forum to let people swap stuff related to the discussion boards subject. I post my stuff I wanna trade, people make their trade offers, I reject or accept, then close the deal, trader identities hidden until deal closes.
3. Most forums have RSS feeds. Build a forum reader that allows me to input forums and read them in the format of my choosing, ie, linear, threaded, single, etc.
Some silly ideas I guess, but who cares. It's about learning!
P.S. Like your blog by the way, it's on my daily 'things to read' list.
Your ideas are waaay more grounded than mine :) My original idea was a program called "Trick-Tracker" which would allow pimps to keep track of their Hos :D
Then I was like - DUDE, try NOT to offend people!
I like your ideas. One concern is only that they are too broad in scope. The RSS feed reader I like cause I feel that it can have some cool functionality while not being TOO much of an undertaking.
Ooops, gotta run into a meeting. Will pick this up later.
I really like the Trading idea also. I think that is cool and again, not too complicated. I wouldn't integrate with any boards, as that would be too large in scope (and something that should be customized on a per-board basis).
The biggest thing holding me back on any project at this point is the Database. I am only going to do a project that can handle an XML-based database (the one I built for Skin Spider). The idea is that people who are using this to learn can simply download, drop it in, and use it - no database configuration or anything like that.
This limits the scope of anything I can do as the SQL is not available.
I was also thinking about session management. Skin Spider didn't have any session management, but that is something that should be part of a demo application.
Hmm... an XML DB. If I were to do that I would abstract it enough that someone could write their own DB implementation if they happened to find your app useful, or offer the choice to configure MSSQL, MYSQL, Access, XML, and XML is the default.
I had another couple ideas last night.
1. a 401k goal analyzer. No reason to provide session management on this one though....
2. survey application. I don't think CF has a good survey app that can allow customizable display of questions, i.e., vertical or horizontal for likert scale questions, mulitselects/dropdowns, fill in blank, multiple choice, etc. I thought about doing this one with Fusebox or model glue myself.
Yeah, the XML database does hinder me a bit. I obviously can't use any advanced SQL stuff. What I did for Skin Spider was have an XML database and then use in-memory queries against with I could run query-of-queries. This is nice, but still very limiting.
I have always had a dream of doing something fitness related. A friend of mine keeps wanting me to help him design a fitness routine, so I thought this would be a cool idea. Maybe a library of exercises and then some utility that helps you create and maintain a fitness routine.
But, I get all excited about an idea like that and then I want to make it HUGE and awesome and certainly NOT an XML Database. Uggg! But I want it to be plug-n-play as I think this is the best way to learn.
on a part I'm agree with your questionning about the contents use for your demontration BUT for my part, contents you use dont determine the value of the programming under the application.
We have been facing a lot of difficulties in integrated ajax frameset to Cold Fusion (www.hoiphuc.net/bythn) and almost if skin spider is adult content oriented we have find in this short application a lot of answer to our own problems and we still looking to further development.
We think that we understand pretty well what skin spider is related for, and in our development team we try actually to figure how to change you actual content by a Object Database related to medical formation for transform skin spider in a medical information warehouse.
We want to change the spider function by a form input function for allow a member to insert a new formation contents. So we need to include a login function and validation function. What we are planning will also request 4 levels user check-in (user (view or download formation), member (upload and classified a formation member), administrator (approve aformation and reclassified if necessary) and telemedicine (still in development)).
We have allready develp a frameset for this application in CF but we are facing a lot of problem when inserting new data and manage select functions.
So for us, it will be sad if you quit development on skin finder almost if the actual contents and the way that you add contents to tha database is not relevant to your development.
Because that make only four days that we have discovered Skin Finder we can not actually send you modification that we will try to make to your application serve our purposes but be sure we will stay in contact. Naturally, if you still interested in Skin Finder ...
But anyway, thanks a lot for the new direction that Skin Finder have give us.
I am glad that Skin Spider was helping you learn some stuff. I think it's really cool that you took it and then modified it. It seems like that is going well. I hope that whatever direction I end up going in can also be of use.
Hey, I had a though about creating a RSS feed reader. I thought this would encompass a few cool things:
1. CFHttp calls (always fun)
2. XML Parsing
3. Interesting caching / archiving techniques
4. Session management (every one would have their own list of feeds)
5. Joins - you can tag a feed item with multiple tags or tag a feed itself with categories.
Any thoughts on this?
I like the feed reader idea a lot, and I'm particularly interested in the potential for demonstrating "interesting caching / archiving techniques".
BTW, I'm not sure how relevant this is, but here are two feed reader demo apps, both built using YUI-Ext:
Hmmm, that YUI one is pretty sweet-ass-sweet. I am not going to be able to compete with the cool-factor of something like that, but I think from a demonstrative, ground-up approach, something like this can be pretty cool. I am liking the idea. Let me play around with some designs to see if I can come up with anything good.... I can't start coding until I know what it is going to look like.
As far as the interesting caching / archiving stuff, first off, its going to be an XML database for drop-and-play functionality. Then, on top of that, I don't want to cache too much stuff - the data tables would be cached in memory. BUT, I don't want to constantly have a ton of RSS information in memory. This means, I will have to devise a way to keep flat files of a lot of stuff that does not need to be on hand at all times.
Could be cool, could be way bigger in scope than I think it might.
It seems that the XML DB is adding some constraints to your design ideas, and that it was added to make it really easy for someone to download and install your demo app and not have to configure it for a DB.
Have you considered using an embedded java database like HSQL, Apache Derby, etc.? This could allow you to make it easily deployable yet have the more advanced SQL.
Just a thought!
I am not familiar with these embedded databases (or any embedded database for that matter). Sound very interesting, not only for this project but for any future projects.