Journal of Simon Collison
The Philosophy of Composition (1846) by Edgar Allan Poe
Growing Software Strategies
Development Methodology
Planning
Intentional Software
Software as Literature
Gerald Jay Sussman
Universal methods of reducing complexity
Incremental vs. Radical Innovation
Annual Webby Awards
 
Roadmap: Project VOLTAIRE October 22nd
Mass article submitter BY JOHN JAN POPOVIC


Roadmap: Project VOLTAIRE October 22nd
Software is Science Art Craft and Trade:
"The knowledge of the best algorithms is the science, and the imagining of the structure is the art. The details of algorithms, writing efficient lines of code to implement transformations on those structures, is the trade aspect of programming. Technically, this is called maintaining the invariances in the structures. Writing the code to maintain invariances is a relatively simple progression of craftsmanship, but it requires a lot of care and discipline."
Charles Simonyi
.
The Milestones and Incremental Development process is not only a great way to map out complex functionality, it's also IMPORTANT to test out critical features before they're launched. As part of the our INCREMENTAL DEVELOPMENT process we have made some changes in the application structure in an effort to better organise bug-tracking, development and feature releases.

Our approach is adaptable, allowing us to engage and provide testable, but not complete, solutions at any stage in the software development life-cycle. From planning and pre-definition strategy to post-release usability, we blend a variety of methods and best practices on the net. This allows us to create valuable solutions in every stage of the development.
.
CYCLUS ONE
.


.
********************* W E   H A V E   B E E N   T H E R E   A N D   D O N E   T H A T ********************************
.
MILESTONE I // Create, Edit and Search... POSTINGs // delivered on October 11th, 2010
- Poster version 0.1a
- In this versionPOSTINGS repository was implemented
- POSTING record :: title, content
- In this versiona rudimentary content editor for TEXT ONLY POSTINGS was implemented
- Create, Delete and Edit feature of the articles was implemented
.
.
MILESTONE II // Create, Edit and Search.. PROFILEs // delivered on October 11th, 2010
- Profiles version 0.1b
- In this milestone was implemented PROFILE repository/database
- PROFILE record :: display_name, user_name, password, email, customer_tag
- Create, Delete and Edit feature of the PROFILEs was implemented
- there are 5 profiles in the system, but it can be easily extended to more
.
.
.
MILESTONE III // Create, Edit and Search.. SITEs // delivered on October 11th, 2010
- Sites version 0.1c
- In this version was implemented ELGG SOCIAL NETWORKS repository
- SITE record :: site_name, site_url, social_network_type, comment
- the customer can Create, Delete and Edit the SITE record
- there are 200 ELGG sites in the system, but it can be easily extended to more
.
.
.
.
MILESTONE IV // the SITEs repository will be initialised from the CSV file // delivered on October 12th, 2010
version 0.2
- the "CSV file upload" feature was implemented
- once the SITEs repository is initialised, populated xor updated, the SITE-records were easily editable and searchable
.
.
.
MILESTONE V // Automatized POSTING feature for ELGG // delivered on October 12th, 2010
version 0.2a
- There are the profile credentials valid for a SOCIAL NETWORK based on ELGG software
- We have tested Automatized LOGIN with valid profile credentials *(User, Password)*, valid for a SOCIAL NETWORK based on ELGG software
- We have developed Automatized POST *(URL, Title, Body)* valid for ELGG NETWORK only
- The article submitter concept was tested on small number of manually generated ELGG accounts only, and on a small number of ELGG networks
.
.
.
MILESTONE VI // BULK PUBLISH feature for ELGG
version 0.3a
• Here the user will be able to BROADCAST the selected POST at the list of ELGG SOCIAL NETWORKS only
• user MUST insert the CUSTOMER_TAG, the Post will be Broadcasted only to the sites with that TAG descriptor
• that same CUSTOMER_TAG is used to pick-up the profiles which will perform BROADCASTING of the article
• Broadcastig concept will be tested on a small number of manually generated profiles/accounts only



.
MILESTONE VI.a // post_elgg_blog -- testing of the ERROR SYSTEM
########### post_elgg_blog ERROR SYSTEM ######################
- In this milestone was implemented the ErrorSystem for post_elgg_blog
########### Post Elgg blog procedure #####################
# Robot will try to post new article via post_elgg_blog procedure
- there are five input parametres >
########### post_elgg_blog INPUT ######################
- $elgg_url - a link to a SOCIAL NETWORK
- $elgg_user - valid profile credentials account
- $elgg_password - valid profile credentials account
- $blog_title - Article Title
- $blog_body - Article Content
########### OUTPUT post_elgg_blog RESPONSE ######################
As result will be generated an Error_status report
- the creation of the Success_or_Error status_report will be generated as reply after tryng to perform Login & Post
- Error_status output codes >
- a - Error_status: 0 - Description> Post was successfully published
- b - Error_status: 401 - Description> Server not found at $elgg_url
- c - Error_status: 404 - Description> Page not found, 404 Not Found error was encountered, non-existent or temporary unavailable page at $elgg_url
- d - Error_status: 501 - Description> The site is not powered by ELGG
- e - Error_status: 502 - Description> Invalid account credentials, i.e. wrong $elgg_user and/or $elgg_password for Login
- f - Error_status: 503 - Description> Post failed, i.e. the article could not be published
########### end of OUTPUT RESPONSE error codes ######################
.
.


MILESTONE VII // BROADCAST JOB creation
version 0.4
• Here the customer will be able to test the concept of BROADCAST JOB creation (random xor cyclic selection of all profiles which have specified TAG selector)
• the user MUST insert the CUSTOMER_TAG, the BROADCAST JOB only to the sites with that TAG descriptor
• the BROADCAST JOB will pick-up only the profiles with that TAG descriptor
• Broadcastig concept will be tested on a small number of manually generated profiles/accounts only
.
.
.
MILESTONE VIII // decaptcher and proxy support
version 0.5
- In this version will be implemented the features such as decaptcher and proxy support
- Cracking captcha via http://www.decaptcher.com will be implemented
- DeCaptcher CAPTCHA solving will be processed by humans, if automated captcha solver failes
.
.


.
.
********************* N O W, _ W E _ A R E _ H E R E *****************************************************

MILESTONE VIII.A // BROADCAST JOB execution
version 0.6
• Here the customer will be able to test the concept of RANDOM profile posting (random xor cyclic selection of all profiles which have specified TAG selector)
• user MUST insert the CUSTOMER_TAG, the Post will be Broadcasted only to the sites and profiles with that TAG descriptor
• the BROADCAST JOB execution will be monitored and eventual transmission errors will be reported
• Broadcastig concept will be tested on a small number of manually generated profiles/accounts only
.
.
.
MILESTONE IX // ELGG accounts auto-registration
version 0.7
- In this milestone will be implemented ELGG accounts auto-registration
- The virtual user accounts must be created automatically (using proxies - user agent customization) for ELGG
DATABASE METRICS:
- we have from 200 to 1000 ELGG social networks
- we need multiple profiles for one network: 5 to 10 profiles per network
- typically 5profiles * 200 networks = 1000 captcha crackings
- In total we do not need more than 10 HUMAN REALISTIC, but fake profiles in our System, they should look respectable and like REAL PERSONS FROM THE REAL WORLD

--------------------------------------------------------------------------------------------------
MILESTONE XI // YUI3 content editor (WYSIWYG and plain html mode)
version 0.4a
- In this milestone will be implemented a YUI3 content editor (WYSIWYG and plain html mode)
.
.
MILESTONE XII // SPINTAX feature
version 0.5
- In this version will be implemented a SPINTAX feature to generate various article permutations
- SPINTAX enables you to write a single article, then re-word certain areas of it to read differently, but have the same SEMANTIC meaning.
.
.
MILESTONE XIII // FLICKR MASHUP TAG feature
version 0.6
- In this version will be implemented a flickr hook in order to auto insert a flickr MASHUP based on TAG in the content page
.
.
MILESTONE XIV // accounts maintenance
version 0.9
- In this milestone will be implemented CHRON JOB for the monitoring of the each account PROFILE status on each network (typically 5profiles*200communities status records)
- It will periodically check if accounts are still live and perform re-registration process for deactivated ones, if necessary
.
.
.
MILESTONE XV // VOLTAIRE BROADCAST application
version 1.0
- The user will be able to create a BROADCAST JOB to be processed in BATCH
- In this conclusive milestone will be implemented BROADCAST repository/database
- BROADCAST record ::$site_url, $site_user, $site_password, $blog_title, $blog_body, $posting_status, $posting_timestamp
- Create, Delete and Edit feature of the BROADCAST records will be implemented
- In this version will be implemented monitoring of the Error/Success status report for entire batch job posting transaction in LOG posting report file
- Batch jobs are set up via WIZARD so they can be run to completion without manual intervention
- Batch jobs can be stored up during working hours and then executed during the evening hours or whenever the computer is idle, or when there is low internet traffic
- BROADCAST WIZARD features >
============================================
- BROADCAST JOB may be defined in this 3 step sequence dialogue >
*1of3* user can create, edit or select the ARTICLE to be broadcasted
*2of3* user can select the CUSTOMER_TAG for picking the profiles who will result as authors of the POSTED BLOG articles
*3of3* user can select the SITES on which articles will be POSTED
============================================
As result will be generated a Broadcast_JOB file, and it is just a sequence of BROADCAST_TASK records, which can be saved for later deployment or immediately processed.
Each BROADCAST_TASK invokes "post_elgg_blog" subroutine and updates Error_or_success_status and Time_stamp fields in the record
============================================
.
.
Software strategic planning is the process by which the customers and developers envision the future together and set the necessary procedures and operations to achieve the desired software solution.
.
We think that tracking development milestones is a great way to monitor development progress and see which parts of the software are being developed, improved or fixed.
.
We can also see which parts of the software have not been planned, designed, coded and tested yet. The hardest single part of building a software system is deciding what to build, and how to approach to difficult problem, decomposing its complexity, by maintaining high development standards.
.


.
In the next MILESTONE CYCLUS will be implemented VOLTAIRE BulkArticleSubmitter for the other social-networks such as:
mediawiki,
openwiki,
tikiwiki,
macosx server - MediaWiki,
jisko,
hiku,
revou,
mahara
statusnet( laconica),
bloghoster,
lifetype


.
PLEASE NOTE: The planning process can be viewed as a somewhat spiral flow of topics and action steps, where the results from one step initiate study and action in the next step.
.
  However, the development process does not necessarily always flow in one direction.   Issues that arise in a particular solution may cause the planning team to go back to an earlier step to do additional work, implement new features and insert new milestones in the roadmap or refine the application functionality.
.
  If desired, the order of the MILESTONES can even be altered to suit the particular needs of the planning team.  The implementation step also does not end the planning process.  Analysis of results could easily result in additional analysis or a change in strategic direction.  Also, it is recommended that the plan be reviewed periodically, sometimes even on a daily basis in order to verify that all the base assumptions are still valid and that the implementation plan is progressing according to expectations.
.
.
REFINEMENT OF THE PRODUCT REQUIREMENTS
“The hardest single part of building a software system is deciding what to build. No other part of the conceptual work is as difficult in establishing the detailed technical requirements, including the interfaces to people, to machines, and to other software systems. No other part of the work so cripples the results if done wrong. No other part is more difficult to rectify later. Therefore, the most important function that the software builder performs for the client is the iterative extraction and refinement of the product requirements.”
—Fred Brooks