I'm developing a DNS hosting service (http://slickdns.com) and am using Django to do the bulk of the development, but I've also written a little utility web server in Go as it needs to be high performance but also lightweight and Go fits the bill perfectly. Updates are also a breeze as it's just a single static binary, compared to Django/Python where I have to make sure that any 3rd party dependency packages are installed first.
I use Go very heavily for "duct tape" in production, combining processes like machine vision, VNC clients, and video transcoding into a uniform internal API. It has been conceptually a lot easier to work with than my native Python since it offers better (for me) abstractions and a very manageable concurrency model.
Using Go in a professional setting really isn't a technical challenge. The biggest concern is if you have to grow your team, you're either going to have to teach Go (which isn't that hard -- I've seen two different people come from dynamic languages and pick the basics up in a week) or hire people who know Go (often already happily employed).
To further mangle Charles V: "I speak Spanish to God, German to my horse, and Go to connections that might make me wait."
The Go runtime creates new threads to run goroutines when a thread is blocked making a syscall. The net package avoids having too many threads blocking on syscalls by using epoll/kqueue etc. for socket I/O.
The goroutine is a user-thread, Go can create as many threads as there are cores and schedules user-threads inside these threads without the programmer managing that, you just create goroutines. When a goroutine "blocks" it schedules out from the thread and another can replace it.
Brazilian Jiu-Jitsu is really interesting. Started a training course two weeks ago. It's quite the full-body workout - sore muscles after every session. Core muscles, arms, legs, back. Sparring really makes primal instincts kick in, so there's never a motivation problem. Everyone's exhausted after an hour session, and it's the good kind of exhaustion. Very intense and varied experience. BJJ was explicitly designed to minimize the advantage of larger and heavier opponents, so it revolves around technique to a significant degree. Therefore, sparring with someone way bigger than you is completely different from sparring with someone much lighter; Both are incredibly entertaining. Best session I had was against a female partner, probably 15cm and 15kg lighter. She had a very keen sparring instinct and easily outmanouvered me. Felt the quick intellect behind every move. Amazing experience. Something in it that's missing from the average modern life ...
Climbing is the One True Sport for me though. Do try it! The climber's physique is quite attractive and confidence-inspiring. There is a minimum of technique that I hope people will be aware of. I don't want to make it seem complicated though, it isn't.
In the climbing process itself, the minimum technique is this: Become efficient. Get a feel for your balance on the wall, make stable triangles on the holds to free the fourth limb to go to the next handhold/foothold, and use larger joints/muscle groups rather than smaller; Most people's instinct tells them to to pull the body up with upper-arm strength, but generally one can keep the arms straight and use legs, waist, torso, or shoulder muscles to gain elevation.
And climbing is not a trivial load on the body. One can climb injury-free, but this does require a minimum technique or form. Always warm up, always perform the proper stretches (about 8 main forms of stretches, takes 10 mins or so after practice and really kickstarts the post-exercise well-being). Listen to pain: Usually, pain comes from imbalance in the muscles, or tendons or cartilage not being ready yet. Back slightly off and learn the quite simple exercise designed to put that joint and that muscle group back into balance. Climbing stresses tendons and cartilage, which by nature strengthen and heal slower than muscle.
I came to the same conclusion about a month ago. Some of the examples he listed I solve by tossing a coin and leaving it up to chance. I only do this when I really don't care about the outcome. Before tossing the coin, I make sure of this, if I prefer an outcome, then I don't need to toss. There was a famous quote that more or less said the same thing.
Tossing a coin is actually a great mechanism for bringing your unconscious into the decision. Flip the coin. If you suddenly feel yourself wishing it fell the other way, then your gut is telling you to to go with the other decision. Most likely your gut doesn't care and you can just go whichever the coin falls.
Hello, I also started rails by reading your tutorial. I have a question, this post http://stackoverflow.com/a/5612941 suggests that the way to model a friendship is to duplicate rows in a transaction and it cites a book you wrote.
Is this still the way to go? I like the idea of duplicating rows because it simplifies the associations a lot, but I've been warned against it. Is that the way you would do it?
I know it's probably harmless, but this is one of those things that I rather wait before trying it out. You never know, there could be very small hidden side effects. The brain is so complex and poorly understood that I rather not mess with it in this way.
Examples: maybe this will make you likelier to have a brain seizure when you are just 60 years old, maybe after prolonged use one region of your brain is more active making you behave differently (could be positive or negative), maybe it will make you more susceptible to Parkinson, Alzheimer, etc...
That being said, if everyone was as coward as I am, we would have missed on lots of inventions.