Centos 6.2 apache / http yum update kills web server

Ahh.. gotta love updates. A recent update to httpd dies horribly with the following errors:
Stopping httpd:                                            [FAILED]
Starting httpd: [Fri Mar 15 13:41:24 2013] [warn] module php5_module is already loaded, skipping
[Fri Mar 15 13:41:24 2013] [warn] module ssl_module is already loaded, skipping
httpd: Could not reliably determine the server's fully qualified domain name, using ::1 for ServerName
(98 )Address already in use: make_sock: could not bind to address [::]:443
                                                           [  OK  ]
Or you may notice:
Stopping httpd:                                            [FAILED]
Starting httpd: Syntax error on line 2 of /etc/httpd/conf.d/README:
Invalid command 'This', perhaps misspelled or defined by a module not included in the server configuration
                                                           [FAILED]

Seems like someone didn't update the package properly.. They changed where php and ssl module loading occurs, but neglected to clean up old references. but the fix is really easy:

rm /etc/httpd/conf.d/README
rm /etc/httpd/conf.d/php.conf
rm /etc/httpd/conf.d/ssl.conf
service httpd restart 
And all is well once more...




Chef 11 on Centos 6.2

Ignore all the step-by-step pieces and parts loads. Simple start with a base system and then follow These very excellent steps to install chef...

You may have an error that looks like this:

  * execute[/opt/chef-server/embedded/bin/chpst -u chef_server -U chef_server /opt/chef-server/embedded/bin/rabbitmqctl wait /var/opt/chef-server/rabbitmq/db/rabbit@localhost.pid] action run
================================================================================
Error executing action `run` on resource 'execute[/opt/chef-server/embedded/bin/chpst -u chef_server -U chef_server /opt/chef-server/embedded/bin/rabbitmqctl wait /var/opt/chef-server/rabbitmq/db/rabbit@localhost.pid]'
================================================================================


Mixlib::ShellOut::ShellCommandFailed
------------------------------------
Expected process to exit with [0], but received '2'
---- Begin output of /opt/chef-server/embedded/bin/chpst -u chef_server -U chef_server /opt/chef-server/embedded/bin/rabbitmqctl wait /var/opt/chef-server/rabbitmq/db/rabbit@localhost.pid ----
STDOUT: Waiting for rabbit@localhost ...
pid is 6078 ...
STDERR: Error: process_not_running
---- End output of /opt/chef-server/embedded/bin/chpst -u chef_server -U chef_server /opt/chef-server/embedded/bin/rabbitmqctl wait /var/opt/chef-server/rabbitmq/db/rabbit@localhost.pid ----
Ran /opt/chef-server/embedded/bin/chpst -u chef_server -U chef_server /opt/chef-server/embedded/bin/rabbitmqctl wait /var/opt/chef-server/rabbitmq/db/rabbit@localhost.pid returned 2


Resource Declaration:
---------------------
# In /opt/chef-server/embedded/cookbooks/chef-server/recipes/rabbitmq.rb

 80:   execute "/opt/chef-server/embedded/bin/chpst -u #{node["chef_server"]["user"]["username"]} -U #{node["chef_server"]["user"]["username"]} /opt/chef-server/embedded/bin/rabbitmqctl wait /var/opt/chef-server/rabbitmq/db/rabbit@localhost.pid" do
 81:     retries 10
 82:   end
 83: 



Compiled Resource:
------------------
# Declared in /opt/chef-server/embedded/cookbooks/chef-server/recipes/rabbitmq.rb:80:in `from_file'

execute("/opt/chef-server/embedded/bin/chpst -u chef_server -U chef_server /opt/chef-server/embedded/bin/rabbitmqctl wait /var/opt/chef-server/rabbitmq/db/rabbit@localhost.pid") do
  action "run"
  retries 0
  retry_delay 2
  command "/opt/chef-server/embedded/bin/chpst -u chef_server -U chef_server /opt/chef-server/embedded/bin/rabbitmqctl wait /var/opt/chef-server/rabbitmq/db/rabbit@localhost.pid"
  backup 5
  returns 0
  cookbook_name :"chef-server"
  recipe_name "rabbitmq"
end

The red flag here is this... rabbit@localhost

chef-server-ctl tail showed an error:

{"could not start kernel pid",application_controller,"error in config file \"/etc/rabbitmq/rabbitmq.config\" (none): no ending  found"}

So, it was expecting an erlang-style file and not a bash config-style file.Here's where come old file version names changed on me in the rbabit config So, I noticed that /etc/rabbitmq/rabbit.conf is NOT the correct file now to use.. so I moved it to /etc/rabbitmq/rabbit-env.conf and changed it to look like so:

#example rabbitmq-env.conf file entries
#Rename the node
NODENAME=rabbit@$(hostname | sed -e 's/\..*//')
export RABBITMQ_NODENAME=rabbit@$(hostname | sed -e 's/\..*//')
export RABBITMQ_NODE_IP_ADDRESS=127.0.0.1
export ERL_EPMD_ADDRESS=127.0.0.1
.... and then chef-server-ctl reconfigure works :)

  1. Make sure hostname is a FQDN
  2. Run chef-server-ctl tail and look for errors
  3. Make sure rabbitmq is being started with the correct hostname




Zombie.js/Node.js login with Captcha to Drupal 7 for testing

I've been building a site in Drupal... and while I *like* the built in drupal simpleTest module, it falls short on actually clicky-browser-behavior. I'm not a huge fan of Selenium for just basic Use-Case testing, from a speed standpoint. So some of the things I want to do fall in the middle. And then I realized I needed to be able to pass a cpatcha as part of my tests (first item!).... so a little node.js and zombie.js and hitting mysql on the backend to fetch the actual captcha value.
NOTE - you will need to make a small change to drupal.js to prevent 'Drupal undefined on line 2' error from zombie. For some reason v8 differs with most browser implementations and complains about the Drupal variable not being defined on line 1 (line 2 below).. so a quick fix and we're ready to roll.

misc/drupal.js LINE 1:

if(typeof(Drupal) !== 'undefined'){ 
 var Drupal = Drupal || { 'settings': {}, 'behaviors': {}, 'locale': {} };
} else {
 var Drupal = { 'settings': {}, 'behaviors': {}, 'locale': {} };
}

Now that node.js will be happy.. here is some code that gets you logged in with Captcha. Yes, this is for testing, as the only way to get the captcha is to read mysql... this isn't for screen scraping someone elses site.

drupal_login.js:


var zombie = require("zombie");
var assert = require("assert");

var Client = require('mysql').Client;
var db = new Client();
var browser = new zombie.Browser();
 
db.user = '*****YOUR_mysql_user';
db.password = '*****YOUR_mysql_pass';

var homeURL = "http://YOUR_DRUPAL_7_WEBSITE/"; 

function loginToWebsite(homeURL,callback){
  browser.visit(
     homeURL, 
     function (err, browser, status) { 
        browser.captcha_token = 
       browser.field('captcha_token').value;
  db.query(
    "select solution from Drupal.captcha_sessions"+
    " where token='" + browser.captcha_token + "'",
    function selectCb(error, results, fields) {
      if (error) {
          console.log('GetData Error: ' + error.message);
          db.end();
          return;
      }
      captcha = results[0]['solution'];      
    browser.
    fill("name", "*****YOUR_Drupal_user").
    fill("pass", "*****YOUR_Drupal_user").
    fill("captcha_response",captcha).
    pressButton("op", function(err, browser, status) {  
         console.log('Successful login to '+homeURL);   
         
         /***************************/
         // Do whatever it is you need to do here
         /***************************/                    
         
    });  
      
     });
     });

}





Game Locator

Yes, yes, yes. It has been a VERY long time since I posted.

One small project I've been playing with (to learn more about OAuth and facebook/twitter integration) is A good way to find other people who want to play desktop roleplaying games, card games, etc.

The premise is simple, and the site is VERY basic - it allows you to list your interests and to find people nearby who share those gaming interests. I plan to create a similar site for pickup sports ("tennis, anyone?")... but not until I have twitter firnally integrated.




Erlang Webmachine File Upload example

So.. you're combing the internet for how the heck to do a simple file upload with webmachine? You know - form enctype="multipart/form-data" and a <input type="file"> ? Easy enough in PHP. Absolutely no info that google finds online. The mail archive does not seemed to be reach by googles tentacles.

Here is is:
https://bitbucket.org/argv0/webmachine_examples/src/eeac8c49a47d/fileupload/src/fileupload_resource.erl


Also, comb the mailinglist archive: http://lists.therestfulway.com/pipermail/webmachine_lists.therestfulway.com/


You're welcome.


PRODUCT: PHP script for logins, access, page and item level access/admin

I have a PHP script I've created, and used in production websites for several years now that I'm offering for sale. A single PHP file, compatible with just about every PHP you're going to have on hand, as well as most flavors of MySQL.

I'm packaging the script up now, and will re-edit this page with purchase/download information when it is ready. If you'd like to purchase it via paypal ($15), email me and we'll discuss.

Save yourself hours and hours of work with something you can just drop into your project and start using.

    Features:
  • SHA-1 encrypted passwords in the database
  • Can be used to define mailing list and other automated email groups
  • Simple method call to determine if user is logged in, and redirect to the appropriate login page if not.
  • Page and Item Level access, so you can do things like :
     <? if(HasAccess("MainMenu.SecretStuff")){?>
            <div>This DIV only shows if the user has access.</div>
     <?}?>
    
  • GUID-based keys to prevent guessing.
  • An integration guide with nice steps to help you install and use the software.
  • Single method calls to display and edit user access: (you get a nice tree like what is shown below)
    Website Capabilities:
    Payroll
     
    Contractors
     
    Full View
    Manager View
    Generate Payroll
    Pay Periods
    Sections
     
    Accounting
     
    Edit Return Tickets
    Approval
    Archive
    Create



Resolved to weave the network

Last year I made a post about my new years resolution to talk to a new person, and possibly help them out. I helped 3 people find employment of one flavor or another, several gigs for myself, and passed around a LOT of needs and wants to my network. While not an amazing force for change in the world, it helped a few people - so I'm doing it again.

Everyone, needs something - professionally, personally, what-have-you. Send me an Email and let me know what or who I can find for you.




Certificated Actions - One Click Only

01/14/2009 Updated CanProcessAction - left out where it creates an ID!

Here's something that comes up periodically, "how do you prevent the dreaded double-click?" From something as common as a banking or purchasing transaction getting run twice or more because of overzealous clicking, to batch processing for the night - to pushing items through workflow. How do you prevent it?

A typical strategy is to disable the button in javascript. This works, somewhat, but doesn't prevent someone from hitting refresh once they get to the next page.

My strategy, certificated submits:

  1. A Table (in MySQL here):
     
    CREATE TABLE CLICK_CERTIFICATES (
      certificate_id varchar(40) not null,
      primary key (certificate_id)
    )
    
  2. A way to create a GUID or unqiue id:
     
    function CreateGUID(){
     srand((double)microtime()*1000000);
     $r = rand ;
     $u = uniqid($r);
     $m = md5 ($u);
     return($m);
    }
    
  3. A function that tells us if we can process the action:
      
    function CanProcessAction($certificate_id){
      $certificate_id = addslashes($certificate_id);
    if(trim($certificate_id)!=""){
      $fetch = mysql_query("select count(*) from CLICK_CERTIFICATES where certificate_id='$certificate_id'");
      $row = mysql_fetch_row($fetch);
      $exists =  ($row[0]!=0);
    } else { $exists = false; $certificate_id=CreateGUID();}
      if(!exists){
        mysql_unbuffered_query("insert into CLICK_CERTIFICATES (certificate_id) values ('$certificate_id')");
      }
      return !$exists;
    } 
    
  4. Now, just use a hidden variable on your form that creates the value of the certificate:
     
    <input type="hidden" name="certificate_id" value="<? echo CreateGUID(); ?>">
    
  5. And then just wrap your action on the receiving page like so:
      
    $certificate_id = $_POST["certificate_id"];
    if (CanProcessAction($certificate_id)){
       //do something only this once, even if they clicked twice, or refreshed the page.
    } 
    

You can also put other things in the table to "re-allow" an attempt after a certain amount of time, or log the extra clicks so you can nag your users. By doing the time control, you can prevent users from re-running resource intensive reports for a given interval, and caching the results.




Cloud Experiments

A recent project I was on was written in Erlang, which I now find extremely interesting as a programming tool. I do, however, have a software business focusing on small and medium sized businesses, which should come as no suprise has very few opportunities to use something like Erlang without a lot of explanations up front.

So, a little here, a little there I started trying to pull out the interesting cloud-like capabilities of that might be useful in other languages... and seeing if I might be able to apply them to some of the tools I currently use. I've come up with two moderately successful prototypes: 1) Distributed Javascript processing and 2) Distributed PHP processing

Javascript

As reviled (and revered) a tool as Javascript is, I believe that Web 2.0 has pretty much cemented Javascript as a language of the future. So, my reasoning says, since computing is moving "into the cloud" (insert random definition) and requires massive parallelization, I believe good old JS could learn a thing or two from Erlang. Spawning processes on a lightweight thread, clouds of machines working together, a message queue per process, a signalling system, copy-on-write (or on call) ... lots of little things that would make Javascript automatically distribute into a cloud.

But is it possible? Yes, Javascript showed me it has one great little feature that I never expected. By referring to a function, you can actually get the source to the call:

 
var X = function(A){ alert(A);}

document.write(X);
X('woo!'); 

Drop this code into a blank html page, and you'll see it call the function X, as well as dump the source. This was an eye opener. I have a working prototype, using PHP as a "marshall" to push code, and accompanying data, out to multiple servers to be processed. This isn't quite the way Erlang does it, but definitely offers a working example that this kind of cloud behavior is possible... so given an array of websites, or numerical data, we can Map and Reduce over an extended cloud - the whole thing being done in JS.

I'm trying to decide whether to open-source the project (It uses Erlang underneath since it handles much of the workload quite nicely) - or if I should try and build a product with it. I'd be open to suggestions or assistance, or partnerships.

PHP

So, I thought, PHP seems like a fairly dynamic language - that would let me get away with similar things. Not quite - BUT, I was able to prototype a "roundrobin" type worker system, using asynchronous socket calls in PHP - literally calling back into the PHP pages to perform the work. PHP can do some dynamic includes, and call_user_func magic as well, giving us a nice way to take an array of data and process on multiple machines, with no special software other than the PHP pages.

This isn't exactly what I want, but it does allow for some extremely parallel processing for PHP. I'd like to scale up the idea and make a series of PHP servers work in tandem as a cloud - but for now I plan on just using it to start running the Wallcloud website again.. hopefully this time without so much of my own interaction.

Anyway, just some thoughts for you to consider. - Mike




Netbooks - ask the network

I have a business client who, since I happen to live and breathe in the computing world, ask me a very simple question: For someone who travels a lot, a huge laptop is just a big pain - what is out there in the world of netbooks? I popped over to Linked-In and figured I'd ask my network - which actually includes a lot more people than I thought.

This opened the floodgates. I thought I'd share some of the results.

My goal here was actually even simpler than some of the replies. Email, Web, and an office suite are really all we're looking for - but I'll post everything I could find.

While I don't any super clear winners, it looks like HP and Dell take the cake for support and compatability, and the Asus, Acer, and MSI Wind products for general appeal. Hope this helps someone looking for hardware

    The results:
  • MSI Wind 2 direct good experience (light, wonderful)
  • Acer Aspire (11.6") 2 people like - easy to upgrade memory and HD, great keyboard , 1 person Acer Inspire "sleek like crazy"
  • Acer 1420P - 1 liked (special edition), great battery life and touch screen look for PDC version on ebay.
  • Asus eee - 2 Heard Good, 2 Liked (900 series and 1005HA), 1 experience Bad connection w/ AT&T built-in, worked with Sprint stick. 1 Worse service than HP
  • ASUS 1000HE - great keyboard,wireless,bluetooth, memory upgrade was easy, Win 7 without problems
  • ASUS 9H - great with XP
  • T91 - 1 Heard Good
  • R1f tablet - 1 Heard Good
  • HP Netbooks - 1 Liked support, 4 liked in general Mini 311-1000NR very nice.
  • Lenovo S10 and S12 (bigger). Cheap, windows, easy upgrade - nice screen and very light.
  • Dell - 2 Liked Support over HP/Asus, 2 liked Driver compatability , 1 liked for price (Vostro A90)
  • Toshiba NB205 - 1 liked and gave up the laptop on trips, long battery life.
    General:
  1. recommend as much ram as possible
  2. Solid state drive if you can afford it
  3. May want to stick with GSM for international travel if can afford.
  4. Avoid using for large app demos, fine for presentations.
    Links:
  1. http://www.squidoo.com/netbook-comparison
  2. http://blogs.techrepublic.com.com/hiner/?p=3360&tag=nl.e101
  3. Top 10 netbooks for 2009 - http://computers.toptenreviews.com/netbooks/



Ubuntu 9.10 Missing Sound on Intel HDA Solved

I have a Dell D620 laptop - whose sound died immediately after installing Ubuntu 9.10 Karmic Koala.

After much difficulty here was the fix: sudo apt-get install gnome-alsamixer

Then go Applications > Sound & Video > GNOME ALSA Mixer , and turn the sound back on - WHEW!

So if you have intel HDA onboard audio (snd_hda_intel) that died on upgrade - try it out!




Open Source Javascript Crossword code

Sometimes someone asks you to build something for them, and you discover that it's a bit more challenging of a problem than you thought. So, you feel, that your work really just needs to go out and be free among all the code floating around the internet.

Plus, after finishing this code, I'm not even too embarrassed about how it turned out. So, if you want to see the kind of thing I can create - click over to Sample Crossword Generator in Javascript and take a look.

Yes, I realize this *ISN'T* a playable crossword - BUT, programatically - all the hard work is done, you just need to add your own word list, set the little numbers, and put in your clues. The array on the bottom gives you an idea of where things should go.

There, Internet, don't say I haven't done anything for you in a while. :) - Mike




ONIX-FILES.COM is launched!

Onix-Files.Com is finally alive. You can test convert an onix file to CSV, and see the first 10 files output as raw data or in CSV format. You can then purchase the resulting file via Google Checkout.

Thank you so much to all the folks who sent me test ONIX feeds to convert, and to everyone for their general patience as I created the site. If you have ANY problems at all, please contact me immediately and I will take care.

I've had so much demand, its been difficult to keep the site development moving while getting everything done. Again, THANK YOU for your patience and your patronage.




Ubuntu 9.10 Broadcom Wireless Solved

Upgraded to Koala 9.1 today (when it showed up in my update)... which promptly broke my wireless card. Here was the ultimate solution, since the hardware activate thingy didn't work:
wget http://downloads.openwrt.org/sources/broadcom-wl-4.80.53.0.tar.bz2
tar xfvj broadcom-wl-4.80.53.0.tar.bz2
sudo b43-fwcutter --unsupported -w /lib/firmware broadcom-wl-4.80.53.0/kmod/wl_apsta_mimo.o
and then I have to modprobe to get it to recognize it:
sudo modprobe b43
Now I have wireless - yay! Now so the darn thing will come up on startup
sudo gedit /etc/modules
Append the following:
# wireless
b43
save, and it comes up on the get go. Other than that, I like 9.10 - starcraft actually runs under wine!


Needs: Two ERLANG/Functional programmers seeking positions in Chicagoland

I know of two top-notch functional programmers looking for full time positions in the Chicago area. I've known both for almost a year now, and have worked directly with them. If you know of anything, Email me and I can send contact information.


ONIX to CSV - online conversion

UPDATE Nov 10,2009:Convert your files online now @ onix-files.com We're live! yay!

I'm still in the process of building the online conversion process for onix-files.com, but it should be ready this weekend.

I've been getting quite a few requests for ONIX to CSV conversion (and a few the other way), I can run a quick conversion for you for $10 for a single file if you are in a hurry. Paypal will work, just email me: Convert ONIX to CSV. If you need another format, just ask.

Again, the self-serve system will be available by Monday October 26, but I'm willing to run a conversion for someone who needs it right away.




CVENT Contacts Synchronization

Simple framework C# files and console app to provide Database Synchonization with CVENT Contacts. Current implementation handles Microsoft Access or SQL Server. Customer must have Cvent API keys/logins for software to function. Email for more info


SQL Reporting Services Data Extraction

So.. you need to get data from the web - and your partner will only give you a "report" online. You fire up a simple HTTPWebRequest, and discover they are using a complicated ASP.NET front end to SQL Reporting Services. Yuck. How the heck do you manage that!

Well.. thats another piece of code I have on hand. Currently I'm testing and using with a client, but if you have similar aspirations of reporting - and need a way to automate extracting data from SRS - drop me a line: Here




PHP and C# ONIX Components almost ready

UPDATE Nov 10,2009:Convert your files online now @ onix-files.com We're live! yay!

Well.. I'm almost ready with completely downloadable/installable versions of my C# and PHP enabled onix components. I had a potential customer throw me for a loop with a file format I'd never parsed before - so I'm going to list the publishers/sources that I know I can handle very well (Eloquence for one), as well as have a form where you can submit your onix file, and try it out online (say, convert to a Excel or CSV or somesuch).

My Parsing is lightyears ahead of where it was, handling even the most atrocious XML. Yes, you heard me, no one in the publishing industry handles the XML for an ONIX file the same way. It's not their fault. Its just that XML is so darn easy to do wrong.

Additionally, I registered onix-files.com, to make it easy to find. I've had enough traffic related to this, that I believe there must be some real pain out there for developers trying to handle these files easily without having to build a parser from the ground up.

I am very excited. My goal is Nov 1st with full site and launch, but you can still contact me now about the components if you are interested. Email me.




Interview - Augusto Albeghi - Viney@rd Business Intelligence

Interview with Augusto Albeghi, creator of Viney@rd Business Intelligence software.

1. Before we get into your software, I'd like to talk about some BI background. Viney@rd is a Business Intelligence tool, a buzzword familiar to larger businesses, but an elusive term for small businesses - how would you describe Business Intelligence for a small business, say a small manufacturer with one or two large customers.
First question, first hit! Communicating Business Intelligence is terribly complex if the audience is not familiar with the idea already. That’s why I mostly use the term “Spreadsheet Automation”, which is much more immediate and it is not a fake definition as well. I try to convey the ideas of “cleaning up the mess with the spreadsheets” and “keeping data in a single, regulated, repository”. In this way the advantages of having such a tool in place are easier to catch.

Anyway, BI is a process, the process of supporting people in taking informed decisions with relevant information. Each business has its own processes and specific issues that require managing different data, from different sources, for different purposes. BI applications and BI projects are the tools and the means that provide the information to support the decision process. if you like your gut feelings or you can’t help showing how cool you are by guessing business decisions, well, do not use BI.
2. How would a bakery, or other "multiple small customers" define or use Business Intelligence?
BI comes into play when too many “business elements” to stay in someone’s head are on the field. Maybe a family owned, single window, bakery does not have the foundations required to make analysis; some base documents are required to work on. As long as you issue invoices to customers and payments to suppliers, you have the raw material needed to start the process. In case of many small customers some of the typical issues are customers’ profitability and clustering.

Once I used to work for a small software house which also sold hardware and packaged software (about 30 people and roughly 5M$ a year). They had, on the network, an Excel file named “Everything.xls” on which they organized their entire activity. They served a lot of small customers and a bunch of large accounts. All the information was at hand but they never committed to analyzing it. No use to say, end of year accounting income statements were always a surprise. Instead of stepping back and make a serious analysis of their profitability, they just accused people to be unreliable and making mistakes. I didn’t last long by them, but this is another story.
3. What you've created seems to address a common problem you were running into as a consultant, can you describe the "spreadsheet hell" a bit for me?
When we incur in “spreadsheet hell” we are already one level up than that pictured above. We have data available, coming out from company systems, but often in raw formats. Almost every software can export data as an Excel table, a csv file or other comparable formats. To be transformed in meaningful reports, they often require a huge amount of “sweat and blood”. Refactoring data takes time, costs money and is incredibly prone to errors. Often a degree of automation by VBA or external references is in place but I have yet to see an architecture which is not rigid nor baroque. The system management is usually a one man show, leaving the company decision support system vulnerable to a two weeks’ notice. But the worst is yet to come. While working, people make different versions of their spreadsheets; in a moderately complex environment spotting the right version the day after, is extremely difficult, even for the most organized people. Chances are that your boss will get a stream of spreadsheets and she is likely not as organized as you are. You had better praying that she will not prepare a press release based on wrong or incomplete data.
4. When was your "Aha" moment that you decided to create Viney@rd?
There was no sudden revelation. The idea has been bouncing in my head for years. People like Excel, and they want their data on it because a) they can organize it freely and they’re not tied to the metaphor of the table i.e. they can address and change every single cell and b) Excel saves statically files on a familiar place like the user’s hard disk. The most common censure users make to classical BI tools are a) some data/master data which I have on my spreadsheet are lacking from the datawarehouse b) I can’t format my data as freely as I can in Excel.

What triggered the decision of making Viney@rd was a meeting where I was trapped in no man’s land between customer’s IT people and customer’s users; users were asking boldly for new data and new master data and the IT adamantly refused because users’ data requests could be sourced only from scattered spreadsheets and not from the existing systems. That evening, in the subway, I decided I had had enough of that, and I needed to start steering my working life.
5. Have you considered some kind of source control or history system (bookmarking,etc) in your software?
OK, you hid a bug in my office! Viney@rd is very young and still lacks some features that are quite standard in BI systems, but I also plan to implement a whole new set of features which are not found in conventional systems. To be clearer, Viney@rd is already unconventional featuring the ability to refresh a complex layout without disrupting it and giving the user control on the data itself, all within Excel. Nonetheless, it is going to be more unconventional implementing features like data tagging and streams of information.

By tagging data we can address a human brain peculiarity which I saw in action many times. BI tools ultimately present tables to the user, but the user does not think to data in a tabular view. Let’s make an example: orders backlog. A conventional implementation will show an order list to the users. The users sees inside the list that bulky order that will save this month’s target, those awful orders with low margin but exceedingly complex to prepare, the order for which more information is always required, the orders that must be prepared separately because … etc. etc. These categories, usually, are too human and too heuristic to be implemented in a database. There must be a way for the users to tag their orders and to analyze them according to the categories they use to make decisions in their current activity. Yes, I have some other weird ideas but I do not disclose them now otherwise I will not get published!
6. Suppose I have a small business, and I think I might be interested in Business Intelligence - but currently have nothing in place to collect or analyze information, how exactly do I get started? What do I need to gather? What kind of information about my business do I need to know before I can even start using something like Viney@rd.
First let me make a point: do not think that Viney@rd is something exclusively “small”. As it is now, it can’t handle the terabytes, but there are, even in large companies, areas where the data volume is not a factor. Many financial analyses, for example, do not involve a lot of data and may benefit from a tool like Viney@rd.

If you are interested in BI, it’s hardly the chance that you have nothing already in place. More likely, you are accessing various disconnected data sources. You browse printouts from QuickBooks or some other accounting package for financials and credit management. You have a spreadsheet which details the activity of your three small delivery vans and freighters invoices for long range transports. Your receptionist keeps another spreadsheet with complaint calls updated by hand. Your warehouse manager e-mails you weekly with a list of late deliveries and defects spotted upon delivery. Your two salesmen keep sending Excel files with the coming months forecasted sales. I can go on with production, R&D, HR etc. etc.

It may easily come a time when you need all those data together to manage your business effectively. For example you may need to have, by product, the stock, the available production capacity and the orders backlog in a single place to judge if you can fill the orders or you are going to be late. That’s the point where Viney@rd comes into play.
7. Many of our readers are connected in some way or another to the business of software, self employment, and the autonomy movement, can you describe the biggest lesson you've learned in creating your own software?
I do not think I can really teach something to someone. StraySoft and Viney@rd are still in their infancy and they still have to prove everything. There are lots of very informed blogs about going solo or founding a micro ISVs, I read many of them and I do not want to repeat what has already been said. The one point I feel to touch is about the target audience of the software. It appears to be one order of magnitude easier to market something targeted at developers or IT technicians rather than general business software. Many of the subject gurus, as a matter of fact, sell to techies. For general business sw I think the Micro ISV should act more like an established company.

Nonetheless, I’m going to launch a partner program in few months where, for a small fee, implementers can have access to Viney@rd database and internals, a supplement of education and a fast lane for support requests. The ideal partner would be the freelance consultant or the small consulting firm, who can use Viney@rd for their projects.
8. One last group of questions, non sequitur, You mentioned your love for American Football, how popular is it in Italy? What position did you play? Who is you favorite team?
American football became immensely popular in the ‘80s, with hundreds of teams and attendances in the tenth of thousands for the top matches. Unluckily the growth had no solid roots and the Italian federation was poorly led. In the ‘90s many clubs filed for bankruptcy and the players base shrunk. In 2002, the “hannus horribilis” (the terrible year) of the American Football in Italy the Italian American Football Federation was expelled by the Italian Olympic Committee for financial misdemeanor and forced to shut down. Since then, there have been various “leagues” striving to resume activity but only a handful of teams is active now.

I used to play defensive tackle in the 4-3-4 defense or nose tackle in the 3-4-4. My original team, “The Crusaders”, has disappeared now, and I do not want to take a stance for an American team! What I can say is this; if I close my eyes, I can still see Mike Singletary leveling legions of runners to the ground…
Thanks to Augusto for his responses!



PHP Onix Feeds

UPDATE Nov 10,2009:Convert your files online now @ onix-files.com We're live! yay!

Just an update that I've completely rewritten my PHP ONIX parser, which has now been tested against 10 different major publisher feeds (yes, even when they do it wrong). I completely scrapped the standard XML parsers for a pattern matching system, which handles even the most incorrectly formatted XML. Email For Details


Allergy Tracking.

I have a wheat allergy, it stinks.  I also have either a corn or milk allergy.  They all manifest as dermatitis.  It *really* stinks.  But, except for the wheat, I'm not 100% what causes me problems.  So, I started thinking about how I might diary my food and other allergen exposures, and how that might look on a graph.

So, I wondered, if anyone else out there might be looking for software to help with this sort of thing. Especially if that software might integrate with a mobile device or iPhone, and allow for exposure diaries on the road.

The idea itself is fairly simple.  You record when you believe you've been exposed to an allergen: soy, wheat, seafood, etc... even if just a guess.  You then record your current state of reaction (in my case skin problems), or other symptoms.  Combine that with some environmental allergen info, and you get a pretty graph of all these events.

Now, the fun part - overlaying exposure with the reactions to discover patterns in food allergies.

Neat huh?  I'm going to start polishing what I have as an end-user application, but I'm looking for beta users and other features you might be interested in. Email Me, I'd be interested in hearing about your needs.


PRODUCT: ONIX feeds for PHP, C#, and Delphi

UPDATE Nov 10,2009:Convert your files online now @ onix-files.com We're live! yay!

I have existing code that I created in Delphi, and then later in PHP and C# to automatically handle processing ONIX feeds for the publishing industry. If you're not sure what that is, then you're probably not in the market for it.

Publishing has very few standards as far as electronic interchange, ONIX is one of them, well - sorta. Anyone who works in publishing knows that everything is "sorta". As part of several contracts, I've been exposed to several ONIX feeds from probably 10 or so publishers - from folks like Hachette down to the little guys. It can be a huge pain to build the code necessary to handle these feeds reliably.

So, here's the deal. I'm willing to offer you project-ready code to process ONIX feeds for $279.00 - you can add my code to your project, and I'll be willing to help you get it running. I'm flexible on payment terms. Its not going to have a pretty install, its not going to have super detailed documentation - but it will make your ONIX project move along very nicely.

So you think, why not write it myself? If you conceivably make $10/hour - this is worth Monday-Thursday lunchtime. More than half a week you'd waste on something I already have on hand. I own the code, and I'm willing to help you get your project moving. If you make $50/hour - you'd have to get it done by afternoon on Monday. Why reinvent the wheel when you could just buy it - drop it in - and go.

Sound good? Email me about purchasing ONIX feed processing code


Products Blogging

I was thinking about several product ideas I've had, and I thought - wouldn't it be great to just capture some organic traffic and see what happens. Some of these (the first batch anyway) consist of existing code that just doesn't have any polish on it yet, but given enough interest might be something worth really going for. Think of them as "in use, sellable as-is - just not pretty". Yeah, no icons no pretty installer yet - just working code that I'd help you install and use for your environment while I work on all that junk.


Interview - Scott Karstetter - Smart To-Do List

with Scott Karstetter, creator of Smart To-Do List
Scott has been working as an Electrical/Software engineer for almost 8 years. Scott, with a B.S. in Electrical Engineering, will be graduating with a masters degree in Computer Science spring 2009. Smart To-Do List was started as a mISV project toward the end of 2007, released May 2008. Scott also started a blog to round out his mISV efforts last september, available at: http://www.smartproductivity.com

What got you started on the todo list, are you a GTD guy? Just seemed like a good idea?
I started getting interested in GTD a few years ago after reading some posts on Lifehacker.com. I picked up the Getting Things Done book and became pretty hooked on most of the techniques used in the book.

I've been developing software for my day job for almost 8 years now and I thought it would be nice if I could make some extra cash at home by making some simple applications. I had tried out several to-do list applications but I could never find one that was simple to use and didn't look like a Windows 95 application. Most of the to-do list applications out there have so many options when all you want to do is add some tasks to a list. I've seen quite a few apps that will have 7 or 8 fields just to create a new item. I wanted to make a to-do list application that was so easy that you would actually use it. This is why I created Smart To-Do List.
What makes Smart To-Do List different?
Smart To-Do List simply has two input fields: a to-do / command box and a tag field. The to-do / command box allows you to interact with the lists without ever having to touch the mouse. Basically anything that can be done with the mouse in my software can also be done from the keyboard. The simplicity doesn't mean it isnt' powerful though, you can still tag, filter, prioritize, and export the data.
Has the blog really helped? Has it changed any of your ideas about who your customers are and what they are looking for?
The blog has helped somewhat. It gives me an easy outlet to post updates and to receive feedback on those updates from customers. I believe once I'm out of graduate school and have more free time I'll be able to use the blog more effectively. Full time work + wife + two kids + grad school = not much free time!
Thanks for taking time to talk with me Scott,



Page :  1 2