Sunday, May 29, 2011

Richard Stallman Cancels Israel Lectures Due to Palestinian Pressure

The no-compromise Richard Stallman has compromised. He has cancelled lectures in Israel while on a Palestinian sponsored trip to the middle east. For anybody else, I'd say this makes perfect sense. But I've personally witnessed Stallman berate the organizers of a free software conference for letting the commercial sponsors of the conference actually, you know, speak at the conference they sponsored. In fact, he was so busy yelling at the conference organizers about letting the commercial vendors speak, that he was 20 minutes late to his own talk.

Drop Out of College, Get $100,000

Peter Thiel, the co-founder of the suckage that is PayPal, is giving grants of $100,000 to would-be entrepreneurs for dropping out of college and starting their own business. This just shows that the idea that higher education is more costly than it is valuable is going mainstream.

Some of the best techies I know don't have college degrees, or they got their degrees in fields completely unrelated to computer science.

Friday, May 27, 2011

Subversion Multi-Project Repo into One Git Repo

I've written here about my struggle to migrate multiple projects out of our single Subversion repository into a single Git repository.

Rob William's discusses merging multiple single project Git repositories into one here. Though it would mean first splitting out the multiple projects from Subversion into a respective Git repository and then merging them all back into one. Sounds like a lot for freakin' work. Impedance mismatch I tell you.

Thursday, May 26, 2011

For the Geek Who Has Everything

Yeah, there's that whole accidental suffocation thing, but I'm so getting one of these for the office.

"Python is like Ruby messed up"

As quoted by one of my developers deep in the muck of a rewriting some Python code.

Wednesday, May 25, 2011

Javascript Crypto API

I mentioned before that one of the biggest problems with the Web Object Encryption and Signing (WOES) effort was the reliance on Javascript libraries being shipped across the wire from untrusted sources.

Mozilla is now proposing a Javascript Crypto API, which would give Javascript programs access to the crypto engines present in nearly every browser under the sun. Should that some to fruition, it pretty much obviates the need for WOES.

Apple fanboy demands luxury stay for iPhone 5 camping trip

Apple fanboy demands luxury stay for iPhone 5 camping trip - Firms hand over mountain of equipment | TechEye

Seems obvious why people find the Apple fanaticism a little creepy.

Tuesday, May 24, 2011

In Search of the Tempestuous Sea

I've been thinking about splitting my blogging apart into a blog about software development, programming, and technology and a blog for the guns and politics. And well, this morning I just went and did I while I was on a conference call.

This blog will be for the computer geeky in me, and In Search of the Tempestuous Sea will be for the scary stuff guns and politics. Not all the content is moved, but I'll be getting there. Thanks for your patience.

Monday, May 23, 2011

Things I Learned Today

Ruby on CentOS. CentOS 5.6 comes with Ruby 1.8.5, not 1.8.7. Why? But building Ruby from source and installing on CentOS 5.6 over 1.8.5 seems easy enough.

Git on CentOS. Nowhere to be found, but building from source is also easy enough.

Ruby on Windows 7. Easy to install and build from source. Having it recognise .rb files as Ruby scripts is cool.

Git on Windows 7. msysGit comes with a some useful Unix stuff like bash, openSSH, vi, etc.... Also easy enough to install.

My Ruby code on Windows 7. Seems to have an issue with recursive directory deletion. So I have run right into one of those undocumented non-cross-platform Ruby things.

Sunday, May 22, 2011

"stealing, bullying, and leveraging only works for so long"

Grant Huhn on IBM's surpassing of Microsoft in market capitalization: "Maybe stealing, bullying, and leveraging only works for so long. Maybe vision always, eventually wins."  More at Business Insider.

I worked for IBM in the early 90's when Microsoft started kicking their butts. It was a weird time. I was a college student working parttime at IBM and witnessing the company's first lay-off ever. Next thing I know I am training 25-year IBM veterans how to answer the tech support phones and watching IBM'ers lose their minds because their world was falling apart.

Wednesday, May 11, 2011

Vico and IdeaVIM

I've been a programmer for years, cutting my teeth in the 8-bit days on Z-80 home computers and CP/M transluggables, then moving to the psuedo-16-bit world of DOS & Windows, and eventually on to real 32-bit Unix/Linux. Back in the day when the clouds parted and the light shone down upon me from Heaven above because I was switching to Linux, I made an explicit decision to learn vi.

The reasoning was simple and still holds true today: vi is always installed on whatever Unix or Unix-like box you'll find yourself on, and you can usually find a vi-clone to get you by on the other platforms. Even in today's world of remote desktops and virtual servers, I find myself quite often shelled into a remote box somewhere and pulling up vi for even the most basic sysadmin work. Making that muscle memory more natural seemed... well, to be a natural decision.

In the pre-IDE days, windowing desktops were pushing the limits of standard vi. At the time, I was a big fan of Elvis primarily for its X-Windows support. These days, most everybody uses Vim, though its gvim windowing mode is not that great. Even MacVim leaves something to be desired if you ask me.

Which brings me to Vico, a very promising vi editor for the Mac. Its not officially out yet and will be around $50 when it is finally done, but you can download a two-week trial beta version for free. It seems very, very cool, supports tabbed editing very nicely, and does syntax highlighting for a large variety of languages. I tooled around it with some Java, Ruby, and XML sources this morning and was quite happy. It's not quite a full-blown IDE but fills the void when one is not needed, say for Ruby or Python programming.

Of course, there is quite a difference between a text editor and a full-blown IDE. When doing heavy Java development, I usually pull out Jetbrain's IDEA IntelliJ. Historically, vi support within IntelliJ was an independent effort done with a plugin called IdeaVIM. It worked ok in IntelliJ 8, but was almost completely useless when IntelliJ 9 came out. Things have gotten better though, with Jetbrains seemingly taking ownership of IdeaVIM, support under IntelliJ 10 is very good. Jetbrains even touts vi compatibility, accomplished with this plugin, for their RubyMine product.

I do find myself dipping back into the C/C++ world on occasion and desiring an IDE there as well (most likely brain damage from my Microsoft Visual C++ days, or maybe just hearkening back to years gone by with Borland's Turbo C... who knows). For this I use Eclipse and, when I can, viPlugin. It's not the greatest, but it'll do.

Anyway, thanks for reading this ramble. If you are a Mac user, keep your eye peeled for Vico. And if you are an IntelliJ or RubyMine user, get IdeaVIM (it's free).

Friday, May 6, 2011

Interesting Links for Wasting Your Time On A Friday

The City Limits - cool time-lapse video of multiple cities at night

One heck of a hairpin turn.

Anatomical Nesting Dolls.

And a very cool video of a wooden xylophone in the forest. I may have posted the link before, but it is still very cool.

NANOG 52

Looks like I'll be going to Denver for NANOG 52 in June. The last time I went to a NANOG, I had to fly in and fly out on the same day I gave my talk because of pressing matters back at the office. This time I might actually be there a couple of days.

The Git/Subversion Impedance Mismatch

I'm beginning to think that the people who designed Git, and many of the people who routinely agitate for it, have never used Subversion. Yesterday, I spent some time trying to figure out how to convert our Subversion repository to Git, and discovered a pretty big disconnect with how Git is used and how Subversion is used.

Our Subversion repository hosts many projects. All the ones of importance follow tags/branches/trunk convention. So the repository is laid out like this:

  • Subversion Root
    • Project 1
      • branches
      • tags
      • trunk
    • Project 2
      • branches
      • tags
      • trunk
I've seen many a Subversion repository laid out like this. Yet, none of the myriad of Git import tools can comprehend this structure. And the reason seems to stem from the fact that Git usage revolves around one Git repository per project. And now I know why people talk about hosted Git solutions instead of doing in-house hosting: because there is extra overhead with Git just to create a new project.

Until I can get this sorted out, we will have to continue with Subversion. Which I don't think is such a big deal. Even sharing code among developers with Subversion isn't that difficult if you know how to use the Subversion commands properly.

Tuesday, May 3, 2011

Git! Git! Git!

Regarding my post yesterday about Git, it might be that my fears of authenticated authorship can be addressed using Git hooks. Scott Chacun, author of Pro Git, touches on the subject here (you can read the whole book on-line for free). An extra bonus is that Chacun provides his examples in Ruby (but I'll save the Ruby love for another time).

Free SIP

Kueblekan, a reader and former co-worker at the now defunct SunRocket VOIP start-up, sends me news that OnSip is now offering free SIP accounts to any sucker person who wants one. All you have to do is send in a photo of yourself dressed in the parachute pants and Members-Only jacket you wear everyday.

Seriously, this is so yesterday! While SIP is in serious use today, most of it is behind-the-scenes SIP trunking to lower costs for the telcos. But for end users, this has all been overcome by events with the move to smart phones. And while things like Google Voice and FaceTime might use SIP underneath, they are proprietary offerings from the user's perspective.

The traditional integration of end-user SIP with the telco system was never that great. Long call-setups were common, FAX is difficult if not impossible, etc... Meanwhile Google Voice and FaceTime are doing video chat. I remember our telco-bread Qualcomm executives brought in to shape up SunRocket telling us to quit thinking about video chat because users didn't want it. Kinda funny because it is quite popular with families trying to keep grandkids in touch with their grandparents. Anyway, so much for their advice. We know where SunRocket landed.

The real issue Keublekan should be thinking about is getting his boom sticks smuggled out of commie territory so we can take them to the range. But that's a post for another time. Seriously Keub... that could really be a post for a another time.

Ruby IDE

Regarding my best Ruby IDE on the market post, looks like Ruby support in NetBeans 7 is now verified and therefore more seemingly official. NetBeans, btw, also written in Java.

Monday, May 2, 2011

Observations on Git

I've been playing around with Git lately as a couple of my developers are pushing for its adoption in our projects. I'm not quite sold on it, but I certainly see the advantages. Here are my thoughts on what I hear about it:

Branching in Git is Easier. Ok. Truth be told, I wasn't aware that branching in other version control systems was particularly difficult.

Merging in Git is Easier. BULLSHIT! Bullshit! Bullshit! Bullshit! What makes merging codebases hard has nothing to do with a version control system. The difficulty of a code merge is directly related to the extensibility and modularity of the code. What is being said here by Git advocates is that merging a branch to another local, baseline branch is easy. Big deal! Merging a branch with changes to one with no changes should be easy.

The thing Git advocates are really trying to say is that experimentation with codebases is easier, an argument I find agreeable. Git makes creating local branches and switching to them a snap. But its not like experimentation can't be done with Subversion using svn copy and svn switch commands. The benefit of Git in this scenario is that doing such things takes less thinking and time. And less time muddling with your VCS means more time muddling with your code.

With Git you do not have to be online. This hardly seems like a good argument, as what is really being said here is that you can run back and forth through the history of a project without access to a central repository, so long as that history doesn't go forward past the last time you pulled down changes. This is only mildly useful in my opinion, as I can tell you that many developers seldom consult code history. Certainly code history is useful, but I don't think it is something used on a regular basis.

You can share code between developers easier with Git. Absolutely. And in my opinion, this is the biggest selling point. But features such as this have been available for years in IDEs, and such a thing isn't terribly hard with the svn copy and svn switch commands in Subversion. But with Git doing this is more natural and IDE independent.

Git bisect is the bomb. Ok, this is really just my opinion. But I fail to understand why Git advocates don't tout this feature. The git bisect command is great for finding where in a branch code went sideways.

You can share code easier with Git. No, I'm not repeating myself. But I wanted to separate out what I feel is a major shortcoming of Git, which summarized could be said "You can infect code easier with Git." With Git, the authentication model has nothing to do with the commits. I can authenticate all day long as Bob but if I set my name to "Alice" in the Git configuration, the commits look like they are coming from Alice. This breaks a major usage pattern of VCS, where everybody can get to everything but if you screw something up, we know where you live. I suppose with a version control system that allows one to re-write history, this is just icing on the cake.

Now don't get me wrong. I'm not stating that "NO WAY IN HELL AM I USING GIT BECAUSE OF THESE VULNERABILITIES!" I can accept that I might be completely overreacting to code attacks done in this matter. But keep in mind, it is not just the malicious to be concerned about but also the incompetent. And any VCS that so easily allows one to do the wrong thing (or two) in a bad way should be of concern.

Overall, I think Git is cool. But I'm not quite sure it is for everyone.... or rather, every project.