Which Windows applications are used by this web developer?

This list is partly to remind myself what essential apps need to be reinstalled after a system wipe.

But it does have me thinking, what do other web developers use on a daily basis?

Web browsers:

  1. Google Chrome
  2. FireFox
  3. IE
  4. Opera
  5. Safari

FireFox addons:

  1. Adblock Plus
  2. British English Dictionary
  3. ColorZilla
  4. Dummy Lipsum
  5. Firebug
  6. Html Validator
  7. Web Developer
  8. Xmarks

Code editing:

  1. PhpEd
  2. Eclipse PDT
  3. TextPad
  4. vim

Code tools:

  1. SQLyog
  2. WinMerge

System tools:

  1. PuTTY
  2. Vbox
  3. Synergy
  4. TightVNC

File tools:

  1. FileZilla
  2. DropBox
  3. Jungle Disk Workgroup Edition
  4. WinZip
  5. WinRar
  6. 7-Zip

Graphical manipulation:

  1. Paint.NET
  2. Adobe CS
  3. jRuler

“Productivity” apps:

  1. MS Office
  2. Google Apps Sync
  3. Foxit Reader


  1. Skype
  2. Zoom phone adapter (use the Vista 64bit driver to get this working on 64bit Windows 7)
  3. X-Chat

CD/DVD tools:

  1. CDex
  2. DeepBurner


  1. Spotify
  2. iTunes
  3. VLC

Dock gadgets:

  1. Digital Clock
  2. GMail Counter

Time off:

  1. Steam

Ace on DHBiT pointed me at http://ninite.com/, how very useful. Will make use of it next time 🙂

Magento: pre filter by multiple option custom attributes

Requirement: pre-filter products by customer group name to product attribute.
I was looking for the “proper” way of filtering items by multiple custom attribute settings, but couldn’t find out how.
So, the following is a brief explanation of how I’ve got this running in Magento 1.4.1.

There are two ways of editing core code in Magento.

  1. Wrong: edit files directly in app/code/core/Mage
  2. Right: extend modules and keep them in app/code/local/MyDevCompany

If you’re in a hurry, you might edit core files directly and then later copy the altered code out into correctly extended module files.
For most of my Magento work, this is the route I have taken: get it working in the core then extend it once I’m sure I’m messing with the correct file/method. Just be sure to copy the code out at some point before upgrading the core!

This is how I have extended _getProductCollection() in app/code/core/Mage/Catalog/Block/Product/List.php – the method which generates the product list when viewing a category.
The extended file would be saved to app/code/local/MyDevCompany/Catalog/Block/Product/List.php

_productCollection = $layer->getProductCollection();

    // fetch the list of schools and their associated IDs
    $_product = Mage::getModel('catalog/product');
    $_attributes = Mage::getResourceModel('eav/entity_attribute_collection')
      ->addFieldToFilter('attribute_code', 'stv_school');
    $_attribute = $_attributes->getFirstItem()->setEntity($_product->getResource());
    $stv_schools = $_attribute->getSource()->getAllOptions(false);

    $schools = array();
    foreach ($stv_schools as $stv_school)
      $schools[$stv_school['label']] = $stv_school['value'];

    // Filter by school name and non specific items
    $allowedSchools = array($schools["Non specific"]);
    $customer_groupID = Mage::getSingleton('customer/session')->isLoggedIn() ? Mage::getSingleton('customer/session')->getCustomerGroupId() : null;
    if ($customer_groupID !== null)
      $groupName = Mage::getSingleton('customer/group')->load($customer_groupID)->getData('customer_group_code');
      $allowedSchools[] = $schools[$groupName];
    $this->_productCollection->addAttributeToFilter('stv_school', $allowedSchools);


// ... snipped - be sure to copy correctly from the original source file ... //


Reason I have used such a long and ugly method: addAttributeToFilter() will only play ball with attribute value IDs.
By fetching possible attribute value text and IDs, flipping the data, we can successfully filter by human readable text.

Further reading on how to set up a module for extension, see http://www.magentocommerce.com/wiki/groups/174/changing_and_customizing_magento_code