How to create products with the least amount of complexity

02 Mar 2015 • Permalink

A truly simple product is built around a deep understanding of the problem it’s meant to solve. This is challenging because it requires us to set aside our way of thinking and develop empathy for our users’ thought processes. When our customers ask for a feature, we need to understand why they want that feature. Getting to the real problem is key before we can figure out how to solve it. Without this understanding, we build things for the wrong reasons, which makes it difficult — or even impossible — to remove the unnecessary parts.

How to setup CrashPlan Cloud Backup on a Synology NAS

04 Nov 2014 • Permalink

A very detailed post about setting up CrashPlan Cloud Backup on a Synology NAS running DSM 5.0

Remember, any good backup strategy follows the Backup Rule of Three.

3 copies of anything you care about - Two isn’t enough if it’s important.
2 different formats - Example: Dropbox+DVDs or Hard Drive+Memory Stick or CD+Crash Plan, or more
1 off-site backup - If the house burns down, how will you get your memories back?

Acrobat Forms - Execute javascript on document open

23 Oct 2014 • Permalink

This is a simple trick to run a javascript code while opening an Acrobat Form. I use it very often in server side generated forms to change the required flag based on fields value.

You need to add a new document level javascript with this code.

var opened = false;

function onOpen() {

    if(!opened) {
        
        // Code to be executed on document open

        opened = true;
    }
   
}

onOpen();

You can add a document level javascript from Advanced > Document Processing > Document JavaScripts in Acrobat 9 and from Tools > JavaScript > Document JavaScript in Acrobat 10

Remove .DS_Store Files From A Git Repository

19 Oct 2014 • Permalink

Remove existing files from the repository:

find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch

Add the line .DS_Store to the file .gitignore, which can be found at the top level of your repository (or created if it isn’t there already). Then

git add .gitignore
git commit -m '.DS_Store banished!'

Removing orphaned users from a SQLServer database

18 Oct 2014 • Permalink

If you are using SQLServer probably you had to restore a database from a backup and got stuck with an orphaned user that was no more associated with a login.

Microsoft provides a stored procedure to remove this orphaned user:

exec sp_revokedbaccess 'Orphaned_User_Name'

You could get an error because the user still owns a schema. To find out which schema is bound with the user you can use this query

SELECT name FROM  sys.schemas WHERE principal_id = USER_ID('Orphaned_User_Name')

And then drop the orphaned user from the schema

ALTER AUTHORIZATION ON SCHEMA::SchemaName TO dbo
GO
DROP USER Orphaned_User_Name

Welcome to iPhone 6, friend

06 Oct 2014 • Permalink

We have spent countless hours engineering the thinnest, most powerful smartphone in the world onto which you will now put a case. We have burned untold person-years, an innumerable number of lifetimes screaming at assembly line workers to achieve perfect tolerances for you to cover with a phone glove.

One of the most satisfying industrial design elements of the iPhone 6 is the curved glass, over which your thumb will never glide once you fit upon it a furrowed hunk of dead cow.

Synchronize Sublime Text packages on multiple computers

02 Jan 2014 • Permalink

Finally a way to synchronize Sublime packages beetween my home iMac and my work ThinkPad.

Manage posts excerpt in Jekyll

24 Nov 2013 • Permalink

Jekyll has a built in excerpt feature, but I wanted more control on how excerpt is generated and displayed, so googling around I found two nice posts that explain how to manage it and display a “Read on” button that links to the article page.

This is how it works:

  • Check if the post contains the excerpt separator
  • If the separator is found, split the post content in an array, print the first element and a link to the full article
  • If there isn’t a separator just display the post content

This is how I modified my index.html page.

{% if post.content contains '<!--more-->' %}
	
	{{ post.content | split:'<!--more-->' | first }}
	
	<p><a href="{{ post.url }}">Continue reading</a></p>

{% else %}

	{{ post.content }}
	
{% endif %}

Custom notifications for a specific status change in Jira

20 Nov 2013 • Permalink

The default Jira notification scheme sometimes might look like a spam bot, especially if you have a lot of users actively using it, so for one of our project we decided to create an empty notification scheme and add just one notification for a specific status change.

Jira doesn’t have a built in notification for specific status changes but fortunately adding a new one is quite easy.

Continue reading

Update table with data from another table using SQL

19 Nov 2013 • Permalink

A simple but useful SQL snippet that lets you update a table using data from another table

UPDATE
     Table1 
SET
     Table1.col1 = Table2.col1,
     Table1.col2 = Table2.col2 
FROM
     Table1 
INNER JOIN     
     Table2 
ON     
     Table1.id = Table2.id