Perfect for going on photography trips!
ruby-debug19, rbenv & ruby-1.9.3-p0 with Bundler
I had a rather difficult time to make this all work, without massive amounts of screwing around.
It seems the magical incantation is to install the regular MRI `1.9.3-p0`, without the build-patch recommended by so many (that is `-fvisibility=hidden`).
Then use the following Gist, to install all gems:
After that, download the same in your `vendor/cache` directory (or wherever your Bundler gem cache lives), and add something like the following to your Gemfile, I added it as a separate group, as there’s a few comments standing around, as I hope this process will improve in the near future, the changes I made to my Gemfile are standing in this gist:
I’ve mostly been playing Battlefield 3 lately, when I do play… inspite of Dice’s efforts to reward teamplay, I still end up on a team of utter fucktards.
Building a better SSH driver for Ruby
I’ve been maintaining Capistrano for a long time now, and most of the issues that hold me back from really improving the software boil down to the simple proposition, it’s not possible to test a deployment in any sane way. Part of this is down to the limitations of people’s understandings of how this should work, and part of is it about having a fast enough, capable enough SSH driver to hide a lot of the behind-the-scenes work, and make sure we have a sane, predictable environment, and take steps if not.
As a result, I’ve started work on a C-binding library for libssh. There’s a few good reasons to link against a C-implementation, chiefly amongst them are speed, and accuracy, and the ability to let the experts build the really hard-core stuff, and concentrate on building a good library for people to do work in Ruby.
Yehuda Katz, whilst he has made a faux pas or two in his community management of bundler does make a good point… at Arrrr Camp he said the “most” important thing is that the software be easy to use. He’s Right.
Can anyone honestly say they know when to use “ssh_options[:pty] = true” with Capistrano, and what effects is has? Or what the “askpass” program really is; or when to use it, how to configure it or more? I’d guess not…
The truth is, most people don’t want to know how SSH works… they just expect it to… so into the mix come a lot of paradigms missing and/or unclear in Net::SSH… environmental variables (done right, configured in the background channels), PTY and TTY allocation, in a sane and transparent way, and proper handling of connection pooling and negotiation, not to mention proper use of the key-agent for those with passworded (that’s all of you… right?) keys.
I’ll be blogging a little more about each of these topics, and working whenever I have the time towards releasing an SSH driver strong enough to build the next version of Capistrano on top of, in the mean time here’s a preview of how the DSL might look for working with SSH via Ruby, backed by the most secure, and fully-featured C-implementation of SSH.
Naturally, this is pretty up in the air right now; one of the significant hurdles for me, is how to test this in a sane way… I’m going to try following Mall Cop’s example, in spawning a local SSH server, except I’m going to do it with DaemonController, so that I have a little more say over how it should be started, and stopped… and can specify various configuration files to test behaviours. I also plan on using the Parallel gem, or at least a compatible API, so that decent threading behavior can exist on all platforms, in addition to using SystemTimer on platforms which require it.
I don’t know a thing about Event Machine, so I can’t say there’ll be an “em-libssh.rb”, but maybe someone could help me out and tell me what pitfalls I should avoid in order to allow someone a little smarter than I to contribute an EM-implementation for those who really need performance.
Along the way I’ll be reaching out to Wayne E. Seguin, author of RVM, to see what can be done to make using RVM over SSH easier… and along the way I’ll take patches, help, advice and criticism from anyone with an opinion and a text-editor.
So, in summary, the more, better feedback I get, the quicker this project will come to fruition, the sooner we’ll have better, more reliable remote-management tasks, and the sooner I can implement all the things I’ve learned, to bring an exceptional experience to Capistrano users, by releasing another major version, something worthy of Jamis’ contributions to this field.
As many of those close to me know, I’m bootstrapping a startup. The idea is so big, it has a potential to exceed 200 million users, and touch anyone who owns a television, or rather who wishes they didn’t have to.
One of my biggest observations from being this-far into the process has been the incredible the value, and immense risk of being a full-stack entrepreneur. Timothy Ferriss might be my mirror-image here, believing in the shortest possible working week, and outsource everything. My experience has been different.
I’m building a technology startup, so I’m my own bottleneck, I’m the traditional agile role of product owner, developer, QA and more, simply because those are parts of the process that are difficult to outsource.
My platform relies on some complicated software, but it’s only complicated because it has to work everywhere, and it has to be pretty reliable that is - reliable enough to satisfy MVP, and not cause me too many headaches after the beta launch. But it’s also complicated enough that I can’t trust a low-rent outsource (it wouldn’t work everywhere), and I can’t afford a big software house, either the time to write the specification, or the immense fees.
I could outsource the QA, but I have the luxury of a tight-knit network of QA and developer friends who will be more than capable of helping, and I have the same resource that every other web-beta business has, a beta-stage to work out the bugs, and, hopefully early-adopters who will tolerate the bugs I miss.
I could, possibly outsource the project management, but I’d effectively be paying someone to kick my ass and nag me… which I don’t always respond well to. Fortunately in this case, I have friends who are supportive enough, and know how to motivate me through mockery.
I’ve also spoken with investors, about money – and determined that I don’t need, or want their money yet… some of them just didn’t get it, some of them were afraid of possible legal ramifications, which suggests they didn’t get it, and some wanted too much for too little.
I have outsourced design, to a bright Serbian kid who is trying to make a career of being a designer, and does some pretty nice work. This was a no-brainer, because design isn’t something you can learn in a few days.
I guess the point here, is that even though almost everything in the list above is important, and that many people would recommend outsourcing, I’m going to recommend that you don’t.
Do it yourself, at least until you understand it enough to know that you’ll never be an expert, but I promise you that before you reach that point, you’ll learn enough to get by, and to make it work enough to get you through the short term.
Remember, if you’re starting a startup, the goal is to get it to market as fast as is reasonable, but sometimes that means doing it all yourself.
If I had the luxury of €100,000 to spend, I’m sure I would have gotten much further, I certainly would have been able to outsource a lot of it… but I also would never have the very fine-grained details on exactly how the system has to work, exactly where the money, problems and margins are.
On reflection, I feel like being a full-stack entrepreneur has made me slower, but with the benefit that I know my product better than I did when it was a bright idea 2 years ago. Does that mean my product 2 years ago wasn’t viable? Probably not, but I got lucky, the market hasn’t filled my niche yet, and I’ll be launching a better product because of my very close relationship with it.
When is SEO not SEO?
I’m working in a startup, and we’ll live or die on how well our advertising works, how well we convert users who land on our site, and how well we are able to track and measure these metrics.
It’s been said many times before that unless you can measure your KPIs, you’re wasting you time. Based on that I’m inclined to agree with @malditogeek when he poetically tweeted that “SEO is Bullshit”.
When the KPI of an SEO, or an SEO department can’t really be measured, then it can’t be a valid science. For it to be a valid science, there would have to be some constant, against which you could test. There isn’t though, there’s an assumed constant, and some noise about when people thing that constant has changed… but that constant is unknowable. Incase I wasn’t clear, the constant is the Google ranking algorithm, and those other search engines that nobody cares about, and who copy Google anyway.
Regrettably, the same guy who handles SEO here at this startup, also handles marketing, and takes care of user-conversion, etc.
And this is where the problem comes in, mixed in - with the SEO bloodletting, prayer and hyperbole, there are some legitimate, scientific tasks to be done, but they all come to my to-do list, tagged “SEO”… and I simply have a hard time caring about them.
I’d like to propose that we recognise as a species (Developers & Engineers) that there’s a difference between search engine optimisation, and conversion optimisation.
The latter is something every single web business has to care about, the signal-to-noise ratio of typical web analytics is too high, you need your own trackable, measurable metrics… and you need not to confuse that with SEO, which - as I think we’re established is Bullshit.
In order to get good conversion on your users, there’s a number of things you have to do… make sure the site works well across browsers, and platforms, make sure your pages are well-formed, load quickly, and include meta, and canonical tags with the correct values to help the search engines help your users find what they want.
The mystical Google algorithm is starting to take into account factors which actually influence user experience, page load time, and so forth - but that’s simply because that’s what matters.
The mystical quest for SEO, lead by jades SEOs has helped, the prevalence of the canonical tag, and it’s wide adoption, in conjunction with XML sitemaps to help well-behaved crawlers, and reduce (control.) server load, are all awesome steps in the right direction, but these topics are not related.
So, for developers SEO is not SEO if it’s on your platform, if you’re changing code, changing server configs and making things better, that’s not SEO - it’s due dilligence, and you should be doing it anyway.
SEO is for the kids that didn’t finish college and can still sell snake oil to big business, and retire early. If it wasn’t for the lack of self-respect, I’d envy their position, but they’re the parasites of the web.
I’ve always told people that I’m a Hacker… anyone in the computer industry should know what that means (and, here’s a hint, it doesn’t mean criminal.)
I’ve always chosen the moniker Hacker because I’m not a programmer or an engineer, or even a developer… pick any of the other suitably business sounding job titles… and that’s not how I self-identify.
As a Hacker, I think years of having a serious job title “Platform Developer”, “Manager Software Engineering”, etc has clouded my judgement, it’s made me start talking about risk, and speaking about features as “n-Days man-time” not “a few hundred lines of code”.
I’ve stopped working on untested code, this might be a good thing, but I’m not doing it because of a religious regions, or because hackers don’t like crappy code, I’ve done it to dodge work, and cover my ass, corporate style - this needs to change.
I’m working (as many of those close to me) on a project which in addition to a complex web application (which is home turf for my skills) requires a piece of companion software running natively on the user’s desktop. This has to be built in a mixture of C, C++ and Objective-C - three languages I don’t really know that well (I can read the syntax, and the code, but I’m not comfortable working in them) - It also requires OpenSSL (security), ØMQ (messaging), libJSON (data transport) - another three complex libraries I’ve never used.
After a good kick in the rear from @paukul - I spent some free time when I returned to the UK hacking on the companion code, and I mean hacking. I tried 200 things to make some obscure C/C++ bridge (which I now realise is simple) work, because I didn’t have a choice, I was hacking at my Gran’s place, in the Car, and on a Plane - there’s no way you can sit with a book in this situation, you have to just go for it!
As a result, after three days, out of the 9 months I’ve been researching, and background reading - I have more working than I could have imagined… sure - it’s basically a cross-platform build, of some software I don’t fully understand, and I don’t know precisely why some of it is working; but it doesn’t matter.
I’m not trolling through life to build perfect software, I should aim to build useful software, and build-in the stability later. To that end, my project right now doesn’t compile on Windows, doesn’t deal with all characters in file paths, and probably a bunch of other things I’ve missed.
But that’s not important, this project is supposed to be a product, and there’s more than 100 people signed up to beta-test it, and it’s going to be free… so there’s basically no risk to getting something wrong.
I’m still not resolute about the route I took, on the one hand a lot of reading, and planning, and design thinking has helped, I have a pretty strong foundation, which is paying dividends now, but I’ve also got no evidence that I even needed it. Interestingly, the more work I do - the more this project looks like 5 individual projects, which is something I hadn’t expected… but it’s moving so quickly, it’s changing every few hours.
I’m lucky to have a free-day every week, one day every week I can spend working solely on this, and I even have the use of my private office at work on these days. It’s a great space, with a couch, a fatboy, and a couple of desks, and walls soon to be covered in posters, emacs cheat sheets, and diagrams of software nonsense my colleagues don’t understand.
I can’t wait… a messy, informal space to do great work, fast, with enough safety not to risk the business, or my job, and enough free time to have a clear mind, and balance work, play and hacking, all in one space.
Wikileaks brings out the best policital debates…
Me: whatever happens to the Internet in the wake of Wikileaks, I'm happy to be an observer; I only hope at least some of the new tech (IPv6, DDNS etc) make it mainstream in a bid to curb spoofing, and DDoS.
Sean: Ya, scope for dicking about with the current common network stack is endless, I'm amazed more things don't get fucked more often
Me: I love that 4chan are defending the Intenret, against anyone, just for the sake of it!
Sean: I think it's a good thing yeah
Me: I bet that doesn't fit the Governments' perception of activism.
Sean: A kind of patriotism for a nation they elected to join, rather than being born into.
Lee: Exactly, I hope for more of that, it's becoming clear your affiliation with a traditional nation is basically meaningless… (perhaps why people join religions, and, 4chan)
Lee: … is 4chan a religion ?
Sean: Christ, Can you imagine the church?
Sean: Two Girls One Cup in a stained glass window
Sean: A cat in a priest collar
Following years of waiting for a diagnosis & maybe some treatment; today a polite, thorough doctor examined my shoulder in depth, and found a small muscle tear, but no structural damage, and prescribed just one month of physiotherapy, and an MRI scan to confirm.
Worryingly he remarked that it’s reckless to have operated on my right wrist without a full righthand elbow examination; I’m chalking that up to translation error, since I trust my wrist surgeon, and he came very highly recommended.