tag:blogger.com,1999:blog-16276336263869209372009-02-20T19:17:13.102-08:00Jonathan's BlogJonathanhttp://www.blogger.com/profile/13922596260367182723noreply@blogger.comBlogger36125tag:blogger.com,1999:blog-1627633626386920937.post-49735395916584401832007-10-08T17:23:00.000-07:002007-10-08T17:24:32.201-07:00PictureArena<a href="http://www.picturearena.com/">Now this is more like what I was looking for.</a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1627633626386920937-4973539591658440183?l=blog.mohiji.org'/></div>Jonathanhttp://www.blogger.com/profile/13922596260367182723noreply@blogger.com0tag:blogger.com,1999:blog-1627633626386920937.post-21907059855844869222007-10-08T13:43:00.000-07:002007-10-08T14:06:11.333-07:00An Oddball Project IdeaI sort of want to switch to a Mac full time. My work happened to have a number of G5 Power Macs that weren't getting used, and I support Macs as part of my day job, so they were ok with me taking one home to tool around on. So I've got a system loaded up with as much extra RAM as we had handy at home. It doesn't play World of Warcraft as well as my PC (the video card in the Mac is lacking), but it should be able to handle everything else I'd want to do just fine.<br /><br />I already use iTunes on my PC, so that's obviously not a problem. I turned off iTunes automatic management of my files; I've got them arranged on the hard disk as I like them already. I don't know of a good way to keep my playlists, but I didn't have many of them anyway. I can just re-create them on the new computer. I haven't gotten into Office type stuff yet, but I'm not worried about it because I tend to use Google Docs for that sort of thing now anyway. All the movies I've tried opening worked once I installed <a href="http://www.divx.com/">DivX</a> and <a href="http://www.flip4mac.com/wmv.htm">Windows Media</a> codecs.<br /><br />But all of my photos are a problem. I use Google's <a href="http://picasa.google.com/">Picasa</a> on my PC, and I love it. Simple, clean interface, basic retouching, and it's fast as all heck. I've got about 3000 digital photos in RAW and JPEG formats (about 8.9 GB worth), and even on a fresh install of Windows and Picasa it can load them all up into it's database in a few minutes. Searching and browsing is snappy, and it arranges photos based on the folder they're in, so if you've already got your photos organized (or you've used Picasa from the beginning), all your photos will be where you expect them.<br /><br />For some reason, I expected <a href="http://www.apple.com/ilife/iphoto/">iPhoto</a> to behave pretty much the same way. It does not. In fact, it flat out sucks. I've got a dual 2.0 GHz PowerPC G5 computer with 4 GB of RAM, and it's *slow*. I copied all my photos from one computer to the other, and then once they were on local disk, imported them into iPhoto. I wasn't timing it, but it took well over half an hour. I stopped paying attention and went to watch TV eventually. That's ridiculously slow for that sort of machine.<br /><br />I then went to browse through my pictures, and see if I could find some ones I recently took of my nieces. My nice organized folders? Gone. Now all of my pictures are organized by date. And that's only right if the timestamps on the files are right. Not all of my photos have accurate EXIF information, so they aren't going to get organized into the right place. (My wedding photos are a good example of that; I certainly didn't take them, being busy getting married, and my photographer changed some things around on the photos before she delivered them).<br /><br />I think the idea is that you're supposed to tag your photos (<a href="http://f-spot.org/">F-Spot</a> does the same thing, I think), but screw that. I have 3000 photos, I'm not going to go back and relabel them all when I had them properly sorted in the first place.<br /><br />To make matters worse, iPhoto does the same thing that iTunes does by default, and copies your photos to its own directory and organizes them the way it likes. So that's probably the reason the import took forever; it made a second copy of every damn photo. 8.9 GB space wasted on my hard disk if I wasn't paying attention.<br /><br />And last, it's just plain slow. Scrolling through pictures is choppy, where Picasa manages is with ease.<br /><br />According to Apple's web site, iPhoto '08 may be better. It should at least get the organization thing right. I'm not really inclined to pay the $79 bucks to try it though, based off my experience with the older version. (I think this particular computer came with iLife '05.) I haven't even tried retouching photos in iPhoto; I don't know how well that works.<br /><br />So that brings me to my oddball project idea. How hard would it be to write a Picasa clone for the Mac? The basic things that I want: good organization and some basic photo retouching; don't sound all that hard to do. Getting up to the level of polish and speed that Picasa exhibits sounds difficult, but just something to help me handle my photos doesn't sound beyond the realm of possibility for one person. I like working in Cocoa, so I think I might give that a shot.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1627633626386920937-2190705985584486922?l=blog.mohiji.org'/></div>Jonathanhttp://www.blogger.com/profile/13922596260367182723noreply@blogger.com1tag:blogger.com,1999:blog-1627633626386920937.post-60308963535663973532007-09-06T21:53:00.001-07:002007-09-06T21:55:03.034-07:00That Didn't Last LongPer my previous post, I went back to CSU San Marcos. I don't think professional game development is for me any more; I like Systems Administration work. It presents interesting problems, is very fulfilling, and I have the energy to play around with game development on my own time after work, which I didn't have at Superscape.<br /><br />I'm happier working with servers than cell phones, go figure. :)<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1627633626386920937-6030896353566397353?l=blog.mohiji.org'/></div>Jonathanhttp://www.blogger.com/profile/13922596260367182723noreply@blogger.com0tag:blogger.com,1999:blog-1627633626386920937.post-52355297475406101502007-08-16T16:03:00.000-07:002007-09-06T19:59:22.496-07:00A Suprising Dilemma<div class="content"><p>I remember being 9 years old, and I met this kid named Kyle during recess one day. We shared an interest in video games, and we sort of spontaneously started inventing new <a href="http://www.mobygames.com/game-group/mega-man-series">Mega Man</a> bad guys. Later, I remember drawing out levels for the game on a pad of paper. That was when I decided I wanted to make games when I grew up.</p> <p>That was the event that sparked my interest in computers. I signed up for the computer class in middle school, and learned a bit of BASIC on an Apple IIe. (I still have the 5 1/4" disks that I saved my code to, though I doubt they work.) In 9th grade, I bought a couple of <a href="http://www.amazon.com/Simple-C%2B%2B-Featuring-Object-Oriented-Programming/dp/1878739441/ref=sr_1_1/103-4108593-8553460?ie=UTF8&s=books&amp;qid=1187303852&sr=8-1">Simple C++: Featuring Robodog and the Profound Object-Oriented Programming Method</a> and 'acquired' a copy of Turbo C++ from AOL. I took a couple years of programming classes in high school (and by programming, I mean <a href="http://en.wikipedia.org/wiki/HyperCard">HyperCard</a>, because that's all the teacher knew) and when it came time to go to college, Computer Science was the obvious choice.</p> <p>I never finished my degree, but I did get an awesome job out of it; I became an Operating Systems Analyst at <a href="http://www.csusm.edu/">CSU San Marcos</a>, where I focussed mainly on Linux administration and learned a *ton*. I did that for 4 years (after 5 years of working as a PC technician while a student), but I never gave up on game development.</p> <p>I bought and read game development books, until I realized that every book just rehashed the same information. I then branched out into other computing realms; I picked up a lot of books on different languages and ways of programming (LISP! Objective C!). I still managed Linux for a living, so I read a lot about open source development as well, along with a number of blogs and news sites. I sent out resumes to the game companies in the area, trying to find a way to get my foot in the door.</p> <p>As an aside, I never really considered game testing to be an option. While I was in school there wasn't anything close enough, and after that testing jobs didn't pay enough.</p> <p>So about 2 months ago now, I got my chance. A friend of mine who works at <a href="http://www.superscape.com/">Superscape</a> let me know that there was a position open as a porting programmer. I interviewed for it, got the job, and I started here on July 16th. I'm in! I got the dream job!</p> <p>And I hate it.</p> <p>It's boring, un-fulfilling work. I take already existing games, and I get them working on different cell phones. My first week here, I wanted to crawl back to the university and ask for my job back.</p> <p>I can't give up that easily though; this is a stepping stone to my dream job, right? Only, I'm not sure that it is anymore. I *liked* what I did before, a lot. I didn't realize it at the time, but the challenges and problems I came across while helping to keep the campus' computing environment running and improving were a lot of fun. The challenges I come across at Superscape? Why doesn't this phone want to play sounds? Oops, this other phone's screen size is a little weird, I'll have to tweak the graphics on 16 games to get them all running on it. There's nothing really challenging, it's mind numbing work.</p> <p>Designing games was the dream job though. But if that's the case, why haven't I been doing it all this time anyway? Most PC games released for the last 8 years have been moddable; I could have used those to make my own games all this time. I contribute code to <a href="http://www.egoboo.org/">Egoboo</a>, but I've never been inclined to contribute a module or a new character.</p> <p>To cap it all off, I've been spending less and less time *playing* games for the last several years. I'll get bored playing, and then go spend some time programming instead. Because I have more fun learning than I do playing a video game.</p> <p>Have I been so focussed on getting a game programming job that I didn't even notice that I don't really want to do it anymore?</p> <p>So, my dilemma. I could go back to the University. They've asked me to come back, and offered a raise in the process. I'm sorely tempted; I miss the work, and I especially miss the people. But doing that means giving up on game development. I've worked so long to get here, it seems... wrong, to give up on it so quickly.</p> <p>But I really don't think it's what I want to do anymore.</p> </div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1627633626386920937-5235529747540610150?l=blog.mohiji.org'/></div>Jonathanhttp://www.blogger.com/profile/13922596260367182723noreply@blogger.com0tag:blogger.com,1999:blog-1627633626386920937.post-71774628394207662612007-07-17T21:00:00.000-07:002007-09-06T20:02:32.302-07:00First new job in 9 years<div class="content"><p>Assorted thoughts and observations:</p> <ul><li>Inheriting a computer sucks. I'd much rather get a clean Windows install and have to go through the trouble of installing other software myself. I have a way I like my computer/operating system laid out, and it's not the same as my predecessor.</li><li>The training period you go through for a new job is disheartening. I'm really excited to get to the real work of the job, but I'm going to feel rather useless for the next week or so as I get up to speed with everything.</li><li>It's kind of funny trying to pick up on what sort of behavior is ok. I like listening to music while I work; it helps me focus. But I don't really see other people listening. Is it safe? Screw it, where's my iPod?</li></ul> </div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1627633626386920937-7177462839420766261?l=blog.mohiji.org'/></div>Jonathanhttp://www.blogger.com/profile/13922596260367182723noreply@blogger.com0tag:blogger.com,1999:blog-1627633626386920937.post-75420454741328194212007-07-14T21:41:00.000-07:002007-09-06T20:03:53.526-07:00Superscape!<div class="content"><p>After nearly 9 years of working at <a href="http://www.csusm.edu/">CSU San Marcos</a> I'm moving on to a new job. I started there as a student in my freshman year and became a full time staff member in 2003. (Right about when I dropped out, actually. :))</p> <p>I cannot begin to express how much I've learned at CSUSM. Not in my classes; the stuff I cared about I tended to learn before it came up in class. But working within the IT department allowed me an incredible amount of latitude to explore new things. I owe the people I worked with quite a bit, and leaving them is more painful that I expected.</p> <p>Monday, I start work at <a href="http://www.superscape.com/">Superscape</a>. I've wanted to make video games since the first time I played one (I'm thinking 86 or 87, but my memory's a bit fuzzy. It was Chopper Command on the Atari 2600). I'm finally getting the chance. I won't be on the creative side for now; strictly bug fixing/deployment, but it's still a start.</p> <p>A new chapter in my life begins!</p> </div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1627633626386920937-7542045474132819421?l=blog.mohiji.org'/></div>Jonathanhttp://www.blogger.com/profile/13922596260367182723noreply@blogger.com0tag:blogger.com,1999:blog-1627633626386920937.post-87121287575084909052007-04-24T16:54:00.000-07:002007-09-06T20:04:27.271-07:00Happy Birthday Dad!I miss you.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1627633626386920937-8712128757508490905?l=blog.mohiji.org'/></div>Jonathanhttp://www.blogger.com/profile/13922596260367182723noreply@blogger.com0tag:blogger.com,1999:blog-1627633626386920937.post-86221554000227298712007-03-23T14:35:00.000-07:002007-09-07T14:49:59.028-07:00New Model ViewerNew version of the silly-little Egoboo Model Viewer. Now animating the models, allowing you to rotate them with the mouse, and sporting a readable font.<br /><br /><a href="/files/ModelViewer.zip">ModelViewer.zip</a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1627633626386920937-8622155400022729871?l=blog.mohiji.org'/></div>Jonathanhttp://www.blogger.com/profile/13922596260367182723noreply@blogger.com0tag:blogger.com,1999:blog-1627633626386920937.post-88299578978762717022007-03-21T13:52:00.000-07:002007-09-06T20:11:03.253-07:00New Site ReduxI've been uncomfortable using bishopia.org to host my own site, because I meant it as an Egoboo-only site in the first place, and the domain name kind of reflects that. I stuck a blog on it mostly because I'd paid for it and not done anything else with it.<br /><br />The domain name is coming up for renewal in April, and I'm not going to renew it. If anyone wants it, that'd be the time to grab it. :) In the meantime, I'm moving my personal stuff to a new domain, <a href="http://www.mohiji.org/">http://www.mohiji.org/</a>.<br /><br />The hosting service I'm using (<a href="https://www.nearlyfreespeech.net/">NearlyFreeSpeech.NET</a>) is quite a lot nicer than GoDaddy, and cheaper to boot. How weird is that? Anyway, I have a better hosting environment that can handle better software, so I want something that'll handle everything I want to do on the site. In no particular order, those things are:<br /><ul><li>Host my programming projects.</li><li>Blog</li><li>A picture gallery.</li><li>Maybe forums for the programming projects, but more likely not.</li><li>Consistent visual style throughout the entire site.<br /></li></ul>Drupal (<a href="http://drupal.org/">http://drupal.org/</a>) fits the bill nicely, so that's what I've got running now. Everything I want is built-in, but if I want to improve things, the codebase is very clean and easy to extend. I haven't messed with theming yet, but it appears to be very straightforward. That's good, because I don't have a lot of patience for web design. :)<br /><br />Anyway, the site's up now, and if my attention doesn't wander too far I'll be adding a lot in the upcoming weeks.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1627633626386920937-8829957897876271702?l=blog.mohiji.org'/></div>Jonathanhttp://www.blogger.com/profile/13922596260367182723noreply@blogger.com0tag:blogger.com,1999:blog-1627633626386920937.post-50506152179294221012007-03-19T14:59:00.000-07:002007-09-07T14:49:59.028-07:00Egoboo 2.3.6 for Mac OS XI don't know if there's anyone out there besides me who wants to play Egoboo on Mac OS X, but who cares? I want it, so I'm building it, and here it is. :)<br /><br />If you have an existing Egoboo installation, you're going to want this file: <a href="files/egoboo-osx-r68.dmg">egoboo-osx-r68.dmg</a>. Just follow the directions in the included readme file.<br /><br />If you want the new Egoboo 2.3.6 and you haven't already downloaded it yet, grab the full thing here: <a href="/files/egoboo-osx-2.3.6.dmg">egoboo-osx-2.3.6.dmg</a>. Just open up that package, copy the folder inside it onto your hard drive somewhere (it can't run within the package), and run Egoboo!<<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1627633626386920937-5050615217929422101?l=blog.mohiji.org'/></div>Jonathanhttp://www.blogger.com/profile/13922596260367182723noreply@blogger.com0tag:blogger.com,1999:blog-1627633626386920937.post-36557331738607123912007-03-19T09:36:00.000-07:002007-09-07T14:49:59.028-07:00Egoboo 2.3.6Egoboo 2.3.6 has been released! I don't say it enough, but Zefz and the guys on the Egoboo Resurrection project are doing some great work. For the first time in years, there's honest new content to play. That's one of the big things that was missing in Zippy.<br /><br />I'm also stoked as this release is using my Egoboo 2.x codebase. Brings a tear to my eye. :)<br /><br />To get your copy, go here: <a href="http://home.no.net/egoboo">http://home.no.net/egoboo</a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1627633626386920937-3655733173860712391?l=blog.mohiji.org'/></div>Jonathanhttp://www.blogger.com/profile/13922596260367182723noreply@blogger.com0tag:blogger.com,1999:blog-1627633626386920937.post-90112089320364107782007-02-07T22:00:00.000-08:002007-09-06T20:21:45.196-07:00Beautiful Films<div class="content"><p>Two movies to talk about.</p> <p>First, Jackie and I went and saw Pan's Labyrinth a couple of weeks back. If you haven't heard about it yet, Pan's Labyrinth is a fairy tale, the way they used to be told. It's dark, violent, and full of wonder and magic. I've been bubbling about it to anyone who asks since seeing it. I think it's the best movie I've seen in the last year or so, hands down.</p> <p>I don't really know what to say about it without lessening the experience for someone else. It's in Spanish, and subtitled in English; we didn't realize that going into it. It wasn't hard to keep up with though; I never felt that I was missing something because I had to read. Actually, I never really felt like I was reading; it felt like I just understood Spanish for those two hours.</p> <p>The other movie is Stay; it came out in 2005. We saw it in the theater back then, but we caught it again this evening, and I was struck again at how beautiful the movie was. Very cool cinematography and editing, the music was exquisite, and Ewan McGregor and Ryan Gosling did an amazing job, Gosling especially.</p> <p>I'm not very good at putting into words how these movies make me feel. It seems that saying too much would give away the movie, but saying too little won't encourage people to see them.</p> <p>A trailer for Pan's Labyrinth is available here:<br /><a href="http://www.apple.com/trailers/picturehouse/panslabyrinth/" title="http://www.apple.com/trailers/picturehouse/panslabyrinth/">http://www.apple.com/trailers/picturehouse/panslabyrinth/</a></p> <p>Apple doesn't keep trailers around forever, unfortunately. I can't find Stay on their site.</p> <p>Anyway, both of these are highly recommended by both Jackie and I.</p> </div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1627633626386920937-9011208932036410778?l=blog.mohiji.org'/></div>Jonathanhttp://www.blogger.com/profile/13922596260367182723noreply@blogger.com0tag:blogger.com,1999:blog-1627633626386920937.post-28850611204693519342007-01-18T12:00:00.000-08:002007-09-06T20:22:46.666-07:00Java<div class="content"><p>I'm playing around with Java a bit, mostly because I've been in a rut coding-wise and want to shake things up a bit. I'll probably be posting about it more in the future, but I just wanted to stick a few brief thoughts up.</p> <ul><li>Garbage Collection Good. It's nice to not have to worry about things like ownership and null pointers. Combined with weak references, caching resources becomes clean and easy.</li><li>LWJGL is pretty cool.</li><li>From what I've been able to determine, performance is fine for a hobby game. It's not like I'm going to try and keep up with mainstream graphics.</li><li>Having things like java.util.Properties built-in is just a huge time-saver.</li><li>If you're interested in doing the Java game thing, <a href="http://cokeandcode.com/">cokeandcode.com</a> is a great resource.</li></ul> <p>More later.</p> </div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1627633626386920937-2885061120469351934?l=blog.mohiji.org'/></div>Jonathanhttp://www.blogger.com/profile/13922596260367182723noreply@blogger.com0tag:blogger.com,1999:blog-1627633626386920937.post-6309857810437516872006-10-11T20:23:00.000-07:002007-09-06T20:23:59.214-07:00Two To Go<div class="content"><p>Two full days yet till the wedding, and I'm quite excited.</p> <p>On a superficial and selfish level, it means an end to all the planning (which Jackie's been doing most of), the errands, the worrying about budgets, all the build-up, all the questions, hopefully all of the useless and unfunny advice. It means a vacation, which I'm in sore need of. It means we can finally clear our apartment of all the decorations and pictures and floor mats and other things that we need for the day of the wedding. It means a night in an awesome hotel in Coronado, and 8 nights in awesome hotels in Hawaii. It means a day of ATV-ing on the big island, a luau, kayaking & snorkeling with the dolphins.</p> <p>It means a release, and a hell of a lot of fun.</p> <p>It means a lot more than that though. I first met Jackie at Danielle's father's funeral; just in passing, no real interaction. I remember her looking elegant in black, and having to trade off babysitting a puppy that'd been brought for some odd reason. After that, I full well forgot about her, and met her again six months later at my sister's place. She'd moved in with Danielle, and Becky invited them and I to her place to hang out, have dinner, go swimming. I mostly remember being distracted by her posterior that evening; her shorts were just a smidge too short.</p> <p>I saw Jackie a few times over the next several months, and on a whim one night Rob, Jocelyn and I decided to grab a bunch of people to go ice skating, and called Jackie and Danielle to join us. Ice skating became a regular thing, then hanging out at Rob's place, having a few drinks, meeting up for dinner, the normal stuff friends do. We were always proper; Jackie and I never saw each other outside of that group of people, but I think everyone saw where it was heading.</p> <p>Yes Karen, Jackie had a good bit to do with our breakup, but she wasn't the only reason. A relationship over e-mail and IM wasn't fair to either of us, and though I regret being such a coward about breaking it off with you, I'm completely convinced it was the right choice.</p> <p>Jackie and I have been together since April 23rd, 2001. I can't remember our first date, really, because by the time we were officially together we were completely comfortable with each other. I remember going to Ruth's Chris steakhouse for my birthday, I remember Rob hitting a possum on the way home (the poor thing). I remember double dates with Rob and Jocelyn (Sammy's!). I remember meeting her best friends for the first time in Mission Valley. (Was it at Chevy's?)</p> <p>I remember her sitting with me when dad passed away, holding me while I bawled like a baby. I don't know how I would've made it through those months without her.</p> <p>Jackie and I have been together for five and a half years now, and while I won't presume to speak for her; I've never felt as.. complete, or content as I have in these years. I love her with all of my heart; with everything I have inside me. I will love her for as long as I live.</p> <p>Not everything is all rosy and perfect, of course. We both have our bad days, and bad moods to go with. I'm given to laziness, so she has to nag me on occasion. We fight, but we're so close in temperament that the fights have never been out of control. And for all that people tell us marriage is hard, that things change: so what? If it were easy, we wouldn't cherish it, wouldn't value it.</p> <p>"Really, the difficulties involved - the missteps we make along the way - are what make it interesting." -- Neal Stephenson</p> <p>I love her, and she loves me, and whatever else may come; whatever trials, setbacks, failures, successes, windfalls, jaguar attacks, earthquakes, apocalypses, floods, surprises, babies, kittens, etc., we'll make it. We'll be together for the rest of our lives.</p> <p>And Saturday, we'll pledge it formally in front of all the people we love.</p> </div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1627633626386920937-630985781043751687?l=blog.mohiji.org'/></div>Jonathanhttp://www.blogger.com/profile/13922596260367182723noreply@blogger.com0tag:blogger.com,1999:blog-1627633626386920937.post-14253006174390513332006-10-02T20:24:00.000-07:002007-09-06T20:24:56.139-07:00New Site<div class="content"><p>I've had bishopia.org registered for awhile, but what I originally intended to do with it I ended up not doing. But I've got it, and it's a lot cooler sounding than my old URL, so I thought "Hey, I should move my blog over there."</p> <p>And this way I get to host my own software, so I can tweak it more, extend it however I like, that kind of thing. It's fun.</p> <p>I've got kind of an on-again, off-again relationship with Egoboo. At times I feel like doing all sorts of things with it, and at other times I'm burnt out and can't whip up much enthusiasm for it. The community for the game is slowly dying off as well, which doesn't help. Ah well, if I don't keep working on Egoboo, I'm sure I'll find something else.</p> <p>Oh, and for reference, I love my digital camera. That sword picture up there? All me baby!</p> </div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1627633626386920937-1425300617439051333?l=blog.mohiji.org'/></div>Jonathanhttp://www.blogger.com/profile/13922596260367182723noreply@blogger.com0tag:blogger.com,1999:blog-1627633626386920937.post-35512100005314977972006-06-06T20:25:00.000-07:002007-09-06T20:25:43.636-07:00Computer Science Books, or the Lack Thereof<div class="content"><p>Why is it that you can't walk into a computer store like Fry's, or a big bookstore like Barnes and Noble or Borders and find a decent collection of Computer Science books? I browse through these stores, and I see dozens of books on "Learning Java" or "C++ by example" or "XML is the new God" or other such things, but these are all languages and APIs. MySQL, PHP, Python, these are all worthy subjects, but these aren't Computer Science books; they're coding books.</p> <p>I want to see books on Data Structures. I want discussions of the various algorithms for implementing a self-balancing binary tree. I know every modern language out there has a library that will do it for you, but that's not what I want. I want to learn, to grow. When I'm writing an app for something sure, I'll use the built-in, but when I'm programming for myself I want to try the complicated stuff. The Design Pattern books are part of the way there, but they don't cover the meaty stuff.</p> <p>Specifically, I'm currently looking for a good book on the design and implementation of compilers (e.g. the Dragon Book). I could just order one online, but I like being able to go flip through a book before I drop money on it. Call me old-fashioned.</p> <p>Maybe I should just try a library. (The brick and mortar kind.)</p> </div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1627633626386920937-3551210000531497797?l=blog.mohiji.org'/></div>Jonathanhttp://www.blogger.com/profile/13922596260367182723noreply@blogger.com0tag:blogger.com,1999:blog-1627633626386920937.post-76882140011318978612006-05-08T06:50:00.000-07:002007-09-06T20:47:21.348-07:00C++ Abuse<div class="content"><p>I'm reading through <a href="http://www.amazon.com/gp/product/1592000908/">MUD Game Programming</a> by Ron Penton. I found it at Fry's for $16.99, so I'm hoping it will be worth it at least for the discussions on network code (he only covers Telnet, as it's for MUDs, but adapting to other protocols isn't hard) and the fact that this book actually goes into management of the actual game, rather than just backend stuff.</p> <p>Most of the books I've bought cover all kinds of info about how to write the various bits of a game engine, but they leave you with bits and not all that clear of an idea how they all get put together. Couple that with me being unable to ignore perfectionist tendencies and you'll have a good idea of why I take awhile to get very far in my personal projects. :) This book is cool because it focuses on something so simple: your average MUD is text based; the most complicated part is handling the bits that go over the network. That leaves Mr. Penton plenty of time to discuss how it all works together.</p> <p>He has enough room that he writes two full MUD engines; the first very simple and similiar to older-style game. It's mostly hard-coded so any real changes require access to the codebase. His second engine is a great deal more flexible, and includes Python bindings and all that jazz.</p> <p>So for $16.99, I'm stoked. It's a good book. However, I would ask anyone who might be interested in reading it to have a firm grasp of how C++ works and what you can, can't, should, or should not do in it, because Mr. Penton abuses the language in a number of ways.</p> <p>First up, can anyone explain why you would do this:</p> <pre>class MyClass {<br />public:<br /> int& MyVariable() { return m_myVariable; }<br />private:<br /> int m_myVariable;<br />};<br /></pre><p>Rather than just:</p> <pre>class MyClass {<br />public:<br /> int m_myVariable;<br />};<br /></pre><p> With the first variant, you have to call MyClass::MyVariable() to get access to the variable, but it returns a reference, so you can do things like:</p> <pre>MyClass m;<br />m.MyVariable() = 14;<br /></pre><p> What the hell is the point in having the variable private in the first place? It is no longer protected from getting modified in bad ways, and you're still exposing that implementation detail to the world. If you want a variable to be accessible to everyone, just make the darn thing public. If you don't want it to be, use get/set functions. It's much clearer what you're trying to do, and you have more flexibility down the line to evolve the interface further.</p> <p>Along the lines of accessor functions, Jonathan Blow makes some very good points in his "Implicit vs Explicit Software Engineering Costs" rant here: <a href="http://number-none.com/blow/rants.html">http://number-none.com/blow/rants.html</a>. I personally tend to use accessor functions when I want to either 1) validate things before I set them, or 2) allow read-only access to variables. If it doesn't fit in either category, it goes public.</p> <p>Second nitpick on MUD Game Programming is C pre-processor abuse. Mr. Penton defines a couple macros that look like this:</p> <pre>#ifdef WIN32<br /> WSADATA g_wsadata;<br /> #define StartSocketLib WSAStartup( MAKEWORD(2, 2), &g_wsadata);<br /> #define CloseSocketLib WSACleanup();<br />#else<br /> #define StartSocketLib {}<br /> #define CloseSocketLib {}<br />#endif<br /></pre><p>And then uses them in the code lookin' something like this:</p> <pre>void main() {<br /> StartSocketLib;<br /> // do networky stuff<br /> CloseSocketLib;<br />}<br /></pre><p> I'm reading through the example code and see something like "StartSocketLib;" on it's own in a line of C++ and my brain halts. It's not immediately obvious what that statement does: it should do absolutely nothing. Any variable or function placed like that evaluates to a NOP. I understand completely hiding OS-dependant details behind some pre-processor magic, but if you're going to do that at least make the macro look like valid code.</p> <p>Anyway, I bought the book for the ideas within it, and they're worth what I spent on it, but the code drives me nuts, so it's been slower going than I'd like it to be.</p> </div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1627633626386920937-7688214001131897861?l=blog.mohiji.org'/></div>Jonathanhttp://www.blogger.com/profile/13922596260367182723noreply@blogger.com0tag:blogger.com,1999:blog-1627633626386920937.post-74251500139552229432006-05-03T07:29:00.000-07:002007-09-06T20:48:28.369-07:00C++ Annoyances<div class="content"><p>Just one C++ annoyance actually. Having the ability to create an object on the stack complicates memory management a bit. I've got all my objects derived from this base class that provides reference counting for memory management. So I've got this decision now: should an initially created object have 0 or 1 references? I'm of the opinion that it should have one, because something obviously created it, so it's holding a reference to it.</p> <p>For debugging and safety's sake, I throw an assert in the base class' destructor that will fire if the object is freed with any references left. Nice for debugging, but it doesn't work if I create a base-derived object on the stack. If I do, it'll be created with one reference and be automatically destroyed as soon as the function ends, firing off the assert. I can't just call release() on the object, 'cause release() will try and free the object because its ref-count will drop to 0, but it can't do that for an object created on the stack.</p> <p>I like Objective-C and Java's approach here better: you can't create an object on the stack. You have to explicity allocate the thing, no magic.</p> <p>I prefer Objective-C over C++ in general, but the lack of good tools outside of OS X have been keeping me from using it. I'm addicted to Visual Studio. :)</p> <p>As an aside, I do understand that being able to create objects on the stack in C++ is what makes Resource Acquisition As Initialization (did I get that right?) work, but that's really just a workaround for not having garbage collection anyway. Not that Objective-C has garbage collection (natively), but the omnipresent reference counting and autorelease pools do a good job of hiding it.</p> </div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1627633626386920937-7425150013955222943?l=blog.mohiji.org'/></div>Jonathanhttp://www.blogger.com/profile/13922596260367182723noreply@blogger.com0tag:blogger.com,1999:blog-1627633626386920937.post-29797566173189815032006-04-24T10:59:00.000-07:002007-09-06T20:50:10.402-07:00Happy Birthday Dad<div class="content"><p>You should've been 54 years old today. Not really that old, life being the way it is nowadays. You'd probably have spent the day working on your truck, or your store, as you had the last 30+ years. It's Monday, so we would've celebrated last night; a small family barbeque, grilling up some steaks, maybe corn and potatoes to go with. You'd have had a few beers; Becky and Daniel and maybe Shawn too. Dakota and I would've stuck with soda; beer isn't really our thing.</p> <p>No TV; the stereo would be blaring Journey, or maybe some old U2; Santa Esmerelda would definitely have made an appearance. That'd be the night; good family, good music, good talk. Stories of all the silly, sometimes stupid, things we'd done as kids. A little bit of talk of the future; but probably not much. Just hanging out; enjoying each other's company.</p> <p>God, I miss those nights. Last night should have been just one of many more to come, but you've been gone a year and a half now. That loss feels nearly as raw now as it did when you passed away, and so I'm sitting crying at a car wash, writing you this letter.</p> <p>All those stories of us as children, but to this day I don't know much about your life before Becky was born. I know you worked from an early age, and that you were in the Marines, and I think you and Mom were married in Puerto Rico, but that's it. I wish I'd asked when I had the chance. I wish I'd spent more of those nights hanging out with you, listening to your music. I wish I'd spent more days helping you at your store, or smeared with grease helping you out with your truck. I wish I'd not skipped family trips as I got older; I wish I'd gone to the family reunion. I wish I'd spent more time with you.</p> <p>I'm sorry I went off and did my own thing so many times. I'm so very sorry I wasn't there for you more while you were sick.</p> <p>I'm getting married soon; I finally proposed to Jackie on her birthday last year. The date's set for October 14th; there's nothing special about the date (yet), it's just a good time for it. We'll have been together for 5 and a half years at that point. I know you liked her a lot, and it's comforting to know that you'd approve of this.</p> <p>Becky's doing well too; she and Eric moved to a small town in Northern California that they love, at least when it stops raining. You have a new grand-daughter; Emma Rose Moses was born on April 1st last year. I haven't gotten to spend enough time with her to know her yet, but just listening over the phone she sounds great. A bit better behaved than her sister, and so eager to catch up with your namesake. Kenna sounds like a cute little snot nowadays, but isn't that what little girls are supposed to be like? They're both slated to be flower-girls in my and Jackie's wedding, and Becky a bridesmaid.</p> <p>Daniel and Shawn are groomsmen, along with Dakota. I worry a bit about Daniel and Shawn; they could use having you around more than Becky and I. Daniel's a bit self-destructive lately (well, more than usual), and Shawn's still trying to find himself. They'll both get along fine, and get to where they belong, I'm just afraid the trip will be harder than it has to be.</p> <p>Daniel has 3 '79 Ford Trucks now, he's nuts. One day he's planning on making them into one perfect truck. I applaud the effort, and wish him luck in it, but it won't be your truck. It'll be his, and that's cool. I'll miss your truck, but it's better than letting it fade away.</p> <p>Shawn thrashed his Ranger, but that's what we've all done. Daniel thrashed his Honda, I thrashed my Mazda, and Becky thrashed her Mustang. Shawn went and bought himself a brand-new F-150, and that fits the pattern too. He's just working on an accelerated schedule. I'll bet Dakota will get Daniel's Ranger when he's old enough, and I'm sure he'll thrash it too.</p> <p>I worry about Dakota most of all. He's 11 now, living with his mom. That's a good thing; he and Frida should be together. I know you wanted it that way. Daniel and Danielle shouldn't have been responsible for him so early; a child is a difficult burden. They should be able to live their lives. That said, if he ever wants to live with me; I'll take him in a heartbeat. Jackie and I will find some way to make things work if that ever happens.</p> <p>But he needs you, Dad. He still has so much growing up to do, and there just isn't anyone else out there as well qualified to show him how. There's no role model good enough, certainly not me. I learned a lot from you, but I'm not ready yet.</p> <p>Thank you Dad, for teaching me what it is to be a good person, and for being an incredible father. I hope to measure up to that standard one day, but I don't yet. I'm too selfish.</p> <p>I love you Dad, I don't think I realized how much until you were gone. A year and a half now, and I miss you as much today as I did back then.</p> <p>Jon</p> <p>P.S. - I bought a motorcycle. Sorry.</p> </div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1627633626386920937-2979756617318981503?l=blog.mohiji.org'/></div>Jonathanhttp://www.blogger.com/profile/13922596260367182723noreply@blogger.com0tag:blogger.com,1999:blog-1627633626386920937.post-47400027830417705782006-04-11T06:43:00.000-07:002007-09-07T14:49:59.028-07:00Universal Binary Egoboo<div class="content"><p>I found Universal Binary versions of SDL and SDL_ttf here: <a href="http://www.libsdl.org/cvs/">http://www.libsdl.org/cvs/</a>. Yippee!</p> <p>I needed to re-tool the Xcode project files to get it to build, and I finally got frustrated with egobootypedef.h and just re-wrote/re-factored it to make it much smaller/cleaner. Fixed up the rest of the codebase once those changes were in, and voila! It builds!</p> <p>But of course there's a caveat. The endian-handling code was mucked up in the process, so certain images are loading with their red and blue channels swapped, and the game crashes once it starts loading models. Probably still works dandy on a Big Endian Mac, but I don't have time to try that now. So I'll be working on fixing that up tonight.</p> </div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1627633626386920937-4740002783041770578?l=blog.mohiji.org'/></div>Jonathanhttp://www.blogger.com/profile/13922596260367182723noreply@blogger.com0tag:blogger.com,1999:blog-1627633626386920937.post-74480484367139724192006-04-07T07:01:00.000-07:002007-09-07T14:49:59.028-07:00Intel Macs<div class="content"><p>Hey, my <a href="http://www.csusm.edu/">Work/University</a> just got in a few MacBooks to start testing before we start deploying Intel Macs in the campus. I snagged one for a little testing of my own, and it runs Egoboo beautifully. And this is the version I posted a couple months ago; <b><i>NOT</i></b> a Universal Binary. So on a Dual-Core MacBook Pro, the Rosetta translator is fast enough to run Egoboo roundabout 350 frames a second. Noice.</p> <p>I'm going to be going to a Red Hat training course the week of the 17th in Las Vegas, and since I don't gamble or drink, I'm going to bring the laptop along and see what I can accomplish Egoboo-wise on the lonely nights out there. With this thing, and <a href="http://www.apple.com/macosx/bootcamp/">Apple's BootCamp</a>, I can be build and test on both Mac OS X and Windows. So here's hoping I'm productive enough to add some kind of new feature that week. :)</p> <p>(later): Shoot, SDL doesn't quite work as a Universal Binary yet; at least not the release version. I'm not really in the mood to try and build it from source.</p> </div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1627633626386920937-7448048436713972419?l=blog.mohiji.org'/></div>Jonathanhttp://www.blogger.com/profile/13922596260367182723noreply@blogger.com0tag:blogger.com,1999:blog-1627633626386920937.post-73601125844165779862006-01-02T07:12:00.000-08:002007-09-07T14:49:59.029-07:00A Todo List<div class="content"><p>There is quite a lot of stuff I plan on doing to the Egoboo codebase, so when I get sit down to work on something, I occasionally get lost in what I wanted to work on. So I'm going to maintain this post as a Todo List of things that need to get done. It'll be edited from time to time.</p> <p>Stuff to do:</p> <ul><li>Implement proper timing code: gameplay & simulation should occur at fixed timesteps, while animation and rendering is allowed to run at whatever speed the computer can handle.</li><li>Split game handling code into client &amp; server portions, to make robust network play possible.</li><li>Menus menus menus</li><li>Re-work the input code, both to allow cleaner configuring of input sources and to allow for input playback for demos & the like.</li><li>Adjust Egoboo's filesystem usage so that the game does not require write-access to it's own directory; this will make the distribution/installation of the game much cleaner on most OS's.</li><li>Move from a per-module object store to a global one; commonly used objects should not have to be copied between different modules, and each saved character doesn't need it's own copy of a torch.</li><li>Explore other possible inventory management schemes; Egoboo uses too many buttons for that right now. I want to be able to play on a controller with no more than 4 buttons.</li><li>And along with the above few items, I want to be able to play the game on my Dreamcast. After the above issues are worked out, the main difficulty here is that all of Egoboo's level data is drawn as Triangle Fans, but the Dreamcast only supports Triangle strips. We'll see how performance is if I switch to straight Triangles on the DC.</li><li>More to come</li></ul> </div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1627633626386920937-7360112584416577986?l=blog.mohiji.org'/></div>Jonathanhttp://www.blogger.com/profile/13922596260367182723noreply@blogger.com0tag:blogger.com,1999:blog-1627633626386920937.post-87926097460880687722005-12-27T13:22:00.000-08:002007-09-07T14:49:59.029-07:00Beat!<div class="content"><p>I've been beaten to it: <a href="http://www.galaxymage.org/">http://www.galaxymage.org/</a></p> <p>Between that, and a request that I not drop the Egoboo stuff I've been working on, I guess I should keep at it.</p> <p>So in that spirit, this is a test release that has new menus in place enough to run the single player game. There isn't any way to access the multiplayer stuff in this release, which is ok since it doesn't work all that well yet anyway.</p> <p><a href="http://public.csusm.edu/jonathan/egoboo/egoboo-win32-r39.zip">Egoboo r39 - Win32</a><br /><a href="http://public.csusm.edu/jonathan/egoboo/egoboo-osx-r39.tar.gz">Egoboo r39 - Mac OS X</a></p> <p>To run this release, extract one of the archives above into your Egoboo 2.22 directory. Windows users, you should probably make a backup of your <b>egoboo.exe</b> file first, as this will over-write it. Most Mac users don't have a working Egoboo anyway, so this serves as a way to let you play the game if you can't already. After you've extracted the archive, just go into your Egoboo directory and double-click on "Egoboo".</p> <p>I haven't done much of anything with this since the last time I posted an update about it, so if you've played with the menu demo you're not going to see much new in this release. The 640x480 limit still applies as well; the menus have been designed to look nice in 640x480, they look kinda silly in anything higher. Cleaning that up is one of the many things on the todo list.</p> <p>P.S. - Anonymous access to the Subversion repository is available at <a href="http://svn.csusm.edu/jfischer/egoboo/">http://svn.csusm.edu/jfischer/egoboo/</a>. The source code is located in <a href="http://svn.csusm.edu/jfischer/egoboo/trunk/src/">http://svn.csusm.edu/jfischer/egoboo/trunk/src</a>, so if that's what you're interested in I'd appreciate if you sync to that location, so that you don't download the whole game at once. =)</p> </div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1627633626386920937-8792609746088068772?l=blog.mohiji.org'/></div>Jonathanhttp://www.blogger.com/profile/13922596260367182723noreply@blogger.com0tag:blogger.com,1999:blog-1627633626386920937.post-27660012825911158932005-12-07T13:12:00.000-08:002007-09-06T20:57:34.399-07:00A New Direction<div class="content"><p>While I actually was working on Egoboo, I felt a built guilty about working on my own branch of the 2.22 code, and not contributing to Zippy. It seems like I probably could have helped Zippy move along, but the fact of the matter is that I don't really like Zippy's code-base. Every time I stepped away for a bit, it seems like some new amount of complication and obfuscation was added in, and I got tired of trying to keep up with it. It also didn't help that every update that came through in CVS broke the Windows build in some odd manner. I've tried to get the current CVS (it hasn't changed in 6 months or so) up and running several times, and it's crashing with some odd memory error on me. Ah well.</p> <p>So I didn't want to work on Zippy, but I don't want to compete against it either; it's Elmin's baby, and not something I'd try and outdo, even if I were able to. So rather than continue on the path I was going with Egoboo 2.22, I'm going to do something of my own. (The source code is still available for the work I did do though, at the links found on other posts here.)</p> <center><img alt="Final Fantasy Tactics - Image from Moby Games" src="http://www.mohiji.org/images/fft.gif" /></center> <p><a href="http://www.mobygames.com/game/playstation/final-fantasy-tactics">Final Fantasy Tactics</a> is my favorite game of all time. (I haven't really developed a liking for the Game Boy Advance version. Too much game to fit on that screen.) It's a beautiful blend of story, gameplay, and surprisingly endearing graphics. To my mind it still looks much better than it's siblings did on the original Playstation.</p> <center><a href="http://www.mohiji.org/images/editor.gif"><img alt="Editor Prototype" src="http://www.mohiji.org/images/editor_thumb.gif" /></a></center> <p>Imitation is the sincerest form of flattery, right?</p> </div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1627633626386920937-2766001282591115893?l=blog.mohiji.org'/></div>Jonathanhttp://www.blogger.com/profile/13922596260367182723noreply@blogger.com0tag:blogger.com,1999:blog-1627633626386920937.post-2188199627645327022005-12-06T11:18:00.000-08:002007-09-06T20:59:22.728-07:00Family Photo<div class="content"><p>Just because I have friends who don't really believe I have siblings. :)</p> <p><a href="http://www.mohiji.org/images/family.jpg"><img alt="The Family Photo" src="http://www.mohiji.org/images/family.jpg" height="200" width="300" /></a><br />From the left: Daniel, Danielle (Daniel's wife), Shawn, Dad (Ken), Becky, Me (Jon), Jackie (my fiance), and the little one is Dakota.</p> <p>This was Shawn's graduation, June 2004.</p> </div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1627633626386920937-218819962764532702?l=blog.mohiji.org'/></div>Jonathanhttp://www.blogger.com/profile/13922596260367182723noreply@blogger.com0