Learning several new languages to the point of productivity is harder than I thought. I keep backing down my goals and changing my expectations. I'm still plugging away at it, slowly but surely. Here's the current plan and status.
I am writing a small "coming soon" page. This page contains a whole lot of the functional code that the application will be using, like the javascript and CSS layout code and the Ajax and database code. This lets me conduct a functional test of my code before the whole application is ready. If I have a bug (like it doesn't work on Macs) then I need to find that out sooner rather than later.
That page will have a pretty complete description of the application, including a short intro video and a sample prayer. It will also have a small form that people can fill out to sign up for updates about the application.
I will start alerting you good people to check it out and send your prayer-inclined friends over once this page is posted.
Once the page is posted I will get back to work on the core application itself. I have the framework. I have many of the foundational functional pieces done. And I am learning a lot about the rest of it by pushing this "coming soon" page through to completion. There is still a lot left to do, but I have just about cleaned out all of the unknown-unknowns and gotten all of the work onto my known work list. That is actually huge progress.
Right now it looks like the application is going to launch as a stand-alone web page. You sign up there. You get a prayer journal. You invite friends. When they sign up you get notified. You can choose a friend (or friends) to share each prayer request with. And after you pray you get a page with advice and suggestions for ministering to those friends that you prayed for.
I will also have a questionnaire or discussion board of some sort within the application where I can post questions about new features and ask questions. Once I get some people in the site I will start working on new features based upon their feedback.
Version one will have a 'donate' button. Version two or three will probably get links to buy flowers for your friends, or buy gifts for them. That is my revenue stream--reseller/affiliate commissions on whatever people buy through the site. It won't be much, but it should be something.
The more I look at Facebook the more I lean towards just making the application "connected to Facebook" instead of embedded within Facebook. Facebook is opening their kimono more and letting people link in to their database more directly. And doing that avoids the hassle of having to re-write the majority of my application in order to get it to fit within the Facebook page-frame (even though I have architected it to allow for that.) We'll see. Facebook is bound to change before I get ready to make that decision.....
I'd love to hear your feedback and ideas.
Showing posts with label programming. Show all posts
Showing posts with label programming. Show all posts
Monday, May 3, 2010
Wednesday, April 14, 2010
Chatter in Salesforce
My friend Steve sent me this demo video for a new Salesforce Appforce offering. It claims to be the first "Social PS Enterprise Application". If you are interested in Salesforce, PSA, or software in general then you should look this over.
They are twittering*, and having their spreadsheets and reports twitter in order to keep everyone up-to-date on the status of the projects. It's a neat concept.
It is doomed to failure. Companies will launch it in hopes of gaining the benefit of getting everyone on the same page. Companies will dump it because the volume of information will be too great. No one will read it.
At one point they showed a use of the twitter where one person reminded another to update a worker's availability because they finished a task a week early. If you believe that the twitter stream (even a private twitter stream) is the right place for this information then you should never ever be involved in software design. The right answer is for marking the task complete a week early to trigger the change in the user's availability. No one should have to discuss that or actively make that happen.
Information overload is everywhere. Software designers need to be cognizant of this. They should never present data to someone who doesn't need it. Unneeded data just pollutes the data stream and becomes spam.
* They call it 'chatter' in deference to twitter's copyright.
They are twittering*, and having their spreadsheets and reports twitter in order to keep everyone up-to-date on the status of the projects. It's a neat concept.
It is doomed to failure. Companies will launch it in hopes of gaining the benefit of getting everyone on the same page. Companies will dump it because the volume of information will be too great. No one will read it.
At one point they showed a use of the twitter where one person reminded another to update a worker's availability because they finished a task a week early. If you believe that the twitter stream (even a private twitter stream) is the right place for this information then you should never ever be involved in software design. The right answer is for marking the task complete a week early to trigger the change in the user's availability. No one should have to discuss that or actively make that happen.
Information overload is everywhere. Software designers need to be cognizant of this. They should never present data to someone who doesn't need it. Unneeded data just pollutes the data stream and becomes spam.
* They call it 'chatter' in deference to twitter's copyright.
Labels:
programming
Friday, March 5, 2010
Adventures in programming: database query times
As I mentioned yesterday, I am learning PHP. I'm working my way through tutorials and reading all sorts of stuff. At the same time I am refining and adjusting my design of Pray with Friends as I learn stuff.
Part of Pray with Friends will be a page where you actually read off a prayer. The prayer will have lots of parts, like an opening, a closing, and some transitional statements. I intend to have many different openings and closings, and just randomize them. That way the prayers will seem new and different each time.
One of the things I have to do is handle the list of openings, closings, etc. I have several lists that will exist somewhere. I was thinking that they belong in the database. I'm still learning, and so this is subject to change, but the test I just did indicates that I need to just build the lists as hard-coded arrays in an included PHP file.
Here's what I did. I wrote a simple PHP page that includes (PHP-speak for 'connects to') a PHP file and connects to a database. The main PHP page declares a start_time variable and then runs a counting do...while loop. Each iteration of the loop prints a row that contains the counter number and a sentence. The sentence is either pulled from the database or the hard-coded PHP array in my included PHP file. The page also declares an end_time variable and subtracts the start_time variable from it to display an elapsed time.
The included PHP file's array and the database table were identical.
I just comment and uncomment the rows with the calls to either the database or included PHP file to run the tests different ways.
The database is on the same box where I am running everything else. So there is no network latency in this test.
I ran the file both ways for 10,000 rows. Care to guess the performance difference between the two methods?
Pulling 10,000 records from the database took 10 seconds.
Pulling 10,000 records from the hard-coded array in the included PHP file took 0.3 seconds.
All of this was processing on my local desktop. The database query was overall much more processor intensive, too. My quad core processors spiked to about 20% utilization for several of the 10 seconds during the database query (yes, all four of them.) My processor monitor didn't even register the query to the hard-coded PHP array (not even a skinny little point.)
Part of Pray with Friends will be a page where you actually read off a prayer. The prayer will have lots of parts, like an opening, a closing, and some transitional statements. I intend to have many different openings and closings, and just randomize them. That way the prayers will seem new and different each time.
One of the things I have to do is handle the list of openings, closings, etc. I have several lists that will exist somewhere. I was thinking that they belong in the database. I'm still learning, and so this is subject to change, but the test I just did indicates that I need to just build the lists as hard-coded arrays in an included PHP file.
Here's what I did. I wrote a simple PHP page that includes (PHP-speak for 'connects to') a PHP file and connects to a database. The main PHP page declares a start_time variable and then runs a counting do...while loop. Each iteration of the loop prints a row that contains the counter number and a sentence. The sentence is either pulled from the database or the hard-coded PHP array in my included PHP file. The page also declares an end_time variable and subtracts the start_time variable from it to display an elapsed time.
The included PHP file's array and the database table were identical.
I just comment and uncomment the rows with the calls to either the database or included PHP file to run the tests different ways.
The database is on the same box where I am running everything else. So there is no network latency in this test.
I ran the file both ways for 10,000 rows. Care to guess the performance difference between the two methods?
Pulling 10,000 records from the database took 10 seconds.
Pulling 10,000 records from the hard-coded array in the included PHP file took 0.3 seconds.
All of this was processing on my local desktop. The database query was overall much more processor intensive, too. My quad core processors spiked to about 20% utilization for several of the 10 seconds during the database query (yes, all four of them.) My processor monitor didn't even register the query to the hard-coded PHP array (not even a skinny little point.)
Labels:
programming
Thursday, March 4, 2010
Adventures in coding
For those of you who haven't heard, I'm working on writing the Pray with Friends Facebook app that I blogged about months ago.
I have installed all of this on my Windows desktop:
MySQL
Apache
PHP
PEAR
About a dozen PHP-PEAR extensions for things like connecting to Facebook and Paypal.
I have a little test database going. I have an HTML (PHP) file that lets you enter records into the database. It validates that you filled in all of the fields and that what you entered isn't too big for the database fields. If you made an error it leaves what you entered in the fields. And after the data passes the validator, it gets posted to the database. The page also shows you all of the records in the database.
I have actually spent more time troubleshooting craziness with PHP and PEAR on Windows 7 than anything else. The newest release of PHP simply would not run--after I installed it Apache would not start. I opened a defect with the PHP crew over that, and it seems that others can reproduce my problems.
I also found that Windows 7 is more picky than previous versions of Windows about case sensitivity and file/folder permissions. I had to hack Windows some and then hack PEAR's configuration some in order to get PEAR to operate without constantly throwing errors. And I had to move all of the PEAR-PHP extensions out of their normal directories and into a new directory structure that I created--and then go through every file to re-path all of the connections between files.
I feel like I've made a ton of progress in my first 3 days of learning PHP. I understand enough, and have gotten enough of other people's code to work, that I am confident that I can actually code this app. I can't promise that it will be any good. But I can code up my idea and make it work basically the way that I want.
Next up is updating records in the database (calling them up into editable fields in the form and then chancing what is in the database. After that is adding another layer of validation to ensure that hostile code is not getting saved to the database. After that I start converting my page from full page submissions into discrete AJAX calls.
Once I have those three steps mastered I will build my first version of the PwF database structure and start building the prototype pages for the actual application.
I have already employed Christy to write some of the content for the application--the prayer prompts. I've looked over what she is doing, and it looks great. I'm really excited.
I have installed all of this on my Windows desktop:
MySQL
Apache
PHP
PEAR
About a dozen PHP-PEAR extensions for things like connecting to Facebook and Paypal.
I have a little test database going. I have an HTML (PHP) file that lets you enter records into the database. It validates that you filled in all of the fields and that what you entered isn't too big for the database fields. If you made an error it leaves what you entered in the fields. And after the data passes the validator, it gets posted to the database. The page also shows you all of the records in the database.
I have actually spent more time troubleshooting craziness with PHP and PEAR on Windows 7 than anything else. The newest release of PHP simply would not run--after I installed it Apache would not start. I opened a defect with the PHP crew over that, and it seems that others can reproduce my problems.
I also found that Windows 7 is more picky than previous versions of Windows about case sensitivity and file/folder permissions. I had to hack Windows some and then hack PEAR's configuration some in order to get PEAR to operate without constantly throwing errors. And I had to move all of the PEAR-PHP extensions out of their normal directories and into a new directory structure that I created--and then go through every file to re-path all of the connections between files.
I feel like I've made a ton of progress in my first 3 days of learning PHP. I understand enough, and have gotten enough of other people's code to work, that I am confident that I can actually code this app. I can't promise that it will be any good. But I can code up my idea and make it work basically the way that I want.
Next up is updating records in the database (calling them up into editable fields in the form and then chancing what is in the database. After that is adding another layer of validation to ensure that hostile code is not getting saved to the database. After that I start converting my page from full page submissions into discrete AJAX calls.
Once I have those three steps mastered I will build my first version of the PwF database structure and start building the prototype pages for the actual application.
I have already employed Christy to write some of the content for the application--the prayer prompts. I've looked over what she is doing, and it looks great. I'm really excited.
Labels:
fun,
internet,
prayer,
programming
Subscribe to:
Posts (Atom)