Deprecated: Assigning the return value of new by reference is deprecated in /home/fumanchu/webapps/b2/blogs/inc/_main.inc.php on line 128

Deprecated: Assigning the return value of new by reference is deprecated in /home/fumanchu/webapps/b2/blogs/inc/_main.inc.php on line 134

Deprecated: Assigning the return value of new by reference is deprecated in /home/fumanchu/webapps/b2/blogs/inc/_main.inc.php on line 141

Deprecated: Assigning the return value of new by reference is deprecated in /home/fumanchu/webapps/b2/blogs/inc/_main.inc.php on line 169

Deprecated: Assigning the return value of new by reference is deprecated in /home/fumanchu/webapps/b2/blogs/inc/_main.inc.php on line 199

Deprecated: Assigning the return value of new by reference is deprecated in /home/fumanchu/webapps/b2/blogs/inc/_main.inc.php on line 205

Deprecated: Assigning the return value of new by reference is deprecated in /home/fumanchu/webapps/b2/blogs/inc/_main.inc.php on line 233

Deprecated: Assigning the return value of new by reference is deprecated in /home/fumanchu/webapps/b2/blogs/inc/_main.inc.php on line 248

Deprecated: Assigning the return value of new by reference is deprecated in /home/fumanchu/webapps/b2/blogs/inc/_main.inc.php on line 254

Deprecated: Assigning the return value of new by reference is deprecated in /home/fumanchu/webapps/b2/blogs/inc/_main.inc.php on line 267

Deprecated: Assigning the return value of new by reference is deprecated in /home/fumanchu/webapps/b2/blogs/inc/_main.inc.php on line 595

Deprecated: Assigning the return value of new by reference is deprecated in /home/fumanchu/webapps/b2/blogs/inc/files/model/_file.funcs.php on line 559

Deprecated: Assigning the return value of new by reference is deprecated in /home/fumanchu/webapps/b2/blogs/inc/_connect_db.inc.php on line 29

Strict Standards: Declaration of UserSettings::get() should be compatible with AbstractSettings::get($col_key1, $col_key2 = NULL, $col_key3 = NULL) in /home/fumanchu/webapps/b2/blogs/inc/users/model/_usersettings.class.php on line 208

Strict Standards: Declaration of UserSettings::set() should be compatible with AbstractSettings::set() in /home/fumanchu/webapps/b2/blogs/inc/users/model/_usersettings.class.php on line 208

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 223

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 223

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 223

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 223

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 223

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 223

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 223

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 223

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 223

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 223

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 223

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 223

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 223

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 223

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 223

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 223

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 223

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 223

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 223

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 223

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 223

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 223

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 223

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 223

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 223

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 223

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 223

Deprecated: Assigning the return value of new by reference is deprecated in /home/fumanchu/webapps/b2/blogs/inc/_core/_param.funcs.php on line 1692

Warning: Cannot modify header information - headers already sent by (output started at /home/fumanchu/webapps/b2/blogs/inc/_main.inc.php:128) in /home/fumanchu/webapps/b2/blogs/inc/sessions/model/_session.class.php on line 219

Deprecated: Assigning the return value of new by reference is deprecated in /home/fumanchu/webapps/b2/blogs/inc/generic/model/_genericelement.class.php on line 109

Deprecated: Assigning the return value of new by reference is deprecated in /home/fumanchu/webapps/b2/blogs/inc/_core/model/dataobjects/_dataobject.class.php on line 428

Deprecated: Assigning the return value of new by reference is deprecated in /home/fumanchu/webapps/b2/blogs/inc/_core/model/dataobjects/_dataobject.class.php on line 437

Strict Standards: Declaration of Blog::set() should be compatible with DataObject::set($parname, $parvalue, $make_null = false) in /home/fumanchu/webapps/b2/blogs/inc/collections/model/_blog.class.php on line 1886

Strict Standards: Declaration of Group::set() should be compatible with DataObject::set($parname, $parvalue, $make_null = false) in /home/fumanchu/webapps/b2/blogs/inc/users/model/_group.class.php on line 553

Strict Standards: Declaration of User::dbdelete() should be compatible with DataObject::dbdelete() in /home/fumanchu/webapps/b2/blogs/inc/users/model/_user.class.php on line 1343

Strict Standards: Declaration of User::set() should be compatible with DataObject::set($parname, $parvalue, $make_null = false) in /home/fumanchu/webapps/b2/blogs/inc/users/model/_user.class.php on line 1343

Strict Standards: Declaration of Filetype::set() should be compatible with DataObject::set($parname, $parvalue, $make_null = false) in /home/fumanchu/webapps/b2/blogs/inc/files/model/_filetype.class.php on line 192

Strict Standards: Declaration of Comment::set() should be compatible with DataObject::set($parname, $parvalue, $make_null = false) in /home/fumanchu/webapps/b2/blogs/inc/comments/model/_comment.class.php on line 1334

Deprecated: Assigning the return value of new by reference is deprecated in /home/fumanchu/webapps/b2/blogs/inc/_blog_main.inc.php on line 412

Deprecated: Assigning the return value of new by reference is deprecated in /home/fumanchu/webapps/b2/blogs/inc/items/model/_itemlist.class.php on line 483

Deprecated: Assigning the return value of new by reference is deprecated in /home/fumanchu/webapps/b2/blogs/inc/items/model/_itemlistlight.class.php on line 119

Deprecated: Assigning the return value of new by reference is deprecated in /home/fumanchu/webapps/b2/blogs/inc/items/model/_itemlistlight.class.php on line 838

Deprecated: Assigning the return value of new by reference is deprecated in /home/fumanchu/webapps/b2/blogs/inc/items/model/_item.class.php on line 1411

Deprecated: Assigning the return value of new by reference is deprecated in /home/fumanchu/webapps/b2/blogs/inc/items/model/_item.class.php on line 1414

Deprecated: Assigning the return value of new by reference is deprecated in /home/fumanchu/webapps/b2/blogs/inc/items/model/_item.class.php on line 3000

Strict Standards: Declaration of ItemListLight::query() should be compatible with Results::query($create_default_cols_if_needed = true, $append_limit = true, $append_order_by = true, $query_title = 'Results::Q...') in /home/fumanchu/webapps/b2/blogs/inc/items/model/_itemlistlight.class.php on line 48

Strict Standards: Declaration of CollectionSettings::_load() should be compatible with AbstractSettings::_load($arg1 = NULL, $arg2 = NULL, $arg3 = NULL) in /home/fumanchu/webapps/b2/blogs/inc/collections/model/_collsettings.class.php on line 130

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 236

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 236

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 236

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 236

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 236

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 236

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 236

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 236

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 236

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 236

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 334

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 334

Notice: Array to string conversion in /home/fumanchu/webapps/b2/blogs/inc/_core/_param.funcs.php on line 1161

Notice: Array to string conversion in /home/fumanchu/webapps/b2/blogs/inc/_core/_param.funcs.php on line 1161

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 334

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 334

Warning: Cannot modify header information - headers already sent by (output started at /home/fumanchu/webapps/b2/blogs/inc/_main.inc.php:128) in /home/fumanchu/webapps/b2/blogs/inc/skins/_skin.funcs.php on line 379
The Hand of FuManChu

Deprecated: Assigning the return value of new by reference is deprecated in /home/fumanchu/webapps/b2/blogs/inc/widgets/model/_widget.class.php on line 451

Deprecated: Assigning the return value of new by reference is deprecated in /home/fumanchu/webapps/b2/blogs/inc/widgets/model/_widget.class.php on line 547

Strict Standards: Declaration of ComponentWidget::set() should be compatible with DataObject::set($parname, $parvalue, $make_null = false) in /home/fumanchu/webapps/b2/blogs/inc/widgets/model/_widget.class.php on line 722

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 334

Pages: << 1 ... 7 8 9 10 11 12 13 14 15 16 17 ... 26 >>


Strict Standards: Declaration of GenericCategoryCache::clear() should be compatible with DataObjectCache::clear($keep_shadow = false) in /home/fumanchu/webapps/b2/blogs/inc/generic/model/_genericcategorycache.class.php on line 375

Strict Standards: Declaration of GenericCategory::set() should be compatible with DataObject::set($parname, $parvalue, $make_null = false) in /home/fumanchu/webapps/b2/blogs/inc/generic/model/_genericcategory.class.php on line 133

10/19/05


Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 334

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 334
Permalink 12:37:37 am, by fumanchu Email , 159 words   English (US)

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 334

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 334
Categories: General, CherryPy


Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 334
A severe shortfall in the motivational index


Strict Standards: Declaration of markdown_extra_plugin::GetDefaultSettings() should be compatible with Plugin::GetDefaultSettings(&$params) in /home/fumanchu/webapps/b2/blogs/plugins/_markdown_extra.plugin.php on line 84

Strict Standards: Declaration of smilies_plugin::GetDefaultSettings() should be compatible with Plugin::GetDefaultSettings(&$params) in /home/fumanchu/webapps/b2/blogs/plugins/_smilies.plugin.php on line 398

Strict Standards: Declaration of smilies_plugin::GetDefaultUserSettings() should be compatible with Plugin::GetDefaultUserSettings(&$params) in /home/fumanchu/webapps/b2/blogs/plugins/_smilies.plugin.php on line 398

I can't seem to finish or maintain anything lately. I never can, but recently it's been more acute. Maybe it has to do with the pending release of CherryPy, which means we're in "feature freeze" mode; I miss writing the sweeping redesigns that I was able to shove into 2.1 before the beta.

But it's apparent in other areas, as well. I have about 80 hours of video transfer to DVD to do for various friends (and some personal projects). I haven't touched any of them in months. I also have a company to officially close, which is moving at a glacial pace. I've got a bunch of papers in triplicate that I need to mail off to the State, but can't seem to work up the drive to buy a large envelope for the purpose.

But then, having everything "done" is a much worse state. Maybe I should count my busy blessings.


Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 334

Deprecated: Assigning the return value of new by reference is deprecated in /home/fumanchu/webapps/b2/blogs/skins/_item_feedback.inc.php on line 156
Permalink 12:30:06 am, by fumanchu Email , 54 words   English (US)
Categories: Photography

Eunivision

This is just a fun panoramic shot I took from Eunice's driveway, showing the view of the whole El Cajon valley from her house (keep in mind that it's a distorted panorama; the extreme edges of the pic are actually in a line with each other, not at right angles as it might appear).

Panorama of El Cajon


Deprecated: Assigning the return value of new by reference is deprecated in /home/fumanchu/webapps/b2/blogs/skins/_item_feedback.inc.php on line 156
Permalink 12:26:06 am, by fumanchu Email , 45 words   English (US)
Categories: General

This blog has moved recently

You might not have noticed, if you don't check every day, but this blog has moved recently. It was hosted at amorhq.net (owned by Amor Ministries), but now it's at aminus.org (owned by yours truly). Please update your aggregators, feedlists, links, and bookmarks.


Deprecated: Assigning the return value of new by reference is deprecated in /home/fumanchu/webapps/b2/blogs/skins/_item_feedback.inc.php on line 156

10/07/05

Permalink 03:48:36 pm, by fumanchu Email , 232 words   English (US)
Categories: Dejavu

Dejavu has a new home

Dejavu, my pure-Python ORM, has a new Trac home at http://projects.amor.org/dejavu. As always, it's open to the public to download, use, or develop. It could use another contributor or two, and the snazzy new Trac front-end should help that immensely.

Just to remind you about the parts of Dejavu I think are cool:

  1. It completely hides the storage layer, so your code need never know you're using a database. It supports MS Access, MS SQL Server, PostgreSQL, MySQL, SQLite, and shelve, all transparently.
  2. Simple queries use simple syntax: Panda = sandbox.unit(zoo.Animal, Species='Ailurpoda', Name='Mei'). More powerful queries use the logic.Expression object and pure Python (no code strings!):
    red_filter = logic.Expression(lambda x: x.color == 'red')
    RedAnimals = sandbox.recall(zoo.Animal, red_filter)
    
  3. Dejavu has been designed from the ground up to be used in a multithreaded environment.
  4. New database adapters are easy to develop using the `db` module. The PostgreSQL module, for example, is 100 lines of code.
  5. Model-layer Units are clean and easy, using modern, built-in Python types. They are also extendable to custom property classes and custom types:
    from dejavu import Unit, UnitProperty
    
    class MissionTrip(dejavu.Unit):
        """A Mission Trip experience."""
        
        DirectoryID = TripGroupProperty(int, index=True)
        FirstDate = NotifyProperty(datetime.date)
        GroupName = UnitProperty()
        LastDate = NotifyProperty(datetime.date)
        AmountDue = UnitProperty(fixedpoint.FixedPoint)
    
  6. Persistent query-engines and analysis tools are included.

Deprecated: Assigning the return value of new by reference is deprecated in /home/fumanchu/webapps/b2/blogs/skins/_item_feedback.inc.php on line 156

10/06/05

Permalink 05:52:07 pm, by fumanchu Email , 359 words   English (US)
Categories: CherryPy

Eat less, exercise more

Dave Warnock muses:

I am not about to argue that [TurboGears and Subway] should merge, instead I feel they can improve most by making sure that they each stay thin putting all the improvements they can back into the components eg CherryPy (which they both have been doing) and into the deployment elements (setuptools and paste).

That's a good point, and I think it's at the heart of what CherryPy is trying to be: non-fattening. So there's definitely going to be some pushback from CherryPy itself trying to "stay thin".

I often say that CherryPy is not a "web framework"; it is an "HTTP framework". That is, it doesn't try to provide tools for every facet of web development. Instead, it concentrates on wrapping HTTP up in a Pythonic way.

IMO, working to stay thin is an important factor in getting CherryPy "more exercise": it gets used in more meta/mega-frameworks like Subway and TurboGears precisely because it hasn't gobbled up every good idea, just because it's web-related, or even just because it's Python. For example, CherryPy 2.1 is deprecating the Aspect module that was in 2.0, because it isn't related to the HTTP-focus of CherryPy.

David goes on:

Another project that is the next level down from these frameworks but that is also moving fast is Quixote, I feel the differences between Quixote and CherryPy are also becoming smaller (shown by the recent blog posts on Python Web Controllers). Whether they could ever merge is a different matter. Probably not possible (or even desireable) for the moment.

I would have to agree. There's a decisive difference in architectural style between CherryPy and Quixote. That doesn't mean there aren't components that are common to each, and there are certainly some which are unique to each which deserve to be ported! If the Quixote coders are willing to give up all the method names starting with set_ and get_ we're ready to have a conversation about merging. ;)


Deprecated: Assigning the return value of new by reference is deprecated in /home/fumanchu/webapps/b2/blogs/skins/_item_feedback.inc.php on line 156

10/04/05

Permalink 04:09:43 pm, by admin Email , 65 words   English (US)
Categories: CherryPy

The medusa called autoreload

This is what I spent my weekend working on (among other things). It's the "autoreload" functionality in CherryPy. It was so complicated that it took me 15 minutes to understand it again, anytime I got distracted; having the diagram makes it quicker, at least. They say the human brain can handle about 7 things simultaneously, and this snake-pit takes about 4 at a minimum:


Deprecated: Assigning the return value of new by reference is deprecated in /home/fumanchu/webapps/b2/blogs/skins/_item_feedback.inc.php on line 156
Permalink 08:50:13 am, by admin Email , 54 words   English (US)
Categories: IT

Fractal frustration

Link: http://miksovsky.blogs.com/flowstate/2005/10/the_fractal_nat.html

Okay, coworkers, now you know: when I put my hands over my eyes and sigh heavily, it's because I'm on step 8. Actually, the more I learn about IT, the better I get at seeing step 8 coming when you're still on step 2. So please bear with me whenever I seem unduly frustrated at small requests.


Deprecated: Assigning the return value of new by reference is deprecated in /home/fumanchu/webapps/b2/blogs/skins/_item_feedback.inc.php on line 156

09/19/05

Permalink 11:52:49 am, by fumanchu Email , 193 words   English (US)
Categories: CherryPy

CherryPy 2.1 RC1 is out

The official mailing-list announcement is here.

The big change from 2.1 beta is the session filter—it's been completely rewritten.

Minor updates/fixes:

  • Server-side image maps (ISMAP) now supported.
  • More documentation in the official CherryPy book.
  • Improved coverage tool output.
  • Support for partial GET requests.
  • New HTTPError(status) exception, plus pretty HTML pages for 4xx-5xx responses.(which are customizable).
  • Separate access and error logs.
  • % HEX HEX decoding now works for URL's, not just params.
  • New cptools.serveFile function.
  • New config entries which allow you to limit the size of request headers and body (to avoid denial-of-service attacks).
  • Tracebacks can now be inserted into the CherryPy log via "server.logTracebacks" config entry (True by default).
  • New expose() function/decorator, which allows you to alias any page handler method.
  • HTTPRedirect can now be raised in _cpOnError or error filter methods.
  • Other minor bugs in the beta were fixed.

Way to go, team. I'm pleased as punch to be a part of this powerful, Pythonic product. :)


Deprecated: Assigning the return value of new by reference is deprecated in /home/fumanchu/webapps/b2/blogs/skins/_item_feedback.inc.php on line 156

09/18/05

Permalink 10:04:45 pm, by fumanchu Email , 119 words   English (US)
Categories: CherryPy

mod_python wrapper for CherryPy

I wrote a WSGI wrapper for modpython a while back, but nobody's gotten it to work yet with Apache2 on Linux (at least, nobody in the CherryPy community). The current theory is that it's due to the differences in MPM's between Windows (mpm_winnt, which is one process with multiple threads) and Linux (worker, threadpool).

If you're stuck wanting CherryPy + modpython on Linux, have a look at Jamie Turner's new mpcp.py, which skips the WSGI layer and directly connects CherryPy to modpython. Then let everyone on #cherrypy know how it went. ;)


Deprecated: Assigning the return value of new by reference is deprecated in /home/fumanchu/webapps/b2/blogs/skins/_item_feedback.inc.php on line 156
Permalink 05:58:38 pm, by fumanchu Email , 507 words   English (US)
Categories: IT, General

Broken mail, and when to outsource it

[Disclaimer: if you're a techie, and you find this discussion a bit patronizing, bear with me. I raise my own salary through donations, and I'm trying to communicate to my non-technical financial supporters where their money is going. If you're one of those supporters, please bear with me when I descend into meaningless jargon. ;)]

Our mail server, which runs Microsoft Exchange, died two weeks ago—critical operating system files got corrupted, and Windows wouldn't boot. This is a bad thing. Bad technically, because it meant reinstalling Windows, which was sure to confuse the Exchange service. Bad corporately, because it took us two days to get mail services back up and running, which meant lots of business not getting done. In point of fact, although we spent several hours with a consultant and a Microsoft engineer, we didn't actually fix the problem; however, we got the mail server back into enough of a working state that business could proceed. So we backed up all our mail and said to ourselves, "don't touch this machine again".

Then I started shopping. Being an intuitive fellow, I listened to that little voice in the back of my head saying, "now would be a good time to outsource our mail". That is, I went looking for someone who could run an Exchange server somewhere else on the Internet for us, and host our mail. If it worked, this would be a big benefit to us because:

  1. It would make someone else squirm when the server crashes,
  2. The provider would benefit from an economy of scale, since they perform the same service for multiple companies: they could afford redundancy and safeguards that we, a small company, cannot,
  3. It would take the administrative burden off Ryan, our system administrator. At the least, it would change his handling of issues away from technical resolutions (fixing machines) to social resolutions (calling the service provider when things go wrong),
  4. At $10/month per mailbox, it's pretty cheap for 40 users.

Would I have made the same decision if we had 20 users? 100 users? Perhaps. What was more important in my calculations was the ratio of IT workers to other staff. We are right at the point where we need more IT staff, but haven't hired them yet. That is, the demand for IT is outpacing what Ryan and I can supply.

Assume an ideal ratio of 1 IT worker for each 20 staff members. Given our staff of 40 (and growing), if we had 3 IT workers, we might have chosen to keep hosting our own mail. Similarly, if we had 20 staff to our two workers, we would have chosen (and did choose for the past few years) to host our own mail. But because our demand is exceeding our supply, we chose to outsource it for now:

Ratio of IT to staff per year

We're still in the process of moving our mail to the new provider, but don't worry about sending us mail! Nothing about that will change. I just wanted to give some of you a peek into the day-to-day (-to-week-to-month?) fires I end up putting out.


Deprecated: Assigning the return value of new by reference is deprecated in /home/fumanchu/webapps/b2/blogs/skins/_item_feedback.inc.php on line 156

<< 1 ... 7 8 9 10 11 12 13 14 15 16 17 ... 26 >>


Deprecated: Assigning the return value of new by reference is deprecated in /home/fumanchu/webapps/b2/blogs/plugins/_calendar.plugin.php on line 190

Deprecated: Assigning the return value of new by reference is deprecated in /home/fumanchu/webapps/b2/blogs/plugins/_calendar.plugin.php on line 905

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 334

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 334
November 2020
Sun Mon Tue Wed Thu Fri Sat
 << <   > >>
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          

Search

The requested Blog doesn't exist any more!

XML Feeds


Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 223
multiblog

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 304

Deprecated: Non-static method Hitlist::dbprune() should not be called statically, assuming $this from incompatible context in /home/fumanchu/webapps/b2/blogs/inc/sessions/model/_hit.class.php on line 531

Warning: Creating default object from empty value in /home/fumanchu/webapps/b2/blogs/inc/settings/model/_abstractsettings.class.php on line 304