I listened to an NPR story last week about how Amazon patents trivial and obvious features on their site to force people to have a poor experience on other sites. Things like the One-Click Checkout button. Jeff Bezos has a strategy of competing with a thousand micro improvements to be better than their competition. Every advantage they can take, they take it, squeezing out other players.
But what happens when they’re just wrong? What happens when I’m having a poor experience with Amazon? Well, I move on to other sites, quietly.
Why would I leave? When Amazon’s failings and greed get personal. When they have something so mind-boggling stupid as a hover that covers their full screen button. So, if I mouse to the full-screen button from below, I get advanced to the closing credits of my show instead of getting the full screen experience I’m looking for at the beginning of the show. Now, I can go to full screen with command + f, which I often do, unless I’m tired and vegging out and watching something to just relax. At that moment, their brain-dead feature drives me absolutely bonkers.
No problem, right? Just drop them a note, someone will get around to fixing such an obvious oversight. No dice. I spent an hour today trying to figure out how to let Amazon know they’ve screwed up. I’m not sure who is more stupid: Amazon for their greedy, brain-dead ways or me for wasting an hour of my life trying to help them out. I think I’m pretty stupid for wasting my time and money on them.
And I think that’s how it happens. Some MBA looks at the cost of letting customers tell them there’s a problem, and there’s nobody around to calculate the benefit to the company of hearing that kind of information. I bet the cost is really high. But what is the experience when we can’t get a hold of them? Feeling isolated, angry, and looking for alternatives is an obvious outcome from the situation. There’s an inexorable progression from striving to serve the customer to striving to protect themselves from the customer.
Is self-interest going to be our resting pulse? This is a challenge levied in the pilot of Newsroom. Is that who we are as a society? There is no higher ideal to strive for?
I got a high-five from a professor once, defending passionately self-interest and the invisible hand. A capitalistic society can be incredibly efficient in some cases. But in so many cases, we settle for others’ self interest instead of our own. We get nickled and dimed from companies whose service is bad, but not quite bad enough for us to leave them. Our own interests are trampled. We’re just too complacent to shake things up.
My children have been getting ready for science fair again this year.
My daughter studied plastic last year. She’s nine, but she can recite how plastics are made, the different types of plastics, their effects on the environment. She made some toys out of casein plastic from milk. I don’t know what she’ll be doing this year.
One son is interested in aquatic environments and pollution. He was a grand champion in the fair last year for studying the effects of heavy metals in aquatic environments. This year he’s interested in understanding ways to clean aquatic environments from heavy metals.
Another son is interested in engineering cyber-physical systems. He’s been learning how to use the Raspberry Pi and interact with a dog with it. He’s also been studying classical conditioning and trying to figure out if he could enhance a pet’s life with inexpensive electronics.
They’re all doing great. I’ve asked them to work on a few chapters from a college text book on the design and analysis of experiments. They’re taking it slow, defining terms, asking questions and teaching each other what they’re learning. They’re learning about bias and different types of experiment design that help avoid some kinds of bias. They’re learning to think about their thinking.
I encourage science fair every year because it’s a collaboration with adults. They are invited to work with adults on things that are important to them, explain how far they’ve come, subject themselves to scrutiny. They don’t have limits with this kind of project. They can go as far as they have time and interest. They’re doing work that I’d be proud of at my age.
As I think about life ten years from now, I imagine we’ll have an ever-greater need to think clearly and deliver innovative results. I think we’ll all need to know how to collaborate on projects that we care about, subjecting ourselves to scrutiny, and hopefully building a better future together. Hopefully I can do this with the kind of wonder and excitement we see in the science fair.
I sat on a plane last week next to a neurosurgeon. I almost never speak with people on the plane, but it was a red-eye flight, and I was punchy. We spoke about the kind of training a neurosurgeon goes through. For him, it wasn’t just medical school, a residency and a specialty. He also underwent sub-specialty training to focus on dealing with particular cancers. He is a dedicated man that’s spent an incredible amount of time learning everything he can about how our brains work and what he can do to help out when things go wrong.
In about a decade, the world’s fastest computer may be able to simulate the activity of the human brain. Right now, the K computer was able to simulate about 1% of 1 second of the brains compute capacity in 40 minutes using the open-source NEST program. That won’t mean we will have the capacity to comprehend the complexity of the brain yet, but it will mean that we will have the power to simulate it.
The BRAIN Initiative is seeking to build that kind of understanding:
Researchers will be able to produce a revolutionary new dynamic picture of the brain that, for the first time, shows how individual cells and complex neural circuits interact in both time and space….this picture will fill major gaps in our current knowledge and provide unprecedented opportunities for exploring exactly how the brain enables the human body to record, process, utilize, store, and retrieve vast quantities of information, all at the speed of thought.
That is, the BRAIN Initiative (and the Human Brain Project out of Europe) are working on how the brain works, the NEST program is seeking to simulate the power of the brain.
I don’t know if reasonable models of how the brain works could be integrated with the power of these systems within two or three decades, but I imagine we’ll get this moving along within my lifetime, roughly. We’ll have the capacity to simulate a complete brain in some rough-shod fashion.
The Supreme Court ruled today on Hollingsworth v. Perry:
After the two same-sex couples filed their challenge to Proposition 8 in federal court in California, the California government officials who would normally have defended the law in court, declined to do so. So the proponents of Proposition 8 stepped in to defend the law, and the California Supreme Court (in response to a request by the lower court) ruled that they could do so under state law. But today the Supreme Court held that the proponents do not have the legal right to defend the law in court. As a result, it held, the decision by the U.S. Court of Appeals for the Ninth Circuit, the intermediate appellate court, has no legal force, and it sent the case back to that court with instructions for it to dismiss the case.
I don’t think I have a problem with the result of today’s decision. It seems proper for the Supreme Court to decide this. However, I think I lost a little of my innocence about how democracy works today.
It feels like something other than the voice of the people are winning more and more in America. That is, my vote counts less and less because the DA won’t uphold the people’s voice, or special interests are allowed to inject billions into our electoral process or simply that our votes are averaged out in an electoral college.
I don’t think that government should be in our bedrooms. I don’t think that government should be doing many of the things it is doing. But, I do think that government should be doing their jobs, despite their personal beliefs.
Put another way, what do I have to do to change things in America? Vote? Show up to council meetings? Write my opinion for public forums? Organize a phone tree? Donate to the political process? Create a shadow coalition? Control the DAs office, a whole political party, the White House and Legislature? How much power really has to be amassed before I have influence? If the voice of the people can’t guide this government, then what kind of government do we have?
photo credit: FeatheredTar
I’ve almost talked myself out of this post. It’s a lot of self-disclosure. However, I’m going to try and put on my big-boy pants and realize this might be useful to other people.
A lot of us build up a persona. We want to be thought of as smart, competent professionals. We do a lot to support this: our blog posts, open-source contributions, public speaking, participation in local users groups. Not all of this has ulterior motives. It’s a lot of fun to build worthwhile things, to collaborate with smart people.
But let’s be clear. The smartest of us have dumb days. The more I get to know highly-respected people, the more I see them as human, like me. They are still laudable, but they have their quirks, their weaknesses and blind spots.
So do I.
For me, sometimes things build up. The stress builds up, I can’t sleep, I can no longer concentrate. The last thing I want is to hash it out in the open, let people see me weak. I hole up and try to write code. I have a pattern of this, unfortunately. Things build to a head, then I want to drop off the grid and just be in a quiet space for a while. I still write code and think, but I’m a shell of myself in those times.
Maybe this is common. Maybe some of you have experienced this tendency? I’ve seen it in others.
Some would say that this is evidence that I lack a solid foundation. I might agree. The more I learn from Mastery, the more I respect the immersive practice we all need to be competent.
However, the cold reality is that any of us can get overwhelmed in software development. Aspects of it can grind us down.
Sometimes it’s the repetitively inane concerns of our users. On my good days, I know they are real concerns, something I can help them with. On my bad days, I get annoyed with how flippant they can be about work that can be terribly taxing and challenging.
Sometimes it’s the co-workers. It’s easy to take offense at others’ failures. The closer we get to others, the easier it is to get bristly with others. I’ve found that this gets harder and harder the more ‘competent’ my co-workers are. I.e., the really big players tend to have more quirks than the middle-of-the-road developers. Middle-of-the-roaders don’t stick out, don’t risk being personally offensive. The really good ones pick up prima donna habits. But, they also have a lot to offer. They take risks to give more, and they should be respected for it.
Whatever grinds me down, the truth is I can get ground down. There is a lot of good advice around to handle that. Don’t be a hero is one really-important piece of advice. Stop after 8 hours. Sleep. Take interest in life, leave work to only a part of life.
I saw this from @tranqy today, it stopped me in my tracks:
Secret software sauce. Take work in the smallest size possible, communicate early and often with stakeholders, be honest. Everyone wins.
And that’s the reason I told you about my faults. When life seems too big, the code too overwhelming, when I don’t want to talk to anyone (including stakeholders), when I lie to myself about my state of readiness…this is when I lose. We can all get ourselves down. The trick is to realize it and turn it around. Take a break, then a breath, then break it down. As small as possible. I can write a single failing test when I’m down. I can fix a mis-spelled word in documentation when I’m really overwhelmed. I can be honest and write a note to myself about what’s really going on.
If I break it down to something really simple, I don’t have to be a hero, I can get back in the game. Sooner than later.
photo credit: Lauren Manning
The trouble with Seven Databases in Seven Weeks is that it’s a bit of a playground. Ostensibly, it’s about becoming a well-rounded developer. That probably works, if you push through this in seven weeks. I’ve been picking it up more for fun than for progress. I don’t think that’s a bad thing.
The book is well organized. You’ve got seven databases to work on. You get to work on relational, key-value and graph databases. You get to work with systems that do a few things really well and some that are general purposed. You can crank the scale up with some of these, working in large clusters if you’d like. You work from a very basic introduction to beginning to explore and branch out. The topics interweave so that you don’t really feel lost.
There are some pretty hip databases in the list: PostgreSQL, Riak, HBase, MongoDB, CouchDB, Neo4J and Redis. PostgreSQL is becoming the new black (in my circles, anyway). Redis is my favorite go-to for NoSQL issues. But what about the others? Ha! Exactly! You’ll get into these technologies deep enough to not only see these technologies, but to see them in action.
And, that’s the big gap, isn’t it? Getting from the manual to a practical understanding of a technology. So, we write our hello world applications, and we Google around to find tutorials. But then we’ve got to leap out and start experimenting on our own. We’re groping for the big picture. That’s what this book is about.
You’ll learn about technologies surrounding these databases. HBase comes with a discussion of Thrift in a distributed cluster. Neo4J comes with a discussion of Gremlin. For PostgreSQL, you’ll learn about full-text searching and hypercubes. Redis comes with a practical discussion of configuration tradeoffs.
You don’t have to know what any of these are about. You are introduced to interesting things to do and interesting ways to solve them. Mostly, you’re encouraged to roll up your sleeves and get comfortable using these tools. And, if you’re like me, you’re going to find yourself straying from the track. I think that’s a good thing. Competence comes from practice.
Bottom Line: if you’re interested in data, pick up this book. If you want to get a job with these technologies, plan on going much further than the book. All in all, this book doesn’t sit on my bookshelf, it sits on my desk, for every time I want to try something interesting.
I have been bugged by the TV commercials 5-Hour Energy has been running during the Olympics. I was first irked by how many factors they threw into a 30-second commercial. I was then irked by how much fine print they slapped into that commercial. They are suggesting their product is healthy, even approved by doctors.
To my eyes, it seems not unlike cigarette commercials showing doctor recommendations.
Here’s what they’re saying, in a nutshell:
- 5,000 doctors were approached in person
- 2,500 of those responded
- 73% would recommend a low-calorie energy drink if the patient is already using energy drinks and is healthy
- 56% would recommend 5-Hour Energy for those patients that already use energy drinks and are healthy
Of course, they do it with a professional-looking woman rattling off numbers next to about 15 reams of paper. The impression is a lie.
As far as I know, no doctors are saying to use energy drinks. That’s the first issue. Everything doctors actually recommend seems to be to run away from those as fast as you can. But, if you’re going to do this kind of thing, and you are healthy, you might as well take a low-calorie approach.
What if I assume the 2,500 doctors who wouldn’t participate in this kind of study would not recommend any energy drink under these conditions? Then we’re saying that about 28% of doctors would recommend using 5-hour Energy to those that are using energy drinks and are healthy. So, if they’re not recommending low-calorie energy drinks, are they recommending high-calorie energy drinks? Not likely.
Do I have to point this out? Doctors don’t want you using these things. 5-Hour Energy is the snake oil vendor of today.
Ranting about this is kind of silly. Here I am, acting a generation older than I am, yelling at the TV. Sheesh! It’s just grimy business, and they invaded my living room.
OK, I’m going to confess something here. I’m terribly envious of Leigh Dodds. Maybe you have people like this in your world? Bright, effective and young? The guy has done some amazing things, and done them gracefully. Privately, I’ve referred to the ever-nagging problem of keeping sharp as the Leigh Dodds Problem. Leigh is a concrete example of someone that makes me look like a doddering old fool before my time.
I’ve watched Leigh for a while. I watched the rise of his company, Kasabi. I was really sad to hear that he’s closing down. I think Leigh was ahead of us a bit. He built services that I wanted to integrate into several upcoming applications, but the development lifecycle can be a bit slow sometimes (especially if I’m driving it, right?).
Leigh’s work always seems to cut to the nub. This last weekend, I used his Linked Data Design Patterns to help shape some models in a semantic knowledge base I’ve been building. The result was an escape from the academic, practical and rich data relations that weren’t complicated to build. It’s not surprising that Semantic University wanted to highlight this resource today.
Anyway, it feels good to get that off my chest. It’s important that people know they’re making an impact in this world. I’ll keep watching Leigh and expect many great things from him.
photo credit: Lord Jim
When you were a kid, did you like showing off to your mom? Look, I can ride a bike! Look what I made you! Look, a bug!!
Once I took some extra housing wire, stripped the insulation off of the copper and made a ring out of it. I then wrapped the top part of it with a colorful pipe cleaner and gave it to her for her birthday. She loved it. She kept it in her jewelry box. I was so proud. I came up with that idea on my own. Well, my older brother might have helped. I don’t remember that, but he usually did back then.
When I did that, I wasn’t comparing myself to jewelers. They had gold and silver and jewels and training, I was just a kid. I was having fun. I was learning something. It worked. That was enough.
It turns out that this way of doing things is, like the best. (I’m channeling a little sister there, when she was a teenager.) Having fun, being curious, giving ourselves permission to make mistakes is how we get it done.
Somewhere I heard a term for spike, referring to writing throw-away software. I don’t remember where it comes from, but I think about a football player spiking the ball after a touch down. He’s done something great, spike! That’s done, let’s move on, right? So, I wrote a little script that creates a directory, writes a test file, an application file, a test helper, and a readme file. Just a few basic tools for me to try and do something, then throw it away after I’ve learned from the experience.
Since I wrote that little script (here it is, if anyone wants to try it), I’ve had a lot of fun. I’ve learned more. I’ve turned a couple of these spikes into larger libraries that solve real problems. I started by just wanting to learn something by practicing.
And that, my fine friends, is a great way to live.
Learn more, do more, find success, get smarter, don’t wring your hands in anxiety, don’t put off things that will be really rewarding. That’s the whole point of putting getdatachops.com together. It’s a project I’ve been working on to teach data skills to application developers.
You want to build something? Great! Let’s do one together. I’ll show you some things. I’ll give you tips and tricks. You’ll have my notes when you want to do it again (lots of them). Most importantly, you came and did this while your mind was free to wander, while you were interested and could play a little. You did this when your mind was at its optimal place for learning and getting really good at something.
Whatever you do, have fun. It’s good for you.
photo credit: DarkAura
The other day my ex-wife was joking with me about why I choose to write code. At the end of our marriage, I was just learning Rails. It was 2005 and I was overwhelmed with too much responsibility and too little ability. I was mad, crazed even, trying to resolve issues that had overcome me. I was constantly swearing, constantly pacing. From my ex-wife’s perspective, writing software was a delirious process. From my perspective, it was one more stress in a monumentally stressful time.
A lot has happened since then. We’ve made peace, my ex and I.
I’m also making peace with the things I build. This is harder than I thought it would be. The following is a letter to anyone starting out, anyone learning a new skill, someone who has a dream and a long road in front of them.
So, you’ve decided to build things. Good for you. I’ve always been happiest when I’ve been making things. Technology is in the mix? Why don’t you grab a cold beverage and sit with me a while?
I’ve built some things. Sometimes I worked for smart people that helped me figure out what I need to do. Sometimes it’s been all up to me, rise or fail. How do I do what I do? It seems to help to have a loose grip on what I’m creating. By that, I mean, what benefit do I expect to offer when I’m finished? I’m better off having a clear idea about eventual benefits than exactly what it is I’m building.
That’s because things change. Technologies change, your understanding of the thing changes. That’s a good thing. A lot of the frustration comes when something has to be just so, even when it doesn’t.
There’s a story from about 5 years ago. I liked the story because it was a Java vs Ruby story (and Ruby won). The Java team had a deadline they were going to miss. Despite a lot of hard work, something had to be done. A Ruby team was brought in. I don’t remember the full details, but the final solution was a class and a YAML file. The Java team cried foul. The Ruby team claimed that the requirements were met and that the end users were able to have working software. The story’s not really about Java vs Ruby. This is about a fixed mindset vs. an agile mindset. You can do this with Java or C or anything. You just have to be flexible.
In the recent Agile Roots conference, Linda Rising gave a great talk about the Agile Mindset. In it, she points out that a mindset determines goals, reactions to failure, belief about effort and strategies and attitudes about others’ successes. More particularly, an agile mindset sees ability as something that can grow, like a muscle. The goal is to learn, rather than to look good. Challenges are embraced and failures are learning opportunities. Effort is part of the path to mastery.
photo credit: Renaud Camus
This is different than swearing and kicking chairs. Do you see that? Kent Beck reminds us that perfect is a verb. This is a process, we are here. Where is here? I’m glad you asked.
Andy Hunt reminded readers of Pragmatic Publishing books about how our minds work in Pragmatic Thinking and Learning. A core piece of that book was learning to groove with the Dreyfus model. Start as a novice and find recipes and tutorials. Change the recipes just a little and you’re an advanced beginner. Continue to experiment until you can see the big picture. Now you’re competent. Good for you, there’s still lots to learn. When you can self-correct quickly, you’re even proficient, but you won’t be expert until you really get the edge cases and people are seeking your advice.
Few of us become truly expert at anything. There’s just too much to do. We keep learning and sharing and failing and not failing. Along the way, if we can keep our wits about us some of the time, we’re making progress. And that’s something. That’s enough to get a job, finish a project, become a consultant, solve a problem.
photo credit: borispumps
And if your particular goal is to use Rails to build web applications, you should know something first. If you don’t know Rails, you need to know that Rails is kind of growing up. In the beginning, it was so much fun. Everyone was learning. A lot of us picked up Rails and then had to catch up with Ruby. There were cookbooks and cheat sheets and lots and lots of good articles springing up all over the place helping us figure out all the little quirks. That’s because, as a community, we were all novices then all advanced beginners. So we were intent on making things easier for the new guy. This is the age when RailsCasts, Peepcode, and Twitter were born.
The community is still very willing to help, but there are more and more people intent on becoming expert. Their focus is on understanding the idiosyncrasies of their now-complicated and demanding applications. Twitter grew up from a couple of tables in a database. So have all of our applications. I’m just saying, the Rails community is noisy, often about fairly advanced topics. Don’t worry, stick with the basics, find a mentor, practice.
It’s the same for anything, right? We’re figuring it out.
I recently read a blog post about the symbiotic relationship we have with technology. It made me think a little about what we’re really after. I mean, if the computer can search and sort and filter for me and allow me to be somehow more human, well that’s something. Building these kinds of things for other people, well that’s something else. Knowing that you are here to forge that relationship might bring to mind the idea of heat and pressure and direction. Technology has to become something you can eventually push around. So push. (meaning, build, do, practice, get comfortable with the sometimes uncomfortable)
photo credit: Steve & Jemma Copley
If you’re going to build with computers, you’re going to get to know their personalities. You’re going to write a query that takes too long, a bug that’s hard to find, a layout that just doesn’t match up You’re going to hit hard details, the cogs of the wheel are grinding you down like teeth in a ravenous animal. My advice? Drop a few expletives, kick something, stand up and walk away. Take a breath, don’t take it personally. Examine your mindset. It’s OK.
Now what? Get into a dialog with yourself. Seriously. Write down a question and answer it. Drill down to the problem, walk around it a little, tease yourself, call your own bullshit, prioritize, filter, regroup, restart. Language is a tool that takes you somewhere else. Did you know that? Your mind actually changes state by talking. With a piece of code, you call a method. With your mind, you can yap away. Language uses finite words and sentences and meaning and fires different synapses in your brain and changes the things you see. It changes the scenery, changes the chemistry, changes the tools. It’s like walking out of the blacksmith shop, across the street, into the steel refinery. Now, you’ve got some different tools, and you can see them, and you can see that you have something different you can do about your problem.
Blogging helps too. You don’t have to feel so uncomfortable about schizo tendencies if you’re talking to something other than the voice in your mind. But talk it out, realize that your effort is building a capability in you.
Ra, ra, ra, right? David the cheerleader. Maybe, but here’s the nub: I went through hell until I could do a few things differently:
- Groove with change
- Change my mindset
- Apply learning resources conscientiously
- Start a dialog
The peace comes when we can finally see how our efforts are making things better. We have abundant technology to help us along. The early stages can be daunting. I hope this helps you apply yourself well in the early years of becoming a proficient problem solver.