Ever since homes starting to have more than one computer similarly home servers are becoming common. The most common server in homes nowadays are the in-prominent WiFi router — the central distributor of Internet connectivity. File servers are also becoming common — typically inexpensive Network-Attached Storage (NAS) or “Personal Cloud” devices — for centralizing backups and functions as the home’s media center storage. Some of these home NAS even feature an HDMI output port for playing movies directly from its hard drive platters.

Continuously running a home NAS may not be the best thing to do. Unlike a refrigerator, a NAS does not need to “keep its content fresh” and be powered on 24×7. It needs to be running only when someone needs to use it — just like a television or air conditioner. Moreover, turning it off would provide cost savings in terms of electricity costs and extends the life of the device itself. That is, unless people in your home live in vastly different time zones and at every hour there would always be someone who is home, awake, and need to use the file server.

A typical two-drive home NAS would cost about $44 annually in electricity charges when kept constantly running. Well, at least mine does. This figure was calculated from our home’s WD MyCloud EX2 — a low-power ARM-based file server with two 4TB WD Red drives. WD rates the device at 23.3 watts when fully operational. Where I live, the power company charges 21.39 cents per kilowatt-hours. Of course, your own figures would be differ – but you could use the following Calca formula to calculate your own power consumption estimates.

The more important consideration would be the longevity or the hard drives themselves. Notably the hassle that you’ll get when a drive fails and the associated risk to your data. Hard drives typically lasts about three years when run continuously. According to Backblaze, their drives’ failure rates starts to increase starting at age three and they expect that half will die at age six. If your NAS configuration is not running in a fail-safe configuration (such as RAID 1 or RAID 5), having a failed drive would spell disaster to your data. Even those redundant configurations would also be vulnerable during a recovery — when a drive just failed and the enclosure is currently rebuilding the array, you can’t afford to have a second failure.

Note that the vulnerable period is by no means a short amount of time. It’s from the time you notice that a drive failed, ordered a new one, installing it to the enclosure, until the time that it finished rebuilding — this could take a week in total for a home NAS. From personal experience, it took almost two days for a rebuild to finish and the unit becoming fully operational — copying about 3TB of data to a newly-installed drive in our WD MyCloud EX2.

In any case, having some down-time would be good for those notably mechanical drives since it gives them a chance to cool down. This allows the metals to return to its relaxed state and prevents permanent warping. Especially important in tropical areas where these drives typically operates at 60℃ because room temperatures are typically 27℃ – 34℃.

Good network drives for the home would have a power scheduler. You can set it up such that whenever everyone is asleep then your drives would be asleep as well – saving power and prolonging its lifespan. Another likely candidate for downtimes are the times when everyone are at work or school. The better NAS firmware would have a day-of-week option in its scheduler so you can use different weekday and weekend downtime schedules.

For example, here’s how you set a schedule for WD’s range of semi-pro network drives:

Log in to the NAS’ web-based administrative interface.

Open the Settings tab.

Look in the Energy Saver section

Click on Configure.

Select the Power Schedule option

Setup the power on and power off times to match your household’s schedule.

You might be thinking, “What if on an odd day – in the middle of the night – I needed to use the drive?” Then Wake-on-LAN is your answer. Wake-on-LAN is a standard network protocol to bring devices out of standby. In short it works by broadcasting the identity of the device to activate on the local area network and the network adapter of the device would pick it up and bring the rest of the unit into full power mode.

There are specialized network management tools to use Wake-on-LAN. But you can also use the following Python script. Simply modify the ethernet address (also called MAC address – which stands for Media Access Control and not a line of computers made by Apple) in the script to match your NAS and the broadcast address to match your home network and you’re ready to go. Install the script in your location of choice and you’ll have a command line tool to wake your network drive.

On Unix-like systems (which includes macOS), save this as a file named wakeup-mydrive in the /usr/local/bin folder and change the permission to be executable using as follows. Use the Terminal app on macOS to access the command line. If you are using other operating systems, please make adjustments appropriately to your environment.

chmod +x /usr/local/bin/wakeup-mydrive

You can get a device’s ethernet address easily using the ARP command. Plug in your device’s IP address in the following command to get its corresponding MAC address.

Those series of six numbers separated by colons comprises the MAC address of the device having the IP address on the left.

Whereas to get the broadcast address you will need to calculate it from your home network’s IP address range and subnet mask. Log in to your home router’s administrative interface and look for these two values, usually under the “DHCP Configuration” or “LAN TCP/IP Setup” heading.

The router’s IP Address. Usually this would be something like 192.168.1.1

IP Subnet Mask. This often looks like 255.255.255.0

Then you’ll need to calculate the broadcast address unique to your network. Simply convert the router’s IP address into its binary representation, perform a bitwise NOT operation, and then combine it with the subnet mask using a bitwise OR.

broadcast address = IP address | ~(subnet mask)

Finally an easy way getting the IP address of the drive is to use the ping command. Replace the command below with your drive’s hostname and then you can get its corresponding IP address.

We hear you. That’s why we’re working on a Wake-on-LAN application to make it easier to wakeup your NAS or other devices in your network. We’re starting with the Apple TV since this covers the main use case of “wanting to watch videos at night” and running a command line tool isn’t much of an option from the TV. Stay tuned for support on other platforms.

If you’re interested, sign up on the early adopter list in the form below. As these beta user slots are limited, we can’t guarantee a place for everyone. Sign up quickly and don’t get left behind.

Get Early Access

* indicates required

Email Address *

First Name

Last Name

That’s all for now. Until next time.

]]>https://basilsalad.com/how-to/save-money-schedule-server/feed/02887Choosing between SWIFT and Remittancehttps://basilsalad.com/how-to/choosing-swift-remittance/
https://basilsalad.com/how-to/choosing-swift-remittance/#commentsWed, 01 Jun 2016 16:04:00 +0000http://basilsalad.com/?p=2596When you are a migrant worker, you probably need to move some money back to your home country. There are relatively recent offerings of cheaper money-transfer services, typically advertised as remittance – both from banks or specialist companies. Some even promises free of transaction charges. Then you might wonder, with so many options how can you choose the best one? What are the difference between these services and regular telegraphic transfers?

As with many other things in life there is no one best option for all circumstances. It all depends on at least these factors:

Transaction amount. I.e. how much you’re transferring.

The currency pair (which currencies are used to send money and what currency it is being received).

How fast you want it completed. That is, do you want the money moved in the same day or whether you’re okay of waiting 3-4 days.

At one point, I was faced with this same problem. I needed to transfer a significant sum between my account in Singapore to the bank account I have in Indonesia. How much money? Let’s just say it’s a few Mac Pro computers’ worth. Fortunately I control the accounts on both the sending and receiving end, hence that simplifies things quite a bit. Most notably any fees involved will be paid by me – no matter which account that gets charged at the end. Furthermore I would absorb the impact of currency conversion differences. Things won’t be so straightforward if I would be transferring money for making purchases. In those situations, the receiving account would need an exact amount as per their invoice and they can’t be expected to pay any fees either.

I have the option of using either DBS Remittance or the more traditional SWIFT (the organization, not the programming language) network. DBS advertises its remittance services as no-fee transactions. However there are non-negligible charges if I go with the SWIFT option.

So which one is best? In short DBS Remittance would be better for smaller amounts of money. Whereas beyond a certain amount, SWIFT would be better option. Generally DBS Remittance offer significantly worse currency conversion rates than the market and that’s how they make their money. But at smaller amounts, any conversion rate advantage offered by SWIFT gets negated by its fees.

Bank Indonesia – Pekanbaru

What’s the threshold to choose between DBS Remittance and SWIFT? In general, if you’re transferring at least MacBook’s worth of money (even the lowest-end one) or more, consider going through SWIFT. Otherwise if it’s more of a pocket money kind of thing, DBS Remittance would probably be cheaper. Remember that currency rates keeps fluctuating and similarly the threshold also changes. Hence it won’t be much useful to provide a number for you here. But if you follow along this post, you will be able to get the mathematical formulas that you need to plug in your own amounts and rates that you can use to make the decision when encountered with a similar situation.

All of the calculations here are done through Calca – a markdown-calculator software. Hence all formulas are written in Calca’s syntax. Basically you write formulas as if you’re typing a normal text file and Calca can interpret calculations interspersed with text. In fact, this entire blog post was written as a single Calca file and formatted using markdown. Thus you can copy this post and paste it into Calca to get you started in making the calculations that suits your unique situation.

Note that in Calca, the => symbol means calculate this (or as according to the app’s documentation, it means therefore). The symbol makes Calca take whatever expression at its left side and either simplify it or gives a numeric result on the right side.

Possible Scenarios

We’re going to investigate three scenarios of moving money between Singapore and Indonesia. In all three cases, the sending bank would be DBS and the receiving bank would be BCA. Hence the source currency would be Singapore Dollars (SGD) and the receiving currency would be Indonesian Rupiahs (IDR). The accounts in both banks are owned by the same person.

These are the three options that I considered:

Use DBS Remittance to send in IDR to BCA.

Use DBS SWIFT to send USD to BCA and the receiving bank will convert to IDR.

Use DBS SWIFT to send SGD to BCA and the receiving bank will convert to IDR.

Probing for Information

First we need to gather information on exchange rates and fees applicable. All of these rates and fees were collected as of 27-May-2016, thus you might see different values by the time you read this.

DBS doesn’t list their remittance exchange rates on their website. Therefore we need to do some probing. I’ve managed to get DBS’ exchange rates by logging in to DBS’ e-banking web app and attempting to perform a remittance but without confirming it.

On a side note, at least DBS allows me to do this. OCBC is totally mysterious – they don’t list their rates anywhere that’s easy to find and they don’t allow me to see how much the exchange rate would be without executing it.

So I’ve plugged in this amount as input for how much money to transfer. There’s nothing special about the amount – it’s just a reasonably large round number.

dbs_sgd = 100000 SGD

At that time DBS quote that I’ll get the following amount in Rupiah if I make the transfer via remittance.

dbs_idr = 970,873,786 IDR

Now we get the actual exchange rate that was quoted to me. In a sense, DBS is giving me a price (i.e. quoting) which says they’ll sell me that amount of IDR for the given SGD. Remember that DBS Remittance is a fee-less option – although not really free, which you should see better later on.

dbs_rate_idr_sgd = dbs_idr / dbs_sgd => 9,708.7379 IDR/SGD

I’ve also tried the same trick using DBS’ SWIFT transfer option. They said they would sell me the following USD amount for that hundred thousand Singapore dollars. Fees not included of course.

dbs_usd = 72,296.12 USD

Now we derive the SWIFT options’ exchange rate between SGD and USD.

dbs_rate_sgd_usd = dbs_sgd / dbs_usd => 1.3832 SGD/USD

Now let’s look at the other bank. BCA lists their exchange rates publicly, so there’s less guesswork involved. The following rates were taken from BCA’s TT Counter buy rates. In essence, they’re going to buy USD or SGD and pay with IDR through the telegraphic transfer channel.

Notice that BCA has slightly better IDR/SGD exchange rates than DBS Remittance – 9849 IDR for each SGD than DBS’ 9708. This may look small, however if you’re transferring a few Mac Pro’s worth of money, this difference could mean a few extra Magic Trackpad.

Transaction Options

Now let’s encode these three transaction options into formulas. We’ll write a few functions which calculate how much would the resulting IDR value for a given SGD value sent.

As DBS Remittance is a no-fee option, calculating the IDR value received would simply by multiplying its exchange rate.

dbs_remittance_idr(sgd_value) = sgd_value * dbs_rate_idr_sgd

Then we’ll write a few functions for calculating the two various SWIFT options. First we define one to calculate the fees incurred given a transaction amount. Next we write functions to estimate the value obtained by transferring money through it.

DBS’ SWIFT fees has a base fee and a variable fee depending on the value bracket of the money being transferred. Based on the rates they publish, we define the corresponding SWIFT transaction fee function as follows.

In DBS’ e-banking screen for SWIFT money transfers, they encourage sending money using USD values unless the receiving bank prefers otherwise. Based on this we take into consideration the method where we send SGD through USD to reach an IDR account. In this setup, the sending bank converts the SGD value into USD whereas the receiving bank converts it into IDR. Moreover the SWIFT transaction fees are borne by the sender.

Finally we consider the more straightforward method of sending SGD value directly through SWIFT and let the receiving bank converts it to IDR. As before, fees are borne by the sender and deducted in SGD.

Sample Transactions

Now let’s plug in a few values and see how these methods compare. We’ll sample a number of SGD values and see how much would be the corresponding IDR values given a transaction method. Then we will see at what thresholds would one transaction method would be better than the other.

If you’re mathematically inclined, you could solve this numerically – or even analytically. But frankly since these are all linear functions, plugging in sample values have provided the rough threshold that I needed to make a decision.

Now let’s plug in some very large amounts. Large enough to warrant serious consideration and thinking but not astronomical values (i.e. nowhere near Bill Gates’ net worth).

From the examples below of transferring 100k and 10k SGD the results are pretty clear that transferring through SWIFT as SGD is the winner. That is, the function dbs_bca_swift_sgd_idr yields more IDR amounts for the given SGD values.

Now let’s try a bigger value of two thousand Singapore dollars. Going through SWIFT is still the winner but the difference is quite small. The difference of dbs_remittance_idr and dbs_bca_swift_sgd_idr at this point is about 34k IDR. To put things into perspective, that amount would probably buy you a simple lunch from a street vendor in Jakarta and probably won’t buy you a Big Mac there.

Just for the sake of curiosity, let’s zoom in between those two values. At fifteen hundred Singapore dollars, DBS Remittance becomes attractive again compared to Swift. Similarly the difference is about the cost of one sidewalk lunch in Jakarta.

Notice that in all cases that we tested, going through USD was never the most attractive option. That is, it was always somewhere in between remittance or directly SWIFT-ing Singapore dollars. Lesson learned is that don’t always trust your bank – they’re there to take care of their own butt, not yours.

This concludes today’s post and analysis. Hopefully this is useful for you and your situation. Until next time.

]]>https://basilsalad.com/how-to/choosing-swift-remittance/feed/12596Personal Scrum on OmniFocushttps://basilsalad.com/how-to/personal-scrum-omni-focus/
https://basilsalad.com/how-to/personal-scrum-omni-focus/#commentsMon, 07 Sep 2015 23:00:00 +0000http://basilsalad.com/?p=2486You’re doing a one-person project and you feel like you need to manage your tasks more effectively? Maybe you should try Personal Scrum. This is the agile approach to software development but trimmed down extensively to support just about any personal projects of building just about anything – not just software. As Scrum brings immense improvement to a software development team’s productivity and satisfaction, personal scrum should also have a similar effect to a one-person project.

What is scrum?

Scrum methodology have gotten popular recently in software development circles. It has roots in Toyota’s just-in-time paradigm that says to only produce parts whenever there is a demand for it and only make just the right number of parts.

Scrum extends Toyota’s manufacturing paradigm this to an abstract backlog model. A product backlog is a mini-specification that describes a small part of the product. These gets translated into sprint backlog items which are tasks for the team to do and these tasks are broken in such a way that it should not take longer than a sprint to execute. Sprints are blocks of time, typically around 2-4 weeks long where the team executes tasks and then at the end of it comes up with a tangible product increment.

As you can see the work are broken into cycles and there is a result that is produced at the end of each cycle. Having a result at every cycle improves the team’s morale. Moreover the delivery scope of each cycle is fixed – i.e. there is no new requirements added mid-cycle. Any subsequent changes are postponed and handled as part of the next cycle’s delivery. This is how scrum takes care of scope creep – by visibly increasing the cycle count to take care of the additional requirements.

Scrum teams are usually self-contained software development team of 3–9 people consisting of a product owner which maintains the product’s vision and defines the acceptance criteria for each deliverable, a few software engineers, user interface engineers, and graphic specialists, and one half scrum master. The role of scrum master is primarily to moderate meetings and keep an eye of the team’s task list. Hence because the team is small, usually this role is taken part-time by another person in the team.

Although scrum is more popular in software development efforts, it is pretty much applicable to most other product development projects that are iterative in nature. Some of those are:

Writing educational books (e.g. Lonely Planet’s Travel Guides)

Producing television and radio programs (e.g. South Park and NPR’s TED Radio Hour)

Designing a new car (e.g. Wikispeed’s SGT01)

If your project has these characteristics, it would probably could benefit from scrum:

Have tangible mini-deliverables.

Most tasks are pro-active (and not much fire-fighting going on).

Team members has a shared objective of delivering a tangible product.

Personal Scrum

If you’re doing a one-person project that has a tangible result and you’re in control of that project’s schedule, scrum would be beneficial to manage your project’s tasks and deliverable. Applying scrum techniques would make you more focused and productive working on the project. No more “What should I do next?” questions that wastes hours every day since scrum’s planning processes makes sure that your queue is full for a given sprint.

You’d probably be better served by using a good to-do application that has a start date for each to-do item as well as the due date. This is so that you can input as many tasks as you need for your backlog items, however keep focus only on the tasks that are scheduled for the current sprint.

Better yet if the app can support custom views so that you can focus on just the current sprint’s tasks. That is, tasks that are supposed to be “in progress” as according to its start date. These custom views works wonders if you only have 1-2 hours a day to work on these projects.

First you need to decide how long your sprints will be. This will determine how often you deliver “product increments” and review your projects. If you have multiple concurrent projects, you should use the same cycle for all of them, so that you can review all of them on the same day. Take care not to take on too many concurrent projects or otherwise switching your head between the two may be too taxing. The rule of thumb is two concurrent projects is enough, otherwise you might consider to put some of them on-hold.

Two-week sprints would be best if you’re doing this project as a side-job. Otherwise if you’re a full-time self-employed or solo-entrepreneur, you could do well with a one-ish week sprint. Remember to spare at least half a day for sprint planning and review.

Then you need to break down tasks in the project into something that can be done within a sprint and produce a tangible outcome. Tasks shouldn’t straddle between sprints – if you keep finding that you tend to need more time to complete tasks, then you should really break these tasks into smaller chunks of work. Key in these tasks under your project and place them in a pending state. These pending tasks are the product’s backlog.

At every end of the sprint, you need to review the ending sprint as well as plan for the next sprint. Take some tasks off the backlog and schedule them for next sprint. It’s probably good to only have one major task (i.e. would take most of the time) and one or two other minor tasks for each sprint.

When planning for the next sprint, align the start date of each planned task to the sprint beginning and the due date to the sprint end. Later on this helps you to focus on just the tasks for the current sprint.

While in the sprint, try not to add any tasks to the current sprint. If it ends up that you have spare capacity, why don’t you spend it by planning for tasks to be done in the next sprint. In any case, there will be some fire-fighting (i.e. both important and urgent) tasks that falls through the cracks. Be sure to provision some spare capacity for these emergencies.

Implementing Personal Scrum in OmniFocus

OmniFocus is probably one of the few to-do applications for the Mac that you can use to do scrum. It’s uniquely defining features are defer dates and custom perspectives which seems rare among personal to-do applications.

To start, you’ll need to create a @Context called Backlog and apply the on hold status to it. Whenever you create tasks for a scrum project, always assign the context to Backlog initially to indicate that this is something queued for future sprints.

Then you’ll need to create these two custom perspectives:

This Sprint – use this perspective to focus on tasks available this sprint as well as any other fire-fighting issues that may occur.

All Sprints – use this perspective to gain an overview of the upcoming sprints.

You’ll probably need the more expensive OmniFocus Pro edition (instead of the standard one) to have custom perspectives. But since you’ve gotten up to this point, you probably aren’t satisfied with simple to-do apps and would need a more fully featured application like OmniFocus Pro.

This Sprint perspective

Use the following settings to create the This Sprint perspective – allow everything else not specified here as default.

Project hierarchy: Don’t use project hierarchy.

Presentation

Group actions by: Context

Sort actions by: Due

Filtering

Filter by availability: Available

Filter contexts: Active

Sidebar Selection – add all contexts where you plan to work on your projects. However do not add the Backlog context – these aren’t to be done in the current sprint and we’ll want them out of focus.

All Sprints perspective

Use the following settings to create the All Sprints perspective – allow everything else not specified here as default.

Project hierarchy: Don’t use project hierarchy.

Presentation

Group actions by: Defer Date

Sort actions by: Due

Filtering

Filter contexts: Active

Sidebar Selection – add all contexts where you plan to work on your projects.

Managing Projects

You’ll need to create scrum projects as a parallel-type project in OmniFocus. You’ll also need to set the Next Review date to the start date of the project and the Review Every period to the sprint duration. Therefore each project review is a sprint planning & sprint review combo (but of course there is no sprint review on the first sprint).

During sprint planning, you’ll need to take a look at the tasks in the Backlog context and then move it to the appropriate context where you are planning to do the task. For example, if it’s a writing task that needs to be done on the computer, you could move it to the Mac context. Or maybe it needs to be done in a certain location, hence you can use OmniFocus for iOS’ location-based context.

Then set the task’s Defer until date to the following sprint’s start date (which is likely the day after sprint review & planning day) and the Due date to the sprint’s end date. You could also schedule tasks for the sprint after next in the same way by making use of the Defer until date. This would be an effective way to perform tasks that are dependent on each other or to break large tasks into manageable piece – schedule each piece in consecutive sprints.

When you are starting a task, Flag it. Then you can use the Flagged perspective to see all the on-going tasks that you have at a given time. Try to focus only on these flagged tasks and not to start a new one until these are complete. If you are blocked by someone else on a particular task, simply unflag it and take the next one.

Things to desire from OmniFocus

However there are some things that Omni Group can do to improve OmniFocus to make it more effective in handling scrum:

A proper “in progress” state – a state between “available” and “done”, instead of making use of the flagged toggle to indicate tasks that are in scrum’s doing stage.

The ability to create custom perspectives to filter by defer date. For example, to show only tasks starting next week. This would allow you to create a “next sprint” view by only showing tasks that starts no earlier than the current sprint end.

An easier way to link tasks to show interdependencies between tasks. That is, to say that task X depends on tasks Y and Z but those last two are independent of each other.

Shared tasks & task assignments. Now they have a cloud sync service, it’s probably not too difficult to share tasks between users and to delegate some tasks to them.

So that’s all folks. Please let us know how you apply scrum for your own projects.

]]>https://basilsalad.com/how-to/personal-scrum-omni-focus/feed/12486How to Import Data from Singaporean Bankshttps://basilsalad.com/how-to/how-to-import-data-from-singaporean-banks/
https://basilsalad.com/how-to/how-to-import-data-from-singaporean-banks/#commentsSun, 15 Mar 2015 02:24:48 +0000http://basilsalad.com/?p=2456When you have the slightest care about your money but you can’t hire an accountant just yet, you’ll likely use a personal finance software to keep your budget in check. If you’re lucky enough that your software can communicate directly with your bank then half of your monthly reconciling work is done already. However the rest of us aren’t that lucky – including myself. If you find yourself juggling CSV files whenever you need to update your financial records, I might have a solution for you.

Background

I have a number of bank accounts and a few credit cards to go with them. Yes, it’s probably a good idea to consolidate these into one, but in the course of my life I needed to open some bank accounts because they offer a good deal but there are some medium and long-term commitments (e.g. installment payments and mortgage) that are a big hassle to modify, hence I still keep the old accounts around. Some of these accounts are in my home country and that makes it easier if I need to send money to myself for use there or make payments to people in that country. Moreover the Singapore government has a pretty small limit of the money that they guarantee, hence it’s probably useful to split the money to mitigate the risk of the bank going under.

Every month or so I reconcile the balances of these accounts with the records in my personal finance software. None of these banks supports Open Financial Exchange (OFX) or Direct Connect – those are methods for personal finance applications to talk directly to the banks’ computers via the Internet and tend to be the domain of US banks. However being half a world away from the land of the free and home of the brave, none of the financial institutions that I use supports these protocols. I have to make do with their “export to CSV” functions, which are supposed to provide my transaction data that I can use in other applications – most notably personal finance software.

The Problem

Whenever I use the “Download to CSV” function from my bank’s website, the resulting file can’t be used directly by my personal finance software. The reason is that none of these banks follow the CSV standard. That is, every line must contain a transaction record except the first line which may be the header row. Also every value needs to be separated by a comma (hence the term comma separated values – CSV) or otherwise enclosed with quotation marks. Furthermore the number of values in every line needs to be the same and follows the header declared in the first line.

However what I receive from these banks “export to CSV” is often quite different. There are always multiple header lines that are not comma separated. Some have blank lines between the records for no reason at all. Even worse, some others have transaction records that are unevenly split in multiple lines – some transactions are in two lines whereas some others are expressed in one line. This tend to choke my personal finance software that expects to import CSVs in a standard format. Because of this every month I need to edit these banks’ data dumps and massage them into a standard CSV format.

The Solution

After a while solving this problem manually, I grew wary and decided to invest a Sunday to write some programs that automatically does this for me. These scripts are to take in each account’s export dump for the month and converts it into a standard CSV format ready for import to my personal finance software. I’ve also made it open source so that you don’t need to write these scripts yourself and just use those scripts to help your monthly reconciliation. I name the project BankConverter and host it on Github.

Supported Formats

As of this writing these are the banks and account types that the scripts support.

There’s nothing special why only these Singapore banks are supported – they are merely the ones that I need to reconcile the most. You’re welcome to add support for your own banks and contribute to the code repository.

Installation Guide

Follow the following steps to install the scripts. These steps are meant for the Mac or other Unix derivatives

Installing R and packages

BankConverter is written as a set of R scripts. R is a scripting language geared towards statistical computing. One of R’s strengths is dealing with tabular data and handling CSV files goes with it. Hence it’s pretty straightforward to write BankConverter in R.

You’ll need to go to download R from CRAN and follow the installation instruction from there. Please install the latest stable version of R, version 3.1.2 or newer. Optionally you can also download R Studio, which is the preferred graphical interface for R as of this writing. R Studio would be useful if you need to tweak these scripts to your own needs.

Then you probably going to need to install some optional R packages that are required by the script: dplyr and lubridate. To do this, simply start R from the Terminal and use the “install packages” command, which roughly look like the following command sequences:

$ R
> install.packages("dplyr")
> install.packages("lubridate")

Note that “$” indicates that you are in your shell whereas “>” shows that R is processing your commands instead. Don’t type “$” or “>” – instead type the commands that comes after it. You should see “bash” or “R” in your Terminal window’s tab bar title, respectively. When you’re done, press Ctrl-D to quit R.

If you are prompted to select which a CRAN mirror, you will need to configure the mirror in your R configuration file. Exit R (you can press the Ctrl-D key combination) and then type the following command in the Terminal:

Then go back and try to install those two R packages again. The command above will set your default R mirror to one in Singapore (assuming that since you’re reading this, there’s a good chance that you also have a bank account there and probably located within the region). For further information on CRAN mirrors, please refer to this topic on Stack Overflow.

Installing the Scripts

To install these R scripts, simply copy them into your system’s /usr/local/bin folder and then set the execute bit. Thanks to the magic of Unix scripting, you can leave out the “.R” extension which should save some typing later on as you use them. Open a Terminal window and have it start within the extracted BankConverter folder and then type in the following commands:

Note that the first command will require you to enter your password. You will also need to be an administrator in your system. If you are not an administrator, you can create a “bin” folder inside your home directory and copy these scripts there. Note that you will need to add your own “bin” folder to PATH variable.

How to Use it

Login to the bank’s (either DBS or OCBC) e-banking site.

Locate the Download to CSV functionality and download a copy of your transaction history. This will be slightly different with each bank, but generally it’s somewhere near to where you view your account’s transaction history.

Run the script from the Terminal, giving the file that you got from your bank as the first parameter and the output file as the second parameter. For example, if you just downloaded a CSV transaction history file from DBS, you can run the following command in Terminal:csv-dbs ~/Downloads/input.csv ~/Downloads/output.csv

Closing Notes

Please let me know what you think. I’d like to know whether these scripts help you and is there anything better that we can do. We’d also like to know how often do you reconcile your software and what personal finance software do you use.

]]>https://basilsalad.com/how-to/how-to-import-data-from-singaporean-banks/feed/22456How to Get iOS 8 Working on an Old iPadhttps://basilsalad.com/how-to/ios-8-working-old-ipad/
https://basilsalad.com/how-to/ios-8-working-old-ipad/#respondSun, 09 Nov 2014 07:28:38 +0000http://basilsalad.com/?p=2386So you’ve upgraded your trusty old iPad 2 or the original iPad Mini to iOS 8.1 and feel like your device isn’t as fast as it used to be. Even for simple stuff like browsing the web or playing music – the same kind of tasks that it was good at originally – seems slower. Then you probably regret upgrading the OS.

The truth is, iOS 8 makes the iPad 2 to do things that it weren’t originally designed to do. By making it do those extra stuff, it becomes a lot more busy and hence causes it to become less responsive overall. To get the closer to the original performance, you’ll need to turn off some of those extra stuff that are burdening the iPad 2’s microprocessors.

To make the iPad 2, Original iPad Mini, and any other iOS device having the Apple A5 chip works better with iOS 8, you’ll need to follow the following steps in order:

Reset All Settings

Turn off Background App Refresh

Turn off Translucency

Turn off springboard movement

Restart your iPad

Resetting Settings

This does not mean removing all of your music, applications, and their data. What it does is just restoring what you configured in the Settings app to their defaults – both settings of the system and also every app that you have installed. Simply follow the steps below to reset your device’s settings. Please note that it will automatically restart afterwards.

Open the Settings app.

Go to the General section

Tap on Reset All Settings.

Go through the confirmation prompts. You might be asked to enter your device’s PIN.

The device will automatically reboot.

Remember to not accidentally select “Erase All Content And Settings” (the option below “Reset All Settings”), as that will remove your data and applications as well.

Turning off Background App Refresh

The iPad 2, original iPad mini, and other Apple A5 devices were designed with iOS 6 in mind that doesn’t really do any multitasking. Introduced in iOS 7, background updates allows 3rd party applications to be running in the background – hence occupying memory and using processing power, in which these older devices are not well equipped for. This is the primary cause iOS 7 and later versions being slow on older devices – they simply can’t take the load of background tasks and keep the foreground application responsive.

Follow these steps to turn off background updates:

Open the Settings app

Go to the General section

Toggle Background App Refresh to the “off” position

Remember to disable it for all applications and not just just a few. If you have an iPad 3 or better, you can get away with a few applications running in the background – but not for less capable devices.

Turning off Translucency

Translucency is a combination of transparency, blur, and some color processing and is heavily taxing the graphics processor of older devices. Turning this off may make scrolling more responsive. Follow these steps to turn it off:

Open the Settings app

Go to the General section

Select Accessibility

Select Increase Contrast

Toggle the “Reduce Transparency” switch to the “on” position.

Turning off Movement

This is a nice-to-have feature that makes the home screen to appear to have depth. This may or may not affect your device’s performance overall, but anyhow it doesn’t really look nice on non-retina displays and hence you’d probably be better turning it off anyway.

Open the Settings app

Go to the Wallpaper section

Select the image at the right.

Set the “Perspective Zoom” to “Off”.

Tap “Set Home Screen”

You’ll only need to turn perspective zoom off for the home screen – you still can get away with it enabled for the lock screen. With background app refresh is turned off, chances are there are no applications that are running when your device is locked.

Finally At Last

After having complete those settings above, you’ll need to restart your iPad. This will ensure that all background tasks are terminated and all system applications are shut down to let the new configuration take full effect.

Hold the Power button (the button on the top-right corner) until the “slide to power off” slider appears.

Then slide it all the way to the right.

Wait until it fully shuts down and the spinner no longer appears.

Then wait again for at least 10 seconds.

Hold the Power button again until the Apple logo appears then release it.

Note that those measures above will also be helpful for those who have iPhone 4S or many iPod touch models. In short, devices with an Apple A5 chip that originally came with iOS 6.

That’s all for now, until next time!

]]>https://basilsalad.com/how-to/ios-8-working-old-ipad/feed/02386MacBook Repair Checklisthttps://basilsalad.com/how-to/macbook-repair-checklist/
https://basilsalad.com/how-to/macbook-repair-checklist/#respondThu, 12 Jun 2014 13:55:25 +0000http://basilsalad.com/?p=2345Last Sunday I had the misfortune of spilling coffee to my MacBook Air. All thanks to the unstable IKEA FÄRGRIK coffee cup with the narrow bottom that makes it so easy to knock down. Lesson learned: discard these disaster-prone cups and get more stable mugs instead. Thankfully the laptop seemed unaffected after drying it out – at first that is. After about half an hour, the Ctrl key got stuck and every trackpad click brings up a popup menu.

So I asked around Facebook and found a recommendation of a “non-official” (read: cheaper) place to repair my laptop. It’s an old unit way out of warranty anyway and I’d figure I take my chances. Fast forward half a day later after updating my Time Machine backup, deleting my home directory (along with the user account) and decrypting the flash storage, I came there for repairs. About an hour and S$150 later, I got my MacBook Air back with a new keyboard and all seemed well. But apparently not everything went well.

After restoring my user account overnight, I found out that the MacBook Air’s Wi-Fi finds it really difficult to connect to our home access point. With a few more testing it was apparent that something was wrong with it. So again I had to delete my user account and decrypt its flash storage in preparation of going back to that repair shop again to complain.

True enough, apparently the last technician forgot to connect the Wi-Fi antenna the last time he opened it. Thankfully this one was able to fix the issue and gave my laptop a free dusting in its inner part. But then I had to restore my user account again – a total of about two nights’ work were wasted for all this back-and-forth.

Interestingly this doesn’t happen only on “unauthorized” repair centers. Back in 2009 I turned in my MacBook Pro for repair because of the NVIDIA GeForce 8600 problem. When I got the unit back, there was a stuck CD in the DVD drive and the drive itself wasn’t operational, so I had to went back there to re-service the unit.

So from these two experiences, I’ve devised a checklist to prevent such problem from happening again. That is, some steps that you can also perform to reduce the chance that your MacBook repair technician made things worse and you’ll only found out a few days later. This checklist is also useful if you’re running a MacBook repair shop yourself and make it part of your company’s standard operating procedure.

Preparation Steps

Before going to the repair shop, you’ll need to take inventory of all components inside your MacBook. That is, to keep your technician(s) honest and not replace any component without your knowledge. Fortunately, a lot of these components have built-in serial numbers that you can take note without even opening up your laptop.

In many MacBooks these components are removable from the lower half of the laptop (under the keyboard), hence you’ll need to take inventory of them:

The Logic Board – contains the Intel CPU and various supporting microprocessors.

The Wireless Board – hosts the Wi-Fi and bluetooth controllers, likely on a single chip.

Memory – in many MacBook Air models these are soldered to the logic board, but is removable in some other models.

Storage – the flash storage or hard disk drive, usually removable.

Battery – this is a removable component.

Follow these steps to lookup the serial numbers for these.

Hold down the Ctrl key and click the Apple menu on the top-left.

Select System Information

Click on the Hardware (top-level) section and record your system’s serial number.

Under Hardware select the Memory section and record your memory chip’s serial numbers.

Select the Power section and record your battery’s serial number.

Select SATA/SATA Express and record your storage device’s serial number. If you have newer MacBooks, this could be under the PCI Express section if it exists.

Select Thunderbolt and record your device’s UID.

It’s also a good idea to do it now and don’t wait until you need to turn in your MacBook for repairs. Record these serial numbers and keep them in a safe place.

Post-Repair Checks

After you get back your laptop from the service center, lookup the components serial numbers again and compare it with your stored copy to make sure no components were replaced without your knowledge. Some less credible repair centers may do this and replace your MacBooks’ components with inferior ones and sell yours in the second-hand market as premium spare parts.

After you’ve verified those serial numbers, then it’s time to verify the functionalities themselves. This is to ensure that there are no loose wires or otherwise unconnected components that your service technician forgot to put back together. Assuming that your MacBook is able to boot into OS X, you should check for these:

DVD Drive (if you have any). Press the Eject button on the keyboard to spill out any existing one, insert a known good DVD and try to copy files from it to your Downloads folder.

USB Ports. Plug in a USB drive on each port and try to create a folder each time you do it.

Thunderbolt Port. Ideally you should plug in a Thunderbolt drive or Ethernet adapter and test it out. But if you don’t have any, using a mini-DisplayPort to VGA and use it to drive an external monitor should be a good enough quick test.

SD Card Slot. Plug in an SD card and try to copy files or create folders on it.

Camera. Open the FaceTime app and see your live reflection.

Speakers. Try adjusting the volume and listen for the test alert sound.

Microphone. Open System Preferences, select Dictation, and then say something. The Microphone icon should blink as it’s listening to what you’re saying.

Headphone Jack. Using an earphone/microphone combo (like the one that comes with an iPhone), repeat the Speakers and Microphone tests but this time through the headphones.

Trackpad. Open Safari and try pinching, zooming, and clicking to make sure multi-touch and clicks still works.

Keyboard. Use the Keyboard Viewer to check every keys in the keyboard.

Wi-Fi. Scan for wireless access points and make sure that it can see a good amount of nearby access points.

Bluetooth. Tether your laptop to your phone via Bluetooth and move the phone away for about 5 meters and ensure that the network connection still works.

Testing the Keyboard

Follow these steps to get the Keyboard Viewer to test the keyboard.

Open System Preferences

Select Keyboard,

Click on Input Sources,

In the lower part of the window there should be a “Show input menu in menu bar” checkbox. Activate it.

Then in the Menu Bar click the Input Menu (that looks like a calendar with a star in it) and then select “Show Keyboard Viewer”.The Keyboard Viewer should open.

Press all keys one by one in the keyboard and look at the Keyboard Viewer while pressing to ensure that the system sees your key presses.

Testing Wi-Fi

First you need a good number of access points around you but are not too near. You don’t need to know the password for any of these, but you’ll need to know that they exists. Then you’ll need another (trusted) device that also has Wireless connectivity – an iPhone should be perfect for this.

When you have those ready, follow these steps to check your Wi-Fi adapter.

Option-Click the Wi-Fi icon in the menu bar and select “Open Wireless Diagnostics”.

You then might be asked for your administrator password – just enter your password and then the Wireless Diagnostics app should open.

Activate the Wireless Diagnostics app and in the Window menu select Utilities. The Utilities window should open.

Select the Wi-Fi Scan section and click on Scan Now. Wait until scanning is complete.

Compare the list of scanned access points with the one that your other device can see. Make sure that your MacBook doesn’t see less than the access points visible to the other device (i.e. scanning should reveal more Wi-Fi access points).

Checklist Template

I’ve painstakingly put together a checklist for you to use, in the form of a Numbers document. Go ahead, download the checklist, collect your serial numbers and keep them in a safe place that you can easily access later (preferably in your iCloud or DropBox account) so that you can refer to it easily later when you need to send your MacBook for repairs.

Take care for now. Enjoy!

]]>https://basilsalad.com/how-to/macbook-repair-checklist/feed/02345Make Your Toastmasters Chapter Meetings Run Betterhttps://basilsalad.com/how-to/toastmasters-meeting-run-better/
https://basilsalad.com/how-to/toastmasters-meeting-run-better/#respondMon, 14 Apr 2014 19:00:00 +0000http://basilsalad.com/?p=2340People join Toastmasters clubs because they want to practice public speaking skills and learn organizational skills. They need to do these in a safe environment — something they couldn’t do in their day-jobs. As part of the executive committee, you’re probably aiming more toward the organizational skills part. However it is your responsibility that others in your club can practice speaking skills effectively. Otherwise your club’s membership will slide downhill until you don’t have a club any more. Moreover, helping others in their speaking projects will also help yourself in improving your management and mentorship skills.

One very important task for the executive committee is to ensure that every chapter meetings runs smoothly, effectively, and leaves lasting impression on the participants. Otherwise your members may feel that their time is not well spent then stop coming to subsequent meetings. You’ll need to make sure that the equipments are set up properly, encourage people to come on time, and also strive for the meetings to end on time as well. You’ll also want to get people to talk — either by doing their projects, as an evaluator, or as a participant — and that they get a receptive audience.

A good way to ensure the timeliness of chapter meetings is to have an agenda. You’ll need to prepare the agenda in advance and distribute it to all meeting participants — especially those who will be taking active roles in the event. It would be good if you can display the agenda in a large format where everyone can see it. Toastmasters International even provides a Word template that you can use for writing the agenda document.

However you’ll also need to be flexible. Some speakers may not show up at the meeting hence you’ll need to source replacements. Some may even need to come late and hence you’ll need to swap project-speaking time slots. All of these mid-flight changes need to be accommodated and still keep all participants informed.

One neat way to keep all of this hectic agenda is to use Omni Outliner. The app’s killer feature over spreadsheets like Numbers for maintaining a living agenda is for rearranging agenda items on the fly. You can simply hook-up your Mac (there is also Omni Outliner for iPad) to a projector to show the agenda and you can drag-and-drop speaking slots easily on the fly.

Another area worthy of automation is the timer’s role. Face it, being a timekeeper in a Toastmasters regular chapter meeting is not intellectually challenging but does eat up a good amount of your attention. You’ll need to keep your eye on the stopwatch to be able to raise the appropriate colored time signals. You’ll need to note down who are talking in which project and how much time they spent for the talk for the report. Even the only talking time that you get — delivering the timer’s report — is highly formulaic and doesn’t offer much room for you to practice real public speaking.

But this can change if you use software to automate the timekeeper’s job. When properly automated, you can combine the timekeeper’s role with the grammarian’s role and have it done by a single person. Playing the grammarian is far more intellectually challenging than the timekeeper and provides much more value both to the grammarian (in ensuring that the grammarian aren’t making the very same mistakes that she’s trying to capture) and both to the meeting participants in general. By raising the bar and combining these two roles, you free up one person from your executive committee that can do real speeches and you’ll raise the bar for the other person doing the combined timekeeper/grammarian roles, making it more challenging which increases her engagement and satisfaction of the club.

Speech Timer will help you automate the timekeeper’s role and merge it with the grammarian role. A timekeeper using Speech Timer no longer need to focus her attention to the stopwatch and able to direct her mind to the speech itself as a grammarian. Hence attending the chapter meeting would be a better time spent for her since she can practice her listening skills, grammar, and speaking skills when delivering the combined grammarian and timekeeper’s report — which in turn increases her engagement with the club.

Another way to improve engagement is by adding a to your club meetings. You can amaze your Toastmasters colleagues by having a real-time status board on every meeting. Simply connect your iPhone, iPad or Mac to an overhead projector or television and Speech Timer will display the current speech status on it — current time, project name, speaker’s name, and the tricolor time light indicators.

In a nutshell improving your club engagement is a top priority for you as an executive committee. One way to increase engagement is by using software and technology that help run meetings more smoothly, automate mundane tasks to make some roles more challenging, and add fun by introducing multimedia to your meetings.

This meeting is now adjourned.

]]>https://basilsalad.com/how-to/toastmasters-meeting-run-better/feed/02340Troubleshooting DevonThink Pro Office OCR Installationhttps://basilsalad.com/how-to/troubleshooting-devonthink-ocr/
https://basilsalad.com/how-to/troubleshooting-devonthink-ocr/#commentsWed, 27 Nov 2013 01:00:00 +0000http://basilsalad.com/?p=2141A major selling point of DevonThink Pro Office over its less-featured editions is the ability to create searchable documents from scans. This Optical Character Recognition (OCR) feature converts images to text and then DevonThink lays it out over the original scanned image so that you don’t lose any formatting yet the computer has its textual form that it indexes and you can search for text inside it.

However DevonThink Pro Office’s OCR capability comes as a separate download. This is because it’s really an add-on module that was developed by a separate company: ABBYY, one of the renowned experts in OCR. The first time you try converting an image to a searchable PDF, DevonThink asks you to download this component.

Unfortunately the process of installing it doesn’t always go smoothly. If the download fails mid-way, DevonThink will just try to re-download the entire package again. If this keeps failing, then you’ve got a real problem in your hands. As of this writing, I couldn’t find any article on DevonTechnologies’ support site to fix this issue and Google couldn’t find them either.

However, I found a way to manually download and install the ABBYY OCR plugin into DevonThink Pro Office. If you have DevonThink Pro Office and it keeps getting a “The request timed out” error message whenever you try to create a searchable PDF, here are steps how to fix it.

Copy the URL displayed in the error message. This contains a zip archive of the Abbyy OCR framework. If you can’t find it, you can try using this URL: http://s3.amazonaws.com/DTApplicationSupport/Abbyy_i386.zip – but be aware that it may have changed by the time you read this.

Download that ZIP file using a download manager. I used a Firefox plugin DownThemAll for this. But you can use just about any other download manager as long as it supports resuming interrupted downloads. This is quite important; the reason you need to install it manually is because of a broken download in the first place.

Quit DevonThink Pro Office. It’s important that you exit the application entirely and not just close all windows. You’ll also need to close the DevonThink Sorter helper application (the one that displays various inboxes).

Extract the zip archive. You’ll probably get a folder named Abbyy_i386. Rename that to just Abbyy and it to to DevonThink’s application support directory in “~/Library/Application Support/DevonThink Pro 2“. You can do this with a few Terminal commands:

If the above steps didn’t work, check whether you moved it to the correct application support directory under the correct name as shown in the screenshot below:

Take care and happy scanning!

]]>https://basilsalad.com/how-to/troubleshooting-devonthink-ocr/feed/32141How To Detect Scam e-Mailhttps://basilsalad.com/how-to/detect-scam-mail/
https://basilsalad.com/how-to/detect-scam-mail/#commentsWed, 30 Oct 2013 01:00:00 +0000http://basilsalad.com/?p=2131Scam mail have been around probably since the invention of the postal service. However during those days, it can cost quite a lot to send out these mass mailers hence people didn’t encounter them too often. Unfortunately since it’s so cheap to send e-mail messages, these scam mail has become rampant and it becomes so easy for the villains behind them to prey on greedy idiots. Here’s how you can avoid becoming an idiot when one of these scam e-mail goes your way.

Things to watch for

Return addresses. Scammer could fake the “from” address field but they won’t be able to fake return addresses. If it appears that Google is sending you an e-mail then the return address should be suffixed by @google.com and not another domain. It’s quite easy for impostors to send an e-mail that appears to come from “john.doe@google.com” but it’s virtually impossible for them to receive into that address without an insider at Google being involved (note that @google.com is exclusive to Google employees unlike @gmail.com that just about anyone can register).

Instruction to click a hyperlink. Watch for links in e-mail addresses and verify if they’re OK before you click. If the e-mail claims that it’s from PayPal and they want you to click on a link to verify payment, be sure that the link goes to paypal.com and not some other host. Remember that clicking the link signals that you have read the message and confirms your e-mail address – opening the way for further spam or even scam messages. Not to mention that the fraudulent website may prompt you to install an application or browser plug-in that turn out to be a trojan horse.

Asking for money to give money. Even more so if the e-mail claims it’s from an established organization. If it’s really an established organization, they won’t ask for money to give you money. Moreover, havingthem giving you cash outright is questionable – even Apple’s 10 billionth app download winner didn’t get any real money but store credits instead.

An Example

Recently I received an e-mail that claims to be from Samsung Europe that said I won € 750,000, a laptop, and a mobile phone. Then they wanted me to contact their notary and keep the e-mail confidential. Let’s dissect this scam mail blow by blow.

If you notice carefully, the reply-to address is from the @europe.com domain and not samsung.com – this is the first thing that you should notice and raise a red flag in your brain. Secondly it points to a non-existent web page – www.samsung.com/europe doesn’t point to a proper regional site but a “select country” site.

In fact, I suspect that the whole “www.samsung.com/europe” thing is just to confuse you into believing that it’s return address of collection@samsung.europe.com belongs to Samsung – which is obviously not.

Then who owns europe.com? According to its whois entry, the domain belongs to “World Media Group, LLC” that is based in Bedminster, New Jersey.

The company’s official website at http://worldmediagroupllc.com shows that World Media Group is really a “domain squatter” organization. They buy single-word domains like lawyer.com and doctor.com and build advertising sites on it – which at this point the credibility of lawyers and doctors on that site may as well be questionable.

Last but not least, the THIS IS NOT A SPAM first line. With asterisks. Yeah, just like the folks who walks out of a pub with their faces red and not standing straight saying that they’re not drunk. Luckily Gmail classified this particular e-mail as spam. But we might not be so fortunate and the next time it may got through Google’s spam filters.

Just remember: be vigilant. This e-mail belongs to a class of techniques called social engineering – it manipulates the most powerful yet error-prone part of the security system: the bag of meat at the keyboard. Play your part in the human firewall to keep yourself and your colleagues safe.

Until next time, you stay safe.

]]>https://basilsalad.com/how-to/detect-scam-mail/feed/12131How to Quickly Post Yammer Updates from LaunchBarhttps://basilsalad.com/how-to/post-yammer-updates-launchbar/
https://basilsalad.com/how-to/post-yammer-updates-launchbar/#respondWed, 04 Sep 2013 01:00:00 +0000http://basilsalad.com/?p=2107If you’re a LaunchBar user, you’ll already know how time saving it is. What if I say that you can save even more time when you post Yammer updates directly from LaunchBar? Just think of how much time you’ve spent just to post a short update to Yammer:

Open Safari (10 seconds).

Open yammer.com (10-30 seconds)

Log in to Yammer (20 – 60 seconds).

Skip the intros and get to Yammer’s main feed (0 – 30 seconds).

Click the “What are you working on” box and write the text (20-40 seconds)

Click the “Post” button and wait for your message to be posted (10-30 seconds).

That’s total to about three minutes to just let your colleagues know what you’re doing. Yeah sure it doesn’t matter if you only do it less than once a day, but on a typical day’s work, these can add up quite a bit. There must be a better way to do this.

Being a LaunchBar user, you’ll know that it can make use of other application’s services. Via the power user’s Services menu – exclusive to the Mac – you can type any text into LaunchBar and use it to drive other Mac applications. Too bad, Yammer is a web application so that it couldn’t take advantage of this. What’s worse, Yammer’s Adobe Air client doesn’t make use of this facility either.

But if you use Scuttlebutt to connect with your colleagues on Yammer, you can also post Yammer updates directly from LaunchBar via Scuttlebutt. Because Scuttlebutt is a native OS X application and provides Services menu items to post new Yammer updates and send file attachments to Yammer.

Here’s how you post a Yammer update from LaunchBar

Activate LaunchBar – I use the “double command key press” to activate LaunchBar (takes less than one second).

Select the “Enter Text” action – you can type it in or assign a hotkey to that action; personally I assign “,” (the comma button) as an abbreviation for this (this again takes less than one second).

Type in the your Yammer update (takes about 20 seconds, depending how long do you type & think).

Press the “tab” key and then select the “Scuttlebutt: New Yammer Update” (takes about two seconds).

Scuttlebutt should launch and display your message. Simply confirm and click on Send (takes about two seconds in total on an SSD-based Mac).

That amounts to less than half a minute – which is about 90% reduction in the total time to send a single update. These are where the time savings came from:

You won’t need to wait to log in to Yammer nor wait for its pages to load (which could take a significant percentage of your time, depending on how fast your Internet connection is and how heavily loaded Yammer’s servers are).

You don’t need to wait for your message to be sent since Scuttlebutt caches the message for you before sending posting it to Yammer (again the benefit of a desktop client).

You didn’t distracted by having a Safari window showing Yammer taking over your screen.

But wait, you can even save more time if enable LaunchBar’s “Instant Send” feature. This allows you to send any selected text as input to a Service item. For me, I assign the Double Control key to Instant Send.

Select any text (say, in Safari) – takes about five seconds.

Double-tap the Control key and then type “Scu..” to select the “Scuttlebutt: New Yammer Update” service item (takes about three seconds).

Scuttlebutt will open and display your message. At this point, just click on Send (again, takes about two seconds on my 2011 MacBook Air).

So that’s just about it for today. If you prefer Alfred or Quicksilver instead, you can also apply the same technique to those applications. But if you’re a Yammer user and haven’t heard of Scuttlebutt, get it now if you value your time at all.