by_star

April 28th, 2010 by Radar

It’s plugin / gem pimping time!

I started writing by_star back in November 2008 when Thomas Sinclair asked me if I could write a method that could find records for a given month. I was in my gem creating phase then so I created a gem called by_month and Thomas paid me for it (the sucker!).

Later on, I realised that by_month wasn’t good enough so I added a couple more finders to it. Then I added some more. Now you can find by all of these things:

  • A given year
  • A given month
  • A given fortnight
  • A given week
  • A given weekend
  • A given day
  • The current weekend
  • The current work week
  • The Past
  • The Future
  • Between certain times
  • As of a certain time
  • Up to a certain time
  • Before a specific record
  • After a specific record

So if you’re ever doing anything in your application where you need to find by dates / times, why are you not using by_star? Here’s a good reason you should be using by_star:

Before by_star

 Post.all(:conditions => ["created_at >= ? AND created_at <= ?", "01/01/#{Time.now.year}".to_time, "31/01/#{Time.now.year}"])

After by_star

Post.by_month(1)

This is only a taste of the shiny things in by_star! Use it!

rubyonrails.org is down

April 21st, 2010 by Radar

Again!

Put this into your hosts file:

209.20.86.131 rubyonrails.org api.rubyonrails.org guides.rubyonrails.org gems.rubyonrails.org

And all should be well.

Seems to be broken for now. Follow these instructions if you want the guides:

git clone git://github.com/rails/rails.git
git checkout origin/2-3-stable -b 2-3-stable
cd rails/railties
rake generate_guides
open guides/output/index.html

Run gem server if you want access to the API documentation.

You’d think they would have sorted this out by now! This has happened, to my recollection, for the past 3-4 years. Hopefully now DHH renews it for a longer period than just a year.

Rails 3 Book

April 20th, 2010 by Radar

If you read the entirety of my last post then you may have seen this:

Yup, you heard it here: I’m going to take on writing a book. This is why I want you all working on Rails and the community, because I simply will not have the time to sit in the IRC channel or on Stack Overflow to help you out anymore. Somebody else needs to step up and “be me” temporarily if I am to complete this book by the end of the year. I want your feedback on this! So contact me on twitter or e-mail me with ideas of what you think should go in a book about Rails.

I am going to be writing a book about Rails 3 and I have a general idea of what should go in it (tests first, deployment to heroku and document databases, to name a few things), but what would really make this book worthwhile to all is your opinion. I did mention that Twitter and email were fantastic ways to reach me, but really I’d rather a discussion for this, so I created a new UserVoice account for this. It’s called Rails 3 Book and I’d really like to hear from you about what you think should go in this book.

So far I have a very, very basic Table of Contents. It’s going to be a long process, but a very, very exciting one. I look forward to working with you on this book and I hope that you buy it when it comes out.

I want you to give

April 19th, 2010 by Radar

Greetings. I want to “answer” to you as I feel you deserve an answer for my previous post.

I won’t start this post with a terrible analogy. I will use swear words throughout though.

I will, however, start it with an apology. The apology is for my most successful post yet. I am honestly sorry for anyone that was offended by the language of the post. Let me explain my thoughts, and I hope we can resolve our differences.

It was positively successful. It drove a lot of traffic to my blog which is what all bloggers truly want: to be noticed. To have people leaving comments. To have an effect on the world around them. If you want to really, really hurt a blogger: stop reading what they write. Your “un-attention” is blogger Kryptonite. To those who have commented positively on not only this post, but any other post on this blog, thank you. You give me the motivation to continue writing.

Then there was the negative reaction that I did see coming, but did nothing to prevent it. I welcomed it. Simply put: negative reactions are more noticed than positive reactions of the same strength.

I will dip into my history as a supermarket checkout attendant again here temporarily. I would receive thanks from the customers who I served regularly. I thought I was good at my job. The people whom I worked with thought I was good at my job. But when a customer complained that I packed something incorrectly, that’s when the shit hit the fan. I would be brought into the manager’s office and we would have a discussion about ensuring that all customers are happy. This is impractical. We are all humans, and therefore we make mistakes, or take offense to something when there was never any given. It only takes a small negative thing to set off a large enough reaction that you’ll tell you friends about it, where as it would take a huge positive thing for a similar-sized reaction to occur. Never, ever, was I called into the manager’s office for him to compliment me on any of the exceptional things I did. He was an asshole.

As a programmer, I attempt to see the logic in everything. I can understand that, for example, when I press the “a” key on my keyboard, that an “a” is going to appear on the screen, always. It’s just logical. This is why I sometimes get frustrated with human behaviour, as it is illogical. My intention for the post was to get people interested in working on the core of Ruby on Rails rather than the ecosystem around it. You cannot have a stable ecosystem without a stable core. Yes, you are correct. I was arrogant in my post. But I implore you to think of it from my side of the fence. I am trying to convey a point. To get some motion going. Do you honestly think my post would have generated that much traffic had I been saying things such as “Hey guys, there’s 900 open tickets in Ruby on Rails. Would you mind, you know, taking some time out of your very, very busy schedules and fixing it”? I think not. Before you go reaching for that comment form, read that again.

I think not.

The operative words, of course, being “I think”. You know this. I don’t need to explain this to you. I am not stating it as fact that the post would not have been successful had I used positive terminology rather than the words I used. It is simply my interpretation. You have yours, and I have mine. I willingly used terminology that was offensive to evoke a large enough response in order to get some more eyes on Rails tickets.

I want to thank those of you who reacted negatively to this post, too. Why? You guys are the ones who generated the media coverage. You got it very highly ranked on the Ruby subreddit, Hacker News and many other technology media sites. You are the people who I want to talk to the most. You are the ones who have great ideas of how I could better go about conveying my point, and I have talked with some of you, such as Eric Florenzano. Eric was the writer of the aforementioned “Axe body spray” tweet. I politely asked him if I could email him, and he said yes and so I’ve posted the transcript if you would like to have a read. This is the kind of back-and-forth I am really looking forward to having with you all.

Then finally, my favourite response of all from this post was from a guy called Matthew Joiner (yes, I did my research too ;)) who was the only person out of all 10,000-and-something unique visitors to my blog to track down my email address and write me an email. Matthew starts off his email like this:

No one special sending you a random email, I know how people hate it, but I also am not really into commenting on blog posts, so I hope this doesn’t annoy you too much.

When I read this, I was annoyed. Annoyed because he thought I would be annoyed! Why would sending me an email, annoy me? I want you to notice me. The one way you can inform me that you’ve noticed something that I’ve done is to email me. You can also buy me cider in real life (FYI, favourites so far are Magners and Aspley and Scrumpy Jack). I digress. You can come up to me at any of the Ruby/Rails meetups I go to and shake my hand and say “I really liked that.” It’s my fuel. I want to be noticed. Maybe I’ll post about the “why”s of it later, but I’m sure you can guess those.

Matthew was the only person to send me an email which instantly disqualifies him from the “no one special” category forever. He has gone out of his way to track down my email and tell me what he thought. Nobody else did. So I wrote him a reply effectively thanking him, and discussing a couple of things. A 1500-word reply. You can find the transcript from this email here. He mentioned my email was nowhere on the site, but now it is in the sidebar. This is the most direct-line of contact you can have with me just short of my mobile number.

This is also the kind of back-and-forth I want to have with you all. I want you to ask me questions about Rails 3, and in return I get something from you automatically, which is the feeling of satisfaction of being noticed. Then if I help you, further satisfaction that I’ve improved your life somehow.

Finally, when a lot of you start asking questions, then I have more material to write down for a book I’m thinking of writing. Yup, you heard it here: I’m going to take on writing a book. This is why I want you all working on Rails and the community, because I simply will not have the time to sit in the IRC channel or on Stack Overflow to help you out anymore. Somebody else needs to step up and “be me” temporarily if I am to complete this book by the end of the year. I want your feedback on this! So contact me on twitter or e-mail me with ideas of what you think should go in a book about Rails.

So let me finish on a positive note. Since that post last weekend, over one hundred Rails tickets have been marked off the list, be it them being marked as invalid and then all the way up to patches being submitted and a lot of people getting things done. That’s an amazing amount of effort and it is these types of people the community needs more of. If you want to nominate somebody for the Ruby Hero award, do not nominate me (ok, you can if you want). Nominate the collective of people making the community a better place. I am not the only person doing this. I fear for that situation. I do not want to be the go-to guy for all of your issues as that is the community’s job. But, in order to build a knowledgeable community, those with the knowledge need to be out there spreading it, rather than sitting in their “ivory towers”.

Side-note: I’d like to think I know for a fact that this post won’t gain the level of recognition that the original did. That’s fine with me. If you could go about proving me wrong, please do: I enjoy being wrong.

All I ask is that I want you to help one person a day with Ruby or Rails. Be it a co-worker, a friend, or a complete stranger. Just go out there and do something. C’mon, you can do it. It’s an awesome feeling.

has_and_belongs_to_many double insert

April 14th, 2010 by Radar

This is a story about my work with GetUp, in particular the past week. It’s about a problem that I’ve been putting off help one of the guys (James) solve, it didn’t seem all that important to me. So last night I kind of promised that I’d sit down with him this morning and help him work out what it was. Hopefully it was something silly either of us did and it would only take us an hour.

You know how this story is going to end up already.

It didn’t take us an hour. It’s now 5pm and I’ve only just figured out what it was.

Symptoms

We have two models who’s names aren’t important so excuse me if I use the name Person and Address to represent them. They are nothing of the sort. In their purest form to replicate this issue, they are defined like this:

class Address < ActiveRecord::Base
  has_and_belongs_to_many :people
end

class Person < ActiveRecord::Base
  has_and_belongs_to_many :addresses
  accepts_nested_attributes_for :addresses

end

When we go to create a new Person record:

Person.create(:addresses_attributes => { "0" => { :suburb => "Camperdown" } }) 

It inserts 1 Person record, 1 Address record but 2 join table records.

So, wtf?

We originally thought it was a bug in our application. How, in all realities, could Rails have a bug, right?

Wrong!

I should know how many bugs Rails could have. I should have been more wary. I was not. And it bit me in the arse. So out of curiosity I googled the issue and saw that others came across it and then I tried checking out to v2.3.4, which worked!. So there was a regression between v2.3.5 and v2.3.4. A simple git bisect bad v2.3.5 with git bisect good v2.3.4 put me on the way to finding out what this was. A couple of bisects later, I found the offending commit was 6b2291f3, by Eloy Duran.

A “solution(?)”

So I generated an application to simply demonstrate that this was a 2.3.5 regression. As I say in the README, I suggest using 2-3-stable if this bothers you. Alternatively there’s always Rails 3, or simply specifying the :uniq => true option on your has_and_belongs_to_many.

That was a fun 7 hours.

As I found out this (the next) morning and Tim Riley points out in the comments the ticket for this bug is #3575 and the related commit is 146a7505 by Eloy Duran also. Freezing rails to v2.3.5 and git cherry-picking this commit into this frozen version fixes it.

Want it? Give.

April 10th, 2010 by Radar

Imagine this scenario. You’re waiting at a checkout at your supermarket. It’s a pretty long line, compared to your past experiences.

Directly in front of you there’s a 22-year-old guy with medium-length hair, listening to God-knows-what on his earphones, dressed in casual gear. Probably middle class.

In front of him there’s another guy, about mid thirties, wearing a “business suit”; black pants, white top and tie. Probably upper class.

Then in front of him there’s a woman, probably around the same age as the man, but dressed like a hippie. She’s got a shirt that says “There’s no place like 127.0.0.1″. You fondly remember giggling quietly to yourself the first time you saw this shirt.

Then of course there’s the cashier. Unusually, it’s a guy with a ponytail who looks like the kind who you’d see attending computer and anime conventions.

The lady at the front of the queue puts her goods on the belt and the cashier processes them. Status quo. Then when the lady hands over the money, the cashier’s drawer breaks and falls out. Money goes everywhere. Coins roll in every which direction.

Now what the fuck do you do? Do you sit back and let the cashier run about collecting up his coins or do you help out?

Well, in this analogy, you sit back and let the cashier do it all. All of you in the queue do. Nobody helps the poor cashier.

You useless, pathetic bastards.

Now imagine this scenario wasn’t a checkout line. Imagine the people in the checkout line are actually people in an open source project’s community. Imagine, for a moment, that you’re waiting for The Next Big Release for this open source project. Imagine instead of the cashier’s drawer dropping out and throwing coins like shrapnel from a frag grenade, it’s actually tickets for this open source project. Do you know of a project like this?

I do.

It’s called Ruby on Rails. And it’s suffering because of your ignorance. It is at the moment in a place which I will steal the term “Development Hell” for and use. At current writing it has over 900 open tickets. Let me state that again because it is such a pertinent fact: There are over 900 tickets still open. So what the fuck are you going to do about it?

One little piece

It’s great that (at least in this Western world) we have things called weekends. We also have time where we are not working. Some of us have (a lot) more of it than others and generally waste it playing video games or watching TV. I’m fine with that, but there is a limit I feel before it turns from “relaxing” into “slacking off”. You have to realise that you are part of a world-wide community. You are using something developed by people world wide and it is time that you gave back.

I am sure that many of you reading this will think “I don’t know enough about Rails to do anything with any of the tickets.”

Bullshit. Fucking bullshit.

Take this ticket for instance. Guy experiences hassles with rake doc:rails on Ruby 1.9.2 and edge Rails. How do you go about fixing something like that? Well, here’s that god-damned clue you’ve been missing:

  • Attempt to duplicate it. People make mistakes, because they are people. Can you see what they did wrong? Is the bug still occurring in the latest (at this point in time, 2.3.5 & 3.0.0, yes, test both!)
  • If something is broken, attempt to fix it. This continues onto my third point:
  • Fix it! This is the most simplest, basic, elementary thing. You know the saying “If it ain’t broke, don’t fix it?” the reverse applies. Fix the ever-loving shit of it.
  • Can’t fix it? Find somebody who can. They exist. There’s a great probability that the problem is not as unsolvable as certain other problems in this world.
  • Can’t find somebody? You’re not looking hard enough. Ask in the IRC channels on irc.freenode.net. Ask in #carlhuda. Ask in #rubyonrails. Ask in #rails-contrib. Ask your friends. Post on the core mailing list. Six-degrees of separation means that you have the power to find somebody with the power to fix this issue.
  • Is this ticket no longer valid? Assign it to somebody who can close it. I’m now one of these people. Assign it to me and I’ll look over it.

Another thing to look at is how long the ticket has been a problem for and if it still applies to the latest version of Rails. Take for example this ticket which has been a problem since the 9th of January last year, when Rails 2.2 was the latest version. It’s still a problem in Rails 3, and this means it needs to be fixed. If one guy is suffering, how many other people who have not seen that ticket are? We must go through and judge every ticket before a major release. If I was in charge of a release process, this is how I would run the show. When I release a major version of my project, I want a clean slate, well, at least no bugs. Admittedly there may be some people who miss out on feature requests, but that’s what future releases are for.

Pissing on the fire

I think the Bugmash events are freakin’ awesome. But they only “piss on the fire”. What we need is a concentrated stream (think Amazon River) to quell the beast of 900+ tickets. Donate some of your time to the Rails project. Spend a concerted amount of your spare time this week, and next week, and the week after that, going through the tickets and finding something you can help fix. Every little bit of effort helps.

The Rails core team has only so much effort it can apply in any given timeframe, how about applying some of your own to speed up the process of bringing us closer to a final Rails 3 release?

I ask you, not as a Ruby on Rails core member (clarification: I’m not, nor desire to ever be “core”), but as a fellow Rails guy: let’s keep this Rails beast alive and kicking. Take some time out of watching your porn and actually do something useful. Otherwise, you are just another leech hanging on the side and whining about “it’s been so long between releases”. Did you ever stop to think that: “maybe there’s something holding up the release?” or “maybe there’s something holding up the release that I can help with?”.

Give back to the community that has provided this wonderful framework for your benefit.

Please.

Extra Links

Dan Pickett also has similar advice on contributing back to Rails 3. He makes a good point that if you are able to demonstrate that you have contributed to Rails that it looks awesome on your CV / Resume.

Kristopher Murata writes from the point of view who hasn’t contributed all that much to Rails, but really wants to.

Greetings YCombinator people! Thanks for making this story one of your favourites (peaked at #4). I have commented on your comments left on YCombinator and I appreciate the time you have spent writing them. I look forward to keeping up the correspondence.

Greetings also to the Ruby sub-reddit crew. Thank you for making this your 3rd most popular post and your comments (no matter how critical, all comments are good)

When Rails 3 is Due

April 5th, 2010 by Radar

As a person who hangs out in #rubyonrails on Freenode a little too much of his spare time, I eventually come across repeated questions. This is why I made the channel bot which runs on Summer.

One of the hardest frequently asked question is “When is Rails 3 due?”, the next being “When is Rails 2.3.6 due?”

To be honest I don’t know, and I’m pretty sure not even Rails Core knows precisely when it’s due. Sure, they’ll have some kind of idea of when they’d like it to be released but it’s a very similar idea to mine of wanting to be rich (i.e. right now). Ideas and realities are two entirely separate worlds.

On the 1st of April, Rails 3.0.0beta2 was announced by DHH. This announcement came very nearly two whole months after first Rails 3 beta announcement.

So why so long between releases? Well, lets go time traveling.

We travel back, back through time and its murk. We land spot bang in the middle of March 28, 2006. It’s on this day that a slightly-younger version of DHH announces Rails 1.1. Oh look it has RJS. How young and foolish we all were. By we, I mean you guys of course, this was at least 3 months before I even begun getting into Rails. So Rails 1.1 was born into the world on March 28th, 2006. Right then. What about the next significant version?

The next version would be Rails 1.2, let’s jump forward to the first Rails 1.2 Release Candidate on November 23rd, 2006. This is a distance of ~20,735,982 seconds (or in more sensible terms: 7 months and 27 days) between a major release (1.1) and a the next major release’s (1.2) release candidate. Ok, so when was the next release candidate?

That would be the second Rails 1.2 release candidate. Somewhere between these two releases I joined the Rails fray. The distance between releases? ~3,715,200 (or in more sensible terms: 1 month and 13 days). They really didn’t waste much time getting this out the door, and with so many changes too! Next!

So with the release candidates out of the way DHH announces Rails 1.2. This was a mere 17 days (~1,468,800 seconds in the “old money”) between release candidate and major release. 17 days (not a pattern) later, Rails 1.2.2 is announced. On Pi day in 2007, 36 days after Rails 1.2.2 is released, Rails 1.2.3 is released. Then nothing happens for a while.

During the 30th September, 2007 A Rails 2.0.0 Preview Release is announced. Surely the 2.0 release has to be close, right?

Between the 2.0 release postings, on the 5th of October, 2007, 6 months and 19 days after Rails 1.2.3 is released, Rails 1.2.4 comes out. Then a mere week later, Rails 1.2.5 is announced and released. Rails 2 work continued through these releases, as indicated by a Rails 2 release candidate announcement in the midst of November 2007. Rails 1.2.6 was announced 1 month and 12 days after Rails 1.2.5 was. This was to be the final version 1 release before Rails 2.

On December 7th, 2007, Rails 2.0 was released much to the joy of the Rails world. 10 days later Rails 2.0.2 comes out with “some new defaults and a few fixes”. Then nothing happens for a while, again.

Then Rails 2.1 came out, on the 1st of June, 2008, 5 months and 23 days later.

Some more patch releases were made after the Rails 2.1 release. The 3rd of September is when Rails 2.0.4, the first patch release is announced, 3 months and 2 days later. On the 19th October, 2008, another patch release Rails 2.0.5 is released. This is 1 month and 16 days since the previous patch release.

Rails 2.1.1 was released 3 months and 4 days after the Rails 2.1.0 announcement with “lots of bug fixes”. It seems they didn’t quite fix all the bugs as Rails 2.1.2 was released 1 month and 18 days later. The next minor release wasn’t far off, only 28 days, and that one was Rails 2.2.

It is important to note that it is around this point in time that the Merb + Rails merger is announced on the 23rd December, 2008. This merge would grow into what we will soon know as Rails 3.

The next minor release after that was the Rails 2.3 announcement, 3 months and 24 days later on the 16th March, 2009, the first release of 2009. The next announced release occurred on the 20th July, 2009: Rails 2.3.3. Some security fixes are announced, making Rails 2.3.4 a reality 1 month and 15 days after the Rails 2.3.3 announcement.

Then we get to the most recent stable version of Rails: Rails 2.3.5. This was released a total of 2 months and 26 days after Rails 2.3.4.

Now most recently, the Rails 3 betas. The first was announced on the 5th Feburary 2010, 2 months and 5 days after Rails 2.3.5 was released, which doesn’t mean much. What’s a more relevant statistic would be that it was released 1 year, 1 month and 14 days after the Rails + Merb merge was announced. The beta was a very large and sweeping change of just about everything in Rails, afterall, this is a major release. There is going to be some major differences.

Rails 3 beta 2, announced on April fools day, 1 month and 25 days after the first beta release. DHH says that this release is “hopefully our last stop before a release candidate” but again: nobody knows.

13 days after this, Rails 3 beta 3 is released and DHH says “we’re getting close to home now!”.

Once you know the release candidate goes out you’ll know there’ll be a huge hubbub of how momentous the ocassion is. I say everyone deserves a “huge round of applause” or whatever the internet equivalent is. The amount of work put in Rails 3 over the last year and a bit is tremendous. Then people can finally start (or continue, in some cases) migrating their plugins and gems over to Rails. Personally, I look forward to the day where I can begin a new Rails application using compatible versions of Cucumber and RSpec and the latest and greatest Rails 3 code.

This post is not intended to give a solid or even a vague guess at what the Rails 3 release date is going to be. If you want my personal opinion it’s going to be another 2 to 4 weeks (from April 5th, so April 15th-May 5th) before a release candidate. Pure, utter, guesswork based on observation. The regression tickets themselves do not seem overly complex and if they are the only thing in the way of a release candidate then I cannot see there being any major delay.

May 9th update: So I was wrong about the release candidate. It happens. Things get delayed. My new guess is that they’ll release+announce the release candidate at or near the beginning RailsConf. For now, I suggest that we all start developing our applications on it now, so that we can get something strong for the community.

Not staying in Scotland

April 1st, 2010 by Radar

So I posted earlier that I got offered a job in Scotland and was staying for a couple of weeks. (Un?)fortunately this is not the case. As of this writing I’m sitting very close to Changi Airport’s C23 in the “Laptop Access” area they have here getting my internet fix after a 12-and-a-half hour flight. Sitting in a middle seat. Scotland is a fantastic country and one day I may go back to visit it but for now my home is Sydney, closely followed by Brisbane. If something comes up that is irresistible then perhaps I will move elsewhere, but there are still plenty of opportunities in Australia for me and moving is such a ginormous pain in the ass. If I did move out of the country it’s more than likely I would have to sell everything I own and start afresh, a prospect I do not look forward to. I simply have too much crap, and I’m only 22.

So in summary: Staying in Sydney, not Scotland. Catch up with you all when I get the chance :)

Staying in Scotland

March 31st, 2010 by Radar

This past week I attended the Scottish Ruby Conference and for the week prior I was experiencing the joy that is Scotland. I have made a decision to stay on a couple of weeks and I apologise for those who I haven’t yet discussed this with.

Since the conference, I have been discussions with one of the local companies who wish to hire me to teach Ruby after my contract with GetUp has expired. I’m going to their offices in Edinburgh today for a meeting to discuss this. I think they’re fantastic people and it would be almost as much joy to work with them as it has been to work with GetUp and I would name them if it wasn’t for a damn NDA. GetUp’s going to be exceptionally hard to beat.

I may return to Australia to collect some things and put my affairs in order eventually, but Scotland just feels like the right place to be at the moment. It’s much closer to a larger number of countries than Australia with greater opportunities in the Ruby & Rails sectors and I love everything here.

Later on today I will contact GetUp and let them know that I’m still willing to do work for them, albeit remotely, and I hope they will understand.

More on this later. See you then!

Starsigns & Dreams

March 7th, 2010 by Radar

Now I know that you guys expect this to be like… pure technological content since I’m a technological kind of guy, but sometimes I do break the rules. This is one of those more of a “blog” and less of a “tutorial” or “code” post. Sorry. Just something strange has been going on. Oh, and it contains profanity. Sorry.

I’m not one who believes in fortune-telling, I think it’s a complete and utter scam. These people will tell you precisely what you want to hear so they and their brethren can get precisely what they want: your money. They tell you all these good things and to pay attention to your horoscopes and star signs and so on and so forth, so you’ll go out and buy all these books about it and effectively dedicate your entire life to knowing about what’s going to happen in your future.

Fuck you.

No, really. Do you think that you’re such “a beautiful or unique snowflake” that the stars, balls of burning Helium, Hydrogen and whatever the fuck else are actually representing your fate? That they are able to correctly predict what will happen to you in terms of life (love and not), money and well-being? Jesus H. Christ you people are fucked in the head. You are not “a beautiful or unique snowflake”. Your fate is entirely dependent on your actions. If you want something positive to happen: work the fuck towards it.

Do not get me started on Numerology, either.

My (read: your) God.

Now that I’ve got that whole little blurb out of the way I can go on telling a story of two exceptionally strange coincidences that have happened within the past week. Yes, I view them as “coincidences”, not as “messages from the stars” or whatever you loonies want to call them. Although occasionally I feel that something is causing these to happen but then I have a nice hard-dose of a little thing us sane-folk like to call “Reality” and I’m right as rain.

Coincidence #1.

A girl at work asked me if my Paypal account had any money in it, I thought it didn’t but I checked anyway. There was some in there and she asked if I could use $1 for it to test some of the site’s donation functionality as it was misbehaving. I did, and it was. Then I thought that the money would be best out of the hands of Paypal and better in the hands of my bank so I “wrote” a mental note to transfer it when I got home. I didn’t.

That night I dreamed of a person or people putting money into my Paypal account. I quite often dream of things related to the previous day, almost like it’s a consequence of them being committed to my long term memory or something. So in the dream as I receive the money and go to transfer it, naturally I wake up. I always wake up from dreams when it gets to the good part.

So I get out of bed and onto my computer and as soon as I open up IRC I receive a IRC private message from Zarathu who says that he appreciates all my help that I give him and others and would like to show his respect in monetary format. He sends me $100.

Go figure.

Coincidence #2.

I have flu-like symptoms and to help me sleep through them I’m taking Codral day & night tablets. When I take the night tablets I have really, really vivid and sometimes whack(er than usual) dreams. Last night’s major consisted of myself and an unknown person really agreeing on something, we were having a discussion about something but there were no details. But we shared a common idea.

Tonight Marcelo & his girlfriend cooked dinner for us all and Marcelo’s mother came over. We talk about what I do and Marcelo’s girlfriend asks if I do iPhone development. I say that I tried to get into it but I needed an app idea in order to learn the language. She says she has an idea but she won’t tell me it because she fears I will steal it. There’s this one application I’ve been looking for (and I won’t say it because YOU will steal it :)) since the iPhone came out and I ask “Is it something to do with …?”

Silence.

“How’d you do that?”, she asks.
“Do what?”
“Read my mind.”

We spend the next hour talking about how awesome this idea is.

So, I still view these as coincidences, but for something like this to happen twice in a week is kind of freaky.