Jump to content

  • Log In with Google      Sign In   
  • Create Account

The Bag of Holding


Posted by , 30 June 2014 - - - - - - · 753 views
Angry Apoch
Why in the ever living FUCK does Visual Studio 2012 insist on bringing itself to the foreground every time the debugger starts?

This is fucking horseshit. I have multiple projects that I have to work on concurrently, each with a separate VS instance. So if I want to fire up one instance's debugger, and then start investigating the effects in a second instance's debugger, THE FIRST LITTLE FUCKER STEALS FOCUS FROM THE SECOND INSTANCE AND STARTS FLASHING ALL OVER THE TASK BAR LIKE "OH LOOK AT ME I'M SO GODDAMN IMPORTANT THAT IF YOU DON'T LET ME TAKE THE FOREGROUND I'LL PEE ON YOUR SHOES."

I cannot find a way to disable this, which makes it Yet Another stupid behavior that Microsoft insists on shitting into my dinner plate. For whatever mind-bogglingly asinine reason, someone was enough of a FUCKING MORON to think that stealing foreground focus is an acceptable thing to do.

Let me simplify the problem for you, Anonymous Microsoftie Who Does Dumb Shit: TAKING FOREGROUND FOCUS IS WORSE THAN HITLER.

That's fucking right, I said it. Worse. Than. Hitler.

Maybe not as bad as the unholy love child of Stalin and Pol Pot, but definitely fucking worse than Hitler.

Barfing out some thoughts

Posted by , 19 June 2014 - - - - - - · 499 views

It's an interesting time, that's for sure.

Work has been consuming a monumental portion of my time and energy lately; and while I can't talk about it yet, I can say that it has definitively been a lot of fun and I really can't wait to unleash what I've been working on. There's a ton of potential in it and it'll be endlessly entertaining to see how people react to the whole thing.

Outside of work, I've been pursuing a few various hobbies a little more than I have in the past. This loosely includes doing a bit more gaming than I have been recently, which is a nice change. My PS4 still sits unused until some actually good games come out for it, but until such time as I have a meaningful purpose for that console, I'm getting a ton of mileage out of replaying (or finishing) games on the 360 that have been gathering dust.

On top of this, I'm working on buying my second house, which isn't really a giant ostentatious display of ludicrous wealth... more a function of not having had a chance to sell the first one yet. Either way, buying and selling homes is a pretty exhausting affair all around, and a significant number of my already-limited spare brain cycles have been stolen by that entire mess.

All that is really just background. I'm not really interested in bitching about how busy I am or whatever; my point is that there's not enough hours in the day to do all the things I wish I could do.

Speaking of things I wish I could do... Epoch has been suffering because of all this other stuff. I still have a massive list of things I want to do with both the language itself and the surrounding tooling... there simply isn't enough clock to go around.

Yes, the language self-hosts now; yes, the compiler supports almost everything it needs to in this revision of the language; yes, the IDE is slowly shaping up into something actually worth using. But there's so far to go, and my priorities have simply been elsewhere.

Some of my shift of focus is actually due in large part to Apple's recently-announced Swift language. I have very mixed feelings about Swift. A careful observer might notice that there are some conspicuous similarities between Epoch and Swift; this is, I assure you, completely coincidental.

What is not coincidental is that someone noticed those similarities about a year ago - long before even the idea of Swift was public knowledge. The story really isn't all that long or complex or interesting, but the bottom line is that I nearly wound up working for Apple on their compiler and IDE tools. It was a very, very close thing, and in the end I made the exceedingly difficult decision to decline the opportunity, for mostly personal reasons.

The point of all this is that seeing Swift announced - and delivering many of the very concepts that I've talked about building into Epoch's core language and tools over the years - is kind of difficult for me. To be perfectly clear, nobody appropriated anything from me or Epoch without my knowledge and/or consent. The fact that Epoch and Swift have such startlingly parallel goals is why that opportunity happened, not because of it.

On the one hand, Swift gives me a lot of validation. They've observed the same weaknesses and pain points in contemporary languages as I have, and settled on many of the same approaches to alleviating those problems. There's a lot of things in the language and tools that I wouldn't have done, but that's kind of like saying one painter used a different hue and brush stroke to paint his sky than some other dude did... completely meaningless and kind of obvious. Different creators will wind up producing different creations.

The flip side is that Swift means Epoch will forever be seen as the copycat, not the originator of some of the core ideas that I've been pushing for so long. In the end nobody cares who had the idea - they care who popularized the idea. And Apple has without question pushed a lot of my personal grievances directly into the spotlight, and offered up great solutions to them. I don't regret the choice I made, but it is kind of sad that I didn't get to be a part of doing that.

In a way I feel like Epoch no longer has a chance to be judged on its own merits, although I know that's not really true. It's more of a feeling of having let myself down a bit. When I first envisioned Epoch over eight years ago, I genuinely wanted it to be a major game-changer in the programming languages space. Between Go, Rust, and Swift, many of the key points of the first language proposal have been addressed.

To be sure, there's still room for the unique blend of ideas that Epoch has become, and I still feel that Epoch can be a better solution to certain classes of problem. If nothing else, it will certainly continue to be the language I'd like to program in whenever possible.

"Getting awful crowded in my sky."

The Five Stages of Programming

Posted by , 09 June 2014 - - - - - - · 1,235 views

All programmers undergo a transformation, from the moment they first start typing code, until the moment they realize that there's more important things in life than making computers obey one's whims. (I hypothesize that this latter moment occurs after death, because I sure can't think of anything more important!)

As with all people doing jobs that involve rigorous mental discipline, programmers love to create models of things. I therefore present to you, the Five Stages of Programming, a descriptive model for how one is likely to evolve through the course of a programming career.

Initially, the programmer begins overwhelmed by the magnitude of the craft. There are many things that are obviously possible, because other programmers have done them; but the neophyte is as yet unable to imagine how they are done. This leads to the creation of a fabricated reality, wherein the beginner builds a theory of how complex programs - as yet out of his reach - might be made. Since the programmer presently exists in a state of rejecting reality in preference to his own imaginary construct, this is referred to as denial.

As the programmer's skills progress, he begins tackling more and more complex problems, working his way into ever more sophisticated software. At this point, he knows his limits and accepts them more fully than during the Denial phase. Unfortunately, this frustrates the programmer intensely. Most programmers in this phase can be heard uttering streams of truly hideous profanity while bashing their keyboards to pieces with a stapler. Clinically, this is known as anger.

This phase occurs after a brief but intense epiphany strikes the programmer. It is clear already that programming can be frustrating due to the limitations of the programmer's skill set; but what becomes clear after the moment of revelation is that the computer is, in fact, a mentally unstable demon machine bent on destroying the programmer's world. In order to defeat this demon and ship working software, the programmer must resort to bargaining.

A second epiphany occurs: the computer is not, in fact, a mentally unstable demon machine; the insanity belongs solely to the programmer. Confronted with the utter futility of his attempts to understand and reason about reality, the programmer breaks down and enters a prolonged funk. Apathy is the most common manifestation of this phase. Regardless of the outward symptoms, the programmer will spend a truly tragic amount of time in the depths of depression.

Only a few programmers reach this final phase, wherein the burdens of broken builds and memories of garbled call stacks fall gently away, and profound inner peace is achieved. When the programmer realizes that he's better off flipping burgers than bits, he has at last overcome his misguided obsession with controlling digital machinery, and achieved acceptance.

Tragically, most programmers die before they come to terms with the inherent absurdity of their occupation.

Now if you'll excuse me, I have some code to write.

June 2014 »