Viagra online
XANAXadderall onlineLevitraPuppies for sale

Archive for the ‘Software Development’ Category

Deploying XAudio2 With InnoSetup

Monday, February 1st, 2010

Zeta Centauri’s latest application, SampliTron, uses XAudio2, which is the new audio portion of Microsoft’s DirectX.  Bundling all of DirectX with an installer is overkill for applications that don’t need all of it – for instance, apps that only use the audio portion.  Since SampliTron is a fairly large download due to all of the bundled .WAV files, I wanted to keep from inflating the installer much.

Microsoft has an article on MSDN, “DirectX Installation for Game Developers”.  That gives an overview of performing a minimal install by bundling only the items you need to distribute.  After a bit of experimentation with InnoSetup I came up with a process that works well.

First thing, I figured out what files I wanted to include.  These are:

DSETUP.dll
dsetup32.dll
DXSETUP.exe
dxupdate.cab
Aug2009_XAudio_x86.cab

These files add up to 2.5 megabytes, a far cry from the full DirectX installation, which is over 100MB.  To deploy these in an InnoSetup project, I added the following lines to my InnoSetup script:

[Files]
Source: “F:\src\zc\SampliTron\Release\DirectX\DXSETUP.exe”; DestDir: “{app}”; Flags: ignoreversion deleteafterinstall
Source: “F:\src\zc\SampliTron\Release\DirectX\DSETUP.dll”; DestDir: “{app}”; Flags: ignoreversion deleteafterinstall
Source: “F:\src\zc\SampliTron\Release\DirectX\dsetup32.dll”; DestDir: “{app}”; Flags: ignoreversion deleteafterinstall
Source: “F:\src\zc\SampliTron\Release\DirectX\dxupdate.cab”; DestDir: “{app}”; Flags: ignoreversion deleteafterinstall
Source: “F:\src\zc\SampliTron\Release\DirectX\Aug2009_XAudio_x86.cab”; DestDir: “{app}”; Flags: ignoreversion deleteafterinstall
[Run]
Filename: “{app}\DXSETUP.exe”; Parameters: “/SILENT”; WorkingDir: “{app}”;  StatusMsg: “Installing DirectX XAudio2 Redistributable…”; Flags: waituntilterminated

The “deleteafterinstall” means that InnoSetup will remove the files after setup completes.  In the [Run] section, the DXSETUP.exe is before the “LaunchProgram” entry to be sure that it is installed before the user can launch the program.  This method can be used to include any other portions of DirectX you want — it only installs the pieces it finds .cab files for.

New Year, New OS

Saturday, January 30th, 2010

I’ve always had a thing for multiplatform development.  Most of the Windows code I write can run on Linux with no or very few modifications, thanks in no small part to the wxWidgets GUI toolkit.  I started using it because it brought internal consistency to the Windows API.  I Think of it as what MFC would be if it were designed by a sane person.

I recently added a Macbook with Snow Leopard to the development mix and have been getting used to writing code for (and more importantly, porting code to) MacOS.  Every operating system has its development annoyances, and OSX is no exception.  I haven’t decided which applications are going to be ported to the new (to me) OS yet, but I’m sure a few will make it.

Building FLAC On Windows Isn’t Easy

Friday, December 4th, 2009

FLAC, the Free Lossless Audio Codec, is more popular on *NIX-based operating systems than it is on Windows.  This shows in their source code package.

I had to solve two problems in order to build FLAC on windows.

1:  The projects try to link to a library called “ogg_static.lib”.  The library builds as “libogg_static.lib”, so I had to change the project to add the “lib” prefix.

2: The project tries to compile the main libraries with a file called “nasmw.exe”.  I did not have this file and had to do some research to figure out what the heck it was.  Turns out it was the Netwide Assembler, which can be found HERE.  I downloaded version 2.07 and after installing did not see a nasmw.exe. It seems that the executable is now called nasm.exe, so I dropped a copy renamed to “nasmw.exe” into C:\Windows\System32 and was able to build the main libraries. It did the trick.

Just some things to watch out for if you’re planning on using the FLAC libraries with Windows.

More Than 60 Applications Written

Wednesday, November 25th, 2009

I sat down and made a list of the software applications I’ve written or taken part in the release of. I’m listing complete rewrites of the same software as different items, but each item may have multiple minor version release (especially Life|ware, which I worked on for 2 years). The total is over 60.

The Apps I’ve Written (or Updated)

1. C64 Arena Combat
2. Illustrium Arcana MUD
3. Basternae 2 MUD
4. Basternae 3 MUD
5. The MUD Screen Editor
6. The Basternae Editor
7. The Basternae Help Editor
8. The Basternae Client
9. Digital Radio 2
10. HLA Gateway
11. Bad Monkey Do Not Push This Button
12. TextRPG
13. Mini Calendar
14. Magma MUD Codebase
15. ClickStars
16. GLTriangles
17. DikuEdit (Basternae Version)
18. Life|ware 2
19. Life|ware 3
20. Hex String Visualizer
21. PixelSwapper
22. AlgoRhythmia 1 and 2.
23. AlgoRhythmia 3 (Rewrite).
24. CheckBeat
25. SampleTrigger
26. LineMerge
27. SpaceTheremin
28. ZC Trigram Generator
29. Proxima Controller
30. Bass Tuner
31. Guitar Tuner
32. Vorbital Player
33. MidiPlayer
34. Zeta Telnet
35. Zeta Minibrowser
36. Quick Tile Viewer
37. RoboBlather
38. Champion Stock Chart Viewer
39. Zetatag Auto-Renamer
40. SV2
41. I-Collect-It.com
42. Got-It-Done.com
43. Newline Removal Utility
44. Software Listing PHP Module
45. Galaxy Xangis
46. Sample Rate and BPM Calculator
47. Drumming Dummy
48. Arcaen Dice
49. Arcaen Battle Simulator
50. Random Name Generator
51. CrawlMapper Sitemap Generator
52. Python FTP Autopatcher
53. Situational Awareness Toolkit
54. EI Power Usage Meter
55. Torsion-Knudsen Apparatus Data Acquisition
56. SampleSplitter
57. wxDuris
58. D & D Character Generator
59. Emitter-Collector
60. wxSpectrum
61. Stock Data Importer
62. Eve Online Character Viewer
63. DTED Viewer

ASP: The Association of Shareware Professionals

Saturday, November 21st, 2009

The name sounds a little archaic in this day and age, even though the “shareware” industry is just as alive as ever. It’s just that they don’t use that term much anymore. Even so, I’ve been meaning to join up for a while because there are some things that are easier to figure out when you have a peer network. A prime example would be choosing a secure content delivery system.

The dues of $100 per year is in that “neither large nor small” category, so it’s not a big risk. I signed Zeta Centauri up this month and have been reading the parts of the huge archive of newsgroup posts that are relevant to my business. There’s a lot to digest, but I feel smarter already. I don’t think it’ll be that hard to extract $100 of value from a membership in the ASP.

Trying Out Assembla

Thursday, November 12th, 2009

As a software developer, I have to use a version control system to keep my source code safe.  Subversion is my repository of choice, but I’ve had pretty bad luck with hard drive failures, having had two die already.  There’s been no data loss, but it is still pretty annoying.

That’s why I signed up for a trial of Assembla.  So far it’s pretty useful because they offer Subversion hosting with an integrated Trac project management system.  I’ve wanted to try Trac for a while, and I like it quite a bit now that I’ve gotten into it.  It’s simple but very useful, and most importantly it helps prioritize and manage tasks, bugs, and enhancements without getting in the way.

I’m sure I’ll stick with Assembla.  The price is good and the service is great, and it’s already increased my productivity as a developer.

Got-It-Done Out Of Beta (And Free!)

Thursday, September 3rd, 2009

My task and to-do list management website, Got-It-Done.com, came out of beta today.  It also became 100% free.  Initially I had planned to have both free and paid versions, but it’s the sort of thing that should probably just be free.  So, instead of limiting non-premium accounts to 2 lists of 25 items each, anyone can create any number of lists with any number of items now.

I created the site because I needed a way to keep track of my “todo list” and made it multi-user in case other people would find it useful.  It seems that a solid handful of people do, but it’s not really much of a commercial venture considering the proliferation of task management websites out there. Still, it’s the one *I* fine most useful of all, so others might too.

If you’ve got stuff to do, but it’s too much to keep track of easily, sign up on Got-It-Done.com.  It may just make your life easier.

Of course, the option is still out there to generate a little revenue by creating mobile-phone-based adaptations of the site.  That may just have to happen when Sprint finally releases their first Android phone next month.

Building a Massive Data-Driven Website

Wednesday, September 2nd, 2009

For the past couple months I’ve been working on a new website, I-Collect-It.com, which will be a reference and community for collectors of various collectibles, such as stamps, sports cards, coins, bank notes, stock certificates, and other ephemera.

Unlike most of my other sites, which have been just a few static pages or a Drupal install with some modifications, I-Collect-It is a custom-coded site written from “scratch” using the Django web framework. I learned a lot about Django while building Got-It-Done.com. I didn’t learn all there was to know, but I gained a foundation solid enough to start building something on a much larger scale.

So far, there are more than 2000 images totaling about 1.9 gigabytes. Ultimately the site may grow to 100 times that, or more, so it’s important to have a solid design for the database and filesystem. I spent a lot of time sketching out how I wanted data management to work for the site, and I feel like I have something pretty solid and scalable to work from.

Since there is a massive amount of data that needs to be added and a pretty sizeable codebase that needs to be written, it will be a long process to get the site fully built and launched, but for now one can at least browse some of the items that will be shown on the site.

There’s not much CSS or layout yet since I’ve been so focused on the data portion of the site (in other words, it ain’t pretty), but it should give you an idea of what I’ve been working on.

New Beta Site: Got-It-Done.com

Saturday, June 20th, 2009

The first “web 2.0″ site I have built from scratch, Got-It-Done.com, has just gone into public beta today.  It is a web-based task and to-do list management application with the ability to set up email reminders.  It’s free to use for 2 lists with up to 25 tasks per list — plenty of room to keep track of the things you need to do.  It’s quick and easy to use, so give it a try.  It may just help you get things done.

It was written using the Django web framework and the jQuery Javascript framework.

Javascript Frameworks: Dojo or jQuery?

Sunday, June 14th, 2009

Anyone who has spent more than five minutes writing JavaScript knows that dealing with cross-browser issues is far more trouble than it’s worth.

It’s also really not a good idea to roll your own widgets for common things such as date pickers, tabs, and other UI elements.

That’s why JavaScript frameworks exist — they exist to solve the same problems every web developer must face.  If there wasn’t a need for them there wouldn’t be more than a dozen: Dojo, Echo3, ExtJS, Google Web Toolkit, jQuery, Midori, MochiKit, MooTools, Prototype, Pyjamas, Qooxdoo, Rialto, Rico, script.aculo.us, SweetDEV, YUI, and ZK.

These frameworks have varying levels of maturity and popularity.  I like to judge them by the number of books have been written.  A good rule of thumb is that a technology is mature if it’s been around long enough to have a how-to book published.  For the other thumb, you can judge a technology’s popularity by the quantity of books that have been published.

By this standard, it looks like Dojo (7 books), ExtJS (3 books), Google Web Toolkit (10 books), jQuery (9 books), MooTools (2 books), Prototype + script.aculo.us (4 books), YUI (1 book), and ZK (2 books) are all mature.  Since Dojo and jQuery are among the most popular, I decided to try using both and sticking with whichever works better.

It turns out that Dojo and jQuery have a very similar set of capabilities.  The ones I were most interested in were tabs, streamlining of AJAX calls, a slider, and a date picker.

After spending a bit with the docs, all of those tools were easy to implement in both frameworks.  I liked the way Dojo used attributes on page elements (dojoType=”dijit.form.HorizontalSlider”) more than the way jQuery creates elements (in the document.Ready() function).  It turns out that jQuery’s method results in smoother page rendering.

After I finished figuring out how to use each of them, I compared the rendered pages in a few browsers.  Dojo’s tab control doesn’t quite work right with IE, which makes it a deal-breaker.  jQuery’s the winner, at least for my future projects.