Developers: Think about consequences, implications, performance and related

by Xavier Comments: 0

Today I find myself removing a stored proc from our dbml because it is no longer in use. This stored proc updates the document information to be exported.

I check our source code and indeed no one uses it. So I go ahead and remove it. Is that the end of the story? Usually it is, but I decided to use a bit of common sense to find out if this is the last step or no. It wasn’t. Let me explain and get to the moral of the story quickly:

– We have a requirement to export the information of up to several tens of thousands of documents into Excel/Word/XML in a single go.

– We used to need to make sure that the document information is up to date, and given the source is in XML and XPath is rather slow, we built an intermediate SQL Server table to be able to have speedy exports.

– We made a change and now information is always up to date in the intermediate exports table, however the code that CHECKS if the information is up to date was not removed.

– So the info is not updated as it is already up to date, but we are still checking if we should ACTUALLY DO THE UPDATE. The code is still there.

What does this translate into? An unnecessary and performance degrading step. We need to check to determine if thousands of documents are up to date (and twice but this is another story) when they already are. This means there are two queries that we could easily avoid and save time as they add zero value but take several minutes to execute.


Moral of the story: when making a change don’t focus only on the change, focus also on the side effects of a change.

This should be a rule of common sense for all developers.

Para vivir en Costa Rica hay que ser millonario!

by Xavier Comments: 0

Y pasa con todo. La regla general es que si vale $50 en USA vale 50 000 colones en Costa Rica qie son basicamente el doble. Que aguevado vivir en un pais tercermundista con salarios variables pero no tanto como pais de primer mundo y aun asi pagar todo a precio “premium”. Este es solo un ejemplo de hoy:

El alto costo de la vida en CR

Conference calls – sounds familiar?

by Xavier Comments: 0

Conference calls can be a pain. Nothing replaces face to face conversations however cost can be prohibitive sometimes.

Does this sound familiar?

or
http://conferencecall.biz/

And if it does, then take a bit to look at this site and identify if you are a freelancer, consultant or simiar: http://clientsfromhell.net/

And of course fun for geeks: http://thedailywtf.com/

My take on meetings – Part 2

by Xavier Comments: 0

A couple of years ago I wrote what I thought about meetings. Today I will add another thought

If you have a 30 meeting where there are 10 people sitting down with you, this is not actually a 30 minute meeting. It is instead a 30 min * 10 people = 5 hours loss of potentially very productive time.

Moral of the story: keep meetings short and only invite those who really need to be there.

Problem with geeks deciding on user experience

by Xavier Comments: 0

I got this today from Skype (which of course is from Microsoft because its the way they think). I hate it. Why? Because a geek in Redmond decided that it was a brilliant idea to mine as many contacts as possible from a user’s inbox and then add them on Skype! Brilliant, right?

No.

Problem: in an inbox I don’t only have friends. I have co workers and people I don’t really like. Let me add my friends one at a time, choosing who to add and who not to add. Don’t force me.

skypeforce

PS: It is a very common practice across the board, but one I loathe.

Mis land rovers

by Xavier Comments: 0

Algunas de mis fotos preferidas de Land Rover

Installing Mac OS X Mavericks vs Microsoft Windows 8.1

by Xavier Comments: 0

Steps to update Mac OS X Mavericks
– Open App Store in your Mac, type in Mavericks, click install and enter your credentials.
– Wait for the download, machine reboots and you are done!

Excellent user experience, done in a few minutes and just wait a bit for the download and install. Kudos to Apple.

Steps to update from Windows 8 to 8.1
– Google how to update, read the instructions
– Find out you need to do the updates (to Maps, Skydrive, …) before actually installing
– Read in the article that when you open the Store there will be a huge billboard telling you to update
– Open the Windows Store and find NOTHING
– Search for “8.1” and the only thing you get is all kinds of “My app for 8.1”
– Google again to see what the hell is going on
– Finding this article: http://windows.microsoft.com/en-us/windows-8/why-can-t-find-update-store
– Getting upset because Microsoft still does not get it that people want a simple user experience

I hate updating Win 8.1

I hate updating Win 8.1

Please fire the person in Microsoft that thought the charms thing is ok

by Xavier Comments: 0

I have a quick test that the person that thought of, designed or approved the charms should take.

Test: make them sit down in a computer, open terminal server and get into a Windows Server 2012 machine. Now ask them to try to show the charms bar instantly with the mouse 10 out of 10 times. It is not possible or you would have to be a ninja to do it consistently. If they fail, fire them! (Did Ballmer take the test?)

Most people are not ninjas therefore it is not a nice user experience. Start button was way better. People need immediate reaction for an action, not guessing which one is the exact pixel to stand on top of. Make it simple, have a reaction for an action. Make a little triangle in the corner to fire it up. (You can also fix the screen with the apps but that is a separate topic)

Make this the action that as a reaction

Make this the action that as a reaction

Nonsense…

Add a little button to show the charms bar!

The problem with printers! And how to solve it

by Xavier Comments: 0

Printers are the work of the devil indeed. There are several problems:
– They are cheap but ink is a billion times more expensive than Caviar
– They are complicated to use, require obscure drivers and come with mega bloated useless software
– And the worst one IMHO, there are trillions of models. Just look at the list below for Canon. It is impossible to even memorize 1/100 of this list.

You want to become a billionaire and create a business that thrives and kills all competition? Create a printer company that:
– Has 3 models: personal, pro and business. Personal is only printer, pro scans and copies and business is the same as pro but faster and more resilient.
– Very simple driver. Allows to print with very little complexity and even has a dropbox where you put a word, excel, pdf or image and it is printed right away. A bit of security in the business one but that’s it.
– And the price can be a bit higher, but decent priced replacement cartdriges. You can claim it is a green company as there is less waste. Maybe even replace only a small tube within the cartdrige.

You would create a killer company that will bring Canon, HP, Epson and the rest down in flames!

Really… How many of the printers below you can memorize? It is insane, overly complex, stupid and doesn’t make any sense!

Printers[edit]

Canon printers are supplied with Canon Advanced Printing Technology (CAPT), a printer driver software-stack developed by Canon. The company claims that its use of data compression reduces their printer’s memory requirement, compared to conventional laser printers, and also claim that it increases the data transfer rate when printing high-resolution graphics.[3]

Canon PIXMA iP3000 printer.
BJ series[edit]
Canon BJ-5
Canon BJ-10E
Canon BJ-10EX
Canon BJ-20
Canon BJ-30
Canon BJ-30v
Canon BJ-100
Canon BJ-130
Canon BJ-130E
Canon BJ-200
Canon BJ-200E
Canon BJ-200EX
Canon BJ-220JC
Canon BJ-220JC II
Canon BJ-220JS
Canon BJ-220JS II
Canon BJ-300
Canon BJ-330
Canon BJ535PD
Canon BJ895PD
BJC series[edit]
Canon refers to inkjet printers as bubblejets, hence the frequent BJC-prefix.
Canon BJC-50
Canon BJC-55
Canon BJC-70
Canon BJC-80
Canon BJC-85
Canon BJC-85W
Canon BJC-210
Canon BJC-210SP
Canon BJC-240
Canon BJC-250
Canon BJC-255SP
Canon BJC-600
Canon BJC-600e
Canon BJC-610
Canon BJC-620
Canon BJC-800
Canon BJC-1000
Canon BJC-2000
Canon BJC-2010
Canon BJC-2100
Canon BJC-2110
Canon BJC-3000
Canon BJC-4000
Canon BJC-4100
Canon BJC-4200
Canon BJC-4300
Canon BJC-4400
Canon BJC-4550
Canon BJC-5000
Canon BJC-5100
Canon BJC-5500
Canon BJC-6000
Canon BJC-6100
Canon BJC-6200
Canon BJC-6200S
Canon BJC-6500
Canon BJC-7000
Canon BJC-7100
Canon BJC-8000
Canon BJC-8200
Canon BJC-8500
i series[edit]
In Japan, the models are denoted with a trailing “i”, whereas in the rest of the world they are denoted with a leading “i”. While the 50i corresponds to the i70, for all other corresponding models the numerical model numbers are identical. The “X” denotes models sold under special dispensation by retail outles in Europe.
Canon i70
Canon i80
Canon i250
Canon i450
Canon i450X
Canon i455
Canon i455X
Canon i470D
Canon i475D
Canon i550
Canon i550X
Canon i560
Canon i560X
Canon i850
Canon i860
Canon i865
Canon i900D
Canon i905D
Canon i950
Canon i960
Canon i965
Canon i990
Canon i6100
Canon i6500
Canon i9100
Canon i9900
Canon i9950
Canon 50i
Canon 80i
Canon 450i
Canon 455i
Canon 470PD
Canon 475PD
Canon 550i
Canon 560i
Canon 850i
Canon 860i
Canon 865R
Canon 900PD
Canon 950i
Canon 960i
Canon 990i
Canon 6100i
Canon 6500i
Canon 9100i
Canon 9900i
SmartBase series[edit]
MPC190 aka F10
MPC200 aka F20
MPC360, MPC370, MPC390
MPC400 aka F30 (based on S600)
MPC600F aka F50 aka T-Fax 7960
F60
F80
MultiPASS Series[edit]
10
C20
C30
C50
C70
C75
C80
C100
C530
C545
C550
C555
C560
C635
C755
C2500
C3000
C3500
C5000
PIXMA series[edit]
Since about 2005 Canon introduced a numbering scheme for some whereby the least significant (non-sero) digit signifies the geographic region (“3” signifying Japan) the device is sold in. This leads to a large number of models, all belonging to the same family, but possibly incompatible to some degree, and also makes it difficult to ascertain whether a device is unique or part of an existing family. The software driver filename will often use the family designation.
Some MP devices have fax capability (MP740). R=remote
Canon PIXMA iP1000
Canon PIXMA iP1200
Canon PIXMA iP1300
Canon PIXMA iP1500
Canon PIXMA iP1600
Canon PIXMA iP1700
Canon PIXMA iP1800
Canon PIXMA iP1980
Canon PIXMA iP2000
Canon PIXMA iP2200
Canon PIXMA iP2500
Canon PIXMA iP2600
Canon PIXMA iP2700
Canon PIXMA iP3000
Canon PIXMA iP3100
Canon PIXMA iP3300
Canon PIXMA iP3500
Canon PIXMA iP3600
Canon PIXMA iP4000
Canon PIXMA iP4000R
Canon PIXMA iP4200
Canon PIXMA iP4300
Canon PIXMA iP4500
Canon PIXMA iP4600
Canon PIXMA iP4700
Canon PIXMA iP4800 (iP4830)
Canon PIXMA iP4900 (iP4930)
Canon PIXMA iP5000
Canon PIXMA iP5200
Canon PIXMA iP5200R
Canon PIXMA iP5300
Canon PIXMA iP6000D
Canon PIXMA iP6100D
Canon PIXMA iP6210D
Canon PIXMA iP6220D
Canon PIXMA iP6310D
Canon PIXMA iP6320D
Canon PIXMA iP6600D
Canon PIXMA iP6700D
Canon PIXMA iP7100
Canon PIXMA iP7200 (iP7230)
Canon PIXMA iP7500
Canon PIXMA iP8100
Canon PIXMA iP8500
Canon PIXMA iP8600
Canon PIXMA iP9910
Canon PIXMA iP90
Canon PIXMA iP90v
Canon PIXMA iP100
Canon PIXMA mini220
Canon PIXMA mini320
Canon PIXMA mini360
Canon PIXMA iX4000
Canon PIXMA iX5000
Canon PIXMA iX6500 (iX6530)
Canon PIXMA iX7000
Canon PIXMA MP110
Canon PIXMA MP130
Canon PIXMA MP140
Canon PIXMA MP150
Canon PIXMA MP160
Canon PIXMA MP170
Canon PIXMA MP180
Canon PIXMA MP190
Canon PIXMA MP210
Canon PIXMA MP220
Canon PIXMA MP237
Canon PIXMA MP240
Canon PIXMA MP250
Canon PIXMA MP258
Canon PIXMA MP260
Canon PIXMA MP270
Canon PIXMA MP280
Canon PIXMA MP287
Canon PIXMA MP360
Canon PIXMA MP370
Canon PIXMA MP375R
Canon PIXMA MP390
Canon PIXMA MP450
Canon PIXMA MP460
Canon PIXMA MP470
Canon PIXMA MP480
Canon PIXMA MP490
Canon PIXMA MP493
Canon PIXMA MP495
Canon PIXMA MP500
Canon PIXMA MP510
Canon PIXMA MP520
Canon PIXMA MP530
Canon PIXMA MP540
Canon PIXMA MP550
Canon PIXMA MP560
Canon PIXMA MP600
Canon PIXMA MP600R
Canon PIXMA MP610
Canon PIXMA MP620
Canon PIXMA MP630
Canon PIXMA MP640
Canon PIXMA MP700
Canon PIXMA MP710
Canon PIXMA MP730
Canon PIXMA MP740
Canon PIXMA MP750
Canon PIXMA MP760
Canon PIXMA MP780
Canon PIXMA MP790
Canon PIXMA MP800
Canon PIXMA MP800R
Canon PIXMA MP810
Canon PIXMA MP830
Canon PIXMA MP950
Canon PIXMA MP960
Canon PIXMA MP970
Canon PIXMA MP980
Canon PIXMA MP990
Canon PIXMA MG2100
Canon PIXMA MG2200
Canon PIXMA MG3100
Canon PIXMA MG3200
Canon PIXMA MG4100
Canon PIXMA MG4200
Canon PIXMA MG5100
Canon PIXMA MG5200
Canon PIXMA MG5300
Canon PIXMA MG5400
Canon PIXMA MG6100
Canon PIXMA MG6200
Canon PIXMA MG6300
Canon PIXMA MG8100
Canon PIXMA MG8200
Canon PIXMA MX300
Canon PIXMA MX310
Canon PIXMA MX320
Canon PIXMA MX330
Canon PIXMA MX340
Canon PIXMA MX350
Canon PIXMA MX360
Canon PIXMA MX370
Canon PIXMA MX410
Canon PIXMA MX420
Canon PIXMA MX430
Canon PIXMA MX510
Canon PIXMA MX700
Canon PIXMA MX710
Canon PIXMA MX7600
Canon PIXMA MX850
Canon PIXMA MX860
Canon PIXMA MX870
Canon PIXMA MX880
Canon PIXMA MX882
Canon PIXMA MX890
Canon PIXMA MX892
Canon PIXMA MX922
Canon PIXMA E500
Canon PIXMA E600
Canon PIXMA Pro9000
Canon PIXMA Pro9000 Mark II
Canon PIXMA Pro9500
Canon PIXMA Pro9500 Mark II
Canon PIXMA PRO-1
Canon PIXMA PRO-10
Canon PIXMA PRO-100
SELPHY series[edit]
The DS700 and DS810 are inkjet printers, all the other models are thermal dye-sublimation printers using ALPS technology.
Canon SELPHY DS700
Canon SELPHY DS810
Canon SELPHY ES1
Canon SELPHY ES2
Canon SELPHY ES3
Canon SELPHY ES20
Canon SELPHY ES30
Canon SELPHY ES40
Canon SELPHY CP-10
Canon SELPHY CP-100
Canon SELPHY CP-200
Canon SELPHY CP-220
Canon SELPHY CP-300
Canon SELPHY CP-330
Canon SELPHY CP400
Canon SELPHY CP500
Canon SELPHY CP510
Canon SELPHY CP520
Canon SELPHY CP530
Canon SELPHY CP600
Canon SELPHY CP710
Canon SELPHY CP720
Canon SELPHY CP730
Canon SELPHY CP740
Canon SELPHY CP750
Canon SELPHY CP760
Canon SELPHY CP770
Canon SELPHY CP780
Canon SELPHY CP790
Canon SELPHY CP800
Canon SELPHY CP810
Canon SELPHY CP900
S series[edit]
Canon S100
Canon S200
Canon S300
Canon S330
Canon S400
Canon S450
Canon S4500
Canon S500
Canon S520
Canon S530D
Canon S600
Canon S630
Canon S750
Canon S800
Canon S820
Canon S820D
Canon S830D
Canon S900
Canon S9000

Unfinished projects and I never finish anyth….

by Xavier Comments: 0

An image is worth 1000 words…

neverfinishanyt

Well, it is not actually true. I do finish some of my personal projects here and there. However this post has been in my drafts for over 2 months!