Sat Dec 24, 2011 by brett
Here is a list of the top 100 TV series on IMDB as of today. I have ordered them based on year produced, and then sorted them within each year based on 60% IMDB score and 40% the number of people who voted for each title. I am personally more interested in the newer stuff that is being produced that people are liking, so this was my query to data-mine the results.
Mon Dec 19, 2011 by brett
Tim Ferris (of the The 4-Hour Work Week fame), has got a post out on “Hyper-decanting” wine to “age” it very quickly.
Essentially the trick is to use a stab-blender for 20 seconds to aerate the wine very quickly. It’s definitely something I’ll run a double-blind test on over Christmas!
I’ve just been reading this Forbes article called “The Rise of Developeronomics”. The author argues that because increasingly software is the core value proposition that differentiates companies from each other, that software developers are more and more becoming the wealth creators in society. The author recommends investing in software developers as a way of leveraging your own capital. This article builds on an earlier article by David Kirpatick called “Now Every Company is a Software Company”.
The article is making the point that programmers are becoming a core economic factor for successful companies, so much so that large companies are buying smaller companies purely for their programming teams. He points out that companies such as Google nurture young programming talent as a strategic investment.
Of course the message is hugely appealing to me as a software developer. My own opinion is that technology is exponentially increasing the potential “value space” for possible investment. For example, consider the introduction of Facebook. With that particular advance in social networking, it opened up all sorts of opportunities for individuals and companies to promote themselves and establish new kinds of dialogues with their clients. With this advance, a large number of opportunities were created, which in turn leads to more specialised development that wasn’t possible before the large-scale take up of social networking. Thereby creating a lot more potential work for a larger number of programmers.
If companies don’t keep up with the introduction of new technologies, they run the risk of falling behind their competitors. Not only those competitors who are able to utilise technology to make their workers more productive, but also those competitors that make better use of social networks and internet search to gain new customers and retain older ones, and data modeling and analysis to determine new markets and optimise existing ones. It seems to me that not only are developers the creators of wealth, but we are currently living in a technological arms race.
An easy way to generate a unique, memorable but secure password for each website or service you visit is to apply the following recipe:
Start with a base word. This can be anything, but the weirder the better. This will stay consistent across your passwords. For the purposes of explaining this technique, the base word will be “Redux”.
Next take the name of the website or service. Let’s say we are creating a password for Reddit. Take a number of specific letters from the name. Let’s say that we always take the first 2 letters from the site name. This gives us the letters ‘R’ and ‘e’. If you want, instead of taking the first 2 letters you could take the first and last letter, or the first 3 letters. It doesn’t matter. What matters is to always take the same number of characters from the same position of each website.
Next, use an algorithm. This algorithm will be unique to you, but is a way of mixing the letters you have extracted from the website into your base word. A simple algorithm might be to prepend the letters to your base word. Your password then becomes “ReRedux”. A slightly better algorithm would be to increment the letters by one character. This means that “Re” -> “Sf”. Then merge the resultant characters into the first and third positions of your base word. Your password for Reddit then becomes “SRfedux”.
This combination of using a unique base word, that is consistent across all your passwords, but modifying it using an algorithm based on the website name will allow you to construct passwords that you can remember, but are different for each site you need to log in to.
EDIT: OK, based on the Reddit comment thread it turns out that I didn’t properly explain the rationale for using a combination of the website name and some constant stream of characters is to try and create a unique password for each individual site. You want to have a unique password per site because a lot of sites store your password in plain-text. If one site gets cracked, you don’t want the attackers to be able to compromise your identity on other sites you have an account on. Also, using a passphrase or the first letters of words in a passphrase as your base word is obviously more secure than using a dictionary word.
EDIT 2: It seems people are worried about the entropy of the generated passwords. Obviously, they are not completely random, but to give you an idea on how secure they can appear, here are some passwords generated from the same base word and algorithm for different sites:
The algorithm that generated these passwords was fairly simple. A slightly more complex algorithm would generate different length passwords. The key takeaway is that if an attacker gets hold of the password for the reddit site, it is extremely unlikely that they will be able to reverse-engineer the passwords for the other sites.
I’ve been listening to Slate’s Negotiation Podcasts, which I think are excellent. There are currently 7 episodes (although more are on their way), each about 10-15 minutes in length. Below are my notes summarising what I’ve learned:
Before the negotiation
Firstly, try and build information profile about your counter-party. You are interested in working out what their utility function (or value profile) is. You want to try and determine their “walk-away” number - the price at which they will walk away from the negotiation. You want to try and work out what alternatives they have to an agreement. What pressures do they have to getting an agreement?
Also, determine what your walk-away price is. What is the point at which you will walk away from the agreement? Try and come up with alternatives, this will help take the pressure off you during the negotiation. Work out what your utility profile is - what are your priorities? What points won’t you compromise on?
During the negotiation
Firstly, you should set the initial price. This will help determine the expectation range that your counter-party has. The only time when you should allow the counter-party to determine the initial price is if they have a lot more information about what the item/service is worth than you do.
With your initial price, you take your estimation of the negotiating counter-party’s walk-away price and offer slightly lower. Don’t go too low. You want the counter-party to take your initial offer seriously.
Also, try and establish rapport before you begin the negotiation. You can reveal unimportant information about yourself to help the flow of information. Ask questions - try and determine what is important to them. Are there any pressures on them to get the deal done? Are there any time pressures involved? Do other people have any expectations on the results of the negotiations?
Sometimes some small things may give you an edge. Having the appearance of authority may help you during the negotiation. Helping to boost the attractiveness to the counter-party by making the object of the negotiation appear scarce. “Only one left, so you should get it now”. Social proof - all these other people have also bought this item and been completely satisfied.
It’s important during the negotiation to try and seek mutual benefit.
If someone is over-aggressive or too emotional during the negotiation, take a time-out. Don’t mirror negativity. If the counter-party starts with with an insultingly low offer try a technique called “Re-Anchoring”. The Re-anchoring technique involves making a counter-proposal, and then repeating it numerous times. You are trying to “anchor” your counter-proposal in their mind.
If you get stuck in a negotiation, try adding in embedded options. For example; if [some situation] happens, then you must do [this other thing].
Closing the negotiation
Create a solution “package”. This is a complete solution - listing all the negotiating points and your proposal. Don’t try and negotiate each point separately, seek agreement for a “package” of solutions.
Potentially try embedding options into the solution.
Also, once you have an agreement, think about shelving the agreement temporarily to try and “re-factor” it, i.e. to try get a better agreement. You can always come back to your original agreement if no better solution can be found.
Take your time during the negotiation.
Wed Nov 30, 2011 by brett
Python’s IMAPv4 client library imaplib is a really light-weight wrapper over the IMAP4 protocol. As such, it isn’t that intuitive to use. The best reference I’ve found on it is a cheat-sheet over here.
Basic usage is to create a IMAP connection object, using the
imaplib.IMAP4_SSL() functions. Login to the server. You then
select() a mailbox and
search() within it to retrieve messages. If the search was successful, it will return a tuple with the first element being “OK”, and the second element is an array with the first item being a list of matching message identifiers. Each identifier can be passed to the
Search queries look like
'(FROM "email@example.com) (SUBJECT "Coolio")'. You can also use
Sun Nov 27, 2011 by brett
I have just been importing some music into iTunes from an external drive. Sometimes iTunes doesn’t recognise songs as belonging to the same album, even if they have the same Album name.
The solution is to select all the files in iTunes that belong to the same Album. Right-click and choose “Get Info” from the menu (you may get a warning here that you are changing multiple items). You should see them as all having the same Album name. If they don’t then edit the “Album” field with the name of the Album. Secondly, set the “Album Artist” field to be “Various Artists”. If you click OK, you should now see the music in iTunes shown as being part of the same Album.
I quite often then go to the “Options” tab, and set the option “Part of a Compilation” to be “Yes”, and because a lot of my music tends to be electronica and dance music, I also set “Gapless Album” to be “Yes”.
Thu Nov 24, 2011 by brett
I just picked up my Jawbone UP from the Post Office last night, so thought I’d post my first impressions.
Firstly, the wristband is pretty awesome. Mine is black and is made out of a rubbery plastic that feels really comfortable. The wristband itself is supposed to be water resistant so you can wear it in the shower. At one end of the wristband is a metal cap which, when removed, reveals a mini-jack plug for plugging the band into your iPhone. The other end is a button, that switches the band into measuring different types of activities - exercise, walking and sleeping.
To get your activity data with your iPhone, you need to plug it into the audio socket of the phone and press the button to sync. So far this hasn’t been too onerous, but I can imagine it being a little bit of a pain eventually. The iPhone app allows you to track your time spent exercising, your movements and sleep patterns. You can get it to vibrate if you have been inactive for too long, or to wake you up in the morning.
Overall, I’m really excited about this technology. It’s had a bit of a negative review here, but I think the Jawbone UP is going to be great to play with!
Mon Nov 21, 2011 by brett
Bryan Morris has a post about how he has set up Emacs using org-mode to implement a Kanban board. He uses table mode within org-mode, and hyper-linking to link items within the table, to actual org-mode tasks. To me, this setup seems a little clunky, so I thought I’d describe my current system.
To me, the central point of Kanban is to keep the Work-in-Progress queue small to optimize your state of flow. I have a “backlog.org” org-mode file in which I keep track of all my tasks, large or small. Any new tasks go in here.
I have a keystroke set up in Emacs that will open my to-do file for the day. All to-do files live in a common directory, are named “YYYYMMDD.todo”, and are opened in org-mode. From my backlog file, I transfer a small number of items to my daily to-do file (usually 2 or 3). I then concentrate on these items until they are complete. Only when they are all marked as DONE, CANCELLED or WAITING do I move another couple of items to the daily to-do list.
I also try and time-box throughout the day as rigorously as I can. To do this, I use the Due app on my iPhone. This system has been working really well for me.
Wed Nov 16, 2011 by brett
This morning I was researching a fast yoga workout when I came across the Five Tibetan Rites.
These exercises supposedly came from a retired British Army Colonel who was stationed in Tibet, and written up in the book “The Eye of Revelation” by Peter Kelder in 1939. Apparently the colonel stayed at a monastery populated by extremely long-lived monks who practiced these exercises every day.
Although the origins sound quite dodgy, apparently the exercises have been verified as a form of Tibetan Yoga. The key point for me is that the exercises can be done in 10 minutes a day.
There are 5 exercises:
The first is extremely lame and is essentially spinning around with your arms outstretched, turning from left to right. Lame. Ignore.
The second exercise is leg raises, while raising the head to the chest at the same time. Good core strength workout.
The third exercise seems to be stretching forward from a kneeling position to child’s pose, and then back to a seated back bend.
The fourth exercise goes from seated staff pose, and then pushing up to bridge pose.
The fifth exercise goes from downward dog to cobra pose.
Apart from the first exercise, which seems quite silly and pointless, these sound like a great set of exercises for a quick workout routine.
Here are some links to THT demos on youtube: