tag:blogger.com,1999:blog-58400137991580737952008-11-07T16:57:33.371-07:00empirical programmingtrying to make sense of these crazy computersJonashttp://www.blogger.com/profile/01940265205562650662noreply@blogger.comBlogger15125tag:blogger.com,1999:blog-5840013799158073795.post-85475081758062776662008-11-07T16:56:00.001-07:002008-11-07T16:56:59.936-07:002008-11-07T16:56:59.936-07:00iTD iPhone Game ReleasedTeam Phobic has released our second game, iPhone Tower Defense for theiPhone and iPod touch. Strategically build different types of towersto destroy the oncoming waves of enemies. It supports multi-touch,pinch-zoom, original music, and 9 challenging levels. Download ittoday directly from your iPhone/iPod touch or from iTunes!<br/><br/><a href='http://teamphobic.com/iTD/'>read more</a> | <a href='http://digg.com/apple/iTD_iPhone_Game_Released'>digg story</a>Jonashttp://www.blogger.com/profile/01940265205562650662noreply@blogger.com0tag:blogger.com,1999:blog-5840013799158073795.post-65660283090339385702008-02-28T12:04:00.001-07:002008-02-28T12:07:19.382-07:002008-02-28T12:07:19.382-07:00New Server, Optimizations<p>So we got a new server at work to run my ETL program on.  It's a HP blade with two duel core AMD Opterons and 10GB of ram.  We installed Windows Server 2008 on it and a version of Visual Studio Team Suite so now I have some useful profiling tools.  I found out my program spends 10% of its time on the ToLower() string command.  Our CRM system is weird with strings and *sometimes* returns attribute types with capitals and *sometimes* does gives them all in lowercase depending on where you get them from.  The problem ended up being in this function, which was a pretty big bottleneck:</p> <p>public static string getAttributeType(string entity, string attribute) <br />{ </p> <p>    foreach (CRMAttribute attrib in attributes) <br />    { <br />        if (attrib.entityName.ToLower() == entity.ToLower() <br />            && attrib.attribute.ToLower() == attribute.ToLower()) <br />        { <br />            return attrib.type; <br />        } <br />    } <br />}</p> <p>I hadn't realized it would be called so much, so I replaced it with a hash lookup and now it goes much faster.  I always liked how profiling tools show you such unexpected results when you get into a project of this magnitude.</p> <p>The other bottleneck is threads waiting on other threads... I'm not sure what I can do about this but I'm going to be investigating.  There isn't too much time I have to be working on optimizations because the majority of the program is it spending all of its time publishing to the CRM webservice which we can't speed up.</p> Jonashttp://www.blogger.com/profile/01940265205562650662noreply@blogger.com4tag:blogger.com,1999:blog-5840013799158073795.post-79344318956883758612008-01-09T16:23:00.001-07:002008-01-09T16:23:53.172-07:002008-01-09T16:23:53.172-07:00Advisor Scheduler<p><a href="http://www.teamphobic.com/jonas/images/AdvisorScheduler_E695/ExchangeLogo_2.jpg"><img height="240" alt="ExchangeLogo_2" src="http://www.teamphobic.com/jonas/images/AdvisorScheduler_E695/ExchangeLogo_2_thumb.jpg" width="206" align="right" /></a>So I've been assigned at work to write an advisor scheduling program.  It has to interact with Exchange 2007 mailboxes which is going to be the real trick of completing it.  I've written one before but it was buggy and used WebDAV services to interact with Exchange Server 2003 which didn't work on our multiple domain system.  I'm really looking forward to getting to use the new Exchange Server 2007 web services which should be a lot easier than hacking up everything with WevDAV.  The key here is going to be a very simple user interface for both the advisors and the students.  I also want to make it customizable because my previous version caught the attention of other departments across campus and I'm going to keep in mind portability while writing this.</p> <p>One of the purposes of this blog is to provide some technical information for reference for myself and others.  There have been countless times I have searched for information and found answers on blogs, I can only hope that this blog can return some of that help to others.</p> Jonashttp://www.blogger.com/profile/01940265205562650662noreply@blogger.com0tag:blogger.com,1999:blog-5840013799158073795.post-54957533186314817892008-01-07T13:16:00.001-07:002008-01-07T13:18:49.614-07:002008-01-07T13:18:49.614-07:00the next step<p>So we've released <a href="http://www.electropy.com" target="_blank">Electropy</a>.  Our sales have been doing fairly decent for our first game.  We need to work on getting the word out and spreading the download link to the demo.  Unfortunately we did not make the <a href="http://www.igf.com" target="_blank">IGF</a> finalists so we will not be attending GDC.  While we were certainly upset by this, we quickly recovered and started talking about our next game.  We are expanding out and making a plot driven game that will be much more marketable.  We have learned from Electropy an immense amount and are all extremely proud to have taken the first step with our first game and consider it a massive success.</p> <p>I've been working on the idea behind our next game for quite some time, so it already has about two years of thought into it.  Now that it has been introduced to the rest of the team there are so many great ideas and it reminds me why I am so lucky to be on such a talented team.</p> <p>Our lead artist, Brian Powers, made these renders you can check out, they simply look amazing and give a hint of the atmosphere we are going for in our next game.</p> <center> <p><a href="http://www.teamphobic.com/jonas/images/thenextstep_B987/n508725697_374064_4323.jpg"><img height="150" alt="n508725697_374064_4323" src="http://www.teamphobic.com/jonas/images/thenextstep_B987/n508725697_374064_4323_thumb.jpg" width="240" /></a> <a href="http://www.teamphobic.com/jonas/images/thenextstep_B987/n508725697_374139_8269.jpg"><img height="150" alt="n508725697_374139_8269" src="http://www.teamphobic.com/jonas/images/thenextstep_B987/n508725697_374139_8269_thumb.jpg" width="240" /></a> </p> </center> <p>It's going to be very enjoyable because I am much more involved in the design and coding process behind this game.  I'm hoping we can release it in eight months so stay tuned.</p> <p><a href="http://www.cortech9.com" target="_blank">http://www.cortech9.com</a></p> Jonashttp://www.blogger.com/profile/01940265205562650662noreply@blogger.com0tag:blogger.com,1999:blog-5840013799158073795.post-85175495016907019692007-12-16T02:42:00.000-07:002007-12-16T02:55:01.557-07:002007-12-16T02:55:01.557-07:00releaseSo we have released Electropy for sale. We are staying a bit quiet about it till we get a few more things kinked out but will start announcements later today (its 2:43 AM). We actually had the game for sale since yesterday but we were testing out the store.<br /><br />I've rewritten the entire scores database so I've got some rewriting of the website to do, I have most of it done but the high scores list isn't displaying the best times for each level yet, you have to go to the level specifically.<br /><br />Things have been going pretty darn crazy around here... either working on the game or working on figuring out how to get a company started, not to mention we are all in school and have finals going on right now. 3 of us have jobs so as you can imagine we are awfully busy! My days consist of waking up, going to work, going to work(at my second job) coming home, doing any school work and then working on Team Phobic stuff until roughly 4AM, then waking up the next morning and repeat. It's pretty hectic but it is pretty fun, I can't wait till we start making some money so I can lower my hours on the jobs and start making games. We already started planning our next project and we got so exciting just talking about it, it is so great to have something we can all be so excited about doing.<br /><br />IGF student finalists are announced tomorrow. I'm so excited, but also worried. If we don't make it then I'm going to be very disappointed. We are a bit worried about the judging criteria they will use. It would be so amazing for us to get to go to GDC, it would be such a huge step for us to take, not that we aren't already racing up the stairs.<br /><br />If anyone out there is interested in writing a review for Electropy we would be more than happy to provide a copy of the game if the site is well established, just e-mail contact@teamphobic.com<br /><br />Other than that, head over to electropy.com and buy the game! :-) we are gonna stay away from the high scores so other people have a chance so nows the time to get the #1 score! I just played through Gosu difficulty with only using 11 continues and I'm very happy with that... this game can get hard but it is oodles of fun.Jonashttp://www.blogger.com/profile/01940265205562650662noreply@blogger.com0tag:blogger.com,1999:blog-5840013799158073795.post-15966444402048072322007-11-18T12:51:00.000-07:002007-11-18T13:00:26.997-07:002007-11-18T13:00:26.997-07:00Busy Busy Busy... and Sick!Okay, so we finished our first release candidate and sent it off to publishers and distributors. Wish us luck!<br /><br />We made the mistake of deleting the beta files off the server, we had the mac one back up pretty quickly but I'm getting the windows one back now.<br /><br />I haven't been able to work on the site as much as I was hoping, unfortunately. I got another job and have been really sick lately so I've had no time whatsoever. I really want to get some forums going so we can see if we can develop any sort of community which is what this game will do well with, I think. Plus it will help a ton once we start selling the game to have a place for support.<br /><br />Can't wait till they release the IGF winners, I think the date is december 18th for student entrants... it's very exciting, I've tried search around google to see which games are getting their name out there and I've seen Electropy a few places. So spread the word, cause we appreciate it! :-DJonashttp://www.blogger.com/profile/01940265205562650662noreply@blogger.com0tag:blogger.com,1999:blog-5840013799158073795.post-2641843451957140272007-11-10T15:38:00.001-07:002007-11-10T15:45:55.220-07:002007-11-10T15:45:55.220-07:00speed improvementsOkay, so the website scores were quite slow. They are faster now! I started storing the high score along with the level so it doesn't have to do a query every time. The only disadvantage of this is it has to compare the high score with the current high score every time you submit. So now I ran through all the Noob and Tutorial levels to test it out. Unfortunately since all the older scores weren't submitted with the new update, they won't be listed(although they are listed in the actual scores for the level). Since I will be clearing the scores eventually, it really isn't a big deal.<br /><br />Well, hope the site works faster for you, it still takes a second or two to load all the levels but it is a lot of data, and there won't be any problem with scaling because it is only dependent on the level count.Jonashttp://www.blogger.com/profile/01940265205562650662noreply@blogger.com0tag:blogger.com,1999:blog-5840013799158073795.post-44199571956383658692007-11-04T23:31:00.000-07:002007-11-04T23:44:00.462-07:002007-11-04T23:44:00.462-07:00One WeekAlrighty... we have one week till we are locking content and building release candidate one. It's a lot of fun, and a lot of work, especialy while working and taking classes. I'm really greatful I get to work with such a great team we have. We got some cool music added to the game with the addition of a new member to our team and it sounds great!<br /><br />The online profiles we got working, its really fun stuff. When we have the next beta out you will be able to log into the game with your teamphobic.net account, as well as create one from inside the game. I think we have a pretty neat authentication system set up and I have it running in some of the background sites you can't really see, but soon you'll be able to log in to Electropy.com.<br /><br />I've been playing some of the IGF games when I have the time. I really liked the booger game, haha, Gesudenheit I think it is called and Mayham Intergalactic was a lot of fun. I'm pretty confident Electropy will be in the top 12, I only wish we had the online profiles in the build we sent to IGF. It needs a lot of internal testing right now just to protect us from 1337 h4x0rs, err, I mean script kiddies with nothing better to do, haha.<br /><br />I had to make a pretty major change to the site. I was pumping all data access through a web service because the database is only accessable from localhost, which makes it very difficult for me to test/develop on so I made this web service. Well, it was good at first, but not secure, and a bit slow for real operations so I took it done and that messed up the account creation. I've fixed the account creation, but I'm angry it took me as long as it did for me to notice. I'm trying really hard to build a robust and scable backend system that we can keep for a long time, it's a great learning process and pretty freaking crazy. I'm a little rushed at times because we need a lot of functionality to have the Electropy Scores and Profiles set up, but now that its there I can expand and tweak up what I've been doing. The website is a lot slower than it should... I'm calling too many external functions and too many SQL queries for the high scores. The most important part was getting it to work.<br /><br />Next I'm going to be working on some FORUMS. We really want EVERYTHING to be built in house by Team Phobic, so having our own forums is no exception. They should be a lot of fun to write, and these will be the third forums I have written, and third time is the charm, right? My whole DB system is WAYYY different than anything I've ever made before, I got a lot of ideas from Microsoft CRM simply because thats what I have to use at work... and it has soooo many problems! I took the ideas and concepts I liked out of what they did and expanded and generalized it to what I wanted to do, and removed the problmes :-D Something I call "Impresario". I'll get around to posting more about how it works later.<br /><br />Well, it's late... thanks for reading, go play some Electropy!Jonashttp://www.blogger.com/profile/01940265205562650662noreply@blogger.com0tag:blogger.com,1999:blog-5840013799158073795.post-6525469309927446662007-10-25T15:43:00.000-06:002007-10-25T15:49:50.154-06:002007-10-25T15:49:50.154-06:00IGF EntrantsSo I just downloaded 48 games from the <a href="http://www.igf.com">IGF</a> student competition. I need to try them out and see how well Electropy compares to them all. There were 125 entrants and they pick the top 12 so we need to be in the top 10%. A lot of the games seem to be mods which worry me a bit, a Half-Life 2 mod is going to have far suppirior graphics to any of the other games, but since the judges are game developers themselves they probably know this. A lot of games were also submited by colleges for game development, ie <a href="http://www.digipen.edu/">DigiPen</a>. They look pretty good, I'm gonna get to playing some of them tonight and I'll post up some reviews. One thing I've notices is that Electropy was the only one I saw with a Mac version... this could be though because some of the site auto detected my OS. We also have a built in editor so we'll see what other games can do there. I think Electropy has a lot of polish, which just takes time and a lot of the dev times for these games don't seem that long... so I think we have a chance at getting some points there.<br /><br />Wish us all luck, and I wish the other students luck as well!Jonashttp://www.blogger.com/profile/01940265205562650662noreply@blogger.com0tag:blogger.com,1999:blog-5840013799158073795.post-61310060834157163002007-10-24T00:31:00.000-06:002007-10-24T00:35:14.802-06:002007-10-24T00:35:14.802-06:00Team Phobic Dev BlogWell I've been busy with school, work and Electropy. Mostly the Electropy Website as well as the backend of teamphobic.net. Its a pretty neat system I am setting up. I'm going to migrate this blog to be my dev blog for teamphobic work. I was going to write my own blog software but the more I think about it it kind of might get confusing writing a blog about the development of the blog I'm writing on. Also, this case if there are any problems with the site one could check this blog and I could let people know what was going on.Jonashttp://www.blogger.com/profile/01940265205562650662noreply@blogger.com0tag:blogger.com,1999:blog-5840013799158073795.post-64906967717016250712007-09-04T21:00:00.000-06:002007-09-04T21:01:39.104-06:002007-09-04T21:01:39.104-06:00ElectropyCheck out <a href="http://darkhelmet.joeuser.com/index.asp?AID=161918">http://darkhelmet.joeuser.com/index.asp?AID=161918</a> for information about the computer game I am working on!Jonashttp://www.blogger.com/profile/01940265205562650662noreply@blogger.com0tag:blogger.com,1999:blog-5840013799158073795.post-14950849183751022007-08-06T16:31:00.000-06:002007-08-06T16:33:13.055-06:002007-08-06T16:33:13.055-06:00Needs threads!<center><a href="http://picasaweb.google.com/jonaswills/Programs/photo#5095718491005913570"><img src="http://lh4.google.com/jonaswills/Rreg-CPMCeI/AAAAAAAAANU/N1pFSGGkACw/s144/needs_threads.jpg" /></a></center><br /><br />This part of my program needs to be threaded... badly! It's kind of bad when you have a machine with 8 cores and you are only maxing out one of them... argh!Jonashttp://www.blogger.com/profile/01940265205562650662noreply@blogger.com0tag:blogger.com,1999:blog-5840013799158073795.post-3699709597741202792007-05-10T13:24:00.000-06:002007-05-10T13:28:27.015-06:002007-05-10T13:28:27.015-06:00Itanium serverSo we got a really nice Itanium server donated from HP. I have access to 8 CPU cores and 32GB of memory so it's great for running the process I'm currently setting up. My boss wanted me to write a little info about what I'm using it for and I thought I might as well post it here.<br /><br /><blockquote>Our nightly process is being developed on the Itanium server. To work with our environment I installed the IA64 .NET runtime with the IA64 remote debugger. Compiled applications can run without modification on the server with no work, but I have written code designed to utilize the extended resources of the server.<br /><br />With access to 8 of the 16 cores available I tried writing the program to break into threads. The process’ goal can be divided into two sections. The first is to download student records from the school’s Oracle database(Aries), compare them to a copy of yesterday’s data to find which records are new, updated or deleted, then submit changes to our CRM system. Part two is pulling the data out of CRM which is now the merged between updates from Aries and updates made inside of CRM. Once the data is pulled out it is sent to various other systems: Account Creation, WebCT, Print Balance Manager, ect.<br /><br />With roughly 800,000 student records I was originally going to process the records one at a time, but with the multiple cores I break the 800,000 records into chunks and process each chunk in an individual thread. I have different parameters for the number of records per chunk and the number of chunks processed at a time. The biggest help here is access to all the memory. A copy of the entire Aries database was just over 5 GB on the file system, but we don’t need to load it all. I load about 1 GB of data into memory. When this is broken into chunks at the end of the process the chunk data is serialized and saved to the file system so it can be compared to the next day’s data. The chunks are indexed by their associated CSU ID so the next day when a record is being processed it caches the previous day’s chunk in memory. For a time, essentially two times the memory is loaded if all chunks were being processed at that time, which they are because the server can easily accommodate this.<br />Compared to the server I was developing the process on previously with 2 CPU cores and 3 GB of memory the speed of the program has increased tremendously. <br /></blockquote><br /><br />I'm not sure if my methods are the greatest but I sure am learning a lot as I go through this! In fact, this is why I named the blog empirical programming... because in all honesty I can get things done, but I have no idea if it is the right or wrong way.Jonashttp://www.blogger.com/profile/01940265205562650662noreply@blogger.com0tag:blogger.com,1999:blog-5840013799158073795.post-32723620004781261222007-05-10T11:02:00.000-06:002007-05-10T11:13:50.329-06:002007-05-10T11:13:50.329-06:00OpenGL in .NET?Well, I've been wondering about the possability for awhile on this. I've been using C# .NET day to day for about a year now but havn't considerd it as robust of a language of C++, but lately my thougts have been changing and I decided to try out writing some OpenGL in it again.<br /><br /><p align="center"><a href="http://picasaweb.google.com/jonaswills/3DDemos/photo#5062965410640739170"><img src="http://lh3.google.com/image/jonaswills/RkNEN1tUu2I/AAAAAAAAACA/GIa-E79xId4/s144/sdl_dotnot_sample.jpg" /></a></p><br />I wrote the above program using the Tao framework: http://www.taoframework.com/<br />Everything came together pretty easily and I was using the beta of the new Visual Studio, Orcas. For a LONG time before I started working here at the College of Business I didn't think much of Microsoft and Visual Studio, but after working with it I really like the development enviroment, and some of the things in Orcas are really fun to play with.<br /><br />I'm still a fan of Linux and open source programming. Java is a great language with its cross platform virtual machine. I've always used Eclipse do develop java but compared to Visual Studio the features are definitaly lacking.<br /><br />So, it might seem like I'm trying to make a point here but in the end I'm really not. It all comes down to prefrence, and usualy the descision isn't yours to make, but your employers.<br /><br />My goal is to be able to pick up any development enviroment/language and come out with the same results reguardless of the restrictions. It really isn't that hard to adapt.Jonashttp://www.blogger.com/profile/01940265205562650662noreply@blogger.com0tag:blogger.com,1999:blog-5840013799158073795.post-36118067156726800992007-05-10T10:47:00.000-06:002007-05-10T10:59:10.682-06:002007-05-10T10:59:10.682-06:00The StartMy profile:<br /><br />1995: Started making websites in fourth grade.<br />1997: Started learning scripting via cgi<br />1998: Started learning programming via C++<br />1999: Started contributing to various online communitues by making websites and game content(mods).<br />2000: First programming class in highschool, Pascal<br />2002: Second programming class in highschool, C++<br />2003: AP Java class in highschool.<br />2004: Graduated highschool, started Colorado State University.<br />2005-2006: Internship at Colorado Research Associates programing an atmospheric model in FORTRAN<br />2005-Present: Working at CSU College of Business as application developer. Roles include making websites in ASP.NET, administrating 4,000 user accounts/semester on Windows domain controller. Writing support applications for IT department in C# .NET. Processing student records from campus Oracle database and loading it into COB systems(MySQL, CRM).Jonashttp://www.blogger.com/profile/01940265205562650662noreply@blogger.com0