MongoDB and GridFS
The final two tutorials I released today will show you how to use MongoDB with ProdigyView. The rule is, don’t over-think the database connection. Remember that ProdigyView is designed to work with as many databases as possible. The Mongo connection in the framework is just an abstraction of PHP PECL MongoDB extension, so just pass the same variables in ProdigyView’s methods as you would there.
The second tutorial posted is on the GridFS file system in MongoDB. I still have very mixed feelings about the GridFS. Correction: I have very mixed feelings about how GridFS is presented and perceived. Storing files in the database can be done with Mongo but it’s not for every situation. Considering that images are read into RAM, I do not know how some would justify creating a Flickr-like site with gridFS. It’s like no consideration is take on server resources and Mongo will magically handle everything. The tutorials below:
MongoDB Basic- http://www.prodigyview.com/tutorials/slideshare/417/99
MongoDB GridFS - http://www.prodigyview.com/tutorials/slideshare/418/99
Here is the part that most people are probably interested in: the marketing aspect. These are more like pointers that I learned a long the way. Some may consider this a success while others may look down on this but here is some background on the whole project.
ProdigyView is a PHP 5.3+ framework that I single-handily created, documented the code, worked on the API, created 76 slideshows in period of 60 days, and blogged about it. All of this was done while holding a full time job and had somewhat of a resemblance of a life. On a budget of $0, the framework managed to get over 15,500 views, and a little over 250 downloads. Yea, the conversion rate could use a little work. Here is what I learned that I can share with you:
Audience and Social Media
You can read a lot of statistics of when is the best time tweet, post on Facebook, share on Linkedin, etc., but here is a big factor: knowing your target audience. If you are targeting athletes, individuals who work out 2-3 hours for some competitive sport everyday, chances are they won’t be up past 10 -11pm. Tweeting late for them is not optimal. Programmers, on the other hand, tend to have more sedentary lifestyles along with odd hours and they maybe up later than most others. Stay-at-home moms may be most engaged during the middle of the day while high school students are not. These are hypothetical scenarios, but the point is to know who you want to read your material and when they are most likely to engage.
It’s not just when to share your stuff, but how it is shared. We have the Facebook like, Facebook share, Twitter tweets, Goole plusOne, Google share and Linkedin share. That’s a lot of of ways of sharing something. The example I am going to use is the Twitter Tweets vs Google Share. Twitter limits you to 140 characters and you have to make the best of those characters with hash tags. Sharing on Google does not have that limit. I found that taking a little time to write a little more on Google Plus gave me better results in sharing content. What am I trying to convey, is do not to use Google Plus like Twitter. On Twitter short and sweet is good while on GooglePlus explaining more is better. Each social media outlet has its advantages in the way that it is used.
Titles , Keywords and Images
This may go without saying, but titling your work in a way that could interest a user is important, even if the topic is completely dull. This whole blog was about coding and as we all know, coding is one of the most trending and sought after topics in the world (*that was sarcasm*). An example, I could write an article that shows ProdigyView is faster than CakePHP, Zend and Symphony and with its fast learning rate, decreases the time need to train a developer. For that articles title would I write “ProdigyView Framework has impressive benchmarks” or “ProdigyView Outperforms the Top Frameworks and Decreases Business Expenses”. Which would you be most attracted to and enticed to read?
There is hope, even if your title utterly sucks, of getting someone interested in your content and thats by posting an image that draws someone in. Notice, I didn’t say flashy because flashy can’t be boring or may not peak any interest whatsoever. This also goes back into knowing your audience. A good picture should attract who your targeting. A lovely picture of an appetizing steak is not going to be very attractive to a group of vegetarians.
Watch Your Site Stats
If you are looking to improve how users interact with your site, know your site’s statistics. I’ll use ProdigyView as an example.
The site is still very young, far from complete and is constantly evolving. When I started this back in November, the average time on the site was around 1:03 with any where between 1 -3 page visits. The site happened to have the most page views Thursday and increasing into Friday and generally has the biggest drop-off on Mondays. Over time I changed the navigation, added associated content links around the site, cleaned up the layout, watched where users were most likely to leave, etc. Because of the drop-offs that occurred on Mondays, I tried to release the boring content then and build on more exciting content throughout the week.
The site now has an average around time spent around 6 minutes with an average of 5 page views. It also has at return rate of 40%. Not the greatest stats, but an improvement from when it first started and not bad for a site where all you can do right now is look at slideshows on code. But wait, let’s take a closer look. Examining the site stats, the average time spent from someone coming from a Facebook share is around 20 seconds, while a Google Plus share is 15 minutes. Are viewers from Faceook Like less engaged than users from a Google Share and how is that going to affect futue campaigns? How true is the average really?
I can talk for a while on the analytics of the site, but the point I am trying to make is to know your site and work with that. There is no magic bullet for what works so try different things and record the results. Look at the other statistics on the site such as page views, drop-offs, returning vs new visitors, paths traveled, bounce rate, etc. After the data is analyzed, adjust how you do things accordingly.
Future of PV Community
ProdigyView goal is to be a framework geared toward web developers. The ‘Showcase’ area on the site will be an area where developers can show off their work, list their skills, and get possible contracts from interested businesses. How much is this going to be? Free.99, yes only Free.99 . I’m not in the business of making money off of showcasing talent.
As for the downloads sections, that will be an area for developers to add their extensions made for ProdigyView and allow other developers to download it. It’s all about developers working together. Developers will be able to sell their work for profit in the downloads section too.
What also will be opening up very soon is the forums. The forums will be based on positive feed back only. No voting down or putting down users, I want to get away from those kind of forums where users are all about points and social status rather than understanding and giving multiple solutions to a problem.
I still have to complete the other tutorials, fill in the API, release a bunch of extensions I’ve made to work with ProdigyView (gearman, Tumblr, Facebook, Twitter, Linkedin, Google maps, etc). Helium MVC will most likely be done first. Lastly, if you notice the slideshows change over time. Eventually, those will have be reformatted to have a clearer impact upon the reader.
Future for Me
My mind is going numb so at this point, I need a break. What I find amazing is I spent 60 days releasing all those tutorials, and I’ve only cover about 5/8ths of the framework. So I am going to take a break from the slideshows and finish Helium MVC. Afterwards, I want to explore making a MVVM, RMR and other design patterns besides MVC. Also I want to get into another NoSQL database and eventually create a NoSQL CMS and look for other interesting projects to take on.
To wrap this up, I’m happy about everything that went into this. It was hard work, very stressful at times, but the things learning and experience gained from this was invaluable. Whether ProdigyView goes no where or becomes on of the top frameworks, I’m content either way. I really hope that somewhere along the way, someone learn something from all these post. Even more, I got my inspiration from watching other people follow their dreams and I hope this inspires someone to do so also.