When Bad Product Makes Good Business

Filed under: — Aviran Mordo

Being the head of a large engineering group I get to interview a lot of people. As part of the interview I ask people about their current or previous jobs and some of the stories I hear horror stories about these work places and how making a bad product is actually good business for them. Here are some examples:

Example 1 – Insurance Company:
A guy that worked in an insurance company was building a system to process claim forms for elderly people. The system would validate that all the forms were submitted and that they are all filled correctly. When the developer found a validation error, for instance a missing form, missing field or a validation error he would print that there is a missing form and what exactly is missing. He was told by the company not to specify what exactly is missing but just to say some forms are missing.
By being as vague the insurance company makes the life of the elderly people who are trying to submit claims very difficult, thus having to pay less claims.

Example 2 – Outsource:
Developers that worked at an outsource company was assigned to a project. In this project he was trying to develop his code using Test Driven Development. He was told by the company not to write automated tests because the quality of code would be better and since they get paid by the hour they will loose money on debugging and manual QA, which takes much longer.

Example 3 – Banks
Some banks make the system to delay deposits and prioritize withdrawals so if a customer does not have sufficient credit they will first go into overdraft because the withdrawals are entered into the system before the deposits.
This way bank customers need to pay more interests and commissions to the bank.

Making bad products or making low quality software on purpose is a good business for some companies. However they make their customers frustrated and their employees that develop these systems unhappy and feel bad about themselves.

You would not find me working for these kinds of companies nor many good developers who have many options to find a good place to work. This actually hurt these companies in a way that they have many low quality people working for them. Good developers want to work at a place that makes them happy and they feel good about the product they develop.

What do you think, would you work for such a company?
Do you have other examples for bad companies that are benefiting from bad products?


Dev Centric Culture - Breaking Down The Walls

Filed under: — Aviran Mordo

We have been doing Continuous Delivery at Wix for several years now and as part of that, I have been training my team at the methodology of DevOps and changing the company’s culture. Last week I was trying to explain to some colleagues how we work at Wix and about our dev culture. While doing it I realized that we are doing much more than just DevOps. What we actually do is something I call “developer centric culture” or in short “Dev Centric” culture.

What is Dev Centric culture?

Dev Centric culture is about putting the developer in the middle and create a support circle around him to enable the developer to create the product you need and operate it successfully.

Dev Centric Circle

Before I’ll go into details about Dev Centric culture and why is it good let’s look on the problems we have, what we are trying to solve and why it is more than just DevOps.

DevOps is about breaking the walls between developers and operations but after few years of doing DevOps and continuous delivery we realized that DevOps is not enough. The wall between the developers and the operation is just one wall out of many. If you really want to be agile (and we do) we need to break down ALL the walls.

Let’s take a look at a traditional development pipeline.

  • Product that “tells” engineering what they need to do.
  • Software architect designs the system and “tells” the developer how to build it.
  • Developers write the code (and tests in case the work in TDD)
  • QA checks the developer’s product and cover it with more test
  • Operations deploy the artifact to production

So what we have here is a series of walls. A wall between the product and engineering, a wall between engineering and QA and of course a wall between engineering and operation. (Sometimes there is even a wall between architecture team and developers)


Continuous Delivery - Part 3 - Feature Toggles

Filed under: — Aviran Mordo

Previous chapter:The Road To Continuous Delivery - Part 2 - Visibility

UPDATE: We released PETRI our 3′rd generation experiment system as an open source project available on Github

One of the key elements in Continuous Delivery is the fact that you stop working with feature branches in your VCS repository; everybody works on the MASTER branch. During our transition to Continuous Deployment we switched from SVN to Git, which handles code merges much better, and has some other advantages over SVN; however SVN and basically every other VCS will work just fine.

For people who are just getting to know this methodology it sounds a bit crazy because they think developers cannot check-in their code until it’s completed and all the tests pass. But this is definitely not the case. Working in Continuous Deployment we tell developers to check-in their code as often as possible, at least once a day. So how can this work? Developers cannot finish their task in one day? Well there are few strategies to support this mode of development.

Feature toggles
Telling your developers they must check-in their code at least once a day will get you the reaction of something like “But my code is not finished yet, I cannot check it in”. The way to overcome this “problem” is with feature toggles.

Feature Toggle is a technique in software development that attempts to provide an alternative to maintaining multiple source code branches, called feature branches.
Continuous release and continuous deployment enables you to have quick feedback about your coding. This requires you to integrate your changes as early as possible. Feature branches introduce a by-pass to this process. Feature toggles brings you back to the track, but the execution paths of your feature is still “dead” and “untested”, if a toggle is “off”. But the effort is low to enable the new execution paths just by setting a toggle to “on”.

So what is really a feature toggle?
Feature toggle is basically an “if” statement in your code that is part of your standard code flow. If the toggle is “on” (the “if” statement == true) then the code is executed, and if the toggle is off then the code is not executed.
Every new feature you add to your system has to be wrapped in a feature toggle. This way developers can check-in unfinished code, as long as it compiles, that will never get executed until you change the toggle to “on”. If you design your code correctly you will see that in most cases you will only have ONE spot in your code for a specific feature toggle “if” statement.


The Road To Continuous Delivery - Part 2 - Visibility

Filed under: — Aviran Mordo

Previous chapter: The road to continuous delivery - Part 1

Production visibility

A key point for a successful continuous delivery is to make the production matrix available to the developers. At the heart of continuous delivery methodology is to empower the developer and make the developers responsible for deployment and successful operations of the production environment. In order for the developers to do that you should make all the information about the applications running in production easily available.

Although we give our developers root (sudo) access for the production servers, we do not want our developers to look at the logs in order to understand how the application behaves in production and to solve problems when they occur. Instead we developed a framework that every application at Wix is built on, which takes care of this concern.

Every application built with our framework automatically exposes a web dashboard that shows the application state and statistics. The dashboard shows the following (partial list):
• Server configuration
• All the RPC endpoints
• Resource Pools statistics
• Self test status (will be explained in future post)
• The list of artifacts (dependencies) and their version deployed with this version
• Feature toggles and their values
• Recent log entries (can be filtered by severity)
• A/B tests
• And most importantly we collect statistics about methods (timings, exceptions, number of calls and historical graphs).

Wix Dashboard

We use code instrumentation to automatically expose statistics on every controller and service end-point. Also developers can annotate methods they feel is important to monitor. For every method we can see the historical performance data, exception counters and also the last 10 exceptions for each method.

We have 2 categories for exceptions: Business exceptions and System exceptions.
Business exception is everything that has to do with application business logic. You will always have these kinds of exceptions like validation exceptions. The important thing to monitor on this kind of exception is to watch for sudden increase of these exceptions, especially after deployment.

The other type of exception is System exception. System exception is something like: “Cannot get JDBC connection”, or “HTTP connection timeout”. A perfect system should have zero System exceptions.


תחנות המוניות מפקיעות מחירים בניגוד לחוק

Filed under: — Aviran Mordo
לאחרונה התחלתי לנסוע מספר פעמים בחודש להרצליה במוניות. בתור אחד שרגיל לנסוע ברכב פרטי לא ממש הכרתי את המחירים. מכיוון שאני גר בפתח תקווה התקשרתי לתחנת המוניות הקרובה לביתי וביקשתי מונית להרצליה פיתוח. בתחנת המוניות אמרו לי שהנסיעה תעלה 90 שקלים. שמח וטוב לב עליתי על המונית ונסעתי להרצליה.



New Video Search Engine For Video Sharing Sites

Filed under: — Aviran Mordo

Have you ever looked for a video clip but didn’t know if the clip is on YouTube, MetaCafe, Google video or other video sharing site?

VidLookup.com comes to solve exactly this problem. VidLookup.com is a customized Google search engine that searches for video clips on many video sharing sites, thus help you find quickly the video you are looking for without you having to go and search on each site.

Right now the site searches about 30 video sharing web sites from around the web, so if you can’t find your favorite site you can suggest that site to be included in the search engine.

So next time that you want to find which site has the latest Paris Hilton clip just use VidLookup and it will search all of them.


Tip: Reduce Firefox Memory Usage

Filed under: — Aviran Mordo

Many Firefox users notice that the open source browser can take a lot of memory, sometimes several hundreds of mega bytes. Fortunately Firefox lets you control to some extent how much memory it will consume.

To set the configurations you’ll need to edit Firefox settings. To do that you’ll need to type about:config in the address bar and edit the keys we’ll discuss in this article.

Cached Pages
When a page is loaded, it can be cached so it doesn’t need to be rerendered to be redisplayed. As a default Firefox will set the amount of cache memory according to the total amount of RAM your system got. The problem with that is that these values are per tab, so the more tabs you’ve got opened the more memory Firefox cache takes.

The config parameter is browser.cache.memory.capacity and you can set it to the number of KB you want let Firefox use for cache. Value of 0 will tell Firefox not to use any memory for cache. Note that the parameter browser.cache.memory.enable has to be true

The default value is -1 where Firefox will set the memory usage according to the following values

Physical RAM Memory Cache (in KB)
32 MB 2048
64 MB 4096
128 MB 8192
256 MB 14336
512 MB 22528
1 GB 32768
2 GB 45056

4 GB 59392

In Firefox 2 these defaults will change to the following:

Physical RAM Memory Cache (in KB)
32 MB 2048
64 MB 4096
128 MB 6144
256 MB 10240
512 MB 14336
1 GB 18432

2 GB 24576
4 GB 30720

To view current memory cache usage, type about:cache?device=memory in the address bar

Pages Stored In Memory

Pages that are visited are stored in memory in such a way that they don’t have to be re-parsed. Although it sounds like cache this is different from the cache. This setting improves performance of Firefox when pressing Back and Forward buttons.

The setting key to control this behavior is: browser.sessionhistory.max_total_viewers. The default value is -1 where Firefox use the following settings based on the amount of memory your system has.

RAM Pages
32MB 0
64MB 1
128MB 2
256MB 3
512MB 5
1GB 8
2GB 8

4GB 8

This preference limits the maximum number of pages stored in memory. Setting the value to 0 do not store any pages in memory.

Let Windows claim back memory
On Windows operating systems, when a program is minimized and left for a period of time, Windows will reclaim the memory the program used in anticipation that other programs might need it. Because of the way Mozilla applications are stored in memory, Windows is much more aggressive in reclaiming the memory they use, which can cause a delay when the program is restored. This preference determines whether to allow Windows to reclaim memory from a minimized Mozilla application.

Firefox’s default setting prevents Windows from reclaiming memory when the program is minimized.

To change this settings you’ll need to change or create the key config.trim_on_minimize and set it to true or false. True - allows Windows to reclaim back the memory and false (default) prevents Windows from doing that.

Note: Changing Firefox’s settings may not be enough to stop it from taking too much memory, plugins can also be a big factor in memory consumption.


Vista’s Backup Is A Ghost Buster

Filed under: — Aviran Mordo

With the soon to be released Windows Vista, the new operating system overhauled a very important and usually overlooked feature, the backup.

Windows Vista provides a backup experience that is more comprehensive and even easier to use than the basic backup utility included in Windows XP. The new backup utility works in the background so you can use a simple wizard to schedule when and where you want it backed up. You can back up to CD-ROM, DVD-ROM, an external hard disk, another hard disk on your PC, or to another PC or server connected to your network.

Like commercial backup software such as Symantec Ghost, Vista backup can take a complete image of your hard drive, track changes and continue to backup only those changes, and of course backup individual files, specific file types and folders.

Just like Ghost, Vista backup lets you restore a complete hard drive from an image, which is most useful for corporations, that create a drive image which is then gets duplicated on many computers.

Maybe the most significant new feature Microsot introduced with Vista backup is the Previous Versions feature.
Have you ever accidentally saved over a file you were working on? Accidental file deletion or modification is a common cause of data loss. This feature automatically creates point-in-time copies of files as you work, so you can quickly and easily retrieve versions of a document you may have accidentally deleted, even after you emptied your recycle bin.

Vista Backup Previous Versions


What Vista Brings To The Table

Filed under: — Aviran Mordo

As Windows Vista release is getting closer, Microsoft releases more details on the ways Vista will work, here are some details on the fetures Vista brings to consumers.

For home users

Digital Photos - With Windows Vista operating system, consumers will have a simpler yet richer digital memories experience, with greater ability to enjoy, find, and share personal photos and video.

  • Built-in support for the most common photo-editing tasks helps consumers produce great looking prints and videos.
  • Easier backup tools and next-generation storage products will help them keep their memories safe.
  • With Windows Vista Home Premium, consumers can view and show photos on their TVs and around their homes when their PCs are connected to the TV through a wireless router or Media Center Extender.

With the Windows Vista operating system, consumers can use their PCs to make the most of their digital music collections.

  • With Windows Media Player 11, it’s easier to find and organize music content on a PC, a portable device, or even from an online service, with rich, contextual browsing and instant search.
  • Windows Vista offers better playback with improved codecs for clearer sound quality.
  • Users can utilize Windows Media Player or the Windows Vista Sync Center to synchronize their music with their portable music devices or portable media centers for maximum enjoyment on the go.
  • Safeguarding content with Windows Backup is simple and automatic, with easier CD and DVD archival, and support for archiving to PCs and networked devices.

TV & Movies
With Windows Vista Home Premium and Windows Vista Ultimate, users will find it’s easier than ever before to find, watch, record, and save all of their favorite TV shows and movies on their PCs. Users can engage and view their content throughout their homes from Windows Vista Home Premium, on their TVs, through other Windows Media Center Extender devices, or on the go with a mobile PC.

  • Users can watch live TV content or video-on-demand content through the Windows Media Center Online Spotlight.
  • Users can view their favorite content on Windows Vista Home Premium, on a mobile device with synced content, or streamed through a Windows Media Center Extender device to their TVs or another PC anywhere in their homes.
  • Users can easily back up content on recordable DVDs or on mass storage devices, protecting precious home movies, beloved TV shows, or whatever content they wish to keep safe.

New features in the Windows Vista operating system, when coupled with partner offerings, will enrich the overall gaming experience.

  • Locate all their games in one easy location.
  • Link to game sites as well as other gamers.
  • Exercise control over which games their children choose to play.

With new and improved communications tools and platforms, the Windows Vista operating system lets consumers enjoy services to share with each other more easily and securely, whether at home or on the go.

  • Windows Internet Explorer 7 lets users keep tabs on information from a variety of sources, with improved browsing, searching from multiple Internet search providers, and really simple syndication (RSS) subscriptions to their favorite Web sites.
  • Windows Vista enables centralized syncing and storage across a wider range of devices and external hard drives, while simplifying the process of setting up a home network over a wireless router with Easy Networking.
  • With Windows Defender and Windows Internet Explorer 7, users can confidently browse the Web while enjoying the multiple levels of security enhancements within Windows Vista, including spyware and malware protection; identity, data, and computer protection; and anti-phishing support.

The Windows Vista operating system offers additional ways for users to be more productive, providing them with simple tools to organize their information and perform common tasks.

  • Users are able to conduct quick, extensive, contextual searches right from the Start Menu with Instant Search.
  • Contacts make it easier for consumers to manage their personal connections, tasks, and appointments.
  • Windows Vista features improved Web browsing and easily integrates with any online search provider, putting all the information users want at their fingertips.
  • Windows Vista provides family safety settings that protect children from inappropriate Web sites and games and help prevent security breaches that result from computer misuse.


Microsoft Is Taking WGA To The Next Level

Filed under: — Aviran Mordo

Since the Windows Genuine Advantage debut as a pilot on 9/2004 Microsoft is slowly making the program more annoying and intrusive.

In the beginning the WGA was an opt-in feature, and then slowly it became mandatory. Users who choose not to validate their copy of Windows can not download updates from Windows update (they still can download critical security updates via automatic update feature in Windows).

On Tuesday Microsoft will make WGA more intrusive and will use scare tactics to make users validate and purchase a legal copy. On 4/25/06 Microsoft will start WGA Notification in the US, UK, Australia, NZ and Malaysia. The WGA notification has been running as a pilot in several countries such as Norway, Taiwan, Sweden, Israel, Denmark, Poland and other countries.

The new WGA notification campaign will have a new logo for OEM and system builders, as seen here exclusively for the first time.

WGA Logo
The new Windows Genuine Advantage Logo



The New Office 2007 File Formats

Filed under: — Aviran Mordo

Office 2007 is due to be released sometimes on 2007. Office 2007 will have two major changes to the office file format. For the first time Microsoft will have file extensions with more than 3 characters, but more importantly it will move from the well know .doc, .xls and .ppt file extensions for the popular Office documents.


Search Engines Don’t Know What They Are

Filed under: — Aviran Mordo

Today I’ve decided to conduct a simple experiment. I wanted to know if search engines know what they are. This is not a scientific experiment but the results I got where very interesting.

To find if search engines know what they are I simply typed the phrase “search engine? in the leading search engines, which maintain their own index and running their own web crawler (No Meta search engines where tested). I expected that they will list the leading search engines on the first result page, but the results where surprising.

Starting with the leading search engine Google: the query “search engine? resulted with searchenginewatch.com as the first result follows by AltaVista, DogPile, Lycos, WebCrawler, Excite and other meta search engines, but no where on the first page I could find the leading search engines like Google itself, MSN, Yahoo and ASK. These leading search engine where only on the second page.

Powered by WordPress