Computer Games and Music

Here follows a list of some of my favorite computer games themes.

Diablo 1 by Blizzard Entertainment. Released in early 1997, this game took the concepts laid out by Nethack, Rogue, Angband and the rest and run with them. Truly amazing game. The Tristram village theme is an epic, wonderful tune. Youtube video

The Curse of Monkey Island, by LucasArts, released in 1997. An amazing adventure game, packed with wonderful moments and great characters. Masterful. Youtube video

The Legend of Zelda, by Nintendo. Zelda games are widely regarded as the best games ever devised, for a good reason. Youtube video

Agony, by Art & Magic/Psygnosis. This is one of the most incredible shoot'em'ups to come out for the Amiga. You are Alestes turned into an owl, flying through surreal backgrounds trying to make it to the end. Youtube video

Turrican by Factor 5, Loriciels and others. Chris Hόlsbeck composed the music for this great shoot'em'up. Youtube video

The Elder Scrolls IV:Oblivion by Bethesda Softworks. This game didn't leave up to the hype, though it certainly is a masterpiece in too many ways. I love the introductory music following the Emperor Uriel Septim VII's monologue (voiced by Patrick Stewart). Epic and powerful. Youtube video

Gears of War promotional 'Mad World' video. Epic released a promotional video featuring Marucs Fenix and Gary Jule's Mad World(originally by Tears for Fears). This video led me to buying an Xbox 360 just to play tis game. Epic. Youtube video

Bard's Tale 1 - Tales of the Unknown, Volume I by Interplay. I was so addicted to playing this game, drawing maps, questing and exploring dungeons and Skara Brae. A legendary game. Youtube video

On important technologies: LLVM, CocoaTouch, Caching, Multi-core designs

As far as I am concerned, LLVM, CocoaTouch and memory based cache servers make up the the set of software technologies that will affect all things computing next year onwards.

LLVM is going to push code compilation and optimization to the next level. Building a new language is borderline trivial using LLVM technology. You produce the IR and the LLVM backend takes care of everything for you. I will be surprised f the 'fastest' Javascript implementation for 2009 won't be based on LLVM.

Apple's CocoaTouch is so well done, so well thought out (we are still on iPone SDK 1.0 and that speaks volumes) that it will be hard not to imagine Apple advancing and reusing the technology on, say, tablets and even making available the CocoaTouch extensions to OS X existing frameworks features set.

The ever increasing complexity of web-based services along with the rising number of users of those services and the need to sustain a user experience that depends on responding to user's actions as fast as possible, calls for the kind of tools and services that utilize intelligent RAM based caching. By caching just about everything, thanks to the ratio of reads/writes, gets/puts, resources (CPU, disks, etc) use drops by orders of magnitude while at the same time satisfying the need for a perceived fast responses to a matching requests. Developers and researchers most likely will come up with even better systems, ones that deal with cache coherency transparently, mirroring and synchronization, etc. This new realization may even render expensive, large and over-complicated systems irrelevant(e.g Oracle RDBMS). The only potential problem is the saturation of the network links, which is another class of problems researchers should look into in the near future.

On the CPUs side, everyone seems to have finally agreed that we can no longer scale vertically. We have to scale horizontally by exploiting parallelization and multi-core designs, potentially coupled with technologies such as NUMA. The Cell processor, Sun's UltraSPARC T, Intel's and AMD Multi-Core designs are build on that principles. Using all those cores('threads') efficiently, both in therms of throughput, scheduling and access to system resources is not (going to be) an easy task, but the benefits and the need to go forward justify this new approach, if not make it necessary. I personally couldn't be more excited about the possibilities availed by those architectures.

Where the hell is Matt?

4 months in the making, 42 countries, and a cast of thousands.. more about Matt Harding.
Everything burns

'Everything burns' by Anastacia ft.Ben Moody.

'With great power comes great responsibility' ( Spiderman )
'You would have no power over Me if it were not given to you from above' ( Jesus )
Software Rendering, Filesystems

Core i7 beats Intel IGP in DirectX 10 software rasterizer : I am very excited about the upcoming Larrabee GPU (or rather, hybrid-GPU) Intel is working on. I never found it particularly interesting to be restricted to a set of APIs for for defining and drawing scenes, as opposed to the good old days where it was all about relying on optimization techniques and clever programming to get get the most out of a pure software based rasterizer. Nowadays, at least on PCs and most game consoles, you must use either DirectX or OpenGL which provide a set of benefits (everything is taken care for you by the the GPU, the driver and the API implementation layers, etc) but also take away the fun. There is a multitude of reasons why the existing model works, but one could argue that innovation and advancement of the technology is hindered by being bound to a constrained environment and set of interfaces. I can't wait to see what near-future Carmacks, Sweeneys and Abrashes will do with the return to software rendering made possible by Larrabee and new, similar products by Nvidia and AMD.
Related references: Twilight of the GPU: an epic interview with Tim Sweeney, RAD Game Tools's advanced software rasterizer for x86, Michael Abrash, legendary x86 assembly and code optimization programmer, Software Rendering on Wikipedia, Nvidia's David Kirk on CUDA, CPUs and GPUs

Migrating to ext4 : We are looking into switching to ext4 filesystem for a few nodes on our 'testbed' environment now that ext4dev is considered stable enough to be renamed to ext4. ext3 has been sufficiently stable and performs well for our data set. Hopefully ext4 will be better in both aspects. We put XFS and ReiserFS to the test a few years ago and that didn't work out very well, though XFS, at least in paper, is impressive. Sooner or later we will need to work on our own file system, which would introduce a great number of benefits to our environment and would be fun to build.
Related references: Google File System, Lustre Filesystem

Jeff Buckley - Hallelujah

Jeff Buckley on Wikipedia

World of Warcraft, keeping track of TODO items, and more.

Phasing in World of Warcraft : One of my biggest gripes with current gen MMOS is that, in fact, you as a participant in those online, virtual, worlds usually don't get to shape in any way or form the world structure, physically or otherwise. It seems the wizard at Blizzard found a way to ease by employing the 'phasing' concept. Read on for more.

Erlang vs Scala : I like Erlang (related post) for various reasons, none of them related to it being partially a functional language. Apparently, twitter switched to Scala from Ruby (the kind of mistakes people make) and it has worked pretty well, so far, for them.

As I was, perhaps not so actively, looking for better ways to organize my life, I have been lucky enough to realize the obviousness of the truth; nothing beats using a text file for my needs set. I maintain a single TODO.txt file. This file resides in ~/Dropbox/TODO.txt, my Dropbox folder. There is an alias (symbolic link) to my desktop for that file. So whenever I think of something, I write it down there. Most of the times I devote a whole space (virtual desktop) to an vim window for that file so whenever something comes in mind, I switch to that desktop and write it down. Because of Dropbox, whenever I use another computer ( be it my iMac at work, my MBP, etc ) I will continue to use the file the same way; it will be kept in sync thanks to Dropbox's mirroring facilities. Because its a text file, I can format and rearrange the text it however I want, find stuff on it using spotlight, move things I consider more important to the top, build lists, you name it. I also tend to 'migrate' things from that file to my bookmarks, my 'notes vaults' folder files, other text files that I use for keeping track of 'domain specific' information(related post). Other times, I just complete tasks or implement ideas and remove the respective content from the file. If you are tired of trying one application after the other hoping to find the one true solution to this problem, perhaps you should sit back and look at the bigger picture; Simple solutions work best.

Links 26.11.2008

Javascript - The Good Parts : Yahoo's chief javascript architect, revered Douglas Crockford talks all (good) things Javascript.

The Art of Hashing : Most high level programming languages performance and dynamic nature is defined by the efficiency and power of the hash table implementation(s) they employ. Enough said.

Programming with Linux on the PS3 : In case previous blog posts didn't make it clear enough, I absolutely love the Cell processor architecture, much as I like Sun's Ultraspark and Intel's Core 2, albeit for different reasons.

Tamarin Internals : I wonder how long it will take for someone to do the smart/right thing. Use LLVM to build a super fast Javascript runtime. Not long, most likely.

RISC vs CISC in the mobile era : RISC, FTW!

Linux assemblers: A comparison of GAS and NASM : GAS has been more than fine for my needs, plus I prefer AT&T syntax over Intel's.

Links 25.11.2008

Detecting spam just from HTTP headers : Simple ideas sometime work unexpectedly well.

Google Exec hints at Future Open Platform : This comment sums it up nicely.

Which Phone to develop for? : Almost 4 billion cell phones in the wild, what are the odds an app, any app, wouldn't sell in such a market? Speaking of which, I am extremely let down by Apple Developer Connection folks. I faxed them my credit card information ( you need to pay them $99 before you are able to deploy an application on your iPhone and eventually to the App Store ) and haven't heard from them since ( over a month now ). I even tried to call them and contact ADC US, to no avail.

CouchDB implementaton : I am not big on document oriented databases, mostly because of the performance penalties that come from the lose (i.e not based on well defined structures ) representation of objects(that is, rows).

Sorting Algorithms Animations : A page that provides visualizations of the operation of 8 different algorithms. What is indeed the most important thing to remember, as noted by the author, is that there is no best sorting algorithm. Quicksort may be the most frequently used (at least, I would hope so..) sorting algorithm, but others can be more effective ( depending on the set size ) or more appropriate (i.e merge sort for sorting large data sets ).

Getting to now GCC 4 : We are moving from GCC 3.2 to 4.1 soon. Code compiles over 50% faster across the board and it seems the compiler backend is able to generate much tighter code this time around. I still wish I could get my hands on icc

id Software Code Style Conventions

3d engine technology of latest games : Gears of War 2 and Fable 3 indeed look gorgeous. I have to second the author's comment on Fallout 3 though. If they had implemented world shadows the lame would probably look at least a whole lot better, not that it doesn't look spectacular any way.

Friends

I had a blast sharing fun moments, pizza, diet coke, thoughts and laughs with an assortment of great friends last night. We crashed Stelios's place (my brother, Sug, GeorgeG, yours truly), had throw-in-the-oven-wait-for-a-while-and-devour snacks while the pizza was on its way, drank Carmack Potion to our health ( GeorgeG is an ale person), played games on Xbox 360 and put our laptops to good use. I had to leave early for I had to drive back home ( 1 hour + drive ), but I was told they all had even more fun later on, as they all jumped into Warcraft till the wee hours of the morning. Next time we should probably try our luck with DnD (dices, figurines, the whole thing). Good times.

Filtering information flow

Like all most of the people I know, I too find myself struggling to keep up with the increasing information flow and the need to come up with means to filter that information stream as to spend as little time as possible evaluating and putting it into good use, and focus on the kind of information that matters to me the most.

Naturally, it would have been best to store/collect/accumulate every bit of information that comes your way. However, unless you be able to identify the usefulness of that information in timely fashion since the acquisition, you are merely storing what you coul/should most probably be able to acquire/lookup later on anyway ( Google, usenet, etc ).

There are various tools and services that make it possible to throw everything at them ( textual content, multimedia, URLs, .. ) which they will happily store away, optionally encrypt them, make them searchable, place them in 'smart lists', you name it. Examples of such applications on Mac OS X are Together, Soho Notes, Yojimbo. I have tried over a dozen of those applications but nothing really worked for me ( pun intended ). They are mostly fine applications, mind you, and may very well turn out to be the perfect tool for your needs so you should try them. ( Sugar is apparently a happy 'Together' user ).

I am relying on NetNewsWire for acquiring information. My subscription list is rather short. I keep track of my friends, some 'interesting folks', various dedicated technical sites and a couple sources providing me with gaming and other entertainment news/meterial. It turns out that having a like minded (sub)network of friends is more valuable than having access to a highly comprehensive list of sources.
Your friends will filter the information for you. They know what you are interested in. They will happily forward you stuff they consider cool/interesting/useful. Thus, its not really that useful to subscribe to popular information sources, for your friends and other sources even, are monitoring them anyway.
I usually check for subscription updates once day, when I get back home from work. I quickly go through the list of items and the ones that seem interesting/worthy I open in a NNW tab for later. Sometime that list of tabs grows to over 100. I go through the opened tabs list whenever I have available time to do so; ones deemed really interesting/useful end up in my Safari bookmarks ( more on that later ) list. Eventually all tabs/pages are consulted and closed. This two-phase process helps me make the most out of the information that reaches me via NNW.

Safari is my web browser of choice for various reasons. I maintain a hierarchical list of bookmarks folders which help me keep references to URLs, obtained mostly via NNW, organized. Most of the bookmarks are tagged by means of adding a list of keywords describing the content within [] in the title. For example, I bookmarked http://www.pragprog.com/ as 'The Pragmatic Bookshelf [store, books, technology]'.

I also maintain text files that hold content specific to a given information domain. For instance, there is a file entitled 'Syntax compilation hints' which I use to store useful, interesting phrases and writing techniques I can refer to in the future. There is another file named 'Quotations', a folder 'Studying Src' which contains files such as 'Algorithms', 'x86 Assembly', 'Cocoa', 'Interesting Findings' etc. In fact, whenever I am studying the implementation details of an application ( say, Lua or Quake III ) I create a text file where I document my findings and thoughts on those. There are over a dozen of folders holding over 100 or so 'notes files', ranging from 'personal rules to follow', to 'ways to deal with stress' to 'ideas about work projects' and 'My Books'.

It all comes down to the fact that thanks to Spotlight ( one of my favorite features of Mac OS X ) I can locate the information stored away as text files ( of course, you can locate anything on your system using Spotlight anyway ) and bookmarks instantly, consult them and update them with little effort. In addition to that, you can easily synchronize and backup that information to locally attached media ( external disks, CDS, etc ) or over the Net (.Mac, online storage services, rsync to a server you have access to you, .. ).

The rules of evolution, thankfully, apply to most systems and processes. What that basically means in this context is that I will eventually figure out a better way to approach the problem. Until that time comes though, I am sufficiently pleased by the benefits the existing solution is providing me with.

How to deal with Burnout

I have been meaning to outline the benefits of keeping your body's health in sync with your mind's for a while. Ancient Greeks knew all about that. Put it simply, they practiced their own 'healthy mind in a healthy body' doctrine religiously. But I digress. If you are having trouble dealing with stress, anger management, fighting off productivity loss, severe burnout related problems, do your self a favor. Put aside a tiny portion of your time, on a daily basis, dedicated to body exercises ( it doesn't have to be weight lifting ). Keep it going for a week and the aforementioned problems will slowly fade away. It worked for me. As a side benefit you stand to lose some weight and feel good most of the times - even if it would seem impossible prior to to getting yourself to exercise. It is literally making me a better person. Good luck!

Favorite RPGs videos : Wonderful 'forgotten' RPGs. I have some very fond memories playing and reading about them.

"Burned Out"

I am browsing some code I wrote a couple of months ago, and, for the life of me, I can't really understand how I built it, how I thought of the algorithms and data-structures I used. Often enough I get to this point, whereas I just can't get my mind to recall things, process input and produce output efficiently ( i.e think straight ), help me focus and, indirectly, provide me with confidence and motivation.

That otherwise malfunctioning mind is leading me to believe this is all due to me overworking the crap out of it, coupled with a good dose of depression and insufficient stimulation of my pleasure center. I remain hopeful that I will restore its efficiency someday soon and along with it, stabilize my sanity and feel good, maybe even happy if I am lucky enough. What a clusterfuck.

New Theme, iPhone, Google AppEngine

My brother provided me with a theme for my blog. Its pretty clean and simple - yet not a simple or clean as I would have wanted it to be, but that's entirely my fault. Its a matter of modifying the structure of the various elements and using font families and colors that make sense.

I purchased two iPhones from Las Vegas ( Thank you for the invitation Patrick ). I used to dislike cell phones with a passion. Especially those engineered by Nokia. Complicated for no reason, cumbersome to use, fancy for the sake of being fancy and loaded with a gazillion crappy applications and 'services'. The only cell phone I actually liked was the original Nokia phone ( short-lived moment of glory for them ) used in the Matrix 1 movie. So, naturally, my expectations were rather low when it came to putting the iPhone to the test.

"The iPhone is a revolutionary mobile phone". It actually is. Everything just works, supported by an ultra sleek UI, robust facilities and solid design decisions. It is by far the best mobile device I ever used, far surpassing any expectations I may have had.

Amazon kick-started the cloud computing era by introducing an ever expanding array of facilities and services, from S3 to EC2, to SimpleDB. Microsoft is entering the game with SSDS. Google made available a dozen APIs and WebService as a means to interfacing with their core services but everyone knew Google would come after Amazon and co, big time. It did. What is perhaps the most important benefit and side-effect of the availability of such a platform is that the everyone can build any web application without having to shelling out for the kind of resources that would have made this application possible. The AppEngine service is going to provide everyone with free access to resources and documentation - all one would need to do is signup with them, build the application on his computer using the provided SDK and then push it back to the cloud. Once the application gets successful (say, 4-5 million page views / month ) that said developer would pay Google for access to more resources. Everyone wins.

I am looking forward to similar offerings from IBM and Sun. For those who are into buzzwords, Web3.0 is here.

Live-blogging from Mix08
I am attending this session called "The Open Question" whereas Sam Ramji of Microsoft is moderating a question on all things ope (source|data, whatnot..). Mike Shcroepher of Mozilla, Andi Gutmans of Zend, Miguel de Icaza of Novell and Rob Conery of Microsoft are on stage. Very interesting stuff. The folks seem to be very knowledgeable and smart; much like the guys participated in other sessions I was lucky enough to attend to. Pictures and more commentary from this session, but also on all things Mix08, Vegas etc in a while.
Microsoft and Yahoo! imminent merger

The wwworld is about to change sooner than later. Microsoft's take over attempt buyout offer is bound to succeed, one way or another. I doubt there is a way for Yahoo! to deflect that one. This new offer by Microsoft would make the Y! shareholders very happy; should Yahoo! decline MSFT's offer, the shareholders would probably sue Yahoo! for doing so thereby not acting on their interest, or at the very least could give Y!'s management some very tough time. Indeed, according to the mail sent by Steven Ballmer to Yahoo! board of directors:

"Depending on the nature of your response, Microsoft reserves the right to pursue all necessary steps to ensure that Yahoo!’s shareholders are provided with the opportunity to realize the value inherent in our proposal."
In other words, Microsoft will let the shareholders know that shooting the offer down would harm them financially and the shareholders will of course demand the sale anyway.

We live in interesting times.

Concurrency

MIMD, MISD and the Future

I have been studying Erlang for a few days. I dislike functional languages for various reasons, but I like Erlangs defining characteristics, especially the share-nothing, actor model based concurrency, which makes a whole lot of sense, compared to shared resources that require locking, synchronized and serialized access to them and that leads to problems - sooner or later. Some day I hope I will have the chance to revise our home-grown SGL (Switch Glue Language) based on my findings while groking lua, erlang and other languages. It should make for a really nifty little language.

Bill Gates on Microsoft's vision of tomorrow, and whatnot

We have been invited by the, otherwise, lovely folks at Microsoft Hellas to Bill Gates keynote speech, entitled something like 'The World of Tomorrow: Microsoft's Vision for the Future of Technology'. My brother, Dionysis (a beloved phaistonian) and yours truly took advantage of the precious invites and attended that said event.

Once we managed to enter the conference hall ('Music Hall', whatever its called), we found ourselves among a million strangers, looking sharp and always hungry, devouring anything those catering folks would dare place on the buffets in zero time -- that's a typical Greek trait; love for food and free stuff.

Bill Gates seemed tired and somewhat not that excited to be there, talking to mere mortals. He was nice though, he expressed his condolences on the passing of Archbishop Christodoulos and even took the time to demo something for us. He demoed Microsoft Surface, which didn't impress me at all. His hands driven actions suffered from latency and the whole thing seemed not much alike to what all Microsoft products, save the Xbox 360, to me. Ugly and almost deliberately engineered as to be hard to use by every day Joes. Bill Gates's vision of tomorrow is not different than just about everyone's vision. Break down software to services and components, move everything on the Net, come up with new ways to interface with software ( hand-writing, gestures, speech recognition,..), take advantage of the Cloud. Again, everything looked ugly. The slides ( stupid color themes and font text colors ), the screenshots and applications demoed by some Sr.Tech.Evangelist, .. Microsoft products are so freaking ugly. Perhaps I spent too much time drinking the kool aid, using Mac OS-X and apple products that I can't "tolerate" that kind of ugly UIs. I dare-say I like Microsoft, they may luck the cutting-edge tech of Google, the amazing usability and looks of Apple products, but that doesn't make any less important in the grand scheme of things.

Betty the Seal ( Scrubs )

The most adorable animal to ever appear on the screen
Video of the day

Tracking the Internet into the 21st Century, with Vint Cerf
Mark Papadakis

Moires, Heraklio, Crete, Greece
Bytes conjurer. Seeking knowledge 24x7
About MarkP

Tags

Archives

Favorite Quotations

  • Focused, hard work is the real key to success. Keep your eyes on the goal, and just keep taking the next step towards completing it. If you aren't sure which way to do something, do it both ways and see which works best.
  • Focus is a matter of deciding what things you are not going to do.
  • Simple is Beautiful
  • In the information age, the barriers [to entry into programming] just aren't there. The barriers are self imposed. If you want to set off and go develop some grand new thing, you don't need millions of dollars of capitalization. You need enough pizza and Diet Coke to stick in your refrigerator, a cheap PC to work on, and the dedication to go through with it. We slept on floors. We waded across rivers.
  • Fear is the path to the Dark Side. Fear leads to anger, anger leads to hate, hate leads to suffering.
  • Easy is what I know, difficult is what I don't.

    Activity Log

  • 12.07 18:37  http://bit.ly/sxl5h : Done with "The Magician's Apprentice". Great start, going downhill from the first 100 pages onwards. 6/10
  • 28.06 02:52  The latest Apple TV update, coupled with the recent release of the iPhone Remote app.made it an order of magnitude more useful and exciting.




Search

Next Page
dummy