The Bag of Holding

Profile
Bellevue, WA
A bipolar guy in a pressure-cooker industry
1,455 comments
44 followers
628 entries
Advertisement
ApochPiQ
September 21, 2011
Update on the Release 12 compiler
I wrote up some notes on the Epoch R12 compiler here. Figured I'd repost the link since most people probably aren't on the Epoch site pressing F5 all day ;-)
904 views
ApochPiQ
September 16, 2011
Epoch Error Handling, Part 2
One excellent comment on the previous entry on Epoch's error handling philosophy observed that the design really looks an awful lot like exceptions, and doesn't do much for the orthogonal separation of the four points of error handling I enumerated at the top of that post.

Let's revisit those points…
1,164 views
ApochPiQ
September 15, 2011
Error handling in Epoch
As I gear up towards rewriting the Epoch compiler in Epoch, instead of in C++, I've found myself running up against a handful of peripheral issues that affect the ability to write real code in Epoch in the first place.

One of these issues relates to error handling. In my opinion, most languages conf…
1,503 views
ApochPiQ
September 12, 2011
Epoch in the near future
I have to admit that after the whole "let's make the Epoch compiler 1000 times faster" adventure, I kind of burned out on Epoch for a little while, and haven't touched it a lot since. All the fun, exciting, sexy work in optimization was done, and "all" that was left was a giant pile of tedious reim…
1,515 views
ApochPiQ
September 05, 2011
Become a Good Programmer in Six Really Hard Steps

One of the more popular topics here on the GDNet forums goes something like this:

"Hi, I just [bought a computer | wrote a simple game | discovered a game engine] and I want to know where to go from here. I'd like to [accomplish some particular goal] eventually. What do I need to learn to get t…

197,180 views
ApochPiQ
August 23, 2011
Threads are Cancer
Computing today faces a serious problem.

Hardware has reached a point where the bulk of performance increases are coming not via major innovation in the fundamental design of processing systems, but rather through parallelism. Instead of increasing clock speeds, decreasing die sizes, changing instru…
4,261 views
ApochPiQ
July 23, 2011
Epoch Compiler Optimization: Recap
Full writeup here.


And now to not think about this for a while. Brain hurts.
1,425 views
ApochPiQ
July 22, 2011
Mischief Managed
I learned an interesting lesson last night in over-reliance on optimizing compilers.

Deep in the core of the Epoch grammar is a rule that looks for generalized tokens from the lexer. This rule is designed to match user-defined identifiers like variable and function names - as opposed to reserved ide…
1,073 views
ApochPiQ
July 21, 2011
Grammar tweaking for fun and profit
I finally killed off most of the remaining dynamic memory allocations in my parser. There's still a few lurking in the internals of boost::spirit::lex (it supports "fast" parser backtracking by buffering tokens on the fly) but they're not a huge chunk of the runtime anymore, so I'm not terribly wor…
995 views
ApochPiQ
July 20, 2011
Improving memory allocation patterns in the Epoch compiler
As part of my ongoing effort to make the Epoch compiler idiotically fast, I've turned my attention to one of the primary killers: dynamic memory allocations.

Part of this is unavoidable, since dynamic memory has to be allocated when constructing the parse tree. But for some reason, I kept seeing rea…
1,095 views
ApochPiQ
July 19, 2011
Optimizing is hard
As I hinted in a comment on a previous entry, I've finished deploying boost::spirit::lex in the Epoch compiler. My hope was that, by reducing byte-level backtracking, I would realize a substantial speed gain in the parser. It seemed like a logical enough assumption, and so I gave it a shot.

The init…
904 views
ApochPiQ
July 18, 2011
Deploying a new lexer
When I last left a status update here, I had the new Epoch compiler running on my test case in right around 18.5 milliseconds. For reference, when I started this compiler rewrite, parse times were around 10 seconds. Yes, seconds.

Obviously, a 500-fold speed improvement is nothing to sneeze at, and m…
1,094 views
ApochPiQ
July 16, 2011
Making a Faster Compiler
Recently, my major undertaking (outside of work of course) has involved rewriting the Epoch compiler. I'm doing this for a few reasons, but the main one is performance; the Release 11 compilation model involves using boost::spirit::classic to parse the input code 3-4 times, progressively elaboratin…
1,147 views
ApochPiQ
July 10, 2011
Yeah, I'm rewriting my compiler again.
Release 10 of Epoch was a big deal, because it represented a complete overhaul of the language implementation - pretty much everything was redone, from the parser grammars on up to the standard library implementation. It took a long time, dramatically cut back the number of features that still work…
1,294 views
ApochPiQ
July 09, 2011
Era IDE improvements
I have eschewed sleep to get some tweaking done on the Era IDE. Specifically, I refined some of the syntax highlighting, and implemented syntax folding in the lexer. This basically lets you collapse sections of code intelligently, based on curly braces. Goes by the name of "code outlining" in Visua…
1,191 views
ApochPiQ
July 08, 2011
Epoch Release 11 is out!
Release 11 of the Epoch language is now available!

Read all about it.
856 views
ApochPiQ
July 06, 2011
Epoch warming up for a new release!
I've finally closed out the last bugs on the Epoch Release 11 task list, and I'm down to just polishing up the package and getting some last-minute goodies together for the distribution.

One of the highlights is that the Era IDE prototype now supports loading and saving files. Era is written entirel…
975 views
ApochPiQ
July 01, 2011
On Consciousness and Time
Ethanol and nicotine, when combined in sufficient quantities with sleep deprivation, adrenaline, and obsessive work habits, tend to produce interesting results. Here's one from earlier this evening, which I felt compelled to jot down and then figured I'd open up for discussion.

The Nature of Time
Thi…
1,076 views
ApochPiQ
June 28, 2011
Scribbling of the day
Posted up a new Scribbling by Apoch today; this one hails from a long time ago in a journal far, far away... err, actually, from this post.

This Scribbling involves selectively enabling or disabling pieces of C++ code based on whether or not a type conversion is legal. Be warned: here there be templ…
1,054 views
ApochPiQ
June 25, 2011
More scribblings!
I've added a new project to the Scribblings by Apoch page. This time, it's a small utility for monitoring the activity on a Windows file system, or any selected subset thereof. The code is fairly simple and straightforward but makes use of some nasty concepts in Windows, such as overlapped I/O and …
1,260 views
ApochPiQ
June 17, 2011
Want code? You got it!
I've whipped up an implementation of the input mapping system described in this article and posted it for free usage and manipulation over at my new Google Code repository. Check it out and abuse it as you like!
1,984 views
ApochPiQ
June 12, 2011
Designing a Robust Input Handling System for Games
[size=2](Note that this post is now also available as an article-proper.)
One of the more common questions asked on the GDNet technical forums relates to handling input in a game engine. Typically, there's a few core issues that pretty much every game faces, and unlike many areas of game implementat…
84,148 views
ApochPiQ
June 10, 2011
Responses to the MMO Post
First of all, I'd like to thank everyone who took the time to slog through that massive journal entry, and especially everyone who offered your feedback in the comments.

I'm going to respond to each comment in turn, and hopefully explain some of my reasoning a bit better and expand on a few points t…
3,371 views
ApochPiQ
June 08, 2011
Why You Shouldn't Be Making an MMO
Get some unsolicited advice from a guy working on a real MMORPG.


It's nothing new, this trend, but it also doesn't seem to be going away as quickly as most fads; perhaps we can accuse World of Warcraft for making this such a huge deal, or maybe it all goes back to Ultima Online and Everquest. We may…
70,549 views
ApochPiQ
June 02, 2011
No, it isn't dead!
A couple of people commented about Epoch on my last entry, specifically wondering if my recent move and change of career direction had any negative impact on the life of that project.

You'll be happy to know (I hope) that Epoch is far from dead. There may be a bumpy period of adjustment as I settle …
1,219 views
ApochPiQ
May 30, 2011
A New Chapter
For the past several weeks I've been on something of a hiatus from GDNet. There are several reasons behind my absence, but it is now largely over, and you can expect me to resume haunting these hallowed halls once more. (And there was much rejoicing.)

So what's been going on with me? Why this myster…
1,119 views
ApochPiQ
February 08, 2011
PAY ATTENTION TO ME
So my friend is an evil wanker and convinced me to join Twitter.

I feel all modern and stuff now.


Go follow ApochPiQ for goodies and such. I will ramble often about nothing in particular, about which you will not care, as seems to be the convention on Twitter. I hope I'm doing it right.
940 views
ApochPiQ
January 11, 2011
This Is Not A Blog. Damnit.
So, snarky post title aside, I have to say that I am really liking the new GDNet.

WYSIWYG post editing? Yez plox.


File attachments? Oh yeah.


Tagging on journal entries? Woohoo!




OK, yeah, there's some speed bumps. I miss the Forum Favorites. I miss the IOTD. The CSS needs a lot of work, and there's a bi…
736 views
ApochPiQ
January 03, 2011
Hold on to your butts!
Epoch Release 11 is on its way soon!

Lots of goodies (most of which I won't bother to list until I do the actual release notes) but it's going to be a good one I think. Overall things are just a lot cleaner under the hood, noticeably faster in the VM, and just plain more fun to write code in.

I hope …
826 views
ApochPiQ
December 26, 2010
Type inference and anonymous returns
It's been a productive holiday for Epoch!

In addition to adding generalized support for anonymous temporary constructors as well as overloaded constructors, I've added some nice convenience features. Specifically, it is now possible to return anonymous expressions directly from functions, thanks to …
740 views
Advertisement

Popular Blogs

shawnhar
Generalist
101 Entries
9 Followers
15 Entries
10 Followers
johnhattan
Programmer
1,277 Entries
47 Followers
ApochPiQ
Generalist
628 Entries
44 Followers
dgreen02
Generalist
338 Entries
56 Followers
Advertisement