Logo

Working lunch.

about 1 year ago | Megan Blocker: Queenie Takes Manhattan

I worked from home on Friday, waiting patiently for the exterminator, who, of course, never showed. It's all very Beckettian, but I digress. The important part: I worked from home, which normally means ordering lunch in to save time and avoid being away from the laptop for too long. However, given the financial situation these days, I've been shamed into being a bit more frugal. So, ordering in is out, cooking in is, well, in.

I decided to roast a chicken leg alongside the season's first batch of brussels sprouts (Yay!). Given this was a celebratory occasion - brussels sprouts being quite possibly my favorite winter vegetable - bacon seemed in order, too. And, since it would be about five minutes' prep work, it fit into my agenda - being continuously available when not in the office so as not to look like a slacker.

Cleaning and trimming the sprouts is pretty quick work. My method is to trim the root off the bottom, which brings most of the outer leaves with it, leaving very little for you to actually peel back. The fresh sprouts smell a bit like raw broccoli - crisply peppery and generally green. I would be lying if I said I don't occasionally nibble on the root trimmings, which squeak and snap between your teeth.

Once roasted or sauteed, though, the sprouts are tender and nutty, and slightly stinky - just like broccoli. (And, just like broccoli, they're terrible when overcooked or boiled beyond recognition - please don't commit this crime against food-manity.) If you like your sprouts well-done, the charred bits are nice and chewy. They go well with anything, in my opinion, but shine brightest when paired with a bit of animal fat, either bacon or schmaltz, and dressed with some balsamic vinegar and a bit of parmesan cheese.

I nestled the chicken leg in the pile of prepped sprouts, sprinkled the lot with olive oil, salt and pepper, and tucked the pan into the oven to roast for about half an hour while I went back to being a responsible employee. My reward: the best lunch I'd had all week, consumed in my pajamas.

Roasted Brussels Sprouts with Balsamic Vinegar and Bacon

1 1/2 tbs. olive oil, divided
2 slices bacon, cut crosswise into 1/2 inch lardons
1/2 pound brussels sprouts, cleaned, trimmed and sliced in half lengthwise
1 tbs. good balsamic vinegar
Salt and pepper

Pre-heat the oven to 400 degrees Fahrenheit.

In a medium skillet, heat 1/2 tbs. of the olive oil over high heat until hot. Reduce heat to medium and add the bacon to the skillet. Saute until the fat rendered and the bacon is slightly crisped. Remove the bacon with a slotted spoon and reserve. Pour all but 1 tsp. of the bacon fat from the pan.

Add the sprouts to the pan and toss in the remaining bacon fat and the remaining tablespoon of oil. Sprinkle with salt and pepper to taste, and place the skillet in the oven. Roast sprouts to desired level of done-ness, about 25 to 30 minutes for me. Remove skillet from the oven and toss the sprouts with the reserved bacon and the balsamic vinegar. Adjust seasonings and serve hot, warm, or at room temperature.

Serves 2.

Confguring Firefox for Single signon

about 1 year ago | Amar Phadke: Amar Phadke's weblog

If you use Firefox for browsing your company intranet sites that are single signon enabled, you must really hate getting redirected to the login page. Ever wished there was a way you could use Firefox without stopping at the login page? Now, there is a way out. Follow these simple steps to enable single signon in [...]

Problems Installing the Cutline Theme in Mephisto

about 1 year ago | Pat Shaughnessy: Pat Shaughnessy - Home

My next step was to switch away from the standard “simpla” theme to another more interesting one. Once again I expected this to be a very easy task but ended up spending hours debugging and troubleshooting Mephisto and my blog setup on HostingRails.com. I started by downloading the theme onto my server:

cd themes/site-1/
mkdir cutline
curl http://mephisto-themes.nanorails.com/download?theme
	=cutline.mephisto-themes.nanorails.com > cutline/cutline.zip
cd cutline
unzip cutline.zip
Now when I logged into the Mephisto console and viewed Design->Manage Themes I saw the new theme. The first problem occurred when I clicked on the new theme and selected “Use Theme." I expected to see the new theme or a message in the admin console, but instead got a page full of text:
$("dialog-box").update("\u003Cdiv id=\"theme-info\" class=\"clearfix\"\u003E\n  \u003Ch3\u003E\n    Cutline (rhtml) (v1.1)by \u003Ca
href=\"http://cutline.tubetorial.com/\"\u003EPearsonified\u003C/a\u003E\n    \u003Ca href=\"#\" id=\"close-dialog\" onclick=\"Dialog.close();
return false;\"\u003Eclose\u003C/a\u003E\n  \u003C/h3\u003E\n  \u003Cdiv id=\"screenshot\"\u003E\n    \u003Cimg
src=\"/admin/themes/preview_for/cutline\" alt=\"Theme preview\" title=\"Cutline (rhtml) (v1.1)\" /\u003E\n    \u003Cp\u003EToday, you can put
an end to boring default styling and step into a world where your posts will become more artistic, more engaging, and more
compelling!\u003C/p\u003E\n  \u003C/div\u003E\n  \u003Cdiv id=\"theme-options\"\u003E\n    \u003Cul\u003E\n          \u003Cli\u003E\u003Ca
href=\"/admin/themes/change_to/cutline\"\u003EUse theme\u003C/a\u003E\u003C/li\u003E\n      \u003Cli\u003E\u003Ca
href=\"/admin/design?theme=cutline\"\u003EEdit theme\u003C/a\u003E\u003C/li\u003E\n          \u003Cli\u003E\u003Ca
href=\"/admin/themes/export/cutline\"\u003EDownload theme\u003C/a\u003E\u003C/li\u003E\n          \u003Cli\u003E\u003Ca href=\"#\"
onclick=\"if (confirm('Are you sure you wish to delete this theme stored at \\'themes/site-1/cutline\\'?')) { new
Ajax.Request('/admin/themes/destroy/cutline', {asynchronous:true, evalScripts:true, method:'delete'}); }; return false;\"\u003EDelete
theme\u003C/a\u003E\u003C/li\u003E\n        \u003C/ul\u003E\n  \u003C/div\u003E\n\u003C/div\u003E");
Dialog.current.layout();
It looks like the parent window from the admin console was redirected to “/admin/themes/show/cutline” and the meta data/contents of the theme dialog box intended for some javascript was displayed as plain text to me. After staring at this for a while I started looking for help on the Internet and eventually found an article explaining that I needed to make a code change to app/controllers/admin/themes_controller.rb near line 5:
before_filter :protect_action, :only => [:export, :change_to, :rollback,
 :import]
...should be changed to:
before_filter :protect_action, :only => [:export, :rollback]

One to do item here is to check whether the latest, edge version of Mephisto contains this fix already or not. I’m sure it does. Even after making the change on hostingrails.com I struggled for some more time before realizing that I had to kill any dispatch.fcgi processes running on the server before a code change would take effect. This wasn’t a problem in my local, development setup. Passenger must load and cache Ruby code after the first request. This would be interesting to explore further.

I tried again and this time: success! Finally I was able to switch to the new theme. Excited, I quickly took a look at my new site and saw... nothing! More troubleshooting revealed this error in my production.log file:

SystemExit (Define INLINEDIR or HOME in your environment and try again):
...ruby/gems/1.8/gems/RubyInline-3.7.0/lib/inline.rb:93:in 'abort'
...ruby/gems/1.8/gems/RubyInline-3.7.0/lib/inline.rb:93:in 'rootdir'
...ruby/gems/1.8/gems/RubyInline-3.7.0/lib/inline.rb:107:in 'directory'
...ruby/gems/1.8/gems/RubyInline-3.7.0/lib/inline.rb:277:in 'so_name'
...ruby/gems/1.8/gems/RubyInline-3.7.0/lib/inline.rb:317:in 'load_cache'
...ruby/gems/1.8/gems/RubyInline-3.7.0/lib/inline.rb:653:in 'inline'
...ruby/gems/1.8/gems/image_science-1.1.3/lib/image_science.rb:84
...ruby/site_ruby/1.8/rubygems/custom_require.rb:32:in 'gem_original_require'
...ruby/site_ruby/1.8/rubygems/custom_require.rb:32:in 'require'
...rails/activesupport/lib/active_support/dependencies.rb:496:in 'require'
...rails/activesupport/lib/active_support/dependencies.rb:342:in 'new_constants_in'
...rails/activesupport/lib/active_support/dependencies.rb:496:in 'require'
...plugins/attachment_fu/lib/technoweenie/attachment_fu/processors/image_science_processor.rb:1
...ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in 'gem_original_require'
etc...
Some further searching on the Internet revealed that the problem here was that an image library called ImageScience requires something called RubyInline. Looking at the stack trace, it seems that the “attachment_fu” plugin uses the ImageScience library. Probably this is used by Mephisto to produce the thumbnail preview images in the Admin->Assets page. The solution in this case is to create a folder on the server for RubyInline, and to set this value near the top of Mephisto’s environment.rb file. Along with my change from last week to force the production environment, the top of config/environment.rb looks like this:
# Uncomment below to force Rails into production mode when
# you don't control web/app server and can't set it the proper way
ENV['RAILS_ENV'] ||= 'production'
ENV['INLINEDIR'] ||= 'inline'
I tried again to see my site, and this time still saw a blank page. View->Source revealed that the Ruby code in the view was not being executed. Finally I installed the “mephisto_erb_templates” plugin as instructed by http://mephisto-themes.nanorails.com/2007/3/21/cutline-theme.
script/plugin install http://svn.nanorails.com/plugins/mephisto_erb_templates/
Now the theme worked properly. I made a few cosmetic CSS tweaks, picked my own image and ended up with this page.

From the people who brought you the $37.00 salad...

about 1 year ago | Megan Blocker: Queenie Takes Manhattan

I am big - BIG - on sustainability when it comes to, well, all things. But, particularly, when it comes to food. I shop local whenever humanly possible, and I also make every effort to buy from small producers whose ethics and methods I trust.

Therefore, you'd think I'd be a great audience for what Eli Zabar claims is an effort to start a "dialogue" about "the infrastructure that powers a supermarket[...]the perishability, yada yada yada." How is he beginning said dialogue, you ask? By adding a 1.8% fuel surcharge to all purchases at Eli's, his store on Third Avenue.

However, given that the prices at this place are already laughably astronomical ($7.00/pound for heirloom tomatoes that can be had at the Greenmarket for $4 or $5/pound, for example), I'm not inclined to give him the benefit of the doubt here.

This, combined with the experience I had at E.A.T. (his Madison Avenue deli) on Labor Day, seals the deal. I will no longer be patronizing any of Eli Zabar's establishments. In the name of true sustainability (they don't use air conditioning OR heat), I'll stick with the Greenmarket.

Ciao, Eli.

Structure and Corporate Communities

about 1 year ago | Michael Idinopulos: Transparent Office

Dawn Foster of Fast Wonder Consulting recently posted a really useful, practical discussion of different types of structures for corporate communities. She puts corporate communities into three categories: emergent, highly structured, and adaptive. Emergent Approach: Community has little or no...

Why following best practices won't take you too far?

about 1 year ago | Prasoon Sharma: Enterprise Software Does not Have to Suck

Just got back from Vegas, where I heard C.K. Prahalad (renowned management thinker at University of Michigan) discuss his new book - "the new age of innovation". Enjoyed it!

One of my key take aways was the way he defined and contrasted Best Practices with Next Practices.

We often use the phrase "Best Practices" in IT. I discourage its all purpose use, primarily because of how its interpreted by most... Often it is understood as "here's the gospel, use it, don't question it, just follow it". It doesn't encourage thinking, questioning conventional wisdom. It might be fine in some cases, but not always.

Moreover, there are factors to consider while using Best Practices like context: What worked in a certain situation may not work everywhere; time: What you're facing today is very different from what you/someone else faced a week ago; etc.

Here's what I understand and like to practice...

  • To be distinctive we need to innovate - question the norm, think, adjust continuously. C.K. Prahalad calls this Next Practices. These practices are live i.e. designed to change. If you want to be "better than the rest" in an area, you need Next Practices, typically in core areas (e.g. software development is core to development teams, whereas infrastructure isn't)
  • In non-core areas, we expect only to be as good as others. In this case we can learn/follow what experts have defined - Best Practices. This can make us "only as good as the rest"

In-the-Flow with Acumen Fund

about 1 year ago | Michael Idinopulos: Transparent Office

I blog a lot about the importance of in-the-flow collaboration: the idea that organizations adopt collaborative tools only when those tools are integrated into the flow of daily work. That idea resonates with a lot of readers, but so far...

Perhaps outsourcing is harder than offshoring

about 1 year ago | Alex Rothenberg: Common Sense Software

I've been thinking a lot recently about why my current company seems to have so much trouble working with our offshore development partner in India. Most of the people I work with spend their time thinking about how to work with a bunch of people who are halfway around the world with only a few hours when we're all awake at the same time. The way we've approached the problem is to take about 20% of the developers and temporarily move them to the US to work alongside us while trying to use technology to collaborate as best we can with the remaining developers (conference calls, IM, email and occasional visits of the US staff to India). We have managed to overcome some of the distance and I personally know many of the developers by all these channels and have met a large number in person (in the US and India), but problems still remain.

I know we're not the only company to face these problems (in fact a recent blog by Jay Fields Is Distributed Development Viable is what got me thinking on this topic this week). I agree with most of Jay's post but have been wondering If we solved the distributed development problem ... would the problems I see everyday disappear? I have to say they wouldn't and when I ask myself why I've concluded that our problem has less to do with the geographic distribution issues we face (which are certainly formidable!!) and more to do with the basic fact that most of our developers work for a different company than we do. I think outsourcing seems to be as big if not a bigger problem than offshoring.

What do I mean by that...In my experience successfully developing software is largely dependent on having a team of good people who know each other, have worked together before and are comfortable using their critical thinking and expressing their opinions. I imagine that we decided the rate differential wasn't important and flew the entire India based development team to the US to sit next to us tomorrow. The problem we would still have is that the members of my development team would still work for a different company than I do. My company spends a lot of time helping its employees think about their professional development and how to advance their careers. For our developers at our outsourced partner we do none of that (one of the advantages outsourcing is supposed to grant us the advantage of a bigger pool of resources to use but I believe that we don't need "resources" we need "developers" - sorry to dive into my liberal arts education and deconstructionism a little bit :) With outsourcing we give up on thinking of our developers as individuals and spending time and energy (and money) on their professional development and ensuring that they are challenged and want to continue working with us. The effect is that the average tenure of most of these developers is measured in months instead of years. The problem cuts both ways as the developers have an institutional loyalty to their employer and know they will likely not be working with us for the long term so its very hard for many of them to assume the role of trusted team member who makes decisions for the long term.

What's the solution... I don't know. All I know is that the current situation is very difficult and only focusing on shrinking the geographical distance between the US and India does not seem likely to work.

If you made it hear thanks for reading, I needed to get this off my chest. I hope to get back to more technical topics with my next post!

Perhaps outsourcing is harder than offshoring

about 1 year ago | Alex Rothenberg: Common Sense Software

I've been thinking a lot recently about why my current company seems to have so much trouble working with our offshore development partner in India. Most of the people I work with spend their time thinking about how to work with a bunch of people who are halfway around the world with only a few hours when we're all awake at the same time. The way we've approached the problem is to take about 20% of the developers and temporarily move them to the US to work alongside us while trying to use technology to collaborate as best we can with the remaining developers (conference calls, IM, email and occasional visits of the US staff to India). We have managed to overcome some of the distance and I personally know many of the developers by all these channels and have met a large number in person (in the US and India), but problems still remain.

I know we're not the only company to face these problems (in fact a recent blog by Jay Fields Is Distributed Development Viable is what got me thinking on this topic this week). I agree with most of Jay's post but have been wondering If we solved the distributed development problem ... would the problems I see everyday disappear? I have to say they wouldn't and when I ask myself why I've concluded that our problem has less to do with the geographic distribution issues we face (which are certainly formidable!!) and more to do with the basic fact that most of our developers work for a different company than we do. I think outsourcing seems to be as big if not a bigger problem than offshoring.

What do I mean by that...In my experience successfully developing software is largely dependent on having a team of good people who know each other, have worked together before and are comfortable using their critical thinking and expressing their opinions. I imagine that we decided the rate differential wasn't important and flew the entire India based development team to the US to sit next to us tomorrow. The problem we would still have is that the members of my development team would still work for a different company than I do. My company spends a lot of time helping its employees think about their professional development and how to advance their careers. For our developers at our outsourced partner we do none of that (one of the advantages outsourcing is supposed to grant us the advantage of a bigger pool of resources to use but I believe that we don't need "resources" we need "developers" - sorry to dive into my liberal arts education and deconstructionism a little bit :) With outsourcing we give up on thinking of our developers as individuals and spending time and energy (and money) on their professional development and ensuring that they are challenged and want to continue working with us. The effect is that the average tenure of most of these developers is measured in months instead of years. The problem cuts both ways as the developers have an institutional loyalty to their employer and know they will likely not be working with us for the long term so its very hard for many of them to assume the role of trusted team member who makes decisions for the long term.

What's the solution... I don't know. All I know is that the current situation is very difficult and only focusing on shrinking the geographical distance between the US and India does not seem likely to work.

If you made it hear thanks for reading, I needed to get this off my chest. I hope to get back to more technical topics with my next post!

The Google Story

about 1 year ago | Bhargav Gandhi: AGILE SOFTWARE DEVELOPMENT

Today, I completed the book "The Google Story". The book is really good and gives an insight how amazing the Google is. Google founders, Sergey Brin and Larry Page have authoritatively demonstrated the power of innovation and technology.


They just wanted to solve the problem of searching the web. They really solved it and how!!

I particulary liked their motto "Don't be evil". I think this "Don't be evil" attitude helped Google to gain the popularity merely by word of mouth. It is hard to believe that Google-the most powerful brand in the world has not spend much in advertising as compared to others.

Check it out

SAP and Ruby

about 1 year ago | Bhargav Gandhi: AGILE SOFTWARE DEVELOPMENT

I switched to SAP.


Yes, that is true. I am posting after a long time and that too with a sudden change in the technology for me. I was not expecting this change but it was inevitable. I could not get a Ruby on Rails project from my client so I had to look outside for the Ruby projects.

I realized that there are not many good opportunities in Ruby and Rails domain. SAP and JAVA are the technologies in demand and that is where the most of the work is done. I chose SAP as I have always regarded it as the one of the most innovative product the world has ever seen.

On the first day, I found that there is a Ruby library allowing access to SAP via the tried-and-true RFC technology. This was exciting that though in SAP world, I can still work with Ruby !!! I plan to try this out and post it on my blog soon.

Introducing Ruby in the enterprise

about 1 year ago | Prasoon Sharma: Enterprise Software Does not Have to Suck

We introduced Ruby/LAMP in 2008 to develop applications. In our experience, Ruby provides significant developer productivity gains. However, several questions have been raised in IT as we've been a Java/J2EE shop for several years.

  1. Ruby/LAMP isn't production ready in the enterprise: - Enterprises are used to vendor software that provide facilities like GUI-driven application setup/deployment, a single vendor to call to yell at for production issues etc. This offers them great comfort that they don't want to loose for open source software. It will take time to take Ruby/LAMP to the same place (engineering, development, support) as Java/J2EE in IT.
    - Managing/supporting Mongrel is painful: Passenger mod_rails is an attractive solution as it simplifies deployment of Ruby applications. We're moving ahead with it

  2. Why use MySQL if you have Oracle? Most enterprises run and support Oracle, so incremental Oracle database cost is zero. Why should one use MySQL then? Does it matter? If so, where/what and how much?
    - MySQL is primary database for most open source software (including Ruby) and hence some software components (plugins etc.) only work on MySQL (at least in early phases)
    - MySQL enables agile development practices
    - Enterprise/core/reused datasets vs. "Application" datasets

  3. How will we choose between Java and Ruby?
    - We plan to continue maintaining our Java apps using existing technology (Java/J2EE)
    - For new apps, I suggest Ruby as the starting point considering our internal needs...Here's why:
    Java offers high efficiency of execution with byte code compilation (JVM), whereas Ruby offers simplicity, maintainability and productivity gains. Most internal apps can be developed using Ruby unless complex integration with Java systems is needed.
    (a) Most internal enterprise apps are simple and don’t require high efficiency of execution (e.g. many thousands of users and high-volume, real-time data processing)
    (b) Performance gains from Ruby to Java aren’t significant from end-user perspective (server-side performance is negligible from end-user perspective)


This discussion in IT raises some important questions?
  • Should we leverage existing infrastructure (Oracle, Java/J2EE (JRuby)) for deploying Ruby applications?
  • Is/should MySQL be at par with Oracle in the enterprise?
  • Is/should LAMP be at par with J2EE in the enterprise?
  • ?

How are you dealing with this in your IT department?

Is offshoring effective for all your software development needs?

about 1 year ago | Prasoon Sharma: Enterprise Software Does not Have to Suck

How do you measure offshoring effectiveness?

Do you compare only out-of-pocket expenses while comparing offshore and onshore software development options? If so, read ahead...

This method seems flawed when you consider the whole equation i.e. FTE costs + intangible costs like collaboration and quality...

Let's assume a 3 month project (~ 500 hours); $100/hour FTE cost; $125/hour onshore engineer; $35/hour offshore engineer

  • An offshore team might have the following configuration: 8 offshore engineers in development team + 2.5 FTEs (offshore teams need more onshore FTEs for coordination/ collaboration. Our experience shows ~ 2.5 FTEs for 6 - 8 person offshore team.)

    So, the total cost for this option would be $265k

    = (500 hours * 2.5 FTEs * $100/hour) + (500 hours * 8 offshore engineers * $35/hour)

  • Now compare this with an onshore team. In this case, you have access to experienced engineers, so you need fewer (say 4) and they can also complete the project faster (say 400 hours). Since they're onshore you'll need fewer FTEs (say 1.5) considering increased quality and quantity of collaboration ...

    This would cost $260k

    = (400 hours * 1.5 FTEs * $100/hour) + (400 hours * 4 onshore engineers * $125/hour)
In essence the total costs are the same and if companies started measuring total costs and consider intangible costs like quality and collaboration, they may make different decisions...

Caution: This also doesn't imply that you fire your offshore development partner.
  • In fact, many offshore vendors have realized this from their experiences in last several years and are offering near-shore or onshore development options to their clients. E.g. Tata opened up a development center in Cincinnati in 2008)

  • This does not apply to all software development. There are several factors to consider while making on/offshore decision. E.g. Technology matters! Team size matters! Project duration matters! Offshore development seems more cost effective for commoditized technologies; large teams and/or long project timelines.

    May be we need a decision tree to decide where to execute a project?

War for talent

about 1 year ago | Prasoon Sharma: Enterprise Software Does not Have to Suck

Many engineers I talk to hate the enterprise. They crave for start-ups... their environment, their fun, their energy, their perks. They find enterprises boring... and why not... that's exactly what most of them are!

How can enterprises address this?

  1. To begin with... recognize the issue! Most enterprises are boring. What do you expect with all legacy technologies, overcomplicated systems, old school thinking, bureaucracy, corporate structures/controls etc.?

  2. Don't throw money at it. Most talented IT engineers don't work just for the money. They see software as a community activity, a benevolent act (heard of open source yet?)

  3. Understand that, to hire and retain top talent in the industry, you need to offer -
  • competitive environment: Will the new talent find your engineers at their intellectual level? What can you offer to grow them as professionals - paid conferences, ?

  • flexibility: go the Google way. Let your developers dream on you money. Give them a day to follow their dreams

  • insulate them from your mess: handle it yourself. What are FTEs for anyway? :)

  • break artificial corporate boundaries: let them contribute back to the open source world, let them take stuff outside the corporate boundaries (blog etc.) - that Drupal fix doesn't give you competitive edge, after all. In essence, enable cross-pollination with external world, don't stop it!

  • keep pace with technology: if you run mainframes, fuggetabout attracting top IT talent

  • provide an exciting work environment:

  • ?

Ignite Bangalore

about 1 year ago | Prasoon Sharma: Enterprise Software Does not Have to Suck

I'll be in Bangalore in November and I'm looking forward to attending Ignite Bangalore on Novemeber 13th. It'll be great to meet some of the technology leaders in India's Silicon Valley.

If you have a lightening talk, submit your presentation topic.

If you want to attend, just show up.

A Funny Thing Happened on the Way to the Intranet

about 1 year ago | Michael Idinopulos: Transparent Office

This week a couple of customers I've been working with are unveiling their new corporate intranets...on Socialtext. What's interesting about both customer is that they didn't set out to replace their intranets. Originally, they were looking for knowledge management systems,...

The perfect shuck.

about 1 year ago | Megan Blocker: Queenie Takes Manhattan

Ever since Michael Pollan scared the crap out of me with The Omnivore's Dilemma, I've been a bit corn-shy. Corn, Pollan revealed, is the backbone of our industrial food complex, and is the primary ingredient in many, many more foods than you had ever imagined. It represents the most evil elements of our mechanization of the food chain, and it's just bad, bad, bad.

Of course, Pollan does not think we should stop eating corn in its purer forms - right off the cob, for instance. He's far more reasonable than that. But for months after I read the book, I was terrified of buying and eating corn, panicking that I was feeding into a system I had no interest in supporting. Then I realized that I still eat Cheetos (king of hyper-processed corn and erstaz cheese) when I'm hungover, and decided it was time to buy and eat some sweet corn, particularly since it happens to be in season.

When I approached the Migliorelli stand at the Union Square Greenmarket, I noticed they'd posted a sign: "No husking." Really? I was always taught to husk an ear of corn, just barely, to double-check that the cob was, in fact, intact and free of blemishes. First, you check that it's heavy for its size (indicating juiciness), then you pull back the husk just a tad. Rule-follower though I typically I am, I rebelled and husked my ears, rejecting only one out of six (it had no kernels on the top inch of the cob - not a good sign).

I brought the corn home and, once all the groceries were put away, the time came to cook it. One problem: I had never shucked corn inside. Ever. Growing up in Connecticut, land of patios and porches, corn shucking was an outdoor ritual. It seems wrong to shuck corn anywhere but the the back steps, holding the cob over a paper grocery bag big enough to catch all the silk. I stood at my tiny counter for a minute, seriously contemplated climbing out onto the fire escape, and then decided to just give indoor shucking a shot. Let's just say there was a fair bit of clean up involved, despite my best efforts to aim for the bag.

Next, I brought a pot of (unsalted - salt makes the corn tough) water to boil and added the freshly shucked cobs to it, removing them a few moments later when they had begun to smell of - you guessed it - corn. Unscientific, I know, but it works. I cooked five ears - clearly too many to eat in one sitting. I set four ears aside to cool and use later in the week.

The fifth I rubbed with butter, sprinkled with salt and pepper, and ate, standing up, in my kitchen. The butter ran down my chin, the corn got stuck in my teeth (This, I remembered, was why my grandfather always cut his off the cob.), and I generally made a mess of myself.

It was lovely.

Speculative design vs. Emerging design

about 1 year ago | Prasoon Sharma: Enterprise Software Does not Have to Suck

I've exercised and noticed different practices in design and writing code... Sometimes we've spent weeks creating blueprints (so 2001) before starting actual development. At other times we've jumped into code directly (prototypes typically) and designed while writing code. There's also the hybrid approach of writing code and designing at the same time - emerging design.

Depending on the case, all practices were legitimate and useful. How should one decide what to do when?

What do you practice?

  • What are the factors that influence it?
  • What comes more natural to you and why?
  • Does it depend on the technology?
  • Does it depend on experience?
  • ?
These practices don't seem black and white... there's really a continuum... In this spectrum of various practices, where do you fall? What do you practice? And why?


1------------------- 2 ----------------------3

  1. Upfront design (speculative design): design, then code
  2. Emerging design: design and code together
  3. No design: Fuggetaboutit! start writing code and design will follow
More and more, we're practicing emerging design in our new initiatives. Less speculative, more practical...

Predicting Enterprise 2.0 Adoption

about 1 year ago | Michael Idinopulos: Transparent Office

The National Computing Centre in the U.K. has posted an interesting article by Martin White on Achieving effective Enterprise 2.0 adoption. The center of the article is a list, developed by INSEAD's Morton Hansen, of 10 statements to diagnose an...

Goa, Lonavla

about 1 year ago | Amar Phadke: Amar Phadke's weblog

I recently got a chance to vacation at Goa and Lonavla. I have posted a few pictures of the trips here. It was amazing to see natural beauty of these places. Goa is well known around the world for its beautiful beaches. We visited about 4-5 different beaches over the course of 2 days. Unfortunately, the [...]

Mephisto Setup on HostingRails.com

about 1 year ago | Pat Shaughnessy: Pat Shaughnessy - Home

In the past I’ve setup blog sites using B2Evolution, WordPress and other PHP frameworks and had no trouble at all. Last week I setup this web site using Mephisto on a Rails hosting service (hostingrails.com), and expected to get it up and running in just a few minutes; after all, if installing and configuring a PHP blog site in 2005 was easy, certainly doing the same in 2008 with better technology (Rails) should be even easier.

Wrong!

First I created a MySQL database on my production server and called it “mephisto”. Then I set the char set and collation settings using the command line:

# mysql -u myusername -p
mysql> ALTER DATABASE mydatabasename DEFAULT CHARACTER SET utf8
  COLLATE utf8unicodeci

Since I’m not ready to write my own Rails blog site, I decided to download and setup the latest version of Mephisto (0.8 “Drax”). When I tried to download the TAR file from the 0.8 Drax link using curl I got HTML that redirected me to a different location:

# cat master.tar.gz
<html><body>You are being <a href="http://github.com/tarballs/technoweenie-
mephisto-90e2cc253d94e2e544bc8b21f361c7360c1e9baa.tar.gz">redirected</a>.</body></html>

Probably this is standard behavior by github and I should have used that directly. I need to stop thinking like a PHP developer! Regardless, it wasn’t much trouble to download the actual Mephisto TAR file:

# curl -O http://github.com/tarballs/
  technoweenie-mephisto-90e2cc253d94e2e544bc8b21f361c7360c1e9baa.tar.gz
# tar xvf technoweenie-mephisto-90e2cc253d94e2e544bc8b21f361c7360c1e9baa.tar.gz
# mv technoweenie-mephisto-90e2cc253d94e2e544bc8b21f361c7360c1e9baa mephisto

No big deal; so far this was a very similar experience to setting up a PHP web site: create the database, download the code and you’re almost done. Next, I entered the proper values in database.yml and tried to initialize the database:

# rake db:bootstrap RAILS_ENV=production
(in /home/myusername/mephisto)
Your config/boot.rb is outdated: Run "rake rails:update".

It was at this point that my problems started. First I wasn’t sure why I received this error message at all. Next I tried to use rails:update to fix it as instructed and ran into further trouble. A couple of hours and 5 or 10 blog posts later I discovered the solution here in this great write up. It turns out that Mephisto 0.8 does not work with Rails 2.1 and I needed to downgrade to Rails 2.0.2. Since I’m using a shared server on hostingrails.com I used rails:freeze:edge to get the proper version of Rails installed in my app’s folder:

# rake rails:freeze:edge RELEASE=2.0.2
Downloading Rails from http://dev.rubyonrails.org/archives/rails_2.0.2.zip
Unpacking Rails
Updating current scripts, javascripts, and configuration settings

At this point I tried to initialize the database again but this time got a different error:

# rake db:bootstrap RAILS_ENV=production
(in /home/myusername/mephisto)
rake aborted!
undefined method 'install_gem_spec_stubs' for #<Rails::Initializer:0xb7c652e8>

As explained here, I still had to manually copy one file from Rails to my application which rails:freeze:edge didn’t handle properly, using this command from my app's folder:

# cp vendor/rails/railties/environments/boot.rb config/boot.rb

Finally I was able to run rake db:bootstrap successfully! The last bit of configuration I had to do was to add this line to config/environment.rb in order to insure hostingrails.com used the production configuration:

# Uncomment below to force Rails into production mode when
# you don't control web/app server and can't set it the proper way
ENV['RAILS_ENV'] ||= 'production'

After creating a symlink and doing some other standard configuration for hostingrails.com, I was finally able to get my site up and running. It was a lot harder than configuring a PHP site and ruined a whole evening, but in the end wasn’t all that bad.

DMS and Collaboration Suite: Friends not Foes

about 1 year ago | Michael Idinopulos: Transparent Office

What's the relationship between a document management system (DMS) and an enterprise collaboration suite like Socialtext? The other week, I was meeting with a project team at a large retail bank who is bringing Socialtext into their organization. It was...

Open Source team room anyone?

about 1 year ago | Prasoon Sharma: Enterprise Software Does not Have to Suck



We've struggled to find a team file sharing application that supports:

  • Offline access
  • Seamless access from desktop tools (Windows Explorer, Microsoft Office applications)
Web based file sharing doesn't always work well in the business world, where road warriors need offline access. Enterprise products like Groove (Microsoft), eRoom (EMC-Documentum) are good attempts but they don't meet the 2nd requirement- seamless access from desktop tools - as they create a separate space.

Businesses have suffered a lot already. They've waited long enough for IBM, Microsoft, others to solve it for them but no luck yet...

I believe it is time for some businesses to come together and jointly solve this problem as an open source effort.

Has anyone thought of building a custom solution to address this problem?
  • Windows Explorer integration with version control systems like Git/SVN?
  • ?

Are Scrum Masters traffic cops?

about 1 year ago | Prasoon Sharma: Enterprise Software Does not Have to Suck

Some Scrum teams have suggested that their Scrum Master doesn't add much value in the project... that their primary function is to communicate upwards/outwards by polling team members for updates... that they are chickens on the projects, not pigs*.

Such team dynamics sounds dangerous and should be avoided... Will the following help?

Let a team member take up the Scrum Master role - whether its the BA, Tech Lead, Developer or Tester in the team. It can even be rotated among them. Scrum Masters are pigs then and are close to the project to know/coach/communicate well... This would help keep the Scrum teams small and effective!

For this to happen, the following needs to be true though:

  • Team is matured to practice Scrum
  • Project doesn't demand a separate Scrum Master due to risk, size etc.
  • ?
* To clarify, this isn't the case everywhere but just in a few of our teams

Its me!!

over 2 years ago | Surbhi Bhati: Clean Desk, Jammed drawers

Trapped in a confusion

I live kindda hibernamted life

Just looking, listening at things

And not doing a single thing.

Knowing all is a problem in itself

And wats more!! I know that I know it all..

And still here I am

Mere spectator of the world around me

And so less a part of it..

I wonder what will make me change

What it will be that will make me change

Or more, if ever there will be anything that will make me change

I wonder..I think.. and still all this time..

I remain just the same..

Building higher performing teams

over 2 years ago | Prasoon Sharma: Enterprise Software Does not Have to Suck


Software development is a social process and needs synergistic interaction within the team and with the business decision maker as well. I've noticed the following factors affecting our development team's effectiveness -

  • Team location: spacial and time-zone separation causes collaboration gaps
    • Space gap: Co-located vs. distributed teams (Geographical separation)
    • Time gap: Time-zone separation affects communication and collaboration. It results in less interaction between US-based business decision makers (sponsors/product owners) and offshore teams
  • Team agility: Agile mindset, engineering practices, soft-skills (influencing, negotiation, pushing back, saying no etc.)
  • Team experience: Senior vs. Junior team members. Domain knowledge and technical competency.

Can the following ideas address these issues?
  • Team location: Co-located teams (prominently at one place)
    • Leverage development partner’s global capabilities to execute projects locally
    • Access to global talent pool
    • Enable personalized, direct interactions
  • Team agility: Strengthen development partner relationships and mix
    • Establish new development partner relationships that meet skills gap
    • Tap into strengths of development partners
    • Shift from scale to skills
  • Team experience: Hire and retain technical talent: FTEs can deliver projects too... don't rely solely on external talent for all your needs
    • Build and sustain a pool of highly talented software engineers
    • Leverage our best with their best

Thoughts?

Why to use TDD with Drupal

over 2 years ago | Pat Shaughnessy: Pat Shaughnessy - Home

Drupal is a very popular Content Management System (CMS) developed using PHP. It’s a great way to get an interactive, community web site such as a blog or discussion forum up and running quickly without writing any code. But Drupal is a poor choice for general, complex web application development for a few simple reasons:

  1. It doesn’t use a standard, general software architecture such as Model-View-Controller (MVC) like Rails or Struts.
  2. Drupal doesn’t employ or support modern development best practices such as Test Driven Development (TDD) or automated testing more generally. (Exception: the SimpleTest module can provide some automated integration testing using HTTP without opening a real browser.)
  3. While the module API does allow for some customization, it can be easy to get into trouble if your target application is outside of Drupal’s design center. Specifically, you may end up having to modify Drupal’s core code or database schema when Drupal doesn’t behave the way you would like.

A better choice for more general or complex web development would be Ruby on Rails.

If you do need to develop a custom web application using the Drupal framework, you can avoid problems #2 and #3 by using a test driven approach. Instead of simply implementing your custom logic by writing PHP code to the Drupal module API, try pulling your custom code out of Drupal entirely and running it independently of the framework. This will insure that your custom code could someday be run with another web framework and also help you avoid the temptation of modifying Drupal’s core code directly. Of course, you will also get all of the normal benefits of TDD: better design oriented around business requirements, live documentation through executable code, etc.

How to do this? Write tests first using PHPUnit (which fail), then get your tests to pass by implementing the desired behavior using PHP 5 objected oriented code. Lastly, write a “shell” module that calls out to your test driven object oriented PHP code from Drupal. This means your code will be run twice: once from the command line by PHPUnit during development and from your CI process, and again from Drupal to process end user requests in production.

In a series of future posts I'll write a Drupal module using TDD, using a few tips and tricks along the way to get PHPUnit and Drupal to play together nicely.

Business Week and Professional Immortality

over 2 years ago | Michael Idinopulos: Transparent Office

Business Week just published a must-read article called "The Knowledge Handoff: How corporations are scrambling to tap the expertise of baby boomers before they retire." I'm really glad to see this story being picked up. Many of the companies I...

The $37.00 salad.

over 2 years ago | Megan Blocker: Queenie Takes Manhattan

No, really. That salad - a little grilled chicken, a pile of mixed greens, and an admittedly tasty vinaigrette. OK, ok, there were also a Diet Coke ($4.00) and a cup of coffee ($3.50). Total bill, including an ill-deserved tip (I'm terrified of ending up in bad-tippers' hell.): thirty-seven buckaroos.

The place: E.A.T., Eli Zabar's delicatessen at 80th and Madison. The time: 2:30 PM. The date: Labor Day, 2008. The victim: my credit card. I suppose I should have known better, having been subject to Eli's penchant for overpricing everything he sells at his eponymous Eli's Manhattan. But I didn't realize just how bad it could get.

I suppose this is how he pays for the Madison Avenue storefront. I'm not one for penny-pinching, but given how much I paid for the damn salad, the way they whisked my coffee away before I was done with it was a bit unwise. Never take away a poor woman's caffeine.