Strict Standards: Non-static method File::isReadable() should not be called statically in /home/nfoblog/public_html/index.php on line 23

Strict Standards: Non-static method Config::getConfig() should not be called statically in /home/nfoblog/public_html/plugins/badbehavior/index.inc.php on line 97

Strict Standards: Non-static method CacheManager::getCache() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/config/configdbstorage.class.php on line 52

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/config/configfilestorage.class.php on line 57

Strict Standards: Non-static method Db::getPrefix() should not be called statically in /home/nfoblog/public_html/plugins/badbehavior/index.inc.php on line 98

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/config/configfilestorage.class.php on line 57

Strict Standards: Non-static method Config::getConfig() should not be called statically in /home/nfoblog/public_html/plugins/badbehavior/index.inc.php on line 97

Strict Standards: Non-static method Db::getPrefix() should not be called statically in /home/nfoblog/public_html/plugins/badbehavior/index.inc.php on line 98

Strict Standards: Non-static method Config::getConfig() should not be called statically in /home/nfoblog/public_html/plugins/badbehavior/index.inc.php on line 149

Warning: Cannot modify header information - headers already sent by (output started at /home/nfoblog/public_html/index.php:23) in /home/nfoblog/public_html/plugins/badbehavior/bad-behavior/screener.inc.php on line 8

Strict Standards: Declaration of UserStatus::getStatusList() should be compatible with GenericStatusList::getStatusList($prefix, $statusAllId, $includeStatusAll = false) in /home/nfoblog/public_html/class/dao/userstatus.class.php on line 17

Strict Standards: Non-static method Date_TimeZone::setDefault() should not be called statically in /home/nfoblog/public_html/class/data/Date/TimeZone.class.php on line 413

Strict Standards: Non-static method Date_TimeZone::isValidID() should not be called statically in /home/nfoblog/public_html/class/data/Date/TimeZone.class.php on line 157

Strict Standards: Non-static method SessionManager::init() should not be called statically in /home/nfoblog/public_html/index.php on line 40

Strict Standards: Non-static method SessionManager::setSessionSavePath() should not be called statically in /home/nfoblog/public_html/class/net/http/session/sessionmanager.class.php on line 36

Strict Standards: Non-static method Config::getConfig() should not be called statically in /home/nfoblog/public_html/class/net/http/session/sessionmanager.class.php on line 124

Strict Standards: Non-static method SessionManager::setSessionCookiePath() should not be called statically in /home/nfoblog/public_html/class/net/http/session/sessionmanager.class.php on line 39

Strict Standards: Non-static method Config::getConfig() should not be called statically in /home/nfoblog/public_html/class/net/http/session/sessionmanager.class.php on line 77

Strict Standards: Non-static method SessionManager::setSessionCookieDomain() should not be called statically in /home/nfoblog/public_html/class/net/http/session/sessionmanager.class.php on line 41

Strict Standards: Non-static method HttpVars::getBaseUrl() should not be called statically in /home/nfoblog/public_html/class/net/http/session/sessionmanager.class.php on line 99

Strict Standards: Non-static method HttpVars::getServer() should not be called statically in /home/nfoblog/public_html/class/net/http/httpvars.class.php on line 269

Strict Standards: Non-static method Config::getConfig() should not be called statically in /home/nfoblog/public_html/class/net/http/session/sessionmanager.class.php on line 45

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home/nfoblog/public_html/index.php:23) in /home/nfoblog/public_html/class/net/http/session/sessionmanager.class.php on line 51

Strict Standards: Non-static method HttpVars::getSession() should not be called statically in /home/nfoblog/public_html/class/net/http/session/sessionmanager.class.php on line 56

Strict Standards: Non-static method HttpVars::setSession() should not be called statically in /home/nfoblog/public_html/class/net/http/session/sessionmanager.class.php on line 59

Strict Standards: Non-static method ResourceClassLoader::getLoader() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/controller/controller.class.php on line 179

Strict Standards: Non-static method PluginManager::getPluginManager() should not be called statically in /home/nfoblog/public_html/index.php on line 47

Strict Standards: Non-static method Config::getConfig() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 65

Strict Standards: Non-static method ResourceClassLoader::getLoader() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 171

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 245

Strict Standards: Non-static method Db::getDb() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/plugins/badbehavior/pluginbadbehavior.class.php on line 22

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/config/configfilestorage.class.php on line 57

Strict Standards: Non-static method PDb::getDriver() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/database/db.class.php on line 64

Strict Standards: Non-static method PDb::getValidDrivers() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/database/pdb/pdb.class.php on line 46

Strict Standards: Declaration of PDbMySQLDriver::getDriverDataDictionary() should be compatible with & PDbDriverBase::getDriverDataDictionary($driverName) in /home/nfoblog/public_html/class/database/pdb/drivers/pdbmysqldriver.class.php on line 11

Strict Standards: Non-static method Config::getConfig() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/plugins/badbehavior/pluginbadbehavior.class.php on line 25

Strict Standards: Non-static method Db::getPrefix() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/plugins/badbehavior/pluginbadbehavior.class.php on line 26

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 240

Strict Standards: Non-static method HttpVars::getRequest() should not be called statically in /home/nfoblog/public_html/index.php on line 51

Strict Standards: Non-static method File::exists() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/controller/resourceclassloader.class.php on line 118

Strict Standards: Non-static method File::exists() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/controller/resourceclassloader.class.php on line 118

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/controller/resourceclassloader.class.php on line 118

Strict Standards: Non-static method Pipeline::registerFilter() should not be called statically in /home/nfoblog/public_html/class/security/pipeline.class.php on line 22

Strict Standards: Non-static method HttpVars::getSession() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/action/blogaction.class.php on line 48

Strict Standards: Non-static method Config::getConfig() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/action/blogaction.class.php on line 51

Strict Standards: Non-static method Config::getConfig() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/action/blogaction.class.php on line 167

Strict Standards: Non-static method Config::getConfig() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/data/validator/blognamevalidator.class.php on line 31

Strict Standards: Non-static method Config::getConfig() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/data/validator/usernamevalidator.class.php on line 35

Strict Standards: Non-static method Config::getConfig() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/data/validator/domainvalidator.class.php on line 28

Strict Standards: Declaration of BlogStatus::getStatusList() should be compatible with GenericStatusList::getStatusList($prefix, $statusAllId, $includeStatusAll = false) in /home/nfoblog/public_html/class/dao/blogstatus.class.php on line 52

Strict Standards: Non-static method CacheManager::getCache() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/dao/model.class.php on line 107

Strict Standards: Non-static method Db::getPrefix() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/dao/model.class.php on line 439

Strict Standards: Non-static method CacheManager::getCache() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/dao/model.class.php on line 107

Strict Standards: Non-static method Db::getPrefix() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/dao/model.class.php on line 439

Strict Standards: Non-static method SessionManager::getUserInfoFromSession() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/action/blogaction.class.php on line 70

Strict Standards: Non-static method HttpVars::getSession() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/net/http/session/sessionmanager.class.php on line 219

Strict Standards: Non-static method PluginManager::getPluginManager() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/action/blogaction.class.php on line 75

Strict Standards: Non-static method Locales::getBlogLocale() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/dao/bloginfo.class.php on line 514

Strict Standards: Non-static method CacheManager::getCache() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/locale/locales.class.php on line 73

Strict Standards: Non-static method Locales::_loadPluginLocales() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/locale/locales.class.php on line 80

Strict Standards: Non-static method PluginManager::getPluginManager() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/locale/locales.class.php on line 92

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method Locales::getPluginLocale() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/locale/locales.class.php on line 96

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/locale/pluginlocale.class.php on line 49

Strict Standards: Non-static method Config::getConfig() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/locale/locale.class.php on line 215

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/locale/bloglocale.class.php on line 49

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/locale/pluginlocale.class.php on line 49

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/plugin/pluginmanager.class.php on line 414

Strict Standards: Non-static method Config::getConfig() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/security/pipeline.class.php on line 123

Strict Standards: Non-static method Config::getConfig() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/security/bayesianfilter.class.php on line 46

Strict Standards: Non-static method CacheManager::getCache() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/dao/model.class.php on line 107

Strict Standards: Non-static method Db::getPrefix() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/dao/model.class.php on line 439

Strict Standards: Non-static method HttpVars::getRequestValue() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/action/blogaction.class.php on line 394

Strict Standards: Non-static method HttpVars::getRequest() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/net/http/httpvars.class.php on line 161

Strict Standards: Non-static method Config::getConfig() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/data/validator/usernamevalidator.class.php on line 35

Strict Standards: Non-static method HttpVars::getRequest() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/view/view.class.php on line 90

Strict Standards: Non-static method Config::getConfig() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/template/templatesets/templatesets.class.php on line 169

Strict Standards: Declaration of Template::display() should be compatible with Smarty::display($resource_name, $cache_id = NULL, $compile_id = NULL) in /home/nfoblog/public_html/class/template/template.class.php on line 53

Strict Standards: Declaration of Template::fetch() should be compatible with Smarty::fetch($resource_name, $cache_id = NULL, $compile_id = NULL, $display = false) in /home/nfoblog/public_html/class/template/template.class.php on line 53

Strict Standards: Non-static method TemplateSetStorage::getBaseTemplateFolder() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/template/templateservice.class.php on line 210

Strict Standards: Non-static method Config::getConfig() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/template/templatesets/templatesetstorage.class.php on line 66

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/template/templateservice.class.php on line 216

Strict Standards: Non-static method Config::getConfig() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/template/template.class.php on line 80

Strict Standards: Non-static method Config::getConfig() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/template/templateservice.class.php on line 302

Strict Standards: Non-static method File::exists() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/template/templateservice.class.php on line 310

Strict Standards: Non-static method PluginManager::getPluginManager() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/view/blogview.class.php on line 33

Strict Standards: Non-static method TextFilter::filterAllHTML() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/data/filter/htmlfilter.class.php on line 39

Strict Standards: Non-static method TextFilter::filterJavaScript() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/data/textfilter.class.php on line 86

Strict Standards: Non-static method HttpVars::getRequest() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/view/view.class.php on line 90

Strict Standards: Non-static method Config::getConfig() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/view/smartyview.class.php on line 52

Strict Standards: Non-static method Config::getConfig() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/template/templatesets/templatesets.class.php on line 169

Strict Standards: Declaration of CachedTemplate::fetch() should be compatible with Template::fetch() in /home/nfoblog/public_html/class/template/cachedtemplate.class.php on line 98

Strict Standards: Declaration of CachedTemplate::display() should be compatible with Template::display() in /home/nfoblog/public_html/class/template/cachedtemplate.class.php on line 98

Strict Standards: Non-static method TemplateSetStorage::getBaseTemplateFolder() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/template/templateservice.class.php on line 210

Strict Standards: Non-static method Config::getConfig() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/template/templatesets/templatesetstorage.class.php on line 66

Strict Standards: Non-static method File::isDir() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/template/templateservice.class.php on line 216

Strict Standards: Non-static method Config::getConfig() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/template/template.class.php on line 80

Strict Standards: Non-static method Config::getConfig() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/template/cachedtemplate.class.php on line 31

Strict Standards: Non-static method Config::getConfig() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/template/templateservice.class.php on line 302

Strict Standards: Non-static method File::exists() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/template/templateservice.class.php on line 310

Strict Standards: Non-static method PluginManager::getPluginManager() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/view/blogview.class.php on line 33

Strict Standards: Non-static method Config::getConfig() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/template/template.class.php on line 175

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/template/template.class.php on line 185

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/template/template.class.php on line 185

Strict Standards: Non-static method Config::getConfig() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/template/template.class.php on line 175

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/template/template.class.php on line 185

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/template/template.class.php on line 185

Strict Standards: Non-static method Config::getConfig() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/template/template.class.php on line 175

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/template/template.class.php on line 185

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/template/template.class.php on line 185

Strict Standards: Non-static method TemplateSetStorage::getMiscTemplateFolder() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/view/blogview.class.php on line 283

Strict Standards: Non-static method TemplateSetStorage::getBaseTemplateFolder() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/template/templatesets/templatesetstorage.class.php on line 439

Strict Standards: Non-static method Config::getConfig() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/template/templatesets/templatesetstorage.class.php on line 66

Warning: Cannot modify header information - headers already sent by (output started at /home/nfoblog/public_html/index.php:23) in /home/nfoblog/public_html/class/view/view.class.php on line 328

Warning: Cannot modify header information - headers already sent by (output started at /home/nfoblog/public_html/index.php:23) in /home/nfoblog/public_html/class/view/view.class.php on line 175

Strict Standards: Non-static method Config::getConfig() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/view/smartyview.class.php on line 175

Strict Standards: Non-static method Config::getConfig() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/template/template.class.php on line 175

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/template/template.class.php on line 185

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/template/template.class.php on line 185

Strict Standards: Non-static method HttpCache::httpConditional() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/view/smartyview.class.php on line 241

Strict Standards: Non-static method Config::getConfig() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/view/smartyview.class.php on line 187

Warning: Cannot modify header information - headers already sent by (output started at /home/nfoblog/public_html/index.php:23) in /home/nfoblog/public_html/class/view/smartyview.class.php on line 245

Strict Standards: Non-static method Config::getConfig() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/template/template.class.php on line 175

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/template/template.class.php on line 185

Strict Standards: Non-static method File::isReadable() should not be called statically, assuming $this from incompatible context in /home/nfoblog/public_html/class/template/template.class.php on line 185
Coding on a Budget
Who am I?
nfocipher

Head Grunt, David “NfoCipher” Bunt - I'm a programmer..
Experience: With over 14 years professional experience both in corporate and small business environments. I'm a Linux junkie, have a healthy respect for macs, but cannot tolerate anything microsoft related. Been there, done that, never again.

search
calendar
« January 2014 »
Su Mo Tu We Th Fr Sa
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
Recently...
Categories
Links
Archives
Syndicate
Credits
LifeType IE7 XHTML CSS Firefox

Being Proactive Instead of Reactive

2009-11-10 @ 19:30 in Business

Recently my buddies Ryan and Keith started up a new blog called Business is in the Details. It's all about how you can make your business better by providing better customer service, targeting your ads, and general nuggets of goodness that people simply forget to do over time. It didn't take me long to spot a problem with a business that was worthy of a blog post.


At a location I work at, there is cable internet. The cable was physically pulled away from the pole by an oversized truck. In the same parking lot about 50 yards away is a company that contracts service work for our cable provider. Having that line working is mission critical, so instead of calling the cable company, I simply walk down to the cable contractor's office.


I was met at the front by your typical middle aged manager type personality. I told him our internet was down because our cable is physically down. He said, “Yeah, I saw that coming in to work. Are you the one who did it?”. I told him of course not, but I need that line up as we're losing customers and money without it. “Sure, we'll fix it as soon as you call the cable company and make a service ticket.”


My blood pressure instantly jumped. In my younger years my knee jerk reaction would have gotten the better of me and I would have no doubt insulted the man by explaining to him the amount of idiocy involved to come up with just a statement. Instead age and wisdom won out and I just laughed a little and walked out.


Let's examine what's wrong here:


So after spending 45 minutes on the phone, getting transferred to multiple states (and most likely countries), I managed to convince someone that I did not need to reboot my router as I was holding the downed cable line in my hand. I was assured the problem would be fixed within 3 days. Actual repair time was completed around 1pm, but that's over half the work day. The work was of course done by the same people I visited that morning – the same company that shares my parking lot.


Here's what should have happened:


Is it so odd to expect people will proactively do something without being told first it needs to be done? Apparently yes. Sounds odd, but if you stop and think about it – happens all the time.

Entrepreneurs in general are proactive people. So proactive in fact that most CEOs do not come with an off button, but that's for another post. You need reactive people to carry out your vision, they're called employees. Most people on the planet only do something as a response to someone else. The problem is management. The job description is to balance being proactive with being reactive. An owner of a company hires management to proactively take care of certain things so the work load gets distributed. Management reacts to the people he manages and the customers that are not happy with those people.


The conclusion – my poor customer service experience is a direct result of poor management of a company that represents a bigger company. Disclaimer: I didn't like the big cable company before but my dislike has grown because of the actions of a company they employee.


Taking a step back: Reasons they didn't just “fix” the problem on sight


Whatever the reason, the damage is done and while my patronage will not make or break them, I'm often in a position of decision making when it comes to which internet carrier gets installed. They will certainly lose a few future customers I could have sent their way.

48 Hours with Joel and Jeff..

2009-04-12 @ 08:47 in Coding

Joel Spolsky of FogCreek Software and Jeff Atwood of nothing have joined forces to push out StackOverflow. To generate hype and the all important critical mass, they record a weekly podcast. There are now 48 one hour long podcasts in the wild and I've listened to all of them while driving to Sweet Peppers so I can work on RoR-izing FollowMeIP.


At some point a conversation was had about how cool it would be to have a website that would cater to the asking and answering of programming questions - Stackoverflow was born. Atwood is project manager over a couple of .net programmers and Joel simply tells his readers about how cool it is. It's a great situation really, Atwood does all the work, spends the money, takes the risks and Joel sits back and waits for success or failure. Either way, Joel will have tons of new material to write about.


Atwood seems to be in control of the technology stack and server infrastructure. It's rather amusing at times to listen to his rationale on why he did certain things. Stackoverflow is using ASP.NET MVC, microsoft's answer to ruby on rails. He opted to use this stack which was in beta over the actual RoR stack. He's definitely a microsoft centric developer and every time he denies it, take a drink. It's also amusing listening to hardware issues he's having trying to run his own server. In podcast 48, Atwood said software raid is better than hardware raid. Having dealt with both - extensively - software raid is one big slow steaming pile of crap. With drive sizes in the 2tb now, a nice hardware pci-e raid 1 solution is what you want. It's clear Atwood hasn't had much experience with hardware and really should move his project to some sort of cloud before he runs out of money playing with different raid settings.


After listening to 48 hours of rambling a few things become clear:

The only reason to listen is to hear what Joel says.

Atwood mostly just says "right" or "I agree" randomly.

Joel is not a Linux fan.

Atwood doesn't understand FOSS.

Atwood hasn't "been around" as much as he'd like to think he has.

Atwood should stick to writing.

The stackoverflow podcast is no longer about stackoverflow.


So how is stackoverflow doing? Fine I suppose. People seem to be using it, but it doesn't matter because Atwood made one fatal mistake - not open sourcing it. After the initial release, people started asking the same question: can I spawn a stackoverflow for xzy? Why not a stackoverflow for automotive questions? Atwood has repeatedly said the site just can't be switched from programming questions to some other type of question. That means poor design or lack of vision - most likely a little of both. If you've been in computers your entire life it's rather hard to see value in anything else. They missed the boat and the flood gates are about to be opened.

 

CNProg.com has replicated stackoverflow and released it under the apache license. The motivation was to enable Chinese programmers the ability to use a site like stackoverflow which doesn't support anything but English. Once again the podcast provided a smile on my face when Joel started talking about copyright violation. Sure, it's copyright infringement if China followed U.S. copyright laws - and they don't. When the Chinese government owns and operates a Disney Land clone, I seriously doubt they're going to mind a stackoverflow clone.


I'm reasonably sure CNProg didn't take nearly as long to write and I'm guessing a decent ruby on rails developer could rewrite stackoverflow within a week. Considering Atwood's poor choice in technology stacks, my prediction is someone will clone stackoverflow using ruby on rails and release it under an open source license. This will enable people to create their own niche sites without debating with Atwood about what's possible.


Git server setup using gitosis for Centos 5.2

2009-03-15 @ 08:46 in Coding


This is a step by step HOWTO to host git repositories using gitosis on a Centos 5.2 box. I'm currently working on a ruby on rails project with Ryan. The need for a source management solution was apparent and I've been using subversion for while. Of course I could make a new subversion repo in no time, my server is already setup, backups being done, and it just works - but according to Linus I was ugly and stupid. Ryan wants me to use git and I really didn't want to be ugly and stupid.

I go about searching the web for a git server howto and found that git wasn't really meant to used in a server/client situation, but more of a peer to peer environment. Gitosis was written to emulate that server/client environment I'm after. I also didn't see anything useful on google that was CentOS specific with setting up gitosis.

Here's how I did it..

Step 1 - (On your server)

Install python-setuptools on your server, you'll need it to install gitosis.

As root:

yum -y install python-setuptools



Step 2 - (On your server)

Install git. You'll need the DAG RPM repository for this one.

As root:

- Red Hat Enterprise Linux 5 / i386:

rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm

- Red Hat Enterprise Linux 5 / x86_64:

rpm -Uhv http://apt.sw.be/redhat/el5/en/x86_64/rpmforge/RPMS//rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm

 

yum -y install git



Step 3 - (On your server)

Install gitosis.

As root:

git clone git://eagain.net/gitosis.git

(it should download stuff and create a gitosis directory)

cd gitosis

python setup.py install



Step 4 - (On your server)

Make a user called git.

adduser git

Give your new user git a password.

passwd git




Step 5 - (On your client)

The whole point of gitosis is to transfer files via ssh using a shared key process (ie: no password required to login to user git on your server). Now before you go and start doing it the manual way - don't. Gitosis must create and maintain the authorized_keys file.


As your normal user on your client/development box:

ssh-keygen -t rsa (take the defaults)

There is now a new file called id_rsa.pub in ~/.ssh/

 

Copy the id_rsa.pub file to the server:

scp ~/.ssh/id_rsa.pub git@someServer.com:/home/git/



Step 6 - (On your server)

I'm assuming you're still root on the server.

Change to the git user.


su git

cd /home/git

gitosis-init < id_rsa.pub


It should reply with Initialized empty Git repository in ./ - twice..

We can now remove id_rsa.pub as we don't need it anymore.


rm id_rsa.pub


Now we must set some directory and file permissions to let sshd see the new authorized_keys file.


chmod 755 /home/git

chmod 700 /home/git/.ssh

chmod 644 /home/git/.ssh/authorized_keys





Step 7 - (On your client)

We're pretty much done server side. Now we're going to configure the server via the client.

Although I assume this is obvious, you need to install git on your client machine.



git clone git@someServer.com:gitosis-admin.git

cd gitosis-admin



You should see a gitosis.conf file and keydir directory. Here's the thing, anything you need to configure on the server, you actually configure here and commit the changes to the server. Open up gitosis.conf in your favorite text editor

Make a new group name for your project. It really doesn't matter what you name this group. Add users to the member section who will need push access.

[group myTeam]

members = (copy and paste the user from the members = line in the [group gitosis-admin] section)

writable = myNewProject


Save the file. Why did we use that members=user@someServer.com? If you look in the keydir directory, you'll see your public key with the filename user@someServer.com.pub. These are your users (minus the .pub).



Step 8 - (On your client)

You've just made a configuration change. You want the server to allow user@someServer.com to have write access to a project called myNewProject. You must commit this change to the server.


git commit -a -m "Allow the machine I am on right now write access to myNewProject"

git push


Now it's time to make the directory that will contain your project files. Move up out of the gitosis-admin directory.


cd ..

mkdir myNewProject

cd myNewProject

git init

git remote add origin git@someServer.com:myNewProject.git


Add your files, move some files, create some files. Put some files in the myNewProject directory.

Now we can commit the initial push to the server.


git add .

git commit -a -m "This is my initial commit for myNewProject"

git push origin master:refs/heads/master


Git will do some neat things and push things to the server. Now to delete the directory you just created.. Yeah, I said it.


cd ..

rm -fr myNewProject


And now to pull myNewProject from the server using clone..


git clone git@someServer.com:myNewProject


Now you have a version of your code you can actually use, make changes and commit to the server using normal git commands.


As of now, you have a fully functioning git server with a project and a client that can make changes. But what about other people?



Step 9 - (On your client)

So your friend Bob wants to help you out with myNewProject. Have Bob generate his own id_rsa.pub and send it you. When you have it:


cd gitosis-admin


Assuming Bob's id_rsa.pub is in your home directory, move it to the key directory renaming it at the same time:


mv ~/id_rsa.pub keydir/bob.pub


Tell git about the new file:


git add keydir/bob.pub


Edit your gitosis.conf file again. Look for the members line in myNewProject and add Bob to it:


members = user@someServer.com bob


Now you could add bob to be in the gitosis-admin group if you wanted him to be able to do what you're doing now. How much do you trust Bob?


Save the file and quit. It's time to tell your server about Bob and send Bob's public key.


git commit -a -m "Added commit rights to Bob on myNewProject"

git push


The server will automatically add Bob's public key to authorized_keys. Do not attempt to add him manually.



Step 10 -

Do a little dance, you're done.


SSH without password HOWTO for CentOS 5.2

2009-03-15 @ 05:22 in Coding

This one is short and sweet and is for CentOS 5.2 installs.

 

On the client machine generate a public key. Do this command as the user you normally run under:

ssh-keygen -t rsa (take the defaults)

There is now a new file called id_rsa.pub in ~/.ssh/

 

Copy the id_rsa.pub file to the server:

scp ~/.ssh/id_rsa.pub someUser@someServer.com:/home/someUser/

 

Log into the server:

ssh someUser@someServer.com

 

Append your client public key to authorized_keys:

cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

 

Remove the client public key on the server, you don't need it anymore:

rm ~/id_rsa.pub

 

Set permissions on the server so sshd can see authorized_keys:

chmod 755 /home/someUser

chmod 700 /home/someUser/.ssh

chmod 644 /home/someUser/.ssh/authorized_keys

 

That's it, the next time you login to the server via the client it shouldn't ask for a password.

Come fly away with me..

2009-03-08 @ 06:20 in Personal

 

For Christmas, my wife bought me a discovery flight package from Premiere Aviation.

My first thought was - we're in a recession, I'm thinking of ways to keep my business going and here is this teaser that will cost me thousands of dollars in the long run. I really didn't want to look at a gift that way, my wife was only trying to come up with something unique and special and she knew I always wanted to learn to fly. The gift certificate sat on my desk looking at me for 2 months before I did something about it. I made the call and setup an appointment.

I was paired up with flight instructor Brandon Reed and it didn't take long to realize this was one of those rare people who really enjoyed what they did for a living. Whenever I meet one of these rare people, their enthusiasm is infectious and it makes me more productive - at least for a short period of time. How many people do you know who actually likes going to work? On a side note, just to show how small the planet really is, notice Ed Murray on the same page. Ed was vice president at a company called Trillion Digital Communications where he hired me to do some Linux programming for them. Long story short, the company was eaten by it's "sister" company located out in Austin, Texas. It shouldn't have happened and a bunch of people, some of which I consider friends, lost their jobs.

Back to the original story. The discovery flight basically takes you up in a plane and lets you fly around for a bit. You can talk all day about flying, read all the articles, see all the pictures, but you don't know if you're going to like it until you actually do it. Very similar to swimming, how do you know you like to swim without getting in the water? Reading about swimming in a brochure is not going to give you the sensation of buoyancy. The aircraft assigned to me was a 2006 model Diamond DA-40 G-1000 with the glass cockpit.

Me next to the DA40

DA40's dash

We climb in, buckle up, start the preflight checklist, and Brandon talked about how you absolutely cannot stall this aircraft and how great it is to fly. However, when it came time to actually crank it up, it absolutely would not fire up. Apparently this particular model is subject to contact corrosion that will interfere with grounding system. So my first contact with a personal airplane was very much like my first contact with my car - I had to put it in the shop.

Nearby was our backup plane, a 2006 Cessna 172S G-1000 with the glass cockpit.

172S dash

This plane is for the advanced students who want to be instrument rated licensed. I always considered myself an overachiever so switching to the more difficult plane was fine with me. However, my friend Ryan, had a good laugh as while my plane was new with a digital dash - his was old and half the indicators didn't work.

This plane did start and we proceeded to taxi on to the runway. The sensation of leaving the ground is very much like a commercial flight but much more amplified. You feel the air pressure change around the plane much like you feel the texture of the road via your tires. We performed a straight climb until we reached 1500 feet and then climbed once again to 3500 feet before doing any turns. Doing anything only requires the slightest of moves on the stick. Just like a slight move on a steering wheel while traveling at interstate speeds will perform a lane change, the slightest move on the stick will start a turn. Everything else is micro-moves to keep the plane in a straight line just like you must make constant corrections to keep your car in your lane on the interstate. My wife was in the back seat with the camera taking pictures the whole time. This is what Bessemer looks like at 3500 feet:

Bessemer -1 3500 feet

Bessemer -2 3500 feet


Some of my students should recognize the parking lot in the bottom center of this picture. Also displayed in the picture is one of my customer's real estate development park.

Bessemer -3 3500 feet.


I had a blast.. More than a blast actually. Flying that plane around triggered one of those life altering moments. I had a silly grin on my face for hours after the fact and I really can't wait to go back up and do it all again. It really was one of the best days of my life and to top it off I was able to share it with my wife. Now my priorities are: How can I keep my business going? Oh yeah, how can I sneak in paying for a pilot license while doing that?


Me with the headset on.



 

The death of a company..

2009-01-22 @ 18:24 in Business

Not my business, at least not yet. Maybe I should say the death of a good idea because the business in question is more likely more funded than ever now. The spirit is gone, the original mission scrapped, the original members moved on to bigger and better things. What is left is a shell of a company motivated by shareholder approval and the requirement to generate large profits. The company in question is GarageGames.com and the situation is big corporate buyout lovin'.

It's really amazing any company survives at all. According to the U.S. Small Business Administration, over 50% of small businesses fail in the first year and 95% fail within the first five years.

I'm torn. I've been on the wrong side of two buyouts and I've seen first hand how great it can be. The formula is the same:

The owners start acting weird, you know weird when you see it.

They start asking for inventory numbers, how many servers do we have, etc etc.

A group of people you've never seen before hang around and start calculating how much the company is actually worth.

Management tells you there's nothing to worry about.

People start resigning left and right, you start hearing jokes about how the rats are the first to jump off a sinking ship.

You interview for your own job.

People panic and start choosing sides.

The new regime starts identifying those who still hold loyalty to old management and eliminates you.

The new regime starts identifying those who had problems with old management and promotes them.


There's a reason I watch Office Space at least twice a year. It reminds me to work harder to avoid this cycle again. I'm the loyal guy, I don't really chose to be - it's just my personality. Here's what it looks like from an owner's point of view:

At the start of every week, you know that by Friday you need X amount of money to meet payroll.

You're worried about billing and your credit line at the bank eating any and all profits you may have had.

You're bothered by employees wanting raises and new equipment you can't afford.

Management is busy making power point presentations that depicts everything is fine and the company is strong.

Employees are busily reading Slashdot.org and planning their afternoon StarCraft session wondering why management doesn't have a clue.


It's a non-stop stress fest on both sides and all the sudden here comes mega-corp with an offer you can't refuse. Here's the dirty little secret - businesses want to be eaten within 7 years. The idea is to build up your business to attract the attention of a larger entity. The larger entity will take the best of what you have, get rid of the rest, and try to make as much money as they can before liquidating whats left at the end.


There are very few small businesses who intentionally wants to stay small. You have your auto mechanics, dentists, dry cleaning, barber shops, service oriented in general who will never get past the one location mark. If they're lucky and in the right area, they can make a decent life out of it, but they would have made more money working for someone else in the long run.


The owners, now presented with a buyout offer now usually jump on it. It's a chance for them to cash out, take a break, and do neat things they always wanted to do before trying it all over again. The funny thing is, the stress is addictive, the attempt attractive, the gamble exhilarating. Being a business owner is nothing more than legalized gambling and the ups and downs feel the same. So now the owners go on a shopping spree buying up all the expensive toys they've always wanted. It may be a bookstore, it may be a farm, but it's not long before they're right at it again trying for the buyout again.


So let's take a look at the history of GarageGames:

Ex-Dynamix employees see the writing on the wall, negotiate to buy the engine they've been working on away from the company and bail.

Take the engine, sell copies + source for $100, call it indie and sell it anyone who wants it.

From the start it's cross-platform and works pretty well.

Form community around said engine, accept patches, repackage them and sell them back to new customers as new versions.

Just looking at the publicly available Torque Owner tags and crawling the site, it appears engine sales generated over a million dollars alone.

They gain enough status to get console developer licenses and port the engine over. Of course selling that version of the engine for a much higher cost.

Microsoft gains interest, GarageGames now a xbox ,xbox360 ,xna partner. Die hard c++ programmers are talking about how cool c# is. Linux support all the sudden becomes purely community driven.

TorqueX is the first GarageGames product to hit the market on time, no doubt some sort of bonus money from Microsoft. Jeff now questions Mac development and Linux development drops off the planet.

Things are quiet, promises of documentation and transparent development are made. Opengl continues to take a back seat to directx.

IAC offers big corporate buyout lovin'.

GarageGames assures its community that everything is cool and this just means more money to do more cool things.

GarageGames founders and superstars jump ship, the B team takes over.

Website takes on a web 2.0 look, engine price triples, and community functions are crippled.

Founders and superstars make new company, new engine, and back on the market to do it all over again.


Yes, it's sad to see something gutted like this. Yes, I was attached to the idea of GarageGames. Yes, I'll more than likely do business with PushButtonGames (even though I'm a complete Flash virgin). Yes, I hope to be bought out by big corp buyout lovin'. No, I don't like change nor how the process needs to happen this way to turn a real profit. This is just how the world works and it beats the alternative - your company fails, you go bankrupt, you feel like a failure and you just can't wait to do it all over again.


Rest in Peace GarageGames.com

2001-2008



Crazy Customers and How to Spot them..

2009-01-19 @ 03:48 in Business

They're out there lurking in the dark waiting to ruin your day. All businesses encounter at least one but they really hurt smaller businesses as they eat up time and resources. There is one basic rule a small business needs to follow - work on whoever is paying you the most right now. The crazy customer will monopolize your time, make unreasonable request, complain about complaining and then not pay you. I made a fundamental mistake - I started working before writing up a scope of work contract. It was a referral of a friend, so I didn't think much of it. He needed work done yesterday, I told him my rate and I went to work. So while I got screwed out of money, here's a list of how to spot the crazies and stop them before they do real damage:

Sending more than 15 emails a day.
Thinks 3 days is 2 weeks.
Calls you "bro".
Thinks a mysql backend is a magical thing only special people can understand.
Wants no scroll bars on IE maximized in a 1024x768 screen while in xp theme mode. (cause that is what *everyone* uses)
Thinks you can use a webcrawler to recover PHP code.
Wants you to work on 3 things at once and wonders why nothing is being accomplished.
Tells you he wants to start a social network for God called hisspace.com
Informs you what is easy and should cost money.
Tells you CEOs don't even make the kind of money you're charging.
And my favorite - Tells you that you are padding hours.

As soon as the customer starts telling you how to do your job - stop. When I take my car to get a tune up (and yes, all Linux people use car metaphors), I don't email my mechanic and inform him how to set the spark plug gap. People are good at different things, that's why I don't cut my own hair. Just because I own a pair of scissors doesn't mean I'm good at or even remotely qualified to instruct someone else at cutting hair.  Some people spend a bunch of time behind a keyboard, but that doesn't mean you're a programmer or even a "computer guy". Owning a computer doesn't make you qualified to tell me how to do my job.

How can you avoid problems? It really depends on the scope of the project. If you write a little throw away application that takes you a couple of hours then it's not worth the trouble of writing up a contract. If they don't pay up, you're only out a couple hours and you move on. Anything more than that, take the time and do it right.

Contracts - do them. Write up a scope of work contract and make them sign it before you do anything.

Educate the customer - maybe they don't know all this computer stuff costs money. Software is expensive, custom software even more so. The bill can easily run into the tens of thousands of dollars.

Delays happen - this happens mostly when the customer starts asking for more than the original scope of work ie: the sugar buzz effect. Amend the contract.

Good luck with your crazy customer, I sure had a blast with mine.

Linux holding kids back?!

2009-01-03 @ 16:44 in Personal

Let's talk physics. Most people have heard of the law of conservation of energy. It says that energy cannot be created nor destroyed, but simply changed to something else. Economics dumbs this idea down to there's no such thing as a free lunch. Nothing is really free. Even that pen you borrowed and the owner told you to keep it costs someone something. It took energy to come up with the idea, make the pen, ship it, sell it, use it and the act of giving it away.

So let's apply this to FOSS.

Here is a guy who reconditions old hardware, loads Linux on it and deploys it to kids who need it. One of the kids made copies of a Linux Live CD (http://en.wikipedia.org/wiki/List_of_LiveDistros) and gave it to his classmates. The teacher confiscated the CDs and wrote a nasty graham.


--- quote


"...observed one of my students with a group of other children gathered around his laptop. Upon looking at his computer, I saw he was giving a demonstration of some sort. The student was showing the ability of the laptop and handing out Linux disks. After confiscating the disks I called a confrence with the student and that is how I came to discover you and your organization. Mr. Starks, I am sure you strongly believe in what you are doing but I cannot either support your efforts or allow them to happen in my classroom. At this point, I am not sure what you are doing is legal. No software is free and spreading that misconception is harmful. These children look up to adults for guidance and discipline. I will research this as time allows and I want to assure you, if you are doing anything illegal, I will pursue charges as the law allows. Mr. Starks, I along with many others tried Linux during college and I assure you, the claims you make are grossly over-stated and hinge on falsehoods. I admire your attempts in getting computers in the hands of disadvantaged people but putting linux on these machines is holding our kids back.


This is a world where Windows runs on virtually every computer and putting on a carnival show for an operating system is not helping these children at all. I am sure if you contacted Microsoft, they would be more than happy to supply you with copies of an older verison of Windows and that way, your computers would actually be of service to those receiving them..."


Karen xxxxxxxxx

xxxxxxxxx Middle School

AISD


--- end quote


This both amused and angered me at the same time. So much in fact that it became the main topic of my Linux classes for that week. Yes, I'm one of those college instructor types that teaches Linux, part time of course, but a teacher none the less. So let's get this out of the way - no software is free as it took energy to make it. It can be free as in the freedom to do with it what you want. I can, as the creator of the software, give permission - the freedom - to the user so they can use my software as needed. They can even change my software to suit their needs.


Real world example, FollowMeIP. I wrote this little server for a project I had at the time and it turned in to something useful for some people. I've been hosting the site for years now - for free. No catch, if you want to use it, use it. Does it cost me money to run? Yes. Do I sit up at night worrying about how I'm going to recover that lost money? No.


One could say the quality of software isn't as good as commercial and I'd agree in FollowMeIP's case as it took me all of a weekend to write and I haven't put much effort into it since. It will be my test site for that magical day where I decide it's time for Ruby on Rails goodness. Point is, I'm going down the non-traditional road of - here, I wrote this, it was useful to me at some point, maybe you'll like it too.


On the other hand, take a look at OpenOffice. Here you have a fantastic open source project funded by Sun. The quality of this package is the same if not better than similar commercial packages. In fact, I'm using OpenOffice to write this blog post. So what is Sun's angle? Why dump all the time and money into a product that they could easily sell? Instead of worrying about the answers to those questions, I focus on the fact that I have the source code to OpenOffice and the freedom to do neat things with it. If Sun fell off the planet tomorrow, I can still change or patch OpenOffice myself or even form a company that does nothing but OpenOffice support. In my day to day life, I really could care less about Sun's long term strategy regarding its open source initiative.


As for Linux's ease of use. This is completely relative. If you grew up on windows, all you know is windows and you didn't even know there was an alternative - sure anything else is not going to be "easy" for you. I've asked my students many times - why haven't you even tried a mac? The answers are mostly - well, it just never occurred to me that I should. One even said he would feel like a traitor, which means on some level he was emotionally attached to windows. Anything you don't use or do on a daily bases is going to be hard on some level.


My buddy Gary got me a Professor's Cube for Christmas. While I find it fun, it's not easy nor intuitive to me at all. I suppose the natural response for the majority of people is to simply give up as soon as they encounter the slightest difficulty. My reaction was to watch many videos, read many articles and to go as far as setting up a video chat with Gary so he could help me remotely. While I still don't fully understand some of the algorithms I used nor feel like it's "easy", I still enjoyed the challenge.


I remember the first time I saw Linux, Ryan had it running reading his email in a text based console. My curiosity got the best of me, at 20 I was already sick of windows. Here I was pulling down major bucks for rebooting NT servers everyday and it bored me to tears. Then I saw this new and different operating system and I had access to the source code. Computers became fun for me again, I was energized, I couldn't get enough of this new and continuously changing frontier called Linux. It was computing the way it was suppose to be and it didn't take long at all for me to nuke windows and become a Linux only shop.


Since those days, Linux has gotten a thousand fold easier to use and is very accessible to any level of computer user. There's guis for everything, yum installers, even wifi drivers for windows only cards. I can install it on one computer or a million and the cost to me? Time.

No need to call India and beg for a new activation key if I decided to upgrade my mainboard. Freedom is good.


In closing - Karen from xxxxxxxxx Middle School - shut the fuck up.


Lunch with Jay

2008-09-15 @ 08:15 in Business

I broke from my normal routine of running to Dairy Queen and had lunch with Jay Brandrup who owns Kinetic Communications. We walked down to John's and I had the two-handed cheese burger. I highly recommend clicking on the tour link on Kinetic's site and see how completely awesome their building is. I've never placed much importance on the "look" of your workspace. I just want something that functional ie: a desk that will not break when I overload it and the most comfortable chair you can afford. However after visiting Kinetic's building I started to question my minimalist workspace attitude. How far can a home business go? What sort of business have I lost by not having a traditional office space with a server room that customers could tour?


It may sound funny, but some companies build nice looking "network operation centers" just so they can walk clients around. On just about every job interview I've been on they take me on a tour of the server room. Have I become so jaded over the years that the site of a rack of dells flashing, 67 degree temperatures, and the constant hum of fans just doesn't impress me at all? Does it still impress normal people? There's nothing "magical" about it - they're servers.. But in the back of my mind I'm thinking just maybe I'd have more customers if I setup such a room and walked people around it. Ah, but what customers am I after?


ChickenWare was meant to be a game studio. A virtual game studio at that. Why have all the overhead of an office space when there are plenty of tools and high speed lines available? The question has always been - how can I pay the bills while I'm making games? Well, the byproduct of building server/client games is having an infrastructure that's great for hosting. I have the hardware, the network line, the backup generator, and the UPSes. So I decided to attempt to pay for game making by selling hosting. One hosting customer wanted to know if I could handle basic tech support for their company. Sure, why not? They're good customers, they pay their bills on time, why not expand my services? Next thing I know I'm going to owner's house and doing basic tech support for his family. In reality, I'm doing everything but making games. I have no time nor the energy to code.


Enter Jay - I explained my situation and here's what he had to say about it:


Learn to say no.


According to Jay, you only have 100,000 hours of work in your lifetime. 40 hours per week * 50 weeks a year * 50 years. Do not spend a single hour doing something you don't want to be doing. You should also not do anything that is not your core business. In other words, I need to stop doing everything and just focus on game making even if it means losing money. I've always been leery of putting all my eggs in one basket. My friend Ryan has always told me to find ways to generate streams of income from multiple places. So I have the hosting thing, some veterinarian patient education software, consulting, and I teach college level Linux and programming part time. All of these keeping me from actually writing games. I'm tired and my time management isn't what it should be. Something has to give.


Kinetics is profitable because Jay does nothing but web design. You don't go to a neurologist for a rash, that doctor will refer you to a dermatologist. His company doesn't do hosting, consulting, brochures, etc. - it does web design. Anything else is outsourced to a company that specializes in that particular area. Obviously I need to change my approach as my current one just isn't working. As for the lunch itself - $30 bucks and an hour of your time is the cheapest education you can buy.



The stackoverflow drinking game

2008-08-21 @ 19:05 in Personal

Caution: You will die if you play this game..


Minor background information:

Joel Spolsy and Jeff Atwood are great writers. They talk about things programmers would be interested in - for instance screw the desk, get a great chair.

But then they decided to do a podcast about their new social networking site that will be this haven of information on a .net stack. I'll quote my friend Ryan: "After hearing them talk, Joel needs to go back to writing and I wouldn't hire Atwood to mow my lawn." After listening to 18 hours of them talk, I agree - take a drink.


The rules are simple:

When Jeff agrees with Joel - take a drink..

well, you're already drunk by now.

When Jeff mentions having a "out of band conversation" - take 2 drinks.

When Jeff says "Absolutely" - take a drink.

When they both deny they're .net programmers - just start chugging..

When Jeff talks about earning badges - think about special mounts on Warcraft and take a drink.

When they say LAMP stacks are dog slow - 3 drinks

When Joel claims macs are only luxury items - 2 drinks

When Joel bashes open source - 3 drinks

When Jeff claims he's open source friendly - fire off a nasty email, then drink

Every time they don't take a user call - take a drink


By now, you should be dead. Either from the alcohol poisoning and/or the aneurysm that ruptured from listening to these guys. While I have no idea if their new site is going to flop or become the greatest thing since sliced bread, I would suggest they concentrate on coding and kill the podcast.


Trade Show

2008-08-16 @ 11:23 in Business

I'm at my first trade show.. Well, my first trade show geared for veterinarians and their technicians - TheSVCOnline.com . And well my first trade show where I'm a vendor. Usually I'm the guy walking around looking at all the neat-o things people are apparently making money on and thinking, hrm, I could do that. It's a bit different for doctors and such, they need to attend conferences to accumulate learning hours to maintain their license. Along the way to the speaker rooms, booths litter the walkway displaying the latest greatest crap they can buy. This year, my crap is among the wares available.

What is my crap you may ask, well it's not a new concept by far but it's one that isn't widely used in vet offices. Patient education - plain and simple.  Doctors say the same things day in and day out all day every day. They also sketch out procedures on a whiteboard or paper. To me, everything is already handled by a computer or should be, if not - what rock have you been hiding under?

I live in the south east, things move slower around here, doctors of any kind move even slower than that. There are exceptions and they would be the young doctors coming right out of college wanting to use the newest things out there. When they get hired by a practice they are quickly promoted to the guy who now does nothing but express anal glands. They're so busy doing all the grunt work, they have no time to talk the older docs into buying new neat-o things. When they do, the old vets are very resistant to any change. Why should they? Their practice has been doing well for 300 years, why change anything?

My product is simple, you bring your dog in with a bum leg, doc says - oh his ACL is torn. Ummkay, what does that mean. Doc will then go into the same spill he's said hundreds of time. This spill adds up to hundreds of hours saying the same thing over and over. Hours translates to money and money wasted gets their attention. So instead of doing the spill, he just hits a button and the computer plays a video that tells the customer the same thing. Doc leaves the room to do something else. Sure, we're only talking 5 minutes, but 5 minutes every time adds up. Simple, easy to use, one or two clicks.

The current competition is DIA (dog interactive atlas or something like that). They take a different approach to patient education - overload them with useless information. It's interesting to see all the joints move in 3d and stuff, but really, how much information is Bob and Alice going to retain? Not much. Their system requires the docs to drive the presentation, or so it seemed, which keeps them in the room even longer.

What surprised me was how friendly most of the other vendors were - even to their competition.  Across from me was Sal Longo who is part owner of Crosby Longo Architecture Studio (CrosbyLongo.com). What they do is create floor plans for vet offices and hospitals. That's it. Very nice guy, has been designing stuff for vets for 11 years and he told me all sorts of useful things about the trade show circuit. What I find interesting  - a big enough market exists to support something that niche. His company does just fine if they only pick up one customer every other trade show they attend.

Beside me was some guy selling some sort of pills. You'd be amazed at all the things you can feed your animals. It's really no different than the vitamin supplement section in your local drug store. I don't know his name, but he didn't want to talk much.  However on the other side was Casey Bishop, a salesman for Scil (scilvet.com). They sell all sorts of things like vital sign monitors and video cameras that go up your nose. Also a very nice guy, he shared with me the scared trade show list known only to those who keep up with such things. He said there is no one place on the web you can get all the information needed about all the trade show location, times, etc. He was also a fountain of information about vet trade shows in general.

The end result was very educational. I managed to give away 200 stress balls with PetsEd.com on it. I talked with a bunch of people and I think the result will be a better product in the future. Will it turn into something big and wonderful? Odds are no, I'm realistic about things, but at least I'm out there trying. 

Insane Web Site Bids..

2008-07-15 @ 06:01 in Business

For Sale:

Car

I'm not sure how many doors you will need yet, I can show you models that look sorta, kinda like what you would get, but you can't sit inside. Also, the engine will be installed after you buy it based on your needs.

$100,000 + $22,000 maintenance fee per year.

I've recently been tasked with the job of being a independent, non-biased consultant to help decide which company gets to redo a university's website. The range of bids I've reviewed range from completely reasonable to completely insane. Let's back up a bit. How does it all work?

This time they decided to hire me out to review what each company had to offer. The list was thinned out to 3 bids.

One company bid $100,000 with a $22,000 never ending maintenance fee. Just to talk to someone who could answer my questions took a week. This particular company makes their money by taking over university server rooms (ie: computer services). It's really amazing what a company will outsource. So why not try to invade the web design arena of universities also?

Yet another bid $120,000 but didn't handle any sort of back end integration. They were offering what I call a brochure site - meaning static pretty html that could easily be translated into a nice pretty brochure. No back end scripting, just basic html. They also had no idea how to integrate with google search nor had a demo site of, well anything. The funny part is, this company specializes in doing website for universities - that's it. Included in the bid is a page of existing customers with example links - which are broke in firefox under linux. They also informed me they do not test the site with lynx, but are completely ADA compliant.

The third company offered everything, worked with google search, used PHP, and it was a local company. They tested pages in Firefox under linux and lynx. The best part, $36,00 bid. The problem is, this was the company that originally created the site they are now unhappy with. In my opinion there is nothing wrong with the current site other than the fact it's reached the magical 3 year old mark. This seems to be the time people become unhappy with any site and want a change of any sort. These are the same people that need to paint their rooms different colors now and then.

My recommendation was easily the third company - no question. Now it's up to the university to pick.