<![CDATA[Roger Keays]]> https://rogerkeays.com/ Roger Keays https://rogerkeays.com/ https://rogerkeays.com/ox/webcore/attachments/29010/rog.canoe.3.jpg?width=200&height=200 http://www.rssboard.org/rss-specification <![CDATA[A Freebie for the New Year]]> A Freebie for the New Year

Hi Readers, and Happy New Year!

To get your year off to a good start, I am running a free giveway for 100% Love Guaranteed (kindle edition) on Amazon. It lasts until Friday, so you can grab the book this week, and start reading it on the weekend. For those who didn't get the memo, 100% Love Guaranteed is a story of my misadventures and incarceration in Ecuador. It's a love story, an adventure story, and a story about personal growth. What's more, it's rated 4.8 stars on Amazon.

Follow the links below for your regional Amazon store. You can read it on your phone, table, ebook reader, or laptop.

Australia · USA · United Kingdom · Germany · France · Spain · Italy · Netherlands · Japan · Brazil · Canada · Mexico · India

I have a long list of blogs to write for you this year. I was writing a lot in 2016, and it left me pretty burnt out, so I can't promise to have a blog for you every Sunday. Instead, they'll come when I'm inspired. My top articles from 2016 were:

To give you an idea of what's in store this year, here are some of the articles I have drafted (or outlined):

  • How to Use A Memory Palace
  • The Holy Grail of Productivity
  • The Rule of Twos
  • 20 Steps to Beating Depression
  • How Long Does it Take to Write a Book?
  • How to Write
  • How to Draw Music
  • How to Remember Words

I've started reading more widely now, so I'll also be posting some book reviews now and again.

I hope you enjoy the blog, and have a great year in 2007 :)

Roger

Read more...

]]>
https://rogerkeays.com/new-year-freebie https://rogerkeays.com/new-year-freebie Tue., 3 Jan. 2017 23:51:16 +1100
<![CDATA[100% Love Guaranteed, On Sale Now]]> 100% Love Guaranteed, On Sale Now

Hi all, 

My first book, 100% Love Guaranteed, is finally on sale, and you can order a copy from a bookstore near you. Read to the bottom of this announcement to find the links to your nearest online retailer. For your convenience, there are also links to get the eBook and Kindle versions.

The paperback version won't be available in Australia for a few weeks. In the meantime, Australians can still get the eBook and Kindle versions, or order the paperback from overseas.

I'm going to take a break from blogging for a while (let's see how long that lasts). In the meantime, I hope you enjoy the book.

Roger

“A spellbinding true story of love, passion and adventure. One can’t help but be swept away by 100% Love Guaranteed.”
—Dr Tammie Matson, author of Elephant Dance

100% Love Guaranteed tells the story of Roger and Taty, a young Australian man and a beautiful Ecuadorian girl who stumble into each other’s lives. Their story begins in Ecuador, travels to the islands of the Galapagos, over the mountains of the Andes, to beach parties in Montañita, and takes a detour for a stint in prison in the city of Guayaquil.

Along the way, their relationship is continually tested—not only by their own issues, but also by external forces that threaten to undo them. Second languages, ex-girlfriends, jealousy, crime, family conflict, illness, attachments, lust, and even the police seem determined to tear them apart.

But Roger and Taty are in love, and True Love conquers all… or does it? Read their story and find out for yourself.

 

Take a look inside
 

Order your copy now


 

Paperback (from US$12.99)

To take advantage of the low retail price for the paperback version, order a copy from one of the online stores below. Your local bookstore can also order you a copy, although they will probably have to mark up the price.

 

ePUB Ebook (from US$5.99)

Read on your ePUB reader for Android, iOS or your laptop. If you don't have an ePUB reader, try Google Play Books or iBooks. Note: some of the ePUB versions may be missing the map page shown above.

 

Kindle Store (from US$3.99)

Buy from your regional Kindle store and read on your Kindle device, Kindle app for Android or iOS, or Kindle cloud reader.

Australia | USA | UK | Germany | France | Spain | Italy | Netherlands | Japan | Brazil | Canada | Mexico | India

 

If you enjoy 100% Love Guaranteed, please leave a review wherever your purchased the book. Your feedback gives me incentive to write. Thanks.

Read more...

]]>
https://rogerkeays.com/100-love-guaranteed-on-sale-now https://rogerkeays.com/100-love-guaranteed-on-sale-now Sun., 25 Sep. 2016 18:02:33 +1000
<![CDATA[The Surfing Game]]> The Surfing Game

It can be easy to become complacent in the surf. Especially when there is not much swell. The waves roll by, and you sit on your board, soaking up the sun. It's relaxing. But for me, sitting out the back enjoying the serenity defeats the purpose of surfing. I need exercise, so I've come up with a few simple games to play in the surf to keep me catching waves and get the blood flowing.

Each game involves awarding yourself points (or penalising yourself) for specific actions. I keep track of it in my head, which isn't as hard as you might think. After the session I write my points down in my journal. That's quite nice, because it helps you remember your surf sessions.

Game #1: "I Can Ride Anything"

The aim of this game is to increase your wave count. Or more specifically, to catch waves that you normally wouldn't. Here is the scoring system:

  • First wave (+1). Catching waves is a habit—as is not catching them. As soon as you paddle out you want to start catching waves. Once you've got your first wave, give yourself a mental point and keep surfing. This one doesn't have to go in your surf journal.
  • Late take-off (+1). These are my favourites. Late take-offs involve some degree of risk. Usually this is the sort of take-off where you're paddling out to a set, sit and spin on the spot and push onto the wave just as the white water starts to crumble—or even after the white water starts to crumble. You know what a late take-off is because you'll think to yourself "I'm too late for this one". Well, you're not!
  • Early take-off (+1). An early take-off is when you manage to get on the wave, even though you couldn't get into the pocket to take-off. This usually means you paddled your arse off, and had to put all the weight on the front of your board to get over the ledge. You don't want to be doing this every wave, but if it means you got a wave you otherwise wouldn't have, then +1!
  • Steep take-off (+1). By "steep", I really mean a wave that scares you. At least a little. Maybe because it is big, or because it sucks up a lot, so you have to angle your take-off.
  • Nasty wave (+1). If you get on a wave that doesn't want to be ridden, you get a point. These waves are like bull-riding. They're rough and bumpy. They're difficult to get onto, and when you're one them they just try to throw you off. Yee-hah, Cowboy!
  • Wipeout (+1). If you don't wipeout, it's because you're not pushing your boundaries. You get a point for wiping-out. In that way, the only way to lose is to chicken out.
  • Letting a good wave pass (-1). One of the thing that annoys me about being human is how I copy the decisions of other people, even when I don't want to. You've probably experienced the herd effect yourself. It can happen in the surf when a guy on your inside stops paddling for a wave, and this causes you to stop paddling. Then you find yourself thinking actually, that wave was okay, why did I stop?.
  • Arguing about waves (-5). There are plenty of waves for everyone. If you miss a wave, go to the back of the line, or give the next few waves up. You know who has been waiting for a wave, and who can catch them. Everyone does. The only real reason why surfers fight about waves is because *some people just like to fight*. If there are guys like this out there, your best bet is to agree with them, focus on the cool people, and keep surfing. Getting sucked into an argument to satisfy some random guy's need to argue is a fool's game.

Game #2: Surf Like a Pro

So now you're getting lots of waves, you can start riding with more intent. This game gives you points for different achievements on the wave. There is no individual scoring for different manoeuvres (e.g. snaps, cutbacks, floaters, re-entries), because it is up to the surfer to decide for himself, or herself, what moves are within their ability. However, there are a lot of penalties, because in surfing, there are a lot of ways to take yourself out of the game.

  • Pro wave (+1). The criteria here is simply that you surfed the wave to the best of your ability. You know it when it happens.
  • Long ride (+1). 50 metres qualifies as a long ride, but you still have to ride to the end of the wave to get this point. I think surfers pull off perfectly good waves to avoid a long paddle out the back. That doesn't make sense to me. You want to spend as much time on the wave as possible.
  • Close-out barrel (+2). You get two points for pulling into a barrel. Most barrels will close out, because that's how barrels form, but getting a close-out barrel is still heaps of fun, and it teaches you to tuck in and ride high on the wave.
  • Land a new manoeuvre (+3). There will always be a manoeuvre which lies just outside your skill level. Rather than trying to pull them off, I think it is better to let them happen naturally. To do this, imagine the manoeuvre and the conditions for it in your mind. When the wave presents those conditions, you will actually start to execute the manoeuvre out of 'habit', even if that habit has only been formed in your mind. +3 points for converting something you've practised in your head into real life.
  • Open barrel (+5). If you've had plenty of close-out barrels, it is only a matter of time before you start making it through them. This boils down to wave selection, speed, and a bit of luck. It'll feel like the most obvious thing when it happens.
  • Dinging your board (-10). Board dings create stresses in the fibreglass where water can get in, and they also slow you down. Dings are caused by collisions with your knee, your elbow, your head, the wave, or sometimes a tuk-tuk. Remember, your board is foam underneath that fibreglass.
  • Reef cut (-25). If you're surfing on a reef, you will want to get good at floating pretty fast. Even small reef cuts are a problem, because they fester in the water and get infected. In the tropics, the humidity stops them drying out and forming a proper scab. Eventually you'll have to stop surfing until they heal, which can mean up to two weeks downtime.
  • Fin cut (-50). These happen when you land badly on a board that has been flipped over. My fin cuts always seem to be worse than my reef cuts because of the force of the landing. A fin cut in your foot can easily go down to the bone. They also tend to be wider than reef cuts. Make sure your fins are blunt, and keep your feet on top of the board at all times.
  • Breaking a fin (-50). Ride, paddle, or duck-dive in shallow water and there is a good chance you'll rip out your fin box. This is worse than just snapping a fin, because it takes a lot of repair work.
  • Breaking your board (-100). Breaking your board is pretty bad luck. Usually, a heavy lip crashes flat on your board and, combined with the buoyancy pushing your board up, the total force snaps it clean in two. Like with preventing fin cuts, the best way to prevent this is to always keep your feet on the board.

Game #3: Switch vs Natural

Small surf is actually harder to ride than big surf because the waves don't have much momentum. It's also a good opportunity to play one of my favourite games: switch vs natural. This game is very simple:

  • Switch take-off (+1).
  • Natural take-off (-1).

All you have to do is get on the wave, the actual ride doesn't matter. You can still combine other points, so a steep (+1) switch (+1) close-out barrel (+2) would be four points =)

Surfing switch increases the range of movements that feel comfortable to you. It opens up more possibilities. After a while, it won't be a question of switch vs natural. As you sight the wave, you'll be thinking "frontside or backside?". It's really fun.

If you're planning to play switch vs natural, strap your leash to your unnatural side. This will remind you to do everything switch. You should be duck-diving with your unnatural knee also. As your switch surfing improves, increase the penalty for natural take-offs to -2 or -3.

Game #4: Unleashed

Your leash can drown you if it gets caught on the reef. It doesn't have to be deep water either. A strong current, white-water, or undertow will keep you under. When this happens, don't try to pull your leash free. That won't happen, and you'll waste precious breath. You need to tuck yourself into a ball so you can reach the velcro of your leash and release it from your ankle. You'd be surprised how hard this is, because there is so much more force acting on you when you're anchored to the reef.

I'm not sure if it is safer to surf with or without a leash, but putting that aside, going leashless is an excellent way to sharpen your surfing. You have to keep your feet on the board at all times, or you'll lose it. This means making smooth take-offs, clean exits, and not catching close-outs. Basically, it triples the cost of errors.

The rules for Unleashed are simple:

  • Every wave you ride cleanly (+1).
  • Every time you lose your board (-10). Adjust to your ability.

Don't play this game if the surf is really crowded, or if you're worried about your board being washed into rocks or reef. Also, don't play this with a longboard. They're too heavy to hang onto, and you'll just risk injuring someone else.

Game #5: Surf Explorer

We haven't quite finished yet. If you've incorporated all these ideas into your surfing, there is still one more to turn you into a fully developed surfer: surfing lots of different waves, and lots of different boards.

I'll admit that I have clear preferences when it comes to the waves I'm looking for, but that only came about from surfing a lot of different breaks. And even when I can't find the wave I want, I know how to ride the waves I have thanks to having rented hundreds of different boards while I travel.

Here is the scoring system.

  • Try a new setup (+5). If you're used to surfing a shortboard, try a longboard. If you're used to surfing a longboard, try a funboard. If you used to surfing a funboard, try a fish. Boards make a huge difference, and each configuration breeds unique habits. Longboarding will teach you to turn smoothly, shortboarding will teach you to ride the pocket, a fish will teach you to get traction on the wave, and so on and so on.
  • Surf a new beach break (+15). Having a few extra beach breaks to surf never hurt anyone. Surfing a few different beach breaks will help you get experience without taking on too much risk.
  • Surf a new point break (+25). Point breaks will give you a much better shoulder to surf than beach breaks. This will give you better shaped waves and longer rides. Compared to beach breaks, they usually involve more paddling, often near rocks. Tracking your position in the water is one thing that is also more difficult on point breaks. 
  • Surf a new reef break (+50). Reef breaks take the most familiarity to surf safely. This is because there are weird currents around reef breaks, and you need to know where the reef starts. Once you learn the patterns they tend to be fairly consistent, and the new problem becomes complacency.

Well, that turned into quite a long blog, didn't it? I hope you picked up some ideas to incorporate into your surfing, or whatever extreme sport takes your fancy. Till next time, 

Peace.

Read more...

]]>
https://rogerkeays.com/the-surfing-game https://rogerkeays.com/the-surfing-game Sun., 4 Sep. 2016 16:26:30 +1000
<![CDATA[Global Investment]]> Global Investment

Would you trust me with your money?

It's an interesting litmus test of a person, and not usually too difficult to answer. Providing you're familiar with the person in question of course.

This is also what most investment boils down to. If you invest in gold or oil or other commodities, you can remove the human element of your risk, and you end up exposed only to the forces of supply and demand. But property has tenants, and you need to trust they'll pay you, and not trash your place. And shares are entirely dependent on the people behind them. A company is only as good as their people.

But the story doesn't stop there. Even an investment in good people can fail if the people around them are rotten. More specifically, those in power. What good is it investing in a country where the government can acquire your property if, one day, they decide they don't like you?

Furthermore, an investor cannot always vet the people behind every investment he makes. He has to rely on averages, and more importantly, reliable systems to keep people honest. Remember, he's an investor, not a manager.

Finally, there's the relationship between risk and return. Theoretically, the market rewards taking on higher risk with higher returns, but my feeling is that expected returns don't often justify the risk. Investors sit behind desks. They aren't on the ground in the countries they invest in. And when you get a closer view of what is going on, doubts surface more readily.

These are the sorts of problems I find myself considering when I look at the world through the lense of an investor. Recently, while I was daydreaming, I ran through the countries I have some familiarily with, and asked myself the question, "would I invest?" Here are the results. This is more art than science. I haven't looked at the data - only the people and their social systems.

I've ranked them into five groups: no thanks, probably not, maybe, probably, and definitely. A brief description of each is given below.

NO THANKS

These countries fail on grounds of corruption, incompetence, or insecure property rights.

  • The Philippines
  • Cambodia
  • Vietnam
  • South Africa
  • Tanzania
  • Morocco
  • Turkey
  • Bolivia
  • Ecuador
  • Panama
  • Nicaragua

PROBABLY NOT

The problem with the following countries is not necessarily incompetence. It's usually either a lackluster market or uncertainty around property rights. Or just too much damn paperwork. 

  • Portugal
  • Malaysia
  • Japan
  • Croatia
  • Thailand
  • Italy
  • Slovenia
  • Argentina
  • Brazil
  • Peru
  • Indonesia
  • Russia
  • Sri Lanka

MAYBE

This is the point where risk reaches a level I'd be willing to adopt, depending on the return. With some proper research, I think I could find some opportunities in these countries.

  • Costa Rica
  • France
  • Spain
  • China
  • India
  • USA
  • UAE

PROBABLY

I'd invest in these countries after some basic vetting.

  • Canada
  • South Korea
  • Austria
  • Singapore
  • Hong Kong
  • Sweden
  • United Kingdom

DEFINITELY

Yes, please take my money.

  • Germany
  • Switzerland
  • Australia

Please remember, this is based on my experiences with people and cultures as I travel around the world. There is no data here. It is simply food for thought. You should only invest in what you understand.

Read more...

]]>
https://rogerkeays.com/global-investment https://rogerkeays.com/global-investment Sun., 14 Aug. 2016 18:18:27 +1000
<![CDATA[What is the Goal of Investing?]]> What is the Goal of Investing?

The Philippines was hardy the place I expected to learn something about finance. But as luck would have it, the surf at Siargao, a tiny island in the middle of nowhere, had attracted a like-minded person. Although we both went there to surf, we ending up uncovering a slew of common interests, including technology, psychology, and investment.

Winslow filled some of the gaping holes in my investment knowledge. Those that you don't even realise you have. I hope in exchange, he benefited from the knowledge of psychology and technology I shared with him.

How the conversation diverged from surfing and travel to finance and investment, I can't be sure. I think Winslow mentioned his PhD in portfolio management, causing an itch to surface. It was a long-time unsolved problem of mine: how do you optimise your investment returns?

"Aaaah." Winslow smiled, slouched further into his chair and took a sip on his fruit juice. "First you need to think about why you invest."

"So I don't have to work," I replied. That was easy. "The more money other people make for me, the less I have to make for myself."

"What do you invest in?" Winslow asked.

"Index funds. Property, stocks, bonds."

"What is the return on your portfolio?"

"About eight percent before inflation. Nine if you include tax credits."

"Cryptocurrencies returned 600% last year." Bitcoin was Winslow's thing. I understood why. It's a secure digital currency free from regulation by any single authority or government. It's a fascinating possibility, but still very volatile.

"Hmmmm... yeh..." I equivocated.

"It could make you wealthy," Winslow said.

"Could," I stressed.

"Could," Winslow agreed. I felt we were getting to the crux of the thread. He paused for a moment to make sure I was listening. "There is no best investment," he said finally. "Only a trade-off between risk and return."

I sat, thinking on the problem. What Winslow was telling me was elementary finance. I wasn't satisfied. "There must be an optimal solution," I insisted, "a way to maximise your return."

"No." Winslow shook his head. "The goal of investing is not to maximise your return." This statement threw me. I waited for him to finish. "The goal of investing is to maximise your risk-adjusted return."

Suddenly I understood. I saw why the solution had eluded me for so long. I had been trying to solve one equation with two unknowns. What I really needed was another equation: risk. Now I had two equations and two unknowns. This was a problem I could solve.

To be continued...

Read more...

]]>
https://rogerkeays.com/what-is-the-goal-of-investing https://rogerkeays.com/what-is-the-goal-of-investing Tue., 19 Jul. 2016 22:11:45 +1000
<![CDATA[Moxo & Moxa - Sneak Preview]]> Moxo & Moxa - Sneak Preview

Hello readers. I'm into the final stage of work on my book, so I thought I'd share the intro with you guys to see what you think. It's only quite short. You can send me some feedback by replying to this email or posting a comment if you're reading this on the web or Facebook.

I still haven't chosen a copy editor yet. If you have any recommendations on that front, let me know. The whole book is ~95,000 words.

Here goes...

------

I stared at the bare white wall of my cell and anger began to boil. Anger for the cheaters who had tricked us; anger for the staff who had misadvised us; anger for the police who wouldn't let me leave the country.

My cell mates, sensing my inner fury, left me to fester in my own negativity. They went about their business of entertaining themselves while they waited for the slow wheels of 'justice' to turn. They played cards, traded drug trafficking tips, and when they were especially bored, called for the doctor, feigning to be dead. Many had been in prison for years, so what was an extra week or two? For some it was better than the life the real world offered them. At least in prison they got food every day - even if it was served in a bucket.

To calm myself, I started writing. At first it was just the story of how I got arrested, but given that I had little else to do, my mind began to wander to the memories of my many adventures that led to my penultimate achievement of incarceration.

The recollection of my memories made me realise that, despite my anger, I was strangely happy. My memories were evidence that I had lived. Some were good, some were ugly, some made me laugh, and others made me cry. But one way or another, my memories were proof that I had conquered my number one enemy. Mundanity.

Here I was, wallowing in filth in a prison in Ecuador, yet somehow I felt I was winning the game of life. I was stewing in anger, yet I felt alive. I was locked behind bars, yet I felt free. I had no cash, yet I felt immensely rich. And in the back of my mind I knew why.

There are worse things than prison. I was living by my own rules. I had rejected a life of meaninglessness. I had dodged the daily grind, and I had let the Joneses have a bigger house. I had escaped the prison of society.

But most importantly, I had stumbled upon something wonderful. Something even more valuable than freedom. And that is what this story is about.

Read more...

]]>
https://rogerkeays.com/moxo-moxa-sneak-preview https://rogerkeays.com/moxo-moxa-sneak-preview Mon., 4 Jul. 2016 00:13:59 +1000
<![CDATA[Memory Genius - Sneak Preview]]> Memory Genius - Sneak Preview

Finally, the memory system I've been experimenting with for the last year is starting to see the light. The first component is Memory Genius, a mobile app that combines spaced-repetition testing with the concept of memory palaces. Memory Genius differs from other spaced-repetition systems in that it allows you to build complex memories, rather than simple question/answer challenges.

I've published a sneak preview of Memory Genius on Google Play Amazon for my blog subscribers. Click the button below to install now, or keep reading for more information.

Install Memory Genius Now

As already mentioned, most spaced-repetition flashcard systems force you into a question and answer format. Some even recommend you break up your complex memories into dozens of tiny atomic fragments so you can test each individually. This is the wrong thing to do.

Our strongest memories have many associations and are accessible from multiple angles. Memory Genius allows you to build such complex memories naturally. A memory in Memory Genius can have any number of associations, defined using a simple format. For example:

In a channel, the flow rate is [equivalent at any two points]. This principle is described by [the continuity equation]:

[Q = v1.A1 = v2.A2]

where

[Q = flow rate] in [m^3/s]
[v = fluid velocity] in [m/s]
[A = cross-section area] in [m^2/s]

This memory chunk consists of nine associations, shown in bold. Traditional flashcard systems would recommend you create nine flashcards, carving up your memory into isolated factoids with no connections between each other. Bad idea! Memory Genius allows you to keep your memories whole and add context to each, without sacrificing testability. This is a powerful mechanism.

  

Memory Genius presents each memory with all the answers hidden. Each time you tap, one additional answer is revealed. You must answer them all correctly to score for that memory. This multi-step quiz is perfect for information that is difficult to capture in traditional flashcard systems, such as:

  • lists
  • poetry
  • song lyrics
  • music
  • procedures
  • memory palaces
  • reasoning
  • anagrams
  • other mnemonics

   

This method of describing memories even makes the most basic memories more memorable. For example,

"Mum was born on the [12th of September, 1948]."

is easier to remember as a whole chunk than the challenge-response:

Q: Mum's DOB?
A: 12 Sep, 1948.

In addition to this powerful multi-step testing, Memory Genius allows you to organise your memories into a concept map. You can test all your memories or any subtree of your concept map as you wish. The mere act of organising your memories will also help you strengthen your understanding.

   

The concept map was the initial motivation for developing Memory Genius. Most other software uses tags, which soon become unmanageable. Trust me, my memory database has ballooned to 19,000 memories. The only way I was able to manage my memory was to write Memory Genius!

If you need to remember stuff (you do), give Memory Genius a try. Not only does it optimise against your forgetting curve, but it is also makes testing your memory fun :)

Install Memory Genius Now

Read more...

]]>
https://rogerkeays.com/memory-genius-app-sneak-preview https://rogerkeays.com/memory-genius-app-sneak-preview Mon., 16 May 2016 04:41:13 +1000
<![CDATA[Money Talks Released]]> Money Talks Released

When I couldn't find a good double-entry accounting app on the Android marketplace, I decided to implement my own. I was spending more time testing apps than it would have taken to make what I wanted myself. Anway, I've been using this app on my phone for over a year now, and I've finally got around to polishing it up to release to the general public.

Money talks has been specifically designed with a simple user interface without sacrificing on features.

✔ Record your expenses quickly and easily
✔ See your daily spend in your journal
✔ Track income and expenses
✔ Track assets and liabilities
✔ Supports multiple currencies
✔ Real double entry accounting
✔ Unlimited account hierarchy
✔ Cashflow report
✔ Balance sheet
✔ Easy to use

Get Money Talks From Google Play

Money Talks is intuitive to use. Whenever you spend some money just click the + button (new transaction) and fill in the details. That's all you really need to know. The Journal will show you your day to day spend, or you can use the Reports tab to see how much you've spent for the week, month, or any other period.

   

You can set up as many categories (accounts) as you need and organise them in many different ways. Each account can have a different currency, which is great for travellers carrying multiple currencies. Money Talks takes care of calculating conversion rates for you, so your accounts will always balance.

   

The default currency in Money Talks is dollars ($). To change this, go to the 'Accounts' tab, and long tap 'All Accounts'. Put in your local currency in there and it will be used for the rest of the app.

You can also use Money Talks to track your investments. Just make an account for each investment. When you edit the account you can enter the unit price of your investment, and the balance sheet will be updated with the current value of your investment.

That's all there is to it. If you like Money Talks, don't forget to leave a review and spread the word about this great tool.

Get Money Talks From Google Play

Read more...

]]>
https://rogerkeays.com/money-talks https://rogerkeays.com/money-talks Thu., 28 Jul. 2016 20:51:14 +1000
<![CDATA[Life Without A Smartphone]]> Life Without A Smartphone

I'm watching a young German guy absent-mindedly spinning his iPhone between his thumb and index finger. He reminds me of me. Me when I used to have a smartphone. But three months after replacing it with a dumbphone, I can finally see them for what they really are. Toys at best; tools for social media companies to sell your attention at worst.

You point your finger and laugh. Why would you buy a dumbphone? Well, I got fed up with smartphones. I got sick of replacing broken screens, running out of battery, fixing broken buttons and having them stolen. Also, I wanted to know if I would miss my smartphone. After all, we can't live without them, right?

No, wrong. Totally wrong. I don't miss my smartphone in the slightest. In fact, I'd say that life is better without it. Let's take a look at why. Here is what I used to do with my smartphone.

1. Take photos

If I ever had a good reason to have a smartphone, this was it. But as it turns out, cheap point and click cameras are even better than your phone camera, and they don't impose fake colour mode to make your life look better than it really is.

My girlfriend donated me a Samsung camera she won. Unfortunately it got sand in it, so I had to replace it. I still chose to buy a camera over a smartphone though, because I have started to enjoy not having a smartphone.

2. Tune my violin and guitar.

Along with the instrument tuner on my smartphone, I had some ear-training apps for learning to recognise music intervals and chords. I thought these apps were really helping me improve my musical ear. As it turns out, tuning my violin by ear every day is far, far more effective.

For tuning, I copied an mp3 of A440 to my dumbphone (i.e. the equivalent of a tuning fork) and use it as a reference. I have had to learn, not only to recognise correct intervals, but also to recreate them. My ear has improved enormously since I started doing this. As soon as I get my hands on a tuning fork, I won't even need the dumbphone. Or... as I get better at producing A440 from memory, even that could become redundant. This is a major score for the dumbphone.

3. Listen to music.

I made sure to buy a dumbphone with mp3 support. I looked into buying a separate mp3 player, but there wasn't much point. Once upon a time had one of those tiny iPods that clip onto your shirt, which was quite good for skateboarding.

4. Take notes.

With a slide keyboard like Swype, smartphones are not too bad for taking notes. Then again, neither is a 50c notepad. Also, I have my memory palace. On the whole, I just don't miss taking notes on my phone. Pen and paper works just fine.

5. Study flashcards.

This is the only app I miss on my smartphone. I can review my flashcards on my laptop, but I find that I don't. It's just not as fun for some reason. Either that, or I'm simply not in the habit.

I've been thinking something like a Kindle Fire could be good for reading and reviewing flashcards. Having a phone, a camera, a mini-tablet, and a laptop seems like a pretty bad solution, especially for a traveller. On the other hand, it does spread your eggs into different baskets.

6. Chat with my imaginary friends.

I've never been a heavy chat user, but I was just getting into WhatsApp when my iPhone was stolen. How am I going to flirt with all those girls without WhatsApp? I wondered. Well, I found a solution for that too. I don't. WhatsApp is an annoying waste of time. Having to send text messages instead of chat is a good way to filter out noise. Then there's making phone calls. Remember when people used to do that?

7. Demonstrate my social status.

Smartphones are a status symbol. Let's face it. If you want to be cool, you have to have an iPhone. Apple's marketing department decrees it so. What sort of self-respecting hipster would use anything else?

Fortunately, I've never been particularly interested in social status. Besides, I know that you know you paid too much for it. I'm so stoked with my dumbphone, it shows. I can brag about my battery life and indestructable screen and near-zero expenses while you just sit there thinking "you know what... he's right." Although you won't actually say that.

There is also a sort of street cred in having a dumbphone too. It's like having two phones. People wonder. Why, why, why?

8. Make phone calls.

My dumbphone can do that.

And that's it. I can't find a good reason to buy another smartphone. Having email on your phone is a great way to keep you working around the clock, but that's not what I'm aiming for. Then there's Facebook, I guess. But that will have to wait for another day. Can you imagine it? Life without Facebook?

Surely not.

Read more...

]]>
https://rogerkeays.com/life-without-a-smartphone https://rogerkeays.com/life-without-a-smartphone Mon., 25 Apr. 2016 02:29:47 +1000
<![CDATA[How to Make $1,739,586 in 15 Minutes]]> How to Make $1,739,586 in 15 Minutes

The title of this post is exaggerated. It will take you longer than fifteen minutes to make your $1,739,586 using this method. But that's only because it will take you at least fifteen minutes to read the post. Then you'll most likely ignore it and do nothing. You'll do nothing because you won't get your millions immediately. Instead, you will have to wait until you retire.

Have I put you off yet?

Well, for those of you who are still here, let me explain the concept. It's very basic and boils down to reducing the fees on your superannuation account. The money that was once going towards your fund manager's yacht, will instead slowly accumulate and eventually line your own pockets.

According to the Australian Bureau of Statistics, the average net income in Australia is a grotesque $80,000 p.a. The compulsory super contributions on top of this amounts to about $8,000 per year (and is increasing). Using these figures, we can do a comparison of the future value of a 23-year old's superannuation account at retirement.

We're going to make the following assumptions:

Age started working 23  
Inflation 2.5% (RBA)
Income $80,000 p.a. (ABS)
Employer super contributions 11% (wikipedia)
Expected return 8.5% (ASX)
Age at retirement 65 (ABS)
Compounding interval quarterly  

For this example, we using the same expected return for all the investment products. They're all stock market investments, so unless you believe your fund manager has a crystal ball, this is a valid assumption.

Now for the results. Here are seven different super funds, and the future value of our 23-year old's super if he invested in each. These were the funds I researched when setting up my own super account.

The only difference between these calculations are the administration and contribution fees of each fund. Administration fees are annual, and the contribution fee is applied to each super contribution made. The values are calculated from a starting balance of zero, and I've assumed the average income will grow at the rate of inflation.

Fund Annual Fees ($) Annual Fees (%) Contribution Fee Future Value Inflation-adjusted
Sunsuper ASX200 Indexing $52 0.15% 0.10% $4,379,648 $1,527,563
Host Plus PASX300 $78 0.19% 0.14% $4,316,199 $1,505,432
Qsuper Managed Funds $0 0.63% 0.00% $3,859,230 $1,346,048
Virgin Super ASX300 $52 1.00% 0.25% $3,458,449 $1,206,261
Intrust Super Managed Funds $73 1.10% 0.00% $3,366,376 $1,174,147
Vanguard Super ASX300 $66 1.11% 0.20% $3,353,208 $1,169,554
CFS Balanced Managed Funds $0 1.88% 4.29% $2,640,063 $920,818
      Difference $1,739,586 $606,744

(Download the spreadsheet)

There you have it. By investing in a low-fee index fund instead of a typical managed fund, our 23-year will find himself $1.7 million richer when he retires. That works out to about $600,000 in today's money. I know, it's not much. Especially when you have to dig up your superannuation member number and open all those browser tabs to update your investment preferences. Actually, don't bother. It's too much of a pain. Besides, you could be on Facebook watching videos of cats doing backflips.

Read more...

]]>
https://rogerkeays.com/how-to-make-1.7-million-in-15-minutes https://rogerkeays.com/how-to-make-1.7-million-in-15-minutes Mon., 28 Mar. 2016 01:48:12 +1100
<![CDATA[NoVDL: Write your JSF views in pure Java]]> NoVDL: Write your JSF views in pure Java

NoVDL is a View Description Language that makes your JSF views more robust by implementing them in Java. By using Java to write your views you automatically gain many features.

  • type safety
  • compile-time code verification
  • stack traces that actually make sense
  • ide autocomplete support
  • ide refactoring support
  • java static methods for composite components
  • java function composition for decorating views
  • java inheritance for decorating views
  • java object references to access components
  • java method references to invoke action listeners
  • java namespacing for component libraries
  • high performance
  • less reliance on flaky EL expressions
  • less reliance on managed beans
  • no XML configuration, taglibs, or magic annotations
  • one language to learn instead of three (Java + XML + EL)

Example View

public class OrderForm extends BasePage implements Activity {

    @Override
    public void buildView(FacesContext faces, UIViewRoot root) {
        List<Product> products = ProductDAO.getAllProducts();
        UIPanelGroup main = 
          h_panelGroup().children(
            f_verbatim("<h1>Order Form</h1>"),
            h_form().id("order").children(
              h_dataTable().id("products").value(products).var("product").width("100%").children(
                h_column().header(f_verbatim("Description")).children(
                  h_outputLink().id("link").valuex("${product.page.linkURL}").children(
                    h_outputText().valuex("${product.description}")
                  )
                ),
                h_column()
                    .header(f_verbatim("Quantity"))
                    .children(h_inputText().id("quantity").converter(new IntegerConverter())
                    .footer(h_commandButton().id("submit").value("Create Order")
                                    .actionListener(createOrder()))
                )
              )
            )
          );


        /*
         * If your master template is implemented in java you'll create a 
         * separate function to build it, e.g.
         *
         * build_master_view(faces, root, main);
         *
         * NoVDL also includes a function to execute a facelet which can 
         * then include the partial view you created here using a 
         * binding=".." attribute.
         */
        build_from_facelet(faces, root, getMasterTemplate());
    }
}

Mapping Routes

The current implementation maps the view id to its Java implementation by converting the url path to a class name. E.g.

http://localhost/com/example/Demo.xhtml

is routed to the class

com.example.Demo

If you need different functionality, you could rewrite get_view_class_name() and recompile NoVDL. If there is enough demand, I'll make this function configurable.

Value Expressions

NoVDL allows value expressions to be set by using the setter method which ends in x. e.g.

h_outputText().value("Hello World"); // or
h_outputText().valuex("${bean.greeting}");

This was chosen partly because the NoVDL components are automatically generated from the JSF API, and partly because EL is discouraged in NoVDL. Ideally, we'd like to be able to implement ValueExpressions using lambda functions.

Composite Components with a Static Factory

It is very easy to make composite components using a static factory method.

public static UIPanel create_data_grid(Data current) {
    HPanelGrid grid = h_panelGrid().id("ox_related").columns(4);
    for (Match match : data.getMatches()) {
        HPanelGroup panel = h_panelGroup().id("ox_related_" + match.getId());
        if (match.getThumbnail() != null) {
            panel.children(
                h_outputLink().value(match.getLinkURL()).children(
                    h_graphicImage().value(match.getThumbnail())
                )
            );
        }
        panel.children(
            f_verbatim("<p>"),
            h_outputLink().value(match.getLinkURL()).children(
                h_outputText().value(match.getTitle())
            ),
            f_verbatim("</p>")
        );
        grid.getChildren().add(panel);
    }
    return grid;
}

This is a good example of why XML is a questionable choice for user interfaces. Is it declarative code or is it procedural? Actually, it's a mixture, and there is not much advantage to declarative languages when you start to mix in procedural (or functional) code.

Decorating Views using Functions

Same idea as above. e.g.

public static void decorate_view(FacesContext faces, UIViewRoot root,
        UIHead head, UIComponent content) {
    root.getChildren().add(head);
    root.getChildren().add(
        h_body().children(
            content
        );
}

Decorating Views using Inheritance

Function composition is preferred over inheritance. If you like inheritance, all you need to do is make an abstract superclass that defines the sections of your view. e.g.

public abstract class MasterView implements Activity {

    @Override
    public void buildView(FacesContext faces, UIViewRoot root) {
        root.getChildren().add(build_head(faces));
        root.getChildren().add(
            h_body().children(
                build_content(faces)
            );
    }

    public abstract UIHead build_head(FacesContext faces);
    public abstract UIComponent build_content(FacesContext faces);
}

Mixing Facelets and Java Views

Use the function

build_from_facelet(faces, root, template);

to execute a Facelet from your buildView function. Inside that template, you'll have to reference the components you built using NoVDL. e.g.

<h2>Current Data</h2>
<div class="web_noprint">

  <!-- datagrid is prebuilt with NoVDL -->
  <h:panelGroup binding="${someBean.datagrid}"/>
</div>

Editing Views on the Fly

Facelets lets you edit views on the fly without recompiling or restarting the application. You should be able to use HotSwapAgent or JRebel to achieve the same thing with NoVDL.

Installation

NoVDL is automatically detected when you add the following dependency. View IDs that cannot be mapped to Java implementations will fall back on the default view decoration language (normally Facelets).

<dependency>
  <groupId>au.com.ninthavenue.jamaica.faces</groupId>
  <artifactId>novdl</artifactId>
  <packaging>jar</packaging>
  <version>1.0</version>
</dependency>

Note: NoVDL requires Java 8.

Get the Source

https://github.com/rogerkeays/novdl

Spend some time experimenting with NoVDL and let me know how it works for you.

Read more...

]]>
https://rogerkeays.com/novdl-write-your-jsf-views-in-pure-java https://rogerkeays.com/novdl-write-your-jsf-views-in-pure-java Fri., 11 Mar. 2016 07:46:11 +1100
<![CDATA[Vimliner: The Smallest, Fastest Outliner for VIM]]> Vimliner: The Smallest, Fastest Outliner for VIM

I was quite fond of the WorkFlowy outliner until the sync failed and broke my offline access. It was just lucky that I'd made an export of my data not too long before it failed.

But really, I didn't need sync that much. I just needed a fast outliner. And what could faster than Vim? With a bit of investigation into Vim's code folding capabilities, I came up with a single-file script to turn Vim into a fast and simple outliner. It is fully functional, and is only 21 lines of code.

To install Vimliner, just copy vimliner.vim to your $HOME/.vim/ftdetect directory and use a .out extension for your outliner files. You can also use :set filetype=vimliner if you prefer not to use the .out extension.

Download vimliner.vim to $HOME/.vim/ftdetect

Here is what it looks like. You just use <TAB> to open and close the folds, and navigate through your outline.

Here is the full code of vimliner.vim for the curious.

Enjoy!

"
" Vimliner is the smallest outliner for vim. It uses vim's existing code 
" folding capabilities with some simple configuration. The result is a fast,
" powerful outliner using your favourite text editor.
"
" Install Vimliner by saving this file to $HOME/.vim/ftdetect/vimliner.vim
" on unix, or $HOME/vimfiles/ftdetect/vimliner.vim on Windows.
"
" Save your outliner files with a .out extension for Vimliner to be 
" autodetected. Otherwise, use :set filetype=vimliner from within vim.
"
" The outliner uses an indentation level of 2 white spaces to create 
" new levels. You can use vim's default code folding shortcuts to move
" throughout your outline, or just use <TAB> to open and close levels.
" 
" The most frequent shortcut keys you will use are:
"
" <TAB> open or close the current fold
"   zx  close all other folds  
"
" Use :help fold-commands in vim for additional shorcuts.
" 
" The fold function consumes blank lines. If you need to separate one
" fold from another, use a string of space characters that match the
" current indent level.
"
" News And Updates:
"
" https://rogerkeays.com/vimliner
" https://www.vim.org/scripts/script.php?script_id=5343
"
" Release Notes:
"
" 20200430_1.2 - renamed to vimliner to avoid confusion with rival project
" 20200424_1.1 - allow lines containing only whitespace
" 20160305_1.0 - initial release
"
" License: https://opensource.org/licenses/Apache-2.0
" Author: Roger Keays
"
autocmd BufRead,BufNewFile *.out set filetype=vimliner
autocmd FileType vimliner set foldmethod=expr foldexpr=VimlinerFold(v:lnum)
autocmd FileType vimliner set foldtext=getline(v:foldstart).'\ ›' fillchars= 
autocmd FileType vimliner set shiftwidth=2 expandtab autoindent
autocmd FileType vimliner set linebreak breakindent showbreak=--------------\ 

autocmd FileType vimliner hi Folded ctermbg=black ctermfg=yellow
autocmd FileType vimliner nnoremap <TAB> za

function! VimlinerFold(lnum)
    if getline(a:lnum) =~? '^$'
        return VimlinerFold(a:lnum - 1)
    endif

    let this_indent = indent(a:lnum) / &shiftwidth
    let next_indent = indent(a:lnum + 1) / &shiftwidth

    if next_indent == this_indent
        return this_indent
    elseif next_indent < this_indent
        return this_indent
    elseif next_indent > this_indent
        return '>' . next_indent
    endif
endfunction

Read more...

]]>
https://rogerkeays.com/vimliner https://rogerkeays.com/vimliner Sun., 6 Mar. 2016 08:59:46 +1100