<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>Learn about the world of software development through ProdigyView and bleeding edge technology.</description><title>ProdigyView</title><generator>Tumblr (3.0; @prodigyview)</generator><link>http://prodigyview.tumblr.com/</link><item><title>Agile Development: One Approach of Many</title><description>&lt;p&gt;&lt;p class="p1"&gt;A lot of the times I come across the question “What process of development should we use for our project”, and I generally respond with “Agile” followed by blank stares and question marks. After repeatedly explaining the process, I thought why not just write out what Agile is for others to read. And thus I am writing this blog entry.&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;What is Agile&lt;/strong&gt;&lt;/h3&gt;
&lt;p class="p3"&gt;Agile is a highly adaptive development process that enables decision makers( ex:  managers, stakeholders, owners, ceo), developers, and other expertise( ex: marketing, financing) to work together on creating a product. The process consists of stories, iterations and velocity but those are all terms we will go over shortly.&lt;/p&gt;
&lt;p class="p3"&gt;Agile is often a touchy subject among developers because there is the belief that there is a right way of doing it. I’ve worked using Agile on development teams from Fortune 100 companies to small start-ups and there is no set in stone right way but the process varies depending on the team. When I say team, I mean everyone involved in the process from the ceo to the marketing, not just the developers. The belief that there is a right way of doing Agile completely misses the point of Agile.&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Agile Terms&lt;/strong&gt;&lt;/h3&gt;
&lt;p class="p3"&gt;Before we go into how to execute Agile, we should start by going over some terms used in the development process.&lt;/p&gt;
&lt;p class="p3"&gt;&lt;strong&gt;Stories&lt;/strong&gt;: When you think of stories, you should immediately think of tasks. Stories are short task written by the decisions makers on what needs to be done. A story should only be about 3-4 sentences max. An example of a story would be:&lt;/p&gt;
&lt;p class="p3"&gt;“A user enters their email address and password on the login screen. If successful they are redirected to the dashboard. If unsuccessful, they are redirected to a forgot password page”.&lt;/p&gt;
&lt;p class="p3"&gt;The stories are generally derived from the business plan or the vision of the product that is being made. &lt;/p&gt;
&lt;p class="p3"&gt;&lt;strong&gt;Points:&lt;/strong&gt; Points are a numerical value assigned to a story. The points represent how long it should take to a complete a story. The meaning of a point is determined by the organization. I like assigning my points like this:  &lt;/p&gt;
&lt;ul class="ul1"&gt;&lt;li class="li3"&gt;2 hours of work is equal too 1 point&lt;/li&gt;
&lt;li class="li3"&gt;2 points is 4 hours of work,&lt;/li&gt;
&lt;li class="li3"&gt;8 hour work day is 4 points&lt;/li&gt;
&lt;li class="li3"&gt;6 points is a day an a half of work,&lt;/li&gt;
&lt;li class="li3"&gt;8 points is 2 days. &lt;/li&gt;
&lt;/ul&gt;&lt;p class="p6"&gt;The basic idea is harder stories are assigned more points. Remember to come up with your own point scale based on the team.&lt;/p&gt;
&lt;p class="p3"&gt;&lt;strong&gt;Iteration:&lt;/strong&gt; An iteration, also known as a sprint, is a set time period in the development life cycle. The development cycle should cover planning, coding, design, testing and approval. Normally I have weekly iterations, but it depends on the team how long your iterations are. At the end of the iteration, there is an iteration meeting where the team reviews the past progress and plans for future tasks.&lt;/p&gt;
&lt;p class="p3"&gt;&lt;strong&gt;Velocity:&lt;/strong&gt; Velocity is a numerical value, based on the points, to how many tasks should be completed in that iteration. The velocity is calculated using the average points of stories completed from previous iterations. If the majority of stories in an iteration are assigned a lot of points, this means that they are hard task to complete and not many stories will be completed. But if the stories are assigned a low number of points, then a lot of stories should be completed because they were easy tasks. Either way, the velocity should be the same if the points are assigned correctly to the stories.&lt;/p&gt;
&lt;p class="p3"&gt;&lt;strong&gt;Scrums&lt;/strong&gt;: Scrums are meetings that are held. Normally there should be a daily scrum amongst the developers called a stand up. This is where developers talk about their accomplishments and problems they are having. There should also be a scrum when the whole team comes together too meet. This should happen at the end of an iteration and is called the iteration meeting. Other scrums can be added as needed.&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Rules of Agile&lt;/strong&gt;&lt;/h3&gt;
&lt;p class="p3"&gt;Now that we have the basic terminology of Agile, we can go over the rules. Yes there are rules to Agile or it the process will just fall apart. These are my rules, you can come up with your own that best facilitates your team.&lt;/p&gt;
&lt;ol class="ol1"&gt;&lt;li class="li3"&gt;&lt;strong&gt;No Adding Onto To A Story:&lt;/strong&gt; The story is the defined task at hand. Once a story has been finalized, no adding on extra elements to that story. An example of adding onto a story is this:
&lt;p class="p8"&gt;&lt;span class="s2"&gt;&lt;em&gt;Finalized story:&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="p8"&gt;“A user enters their email address and password on the login screen. If successful they are redirected to the dashboard. If unsuccessful, they are redirected to a forgot password page”.&lt;/p&gt;
&lt;p class="p8"&gt;&lt;span class="s2"&gt;&lt;em&gt;Story Additions&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="p8"&gt;The developer completes the story and then the decision makers decide to say “Also add in a register button, login button, and also only go to the login page after they failed 3 times.&lt;/p&gt;
&lt;p class="p8"&gt;This is wrong. These new requirements should become a new story. The reason why is because adding new task to a story:&lt;/p&gt;
&lt;ol class="ol2"&gt;&lt;li class="li3"&gt;ruins the velocity&lt;/li&gt;
&lt;li class="li3"&gt;makes it seem like things are not getting done on time and make it hard to track progress&lt;/li&gt;
&lt;li class="li3"&gt;frustrates the developer&lt;/li&gt;
&lt;/ol&gt;&lt;/li&gt;
&lt;li class="li3"&gt;&lt;strong&gt;Nothing Is Set In Stone:&lt;/strong&gt; One of the key points of Agile is the ability to easily change the requirements that are best for the product. When a decision maker writes a story, the developer should ask questions. The developer and the decision maker should come to an agreement on the story, no one person is right.&lt;/li&gt;
&lt;li class="li3"&gt;&lt;strong&gt;2 Story Limit:&lt;/strong&gt; Developers should only work on two stories at max. This is to keep the developer focus and allow management to know what is being worked on and by whom.&lt;/li&gt;
&lt;li class="li3"&gt;&lt;strong&gt;2 Day Limit:&lt;/strong&gt; under normal circumstances, a developer should work a story on for a max of 48 hour time period. This is done because other stories may require the completion of the story being worked on. If it cannot be done in a reasonable time period, put the story back in and either come back to it later or have another developer look at it.&lt;/li&gt;
&lt;/ol&gt;&lt;h3&gt;&lt;strong&gt;Agile Process&lt;/strong&gt;&lt;/h3&gt;
&lt;p class="p3"&gt;We have the terms and we have the rules. Now we can go through the process of using Agile. Remember, this is the way I find it best to execute Agile, but it’s not the right way. The right way is the way the best suites your organization.&lt;/p&gt;
&lt;ol class="ol1"&gt;&lt;li class="li3"&gt;&lt;strong&gt;Decision Maker Writes A Story:&lt;/strong&gt; The decision makers(stakeholders, managers, business owner, etc) write stories that are based on the business plan, an iteration meeting, or the vision of the product.  Remember the stories should be short. Write many of them to give the developers enough to do.&lt;/li&gt;
&lt;li class="li3"&gt;&lt;strong&gt;Developer Examination:&lt;/strong&gt; A developer looks at a story and asks questions about the story to clarify what needs to happen. The developer and decision maker have a discussion on what is the best way to go about executing the story and if the story is even right.  When a consensus has been reached, the story is locked and no more requirements can be added. At this point the developer assigns point to the story for how long they expect to complete it.&lt;/li&gt;
&lt;li class="li3"&gt;&lt;strong&gt;Selecting and Submitting:&lt;/strong&gt; A developer chooses a story that has been assigned points and works to complete the story. During this process, test case should be written. Once completed, the story is submitted for a code review.&lt;/li&gt;
&lt;li class="li3"&gt;&lt;strong&gt;Code Review:&lt;/strong&gt; Another developer code reviews a submitted story. They check to make sure the code completes the requirements of the story and that the implementation of the code is suitable for production. If there are problems, the story is given back to the developer with things to fix. Otherwise the story is submitted to the decision makers for a final review.&lt;/li&gt;
&lt;li class="li3"&gt;&lt;strong&gt;Final Review:&lt;/strong&gt; The decision makers review the functionality to make sure it completes the requirements specified. Remember, no adding additional requirements to a story, make a new story. Afterwards the story is deemed done. Otherwise it is sent back to the developer with the needed changes.&lt;/li&gt;
&lt;li class="li3"&gt;&lt;strong&gt;Meetings:&lt;/strong&gt; Remember to have a set structure of when to have scrums. Typically there should be a meeting everyday amongst the developers and a meeting at the end of every iteration. The iteration meeting should influence the direction of future stories: go back to step one and repeat.&lt;/li&gt;
&lt;/ol&gt;&lt;p class="p3"&gt;That’s all the Agile Process is. When the team involved agile understands the process, it will move fairly quickly which should cause the velocity to go up.  While the Agile process described above is focused towards developers, Agile can be used with other expertise. An example can be your marketing team follows the same steps except they won’t be doing a code review. They would perform a peer review of the marketing material created and an approval by the decision makers. Remember that Agile is about the team, meaning in an iteration meeting, the marketing them can have input that affects the developers and vice versa.&lt;/p&gt;
&lt;p class="p3"&gt;Most importantly, I’ve stated it several times but I want to make sure this is clear: Above is the rules and procedure I have found that works with Agile. This is not the correct way, the correct way is the way that works best with your team.&lt;/p&gt;
&lt;p class="p3"&gt;&lt;strong&gt;Follow Me:&lt;/strong&gt;&lt;/p&gt;
&lt;p class="p3"&gt;&lt;a href="http://www.facebook.com/pages/ProdigyView/214942945205059?sk=wall"&gt;Facebook&lt;/a&gt;&lt;/p&gt;
&lt;p class="p3"&gt;&lt;a href="http://twitter.com/#!/ProdigyView"&gt;Twitter&lt;/a&gt;&lt;/p&gt;
&lt;p class="p3"&gt;&lt;a href="http://www.linkedin.com/groups?home=&amp;amp;gid=4229280&amp;amp;trk=anet_ug_hm"&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;
&lt;p class="p3"&gt;&lt;a href="https://plus.google.com/u/0/b/111086319897155166473/111086319897155166473/posts"&gt;GooglePlus&lt;/a&gt;&lt;/p&gt;
&lt;p class="p3"&gt;&lt;a href="http://prodigyview.tumblr.com/"&gt;Tumblr&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;</description><link>http://prodigyview.tumblr.com/post/16347006443</link><guid>http://prodigyview.tumblr.com/post/16347006443</guid><pubDate>Mon, 23 Jan 2012 08:21:00 -0500</pubDate><category>agile</category><category>business</category><category>c++</category><category>developers</category><category>development</category><category>java</category><category>management</category><category>php</category><category>prodigyview</category><category>programming</category><category>web</category><category>business</category><category>project</category><category>project management</category></item><item><title>Day 60: Finale - Insights on Marketing, Social Media, MongoDB and Future Plans</title><description>&lt;p&gt;&lt;div&gt;&lt;span&gt;Day 60 is finally here. Looking back at the amount of work it took to get to this point, it’s taken a tremendous amount of time and effort. For the last blog entry, I’m going to cover a few different topics that include MongoDB, marketing, social media, improving your site, plans for the ProdigyView community, and my future plans.&lt;/span&gt;&lt;br/&gt;&lt;span&gt; &lt;/span&gt;&lt;br/&gt;&lt;strong&gt;MongoDB and GridFS&lt;/strong&gt;&lt;br/&gt;&lt;span&gt; &lt;/span&gt;&lt;br/&gt;&lt;span&gt;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.&lt;/span&gt;&lt;br/&gt;&lt;span&gt; &lt;/span&gt;&lt;br/&gt;&lt;span&gt;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:&lt;/span&gt;&lt;br/&gt;&lt;span&gt; &lt;/span&gt;&lt;br/&gt;&lt;span&gt;MongoDB Basic- &lt;a href="http://www.prodigyview.com/tutorials/slideshare/417/99"&gt;http://www.prodigyview.com/tutorials/slideshare/417/99&lt;/a&gt;&lt;/span&gt;&lt;br/&gt;&lt;span&gt; &lt;/span&gt;&lt;br/&gt;&lt;span&gt;MongoDB GridFS - &lt;a href="http://www.prodigyview.com/tutorials/slideshare/418/99"&gt;http://www.prodigyview.com/tutorials/slideshare/418/99&lt;/a&gt;&lt;/span&gt;&lt;br/&gt;&lt;span&gt; &lt;/span&gt;&lt;br/&gt;&lt;strong&gt;Marketing&lt;/strong&gt;&lt;br/&gt;&lt;span&gt; &lt;/span&gt;&lt;br/&gt;&lt;span&gt;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.&lt;/span&gt;&lt;br/&gt;&lt;span&gt; &lt;/span&gt;&lt;br/&gt;&lt;span&gt;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:&lt;/span&gt;&lt;br/&gt;&lt;span&gt; &lt;/span&gt;&lt;br/&gt;&lt;strong&gt;Audience and Social Media&lt;/strong&gt;&lt;br/&gt;&lt;span&gt; &lt;/span&gt;&lt;br/&gt;&lt;span&gt;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.&lt;/span&gt;&lt;br/&gt;&lt;span&gt; &lt;/span&gt;&lt;br/&gt;&lt;span&gt;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.&lt;/span&gt;&lt;br/&gt;&lt;span&gt; &lt;/span&gt;&lt;br/&gt;&lt;strong&gt;Titles , Keywords and Images&lt;/strong&gt;&lt;br/&gt;&lt;span&gt; &lt;/span&gt;&lt;br/&gt;&lt;span&gt;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?&lt;/span&gt;&lt;br/&gt;&lt;span&gt; &lt;/span&gt;&lt;br/&gt;&lt;span&gt;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.&lt;/span&gt;&lt;br/&gt;&lt;span&gt; &lt;/span&gt;&lt;br/&gt;&lt;strong&gt;Watch Your Site Stats&lt;/strong&gt;&lt;br/&gt;&lt;span&gt; &lt;/span&gt;&lt;br/&gt;&lt;span&gt;If you are looking to improve how users interact with your site, know your site&amp;#8217;s statistics. I’ll use ProdigyView as an example.&lt;/span&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span&gt;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.&lt;/span&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span&gt;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?&lt;/span&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span&gt;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.&lt;/span&gt;&lt;br/&gt;&lt;span&gt; &lt;/span&gt;&lt;br/&gt;&lt;strong&gt;Future of PV Community&lt;/strong&gt;&lt;br/&gt;&lt;span&gt; &lt;/span&gt;&lt;br/&gt;&lt;span&gt;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.&lt;/span&gt;&lt;br/&gt;&lt;span&gt; &lt;/span&gt;&lt;br/&gt;&lt;span&gt;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. &lt;/span&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span&gt;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.&lt;/span&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span&gt;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.&lt;/span&gt;&lt;br/&gt;&lt;span&gt; &lt;/span&gt;&lt;br/&gt;&lt;strong&gt;Future for Me&lt;/strong&gt;&lt;br/&gt;&lt;span&gt; &lt;/span&gt;&lt;br/&gt;&lt;span&gt;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.&lt;/span&gt;&lt;br/&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;br/&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span&gt;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.&lt;/span&gt;&lt;/div&gt;&lt;/p&gt;</description><link>http://prodigyview.tumblr.com/post/16145082651</link><guid>http://prodigyview.tumblr.com/post/16145082651</guid><pubDate>Thu, 19 Jan 2012 20:12:00 -0500</pubDate><category>php</category><category>prodigyview</category><category>challenge</category><category>marketing</category><category>social networing</category><category>mongodb</category><category>programming</category><category>community</category><category>experience</category><category>framework</category></item><item><title>Day 59 - Applications, Plug-ins and 1 More day</title><description>&lt;p&gt;I&amp;#8217;m just focused on finishing. The finish line is in sight and it couldn&amp;#8217;t come sooner&amp;#8230;except if it was today.&lt;/p&gt;
&lt;p&gt;Tomorrow is going to be a killer blog entry. It will sum up everything from marketing, social media, web analytics, mongodb, gridfs, and the future of the community of ProdigyView.&lt;/p&gt;
&lt;p&gt;The tutorials today (5 of them) was on applications and plugins. Honestly, I feel these tutorials were rushed and do not do the process of creating and using applications and plug-ins justice. It was tough doing 5 of them in one day. Applications and plug-ins are a unique way of extending ProdigyView with libraries. I actually created a whole CMS managed by applications. Needs more tweaking before I decide to release a beta version of it. &lt;/p&gt;
&lt;p&gt;But until tomorrow.&lt;/p&gt;
&lt;p&gt;Applications and Plug-ins Overview: &lt;a href="http://www.prodigyview.com/tutorials/slideshare/412/114"&gt;&lt;a href="http://www.prodigyview.com/tutorials/slideshare/412/114"&gt;http://www.prodigyview.com/tutorials/slideshare/412/114&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Installing Applications: &lt;a href="http://www.prodigyview.com/tutorials/slideshare/413/114"&gt;&lt;a href="http://www.prodigyview.com/tutorials/slideshare/413/114"&gt;http://www.prodigyview.com/tutorials/slideshare/413/114&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Building Applications: &lt;a href="http://www.prodigyview.com/tutorials/slideshare/414/114"&gt;&lt;a href="http://www.prodigyview.com/tutorials/slideshare/414/114"&gt;http://www.prodigyview.com/tutorials/slideshare/414/114&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Installing Plug-ins: &lt;a href="http://www.prodigyview.com/tutorials/slideshare/415/114"&gt;&lt;a href="http://www.prodigyview.com/tutorials/slideshare/415/114"&gt;http://www.prodigyview.com/tutorials/slideshare/415/114&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Building Plug-ins: &lt;a href="http://www.prodigyview.com/tutorials/slideshare/416/114"&gt;&lt;a href="http://www.prodigyview.com/tutorials/slideshare/416/114"&gt;http://www.prodigyview.com/tutorials/slideshare/416/114&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://prodigyview.tumblr.com/post/16096876666</link><guid>http://prodigyview.tumblr.com/post/16096876666</guid><pubDate>Wed, 18 Jan 2012 22:06:00 -0500</pubDate><category>php</category><category>prodigyview</category><category>applications</category><category>plugins</category><category>extensions</category><category>MongoDB</category><category>programming</category></item><item><title>Day 58 - Image Scaling and Watermarking and Security</title><description>&lt;p&gt;For the first time since I started, I&amp;#8217;ve released 3 tutorials in one day. I generally do not combine two completely unrelated tutorials in the same day, but since time is short, I don&amp;#8217;t have much of a choice. The first tutorial was on image scaling and watermarking, the second on hashing a user&amp;#8217;s password information, and the third on using &lt;strong&gt;PVSecurity::checkAuth&lt;/strong&gt; method.&lt;/p&gt;
&lt;p&gt;The most interesting/useful tutorial was the second one. It wasn&amp;#8217;t related to ProdigyView but was about securely storing a user&amp;#8217;s sensitive information. I&amp;#8217;ve had numerous occasions where I came across a project and the user&amp;#8217;s sensitive information(password) was in the database in plain text. Yes, a recipe for a disaster later. It also goes into how to break an MD5 hash. Using Google, it is very easy to decrypt a password that has been MD5 hashed. And the last part of the tutorial goes into making a salt with MD5 or PHP&amp;#8217;s crypt function. It is a very useful read for PHP programmers in general.&lt;/p&gt;
&lt;p&gt;The watermarking tutorials explains how to create watermark on image with both an another image or just text. It&amp;#8217;s very easy for a site to create their own custom watermarks. It also shows how to scale an image to effectively make useful smaller versions such as thumbnails.&lt;/p&gt;
&lt;p&gt;The third tutorial takes the concepts from the tutorial on hashing and implements it in ProdigyView with an option to decrypt certain information. It hooks up to table or if you are using Mongo, to a collection in the database and makes authenticating a user&amp;#8217;s credentials seamless. Tomorrow is Day 59, and I will be getting into applications and plug-ins.&lt;/p&gt;
&lt;p&gt;Watermarks and Scaling: &lt;a href="http://www.prodigyview.com/tutorials/slideshare/408/109"&gt;&lt;a href="http://www.prodigyview.com/tutorials/slideshare/408/109"&gt;http://www.prodigyview.com/tutorials/slideshare/408/109&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Hash Information Correctly: &lt;a href="http://www.prodigyview.com/tutorials/slideshare/409/105"&gt;&lt;a href="http://www.prodigyview.com/tutorials/slideshare/409/105"&gt;http://www.prodigyview.com/tutorials/slideshare/409/105&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Authentication:&lt;a href="http://www.prodigyview.com/tutorials/slideshare/410/105"&gt; http://www.prodigyview.com/tutorials/slideshare/410/105&lt;/a&gt;&lt;/p&gt;</description><link>http://prodigyview.tumblr.com/post/16038783358</link><guid>http://prodigyview.tumblr.com/post/16038783358</guid><pubDate>Tue, 17 Jan 2012 20:58:26 -0500</pubDate><category>php</category><category>security</category><category>watermarking</category><category>image</category><category>image editing</category><category>hashing</category><category>encryption</category><category>programming</category><category>prodigyview</category><category>protection</category><category>MongoDB</category></item><item><title>Day 56/57 - New Release and Image Manipulation</title><description>&lt;p&gt;Yesterday was the the release of ProdigyView 1.5.3 . I actually needed to release that because the remaining of the tutorials regarding image manipulation, authentication, and mongodb required the additions in the release.&lt;/p&gt;
&lt;p&gt;Today two slideshows were released. The first one was the basics of using PVImage. It involved creating rectangles, ellipses, getting an image attributes and converting an image to a different format properly. The second tutorial is where the fun begins!  You&amp;#8217;ll learn how to create animated gifs with images and text. The tutorial concludes with adding a drop shadow to an image.&lt;/p&gt;
&lt;p&gt;A small thing to watch out for when doing image manipulation: The process itself can be memory intensive on the server. Images are manipulated in RAM and doing too much image processing will eat up your RAM, thus slowing down servers. If you are getting a high volume of traffic and performing a lot of image processing, here is a possible solution:&lt;/p&gt;
&lt;p&gt;Have a completely separate server for doing the image process. Let&amp;#8217;s call this a &amp;#8216;worker server.&amp;#8217; Worker servers are servers reserved for very intensive and long operations, not just image processing. But for our purposes, the worker server is for image processing. Save the image to a location, and add to a job queue (Redis, Gearman etc) that the image needs rendering. The background worker process on the worker server should be notified that an image needs to be processed. It takes that image, resizes, adds a watermark, and other tasks that are needed and then saves that image to a location. The user then receives a notification on the front end that their image has been processed and their is no visible slow down to the user.&lt;/p&gt;
&lt;p&gt;Yes there are other ways, that&amp;#8217;s just one solution.&lt;/p&gt;
&lt;p&gt;ProdigyView 1.5.3 - &lt;a href="http://www.prodigyview.com/source"&gt;&lt;a href="http://www.prodigyview.com/source"&gt;http://www.prodigyview.com/source&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Image Basics - &lt;a href="http://www.prodigyview.com/tutorials/slideshare/406/109"&gt;&lt;a href="http://www.prodigyview.com/tutorials/slideshare/406/109"&gt;http://www.prodigyview.com/tutorials/slideshare/406/109&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Animation and Drop Shadows - &lt;a href="http://www.prodigyview.com/tutorials/slideshare/407/109"&gt;&lt;a href="http://www.prodigyview.com/tutorials/slideshare/407/109"&gt;http://www.prodigyview.com/tutorials/slideshare/407/109&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://prodigyview.tumblr.com/post/15976101395</link><guid>http://prodigyview.tumblr.com/post/15976101395</guid><pubDate>Mon, 16 Jan 2012 18:49:00 -0500</pubDate><category>php</category><category>prodigyview</category><category>mongodb</category><category>image</category><category>Animated Images</category><category>animation</category><category>servers</category><category>programming</category><category>development</category></item><item><title>ProdigyView 1.5.3 - MongoDB, Authentication and Image Manipulation</title><description>&lt;p&gt;Finally released ProdigyView version 1.5.3 . The version has plenty of cool updates in it.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;MongoDB&lt;/strong&gt; 
&lt;ul&gt;&lt;li&gt;GridFS Addition&lt;/li&gt;
&lt;li&gt;Batch Inserts&lt;/li&gt;
&lt;li&gt;Options(such as fysnc)&lt;/li&gt;
&lt;li&gt;Overall improvements to the queries&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Authentication&lt;/strong&gt; 
&lt;ul&gt;&lt;li&gt;Hashing&lt;/li&gt;
&lt;li&gt;Auth module that is integrated with the database&lt;/li&gt;
&lt;li&gt;Auth model that has both hashing and encryption&lt;/li&gt;
&lt;li&gt;Improvement to user role checking&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Image Manipulation&lt;/strong&gt; 
&lt;ul&gt;&lt;li&gt;Drop Shadows&lt;/li&gt;
&lt;li&gt;Drawing of squares and ellipses&lt;/li&gt;
&lt;li&gt;Watermarking with text&lt;/li&gt;
&lt;li&gt;Watermarking with images&lt;/li&gt;
&lt;li&gt;Converting Formats&lt;/li&gt;
&lt;li&gt;Making animated gifs with text and images&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Improvement To PV Standard Search Query&lt;/li&gt;
&lt;li&gt;Fixing a few bugs and warning in various places&lt;/li&gt;
&lt;li&gt;New data structure called PVStaticInstance&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;I went back and fixed up a lot of the other examples and added new ones. The examples also have an index file now to hopefully make them easier to navigate. Next will be the tutorials on these features. I think the most exciting tutorial will be the ones on MongoDB.&lt;/p&gt;
&lt;p&gt;An little odd thing I noticed&amp;#8230;the previous versions released had the majority of their downloads on the core version, which is only the libraries. That surprises me because the sample system contains the necessary examples for learning how to use the framework, and the placement of the &lt;strong&gt;DEFINES&lt;/strong&gt;, which is essential for using ProdigyView. &lt;/p&gt;
&lt;p&gt;ProdigyView 1.5.3 &lt;a href="http://www.prodigyview.com/downloads/coreversions"&gt;&lt;a href="http://www.prodigyview.com/downloads/coreversions"&gt;http://www.prodigyview.com/downloads/coreversions&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://prodigyview.tumblr.com/post/15905493531</link><guid>http://prodigyview.tumblr.com/post/15905493531</guid><pubDate>Sun, 15 Jan 2012 16:31:00 -0500</pubDate><category>php</category><category>MongoDB</category><category>image</category><category>gifs</category><category>animated images</category><category>query</category><category>database</category><category>authentication</category><category>hashing</category><category>security</category><category>programming</category><category>nosql</category></item><item><title>Day 55 - Audio and Video Content Management and Fatigue</title><description>&lt;p&gt;The two tutorials posted today were the last ones on the CMS in ProdigyView. As the title suggests, the focus was on audio and video content management. Similar to file and image content management, files can be placed directly into the CMS. How they differ from image and file content is the conversion and saving of &lt;strong&gt;multiple formats&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;The audio and video and content was designed to work with HTML5. But that poses a problem because not every format works with the &lt;/span&gt;HTML5&lt;span&gt; audio/video tags This means you at least need three formats. For instance, for video you need mp4, ogv, and webm to cover majority of browsers. Instead of making a row in the database to store each format of the same video, it would be easier to place them all in one. After all, its the same video. Long story short, the user places an audio/video into the cms and the cms will use ProdigyView&amp;#8217;s audio/video conversion tools to automatically convert a video to different formats. Easy and useful feature.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;On the side note, Day 55 thats only 5 days left. But its going to be a long and hard 5 days. I should be releasing two tutorials everyday from here on until the 60th day, maybe sometimes three. The tough part is I&amp;#8217;m mentally fatiguing at this point. I&amp;#8217;ve seemed to have lost sight why I am doing it which can make it difficult to continue at times. But I hate to give up.&lt;/p&gt;
&lt;p&gt;Just stopping and walking away would be the easy way out. If I did would anyone care? Would the impact be felt? Would it cause some starving kid in a 3rd world country to die?Probably not. But beyond how it looks from everyone else&amp;#8217;s perspective, they turn off their computers or close their browsers and the only person still stuck with me is me. I&amp;#8217;ve quit before on things, and it doesn&amp;#8217;t feel good. And if I just walk way I will never know what the outcome was: for better or for worst. So the correct path seems to be just to keep going forward and let come what may. Maybe that was too personal of a post&amp;#8230;.&lt;/p&gt;
&lt;p&gt;Anyway, tomorrow I will be putting out ProdigyView 1.5.3 . Get ready for some MongoDB updates, some really cool image manipulation updates, authorization and other tweaks. I think the most exciting thing will be the changes to the PVImage class. We will be getting into things like created animated GIFs. But for today&amp;#8217;s tutorials.&lt;/p&gt;
&lt;p&gt;Audio Content: &lt;a href="http://www.prodigyview.com/tutorials/slideshare/401/113"&gt;&lt;a href="http://www.prodigyview.com/tutorials/slideshare/401/113"&gt;http://www.prodigyview.com/tutorials/slideshare/401/113&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Video Content: &lt;a href="http://www.prodigyview.com/tutorials/slideshare/402/113"&gt;&lt;a href="http://www.prodigyview.com/tutorials/slideshare/402/113"&gt;http://www.prodigyview.com/tutorials/slideshare/402/113&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://prodigyview.tumblr.com/post/15859055404</link><guid>http://prodigyview.tumblr.com/post/15859055404</guid><pubDate>Sat, 14 Jan 2012 20:39:00 -0500</pubDate><category>audio</category><category>challenge</category><category>cms</category><category>content management</category><category>content management system</category><category>fatigue</category><category>ffmpeg</category><category>php</category><category>prodigyview</category><category>programming</category><category>tired</category><category>video</category></item><item><title>Day 54 - Image and File Content Management</title><description>&lt;p&gt;I want to say that I predicted the tutorial on file content management would have more hits than the tutorial on image content management. The file management has 303 views as of 8:17 and is climbing while the image one is only at a measly 28. But I am not sure why since I find image content management more useful and more likely to be used.&lt;/p&gt;
&lt;p&gt;Without going to in depth, the file content is for managing any type of file while the image content is for managing files explicitly for images. The remaining tutorials on the cms will have the feature of adding associated files directly into the CMS when creating or updating the content. How does this work?&lt;/p&gt;
&lt;p&gt;If you not familiar with the &lt;strong&gt;DEFINES&lt;/strong&gt;, they are a set of constants in ProdigyView that create the file structure of the framework. There was a whole tutorial on them &lt;a href="http://www.prodigyview.com/tutorials/slideshare/279/97"&gt;here&lt;/a&gt;. Now with the &lt;strong&gt;DEFINES&lt;/strong&gt;, there are 4 of them for media: &lt;strong&gt;PV_FILE&lt;/strong&gt;, &lt;strong&gt;PV_IMAGE&lt;/strong&gt;, &lt;strong&gt;PV_AUDIO&lt;/strong&gt;, &lt;strong&gt;PV_VIDEO&lt;/strong&gt;. I tried to develop this as obviously as possible. All file content that is not related to an image, audio or video file should go in the file directory associated with &lt;strong&gt;PV_FILE&lt;/strong&gt;. So your uploaded zip files go in there.  All image related files (jpeg, png, gif, etc) should go in the directory associated with the &lt;strong&gt;PV_IMAGE&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Now when a file is uploaded directly into the cms, the cms will place that file accordingly with the defines. So &lt;strong&gt;PVContent::createImageContentWithFile&lt;/strong&gt; method will take the image file, give it a unique name, and place in the PV_IMAGE folder. This takes away some development time needed for placing and associating images or any other file content. The file path is also relative, so if you ever change your server all file structure, your uploaded files will not be affected. Again, this is designed for quick and easy management of all types of content but should be tweaked when using in production. Tomorrow will be the tutorials for audio and video files.&lt;/p&gt;
&lt;p&gt;File Content Management: &lt;a href="http://www.prodigyview.com/tutorials/slideshare/399/113"&gt;&lt;a href="http://www.prodigyview.com/tutorials/slideshare/399/113"&gt;http://www.prodigyview.com/tutorials/slideshare/399/113&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Image Content Management: &lt;a href="http://www.prodigyview.com/tutorials/slideshare/400/113"&gt;&lt;a href="http://www.prodigyview.com/tutorials/slideshare/400/113"&gt;http://www.prodigyview.com/tutorials/slideshare/400/113&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://prodigyview.tumblr.com/post/15803104781</link><guid>http://prodigyview.tumblr.com/post/15803104781</guid><pubDate>Fri, 13 Jan 2012 20:44:00 -0500</pubDate><category>php</category><category>image</category><category>prodigyview</category><category>file</category><category>content management system</category><category>content management</category><category>file content</category><category>image content</category><category>upload</category><category>programming</category><category>audio</category><category>video</category><category>cms</category></item><item><title>Day 53 - Ecommerce  and Text Content Management</title><description>&lt;p&gt;Today, and mostly here on out until day 60, was a dual day in tutorials. The first tutorial was text content. Text content was made for supporting documents that are primarily text based. Examples are blogs,documents, even making your own Twitter service, etc.&lt;/p&gt;
&lt;p&gt;The second tutorial was a little more of a useful topic, product content which can also be known as e-commerce. Like the name suggest, this content describes products to be sold to a customer. &lt;/p&gt;
&lt;p&gt;Text Content: &lt;a href="http://www.prodigyview.com/tutorials/slideshare/397/113"&gt;&lt;a href="http://www.prodigyview.com/tutorials/slideshare/397/113"&gt;http://www.prodigyview.com/tutorials/slideshare/397/113&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;E-Commerce Tutorial: &lt;a href="http://www.prodigyview.com/tutorials/slideshare/398/113"&gt;&lt;a href="http://www.prodigyview.com/tutorials/slideshare/398/113"&gt;http://www.prodigyview.com/tutorials/slideshare/398/113&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://prodigyview.tumblr.com/post/15753880848</link><guid>http://prodigyview.tumblr.com/post/15753880848</guid><pubDate>Thu, 12 Jan 2012 21:15:46 -0500</pubDate><category>php</category><category>prodigyview</category><category>cms</category><category>content management system</category><category>content management</category><category>e-commerce</category><category>ecommerce</category><category>online store</category></item><item><title>Day 52 - CMS Event Content and Opening Up Your Perception To New Ideas</title><description>&lt;p&gt;Extending from yesterday&amp;#8217;s tutorial on base content from the content management system, today&amp;#8217;s tutorial was on the event content. Event content is any data that can be used describe an event. This will give you access to fields such as:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Start Time&lt;/li&gt;
&lt;li&gt;End Time&lt;/li&gt;
&lt;li&gt;Location&lt;/li&gt;
&lt;li&gt;Contact Person&lt;/li&gt;
&lt;li&gt;Longitude&lt;/li&gt;
&lt;li&gt;Latitude&lt;/li&gt;
&lt;li&gt;Map&lt;/li&gt;
&lt;li&gt;Address&lt;/li&gt;
&lt;li&gt;City&lt;/li&gt;
&lt;li&gt;State&lt;/li&gt;
&lt;li&gt;Zip&lt;/li&gt;
&lt;li&gt;Country&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Normal usage of event content will be for things such as parties, shows, weddings, meetings, etc. But I want to take a second and try to expand the way one thinks to see things in a new light. Take a second and forget about the fact that it&amp;#8217;s called &lt;em&gt;&amp;#8221;event content&amp;#8221;&lt;/em&gt; and remember that we do not have to use every field. And the possibilites should start to open up.&lt;/p&gt;
&lt;p&gt;Example: We have address, city, state, zip and contact person to work with. Hmmm, maybe with those fields we could create an address book, and that is not related to an event. Take another second and we can add longitude and latitude. We could map out the stores in town or city and coordinate with google maps. With the country field we can take this global and none of that had anything to do with an event. Sweet!&lt;/p&gt;
&lt;p&gt;My point is just because field has a certain name or the method is called &lt;em&gt;createEventContent&lt;/em&gt;, the data in those fields do not have to be associated with an event. It can be anything that you wish it to be.&lt;/p&gt;
&lt;p&gt;Event Content - &lt;a href="http://www.prodigyview.com/tutorials/slideshare/396/113"&gt;&lt;a href="http://www.prodigyview.com/tutorials/slideshare/396/113"&gt;http://www.prodigyview.com/tutorials/slideshare/396/113&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://prodigyview.tumblr.com/post/15702117207</link><guid>http://prodigyview.tumblr.com/post/15702117207</guid><pubDate>Wed, 11 Jan 2012 21:23:00 -0500</pubDate><category>php</category><category>content management system</category><category>content management</category><category>cms</category><category>event</category><category>prodigyview</category><category>programming</category><category>thinking</category><category>mind</category><category>tutorial</category><category>how-to</category></item><item><title>Day 51 - Base Content of the CMS</title><description>&lt;p&gt;The tutorial posted today was the beginning of talking about the heart of the content management system in ProdigyView, base content.&lt;/p&gt;
&lt;p&gt;Base content can be considered the root from where all content is born. It contains basic fields such as content title, description, language, date created, date modified, and many more. Like the name suggest, the point of these fields is to provide the base for other content types.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Example.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We have video content which contains fields only for mp4, avi, webm, ogv, rm and mpeg files. The problem is, there is no meta information describing the video content. To solve that problem we can combine the base content and the video content and we have a wonderful blend of data on the video files and meta data to describe the video files. &lt;/p&gt;
&lt;p&gt;Throughout the week we will cover content management for &lt;strong&gt;audio&lt;/strong&gt;, &lt;strong&gt;video&lt;/strong&gt;, &lt;strong&gt;event&lt;/strong&gt;, &lt;strong&gt;product&lt;/strong&gt;(e-commerce) &lt;strong&gt;file&lt;/strong&gt; and text &lt;strong&gt;content&lt;/strong&gt;, but today we are starting with the basics.&lt;/p&gt;
&lt;p&gt;Base Content: &lt;a href="http://www.prodigyview.com/tutorials/slideshare/395/113"&gt;&lt;a href="http://www.prodigyview.com/tutorials/slideshare/395/113"&gt;http://www.prodigyview.com/tutorials/slideshare/395/113&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://prodigyview.tumblr.com/post/15649162980</link><guid>http://prodigyview.tumblr.com/post/15649162980</guid><pubDate>Tue, 10 Jan 2012 21:03:14 -0500</pubDate><category>php</category><category>prodigyview</category><category>tutorial</category><category>content management</category><category>content management system</category><category>cms</category><category>programming</category><category>video</category><category>audio</category></item><item><title>Day 50 - Url Route Options and Experience Gone Wrong</title><description>&lt;p&gt;5-O! 5-O!&lt;/p&gt;
&lt;p&gt;That&amp;#8217;s what we would yell as underage high school kids drinking in the park as the patrol officer showed up. We would all have a mad dash through the woods but the funny thing is I don&amp;#8217;t even think the cop ever cared enough to get out his car. Just flash your lights and their off, job complete.&lt;/p&gt;
&lt;p&gt;But 5-O is actually the 50th day of me continuously releasing something new everyday and then trying to blog about it. The tutorial today was on customizing the routes. When I say customize, I mead adding in options that enable a route to redirect, create an ssl connection, perform access control, and reroute to different controllers and actions. A lot of cool stuff but to really understand it, you have to play around with the example code.&lt;/p&gt;
&lt;p&gt;I also watched a discussion on the validity of having the ssl connection checking in the router. In an MVC setting, the argument against determining if the request should be an ssl connection or not came to be&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&amp;#8220;that function should be handled by controller or it becomes layer bleed, my years of experience have taught me that&amp;#8221;.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The argument for it was&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&amp;#8220;Models should be fat while controllers should be skinny. If the pattern consist of all information related to url paths is handled in the router, there is no layer bleed as long as it holds true to that pattern&amp;#8221;. &lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;My response to both of these is two fold:&lt;/p&gt;
&lt;p&gt;The moment a person uses years of experience as a key point to winning an argument, is the same moment they shut their minds off to learning something new. Years of experience should mean you have more insight but it does not mean you are always right. This goes for anything in life, not just programming. Keep your mind open to new ways of thinking beyond of what you have been doing for years.&lt;/p&gt;
&lt;p&gt;My second response is, the router in ProdigyView has many built in features but the &lt;strong&gt;ROUTER IN NOT DESIGNED FOR AN MVC&lt;/strong&gt;. The router is designed for routing under any situation, it is up to the developer on how to use it. With ProdigyView, the moment a person says &amp;#8220;It&amp;#8217;s not suppose too&amp;#8230;.&amp;#8221;, they have missed the point of the framework which is too set up tools and let the developer decide what to do with them, free of conventional restrictions. I&amp;#8217;m thinking about making the slogan for the framework &amp;#8220;Nothing is true, everything is permitted.&amp;#8221;&lt;/p&gt;
&lt;p&gt;Routing Options and Customization: &lt;a href="http://www.prodigyview.com/tutorials/slideshare/394/112"&gt;&lt;a href="http://www.prodigyview.com/tutorials/slideshare/394/112"&gt;http://www.prodigyview.com/tutorials/slideshare/394/112&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://prodigyview.tumblr.com/post/15601005893</link><guid>http://prodigyview.tumblr.com/post/15601005893</guid><pubDate>Mon, 09 Jan 2012 22:07:00 -0500</pubDate><category>cops</category><category>experience</category><category>html</category><category>http</category><category>mvc</category><category>php</category><category>police</category><category>prodigyview</category><category>programming</category><category>routing</category><category>tutorial</category><category>url</category><category>learning</category></item><item><title>Day 49 - URL Parts and Routing Basics</title><description>&lt;p&gt;Today was one of those dual tutorial today where I released two tutorials.&lt;/p&gt;
&lt;p&gt;The first tutorial was to help users undertand the parts of the url. I thought before actually getting into learning about routing, it would be good to know the difference between top level domains, second level domains, fragments, paths, etc. Even if the information is never used in routing, it is still good to understand the components of something that you use every day and maybe become a good trivia question one day.&lt;/p&gt;
&lt;p&gt;If anyone has noticed, I&amp;#8217;ve added tutorials at random spots that are not necessarily about ProdigyView. The reason why I do that is because I want developers who use ProdigyView too not just know that framework, but understand general concepts of development that will turn them into better and more knowledgable programmers. One of my beliefs is that frameworks hinder the learning process for new developers, and I want to find a way to educate them while using the framework.&lt;/p&gt;
&lt;p&gt;The second tutorial was on routing and the example it uses is Helium. It covers modifying your htaccess file if you are using Apache web server or modifying your server configuration if you are using Nginx. I think pulling variables from the url is relatively using the PVRouter. If I am unclear, please let me know. With these guidelines, hopefully you can start building your own MVC.&lt;/p&gt;
&lt;p&gt;Also, I am about going to open up Helium to the public very soon along with two sites that were made with Helium. One of the sites is using MongoDB and Mongo&amp;#8217;s GridFS for delivering images. The other uses PostgreSQL. If any developers are interested in helping develop Helium into new open source MVC for fun or as showcase of their work, let me know( contact@prodigyview.com ). I am also considering building a NoSQL CMS after the completion of the tutorials, but that is still in the air.&lt;/p&gt;
&lt;p&gt;Url Parts: &lt;a href="http://www.prodigyview.com/tutorials/slideshare/392/112"&gt;&lt;a href="http://www.prodigyview.com/tutorials/slideshare/392/112"&gt;http://www.prodigyview.com/tutorials/slideshare/392/112&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Routing Basics: &lt;a href="http://www.prodigyview.com/tutorials/slideshare/393/112"&gt;&lt;a href="http://www.prodigyview.com/tutorials/slideshare/393/112"&gt;http://www.prodigyview.com/tutorials/slideshare/393/112&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://prodigyview.tumblr.com/post/15545293938</link><guid>http://prodigyview.tumblr.com/post/15545293938</guid><pubDate>Sun, 08 Jan 2012 21:25:00 -0500</pubDate><category>http</category><category>icann</category><category>mongodb</category><category>php</category><category>postgresql</category><category>prodigyview</category><category>programming</category><category>routing</category><category>url</category><category>mvc</category></item><item><title>Day 48 - Security with Access Levels and User Roles</title><description>&lt;p&gt;One of the areas that I forgot to cover was the access levels. The basics of access levels are so that each user is given an access level, which is a number like 1, 3, 5, etc. Then content can be given access levels also. If the user&amp;#8217;s access level is greater or equal to the number assigned to the content, they are able to view it. Otherwise, access denied.&lt;/p&gt;
&lt;p&gt;The tutorial yesterday was utilizing both the access levels and user roles. ProdigyView is made to support dual privilege system because I did not want to tie a developer to using one. For a simple projects, access levels easily get the job done. For a more complex access control, user roles would be the answer. Again these tools and the CMS should be used for quickly building proofs of concepts before designing an actual product.&lt;/p&gt;
&lt;p&gt;Access Levels and User Roles: &lt;a href="http://www.prodigyview.com/tutorials/slideshare/390/105"&gt;&lt;a href="http://www.prodigyview.com/tutorials/slideshare/390/105"&gt;http://www.prodigyview.com/tutorials/slideshare/390/105&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://prodigyview.tumblr.com/post/15542309578</link><guid>http://prodigyview.tumblr.com/post/15542309578</guid><pubDate>Sun, 08 Jan 2012 20:32:00 -0500</pubDate><category>php</category><category>prodigyview</category><category>security</category><category>user management</category><category>user roles</category><category>user access</category></item><item><title>Day 47 - User Relationships</title><description>&lt;p&gt;The posted today was on user&amp;#8217;s relationships &amp;lt;3.&lt;/p&gt;
&lt;p&gt;I mean a relationship as a way of relating two user together based on a common entity. As you read through the tutorial think of relationships not only as friends but users being able to have multiple kinds of relationships. For example, users can be friends, co-workers and also school mates.&lt;/p&gt;
&lt;p&gt;When building a social site, those connections also be to distinguish was type of relationships are able to view certain content. Only share this picture with users who are family. In other words, you basically have a way of setting up a social setting similar to Google&amp;#8217;s circle. Always remember to think outside the box when programming and the possibilities will be endless.&lt;/p&gt;
&lt;p&gt;User Relationships: &lt;a href="http://www.prodigyview.com/tutorials/slideshare/389/111"&gt;&lt;a href="http://www.prodigyview.com/tutorials/slideshare/389/111"&gt;http://www.prodigyview.com/tutorials/slideshare/389/111&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://prodigyview.tumblr.com/post/15426782016</link><guid>http://prodigyview.tumblr.com/post/15426782016</guid><pubDate>Fri, 06 Jan 2012 20:41:00 -0500</pubDate><category>php</category><category>relationships</category><category>user relationships</category><category>user management</category><category>users</category><category>prodigyview</category><category>google</category><category>social networing</category><category>programming</category><category>cms</category><category>content management</category></item><item><title>Day 46 - User Roles And More Updates Coming Soon</title><description>&lt;p&gt;Version 1.5.3 is on its way. Changes and updates to this version will include:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Mongo updates    
&lt;ul&gt;&lt;li&gt;GridFS implement&lt;/li&gt;
&lt;li&gt;Sorting, Limits and offsets&lt;/li&gt;
&lt;li&gt;Pagination&lt;/li&gt;
&lt;li&gt;Integration into Helium&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Improved Image Rendering     
&lt;ul&gt;&lt;li&gt;Drop Shadows on images&lt;/li&gt;
&lt;li&gt;Scaling Image&lt;/li&gt;
&lt;li&gt;Text To Images&lt;/li&gt;
&lt;li&gt;Watermarks&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Authorization    
&lt;ul&gt;&lt;li&gt;Hashing Password with Salt&lt;/li&gt;
&lt;li&gt;Multiple field authorization&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;A lot of it has be completed but needs testing. So I am currently running it through various test, if anyone else up to test, shoot me an email.&lt;/p&gt;
&lt;p&gt;The tutorial released today was on management of user roles. In short, create, update, delete and search for user roles. Also it goes over to assigning a user to a role.&lt;/p&gt;
&lt;p&gt;User Roles - &lt;a href="http://www.prodigyview.com/tutorials/slideshare/388/111"&gt;&lt;a href="http://www.prodigyview.com/tutorials/slideshare/388/111"&gt;http://www.prodigyview.com/tutorials/slideshare/388/111&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://prodigyview.tumblr.com/post/15376322660</link><guid>http://prodigyview.tumblr.com/post/15376322660</guid><pubDate>Thu, 05 Jan 2012 21:10:00 -0500</pubDate><category>php</category><category>prodigyview</category><category>users</category><category>user management</category><category>CMS</category><category>roles</category><category>mongodb</category><category>mongo</category><category>framework</category><category>mvc</category></item><item><title>Day 45 - User Management (Part of the CMS) and Understanding Proof of Concept</title><description>&lt;p&gt;Finally, we are getting to some of the database tied parts of ProdigyView. I think enough of the other features have been talked about to make the upcoming parts of the framework more usable.&lt;/p&gt;
&lt;p&gt;One of the ProdigyView coolest features is the built in cms(content management system). The purpose of the cms is to quicky build a prototype of the of a concept to show to decision makers and stakeholders. This could mean your boss, investors, etc. After a prototype has been approved, then you can go back and build the product in a way that is more fitting towards the environment.&lt;/p&gt;
&lt;p&gt;The reason why I say use the CMS and its features as a prototype is because it has many features and fields that you do not need. An axample is the video content of the content management system. The video content has fields for ogv, wemb, mp4, ra, mov, avi, fla and others. You may not normally need all these fields and having all these fields can increase the size of your database. So quickly build a video site with the CMS to show as a prototype or proof of concept, then go back and do it the right way.&lt;/p&gt;
&lt;p&gt;In some cases, you might want to build a site using the cms and all it&amp;#8217;s features. If you choose to use the CMS as your system, remember to fine tune the database for scaling. An example could be indexing important fields that you use.&lt;/p&gt;
&lt;p&gt;Today&amp;#8217;s tutorial was on user management. This involves creating, updating, searching, and deleting users. It requires that you have installed ProdigyView with a database connection. &lt;/p&gt;
&lt;p&gt;User Management Basics: &lt;a href="http://www.prodigyview.com/tutorials/slideshare/387/111"&gt;&lt;a href="http://www.prodigyview.com/tutorials/slideshare/387/111"&gt;http://www.prodigyview.com/tutorials/slideshare/387/111&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We will get into further tutorials about creating user relationships, user roles, and custom fields.&lt;/p&gt;</description><link>http://prodigyview.tumblr.com/post/15325351564</link><guid>http://prodigyview.tumblr.com/post/15325351564</guid><pubDate>Wed, 04 Jan 2012 21:47:00 -0500</pubDate><category>php</category><category>users</category><category>user management</category><category>cms</category><category>prodigyview</category><category>content management</category><category>system</category></item><item><title>Day 43 &amp; 44 - HTML5 Forms and Email Configuration</title><description>&lt;p&gt;The tutorial posted yesterday was on HTML5 form elements. Just the tutorial like the tutorial on regular html elements, becareful when using these elements. Not every feature is supported in every browser.&lt;/p&gt;
&lt;p&gt;The tutorial today was on the email configuration. The purpose of the tutorial was learning how to set the default values in the email configuration. Overall, this can make sending emails quicker and easier.&lt;/p&gt;
&lt;p&gt;HTML5 Form Elements - &lt;a href="http://www.prodigyview.com/tutorials/slideshare/384/110"&gt;&lt;a href="http://www.prodigyview.com/tutorials/slideshare/384/110"&gt;http://www.prodigyview.com/tutorials/slideshare/384/110&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Email Configuration - &lt;a href="http://www.prodigyview.com/tutorials/slideshare/385/107"&gt;&lt;a href="http://www.prodigyview.com/tutorials/slideshare/385/107"&gt;http://www.prodigyview.com/tutorials/slideshare/385/107&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://prodigyview.tumblr.com/post/15280292796</link><guid>http://prodigyview.tumblr.com/post/15280292796</guid><pubDate>Tue, 03 Jan 2012 23:41:27 -0500</pubDate></item><item><title>Day 42 - PHP Developers From Around The World Accomplishments and HTML5</title><description>&lt;p&gt;Yesterday I asked this question:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;&lt;span&gt;The year 2011 is over in a few hours and I&amp;#8217;d like to hear what are your PHP achievements for the last year and what are you PHP commitments and goals  for 2012.&amp;#8221;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;I got a variety of answers ranging from large complex additions to php, to beginners just starting out in php. To give some recognition to these projects and hopefully spark new ideas within people, below are achievements and goals by other developers.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span&gt;Other Developers Achievements&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;An RFC for C# style property syntax to be implemented in PHP.  &lt;a href="https://wiki.php.net/rfc/propertygetsetsyntax"&gt;Click here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;A PHP websocket server library. &lt;a href="https://github.com/cboden/Ratchet"&gt;Click here to view&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;A lot of people got into using frameworks&lt;/li&gt;
&lt;li&gt;Created domotics applications( &lt;em&gt;an application that controls a hom&lt;/em&gt;e) in php&lt;/li&gt;
&lt;li&gt;Used php as an interface for radio communications&lt;/li&gt;
&lt;li&gt;Designed multi-purpose bots&lt;/li&gt;
&lt;li&gt;Created a property management system&lt;/li&gt;
&lt;li&gt;Created a server communication client that uses XML-RPC&lt;/li&gt;
&lt;li&gt;Wrote Wordpress plugins&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Other Developers Goals&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Learn GIT&lt;/li&gt;
&lt;li&gt;Contribute to an open source project&lt;/li&gt;
&lt;li&gt;Start blogging&lt;/li&gt;
&lt;li&gt;Write a framework&lt;/li&gt;
&lt;li&gt;Learn python&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;So those are achievements and goals by other developers. I&amp;#8217;m not sure this is an accomplishment yet, but I managed to start getting ProdigyView some documentation and have started to create some interest about it. My goal in programming right now will be to finish up this 60 days of releasing stuff every day, write an RFC, and master another language like Java or C. I&amp;#8217;ve already done work with normal Java and JavaME, but I don&amp;#8217;t feel like I&amp;#8217;ve really mastered the language yet.&lt;/p&gt;
&lt;p&gt;Today&amp;#8217;s tutorial was on HTML5 elements. The coolest part of the tutorial might be the browser indicator in the tutorial. Basically when a feature is listed, it will tell which browser(s) currently support that feature. For those that are going to make use of HTML5, a word of caution is to be careful. I would say to have fallbacks. Example, if you are going to use the video tag in html, this is fine but have a fallback to to a flash player if a browser such as IE7 or IE8 tries to view the video.&lt;/p&gt;
&lt;p&gt;HTML5 - &lt;a href="http://www.prodigyview.com/tutorials/slideshare/383/110"&gt;&lt;a href="http://www.prodigyview.com/tutorials/slideshare/383/110"&gt;http://www.prodigyview.com/tutorials/slideshare/383/110&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://prodigyview.tumblr.com/post/15159788791</link><guid>http://prodigyview.tumblr.com/post/15159788791</guid><pubDate>Sun, 01 Jan 2012 22:03:00 -0500</pubDate><category>php</category><category>prodigyview</category><category>programming</category><category>html5</category><category>html</category></item><item><title>Day 41- HTML Forms</title><description>&lt;p&gt;I&amp;#8217;m sorry to say, but after this post, there will be no more post for the rest of the year&amp;#8230;..Someone has to make corny jokes so I&amp;#8217;ll take the hit for it.&lt;/p&gt;
&lt;p&gt;I want to wish everyone a happy &amp;amp; safe New Year&amp;#8217;s Eve. And I hope everyone can make New Years resolutions they can keep. Personally, I am not making a New Year&amp;#8217;s resolution because I don&amp;#8217;t believe in them. I believe a person should be constantly making resolutions to improve themselves, not just for the new year. But everyone has their own beliefs and their own things that motivate them.&lt;/p&gt;
&lt;p&gt;The tutorial posted today was on creating forms with PVForms. Tomorrow will be html5 followed by HTML5 forms. Be weary of the next tutorials, and html5 in general, since its browser support can be hit and miss.&lt;/p&gt;
&lt;p&gt;HTML Forms: &lt;a href="http://www.prodigyview.com/tutorials/slideshare/382/110"&gt;&lt;a href="http://www.prodigyview.com/tutorials/slideshare/382/110"&gt;http://www.prodigyview.com/tutorials/slideshare/382/110&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://prodigyview.tumblr.com/post/15107342314</link><guid>http://prodigyview.tumblr.com/post/15107342314</guid><pubDate>Sat, 31 Dec 2011 20:28:00 -0500</pubDate></item></channel></rss>
