Friday, December 12, 2008
Sunday, September 28, 2008
Tuesday, September 9, 2008
Monday, September 1, 2008
Sunday, August 31, 2008
Tuesday, July 29, 2008
So to take a break from all my Delphi stuff, I figure I'll post about where I've spent most of my career, which is in healthcare. The majority of my experience comes in working with the VA's EHR, named VistA. VistA by the way, was created at least a decade before Microsoft Vista. Recently, I've become more interested in CHCS and AHTLA, which is part of the DoD EHR system. Interestingly, it seems that MHS (Military Health Systems) is turning to new web based technologies to gather feedback from their users. I'm glad to see some of the MHS leaders taking advantage of social technologies.
Wednesday, July 23, 2008
Sunday, July 20, 2008
Friday, July 18, 2008
So I've been defeated by COM and WMI. To me, what's missing in the Delphi world are comprehensive tutorials and documentation like you can find with MSDN and Sun (for Java). What I ended up trying to do was look at existing code that uses WMI in Delphi, and attempt to reverse engineer it. I have a reasonable understanding of the objects and techniques used in the sample code, but when I got stuck, I had no idea what was causing the problem. Unfortunately, the time ran out for the competition before I could make anymore headway.
Sunday, July 13, 2008
Saturday, July 12, 2008
Friday, July 11, 2008
- Use my google-fu to do some research
- Get a proof of concept working
- Design the actual application
- Testing and refinement
So my rantings on Delphi and RAD Studio sort of spawned a programming/IDE competition hosted here. I got an invite to compete, and I figure... why not? The worst that could happen is I become better at RAD Studio and Delphi, which is a good thing. I'm sure the critics that I have would love to tear apart my code, and I'm going to give them that chance!
Thursday, July 10, 2008
- I can compile
- When I step through my code with the debugger, I get to the appropriate constructor
- I get a runtime error in the constructor
- This runtime error is fixed by prefacing the unit in front of my constructor call in my procedure.
Tuesday, July 8, 2008
Sunday, July 6, 2008
- Delphi has no foreach control statement.
- Delphi arrays are primitive datatypes (like C, or you can call it a pointer with offsets, just like C, whatever floats your boat). So if you want to search an array, you have to write the code to do it yourself. There's no array object types, so there's no myArray.Find(value). I imagine there's redundant array searching code in pretty much every Delphi app out there (unless you rolled your own API into a .dll and bring it with you to different projects).
- If I pass a dynamic array into a function, Delphi assumes that it is a static array when in the function.
- Why doesn't ShowMessage automatically convert numerics to strings with an overloaded "+" operator? Oh it can, you say.... if I overload "+" myself... great.
- CodeGear RAD does not understand nested block comments. It takes the first end block comment, and applies that to the first start block comment. Nested block comments should function like nested parenthesis.
- Delphi has no automatic set/get declarations for accessing data inside a class. Not a big deal, but I thought it was nifty when C# added special syntax just for this.
Friday, July 4, 2008
Thursday, June 26, 2008
Wednesday, June 25, 2008
Wow, I really seem to have struck a nerve eh? It doesn't really bother me if people read or don't read my blog. As some of the commenters have said, I have zero comments on anything, which is perfectly fine with me. On the flipside of this, this is the first time I have ever commented on anyone else's blog. *shrug* first time for everything I guess.
To those who have at least attempted to educate me, I thank you. I'll read the links you sent, hopefully that will mitigate some of my annoyances with Delphi.
To those who just called my post crap.... if expressing your e-rage helps you, do whatever you feel you need to do.
While it doesn't bother me if no one reads my blog, I *did* post it online where anyone can read it, so fair is fair, anyone should be able to comment on it. I originally had moderate comments on and I didn't get to them quickly - my apologies. If your comment isn't up there, that means I missed it, comment again and I'll catch it this time.
While I now understand that some of my post isn't true (from reading the comments), I stand by my assertion that Delphi is annoying. However, I will at least attempt to learn otherwise.
So my 4th point and my 5th point may be erroneous, but that still leaves many things to be annoyed about. And to the dude who said I was an MS fanboy, haha if you read one more post down you'd see that I'm a newly minted Apple fanboy. In any case, I don't mean to be abrasive, if that's the way it sounded.
- When you select a block of text, hitting the tab key actually replaces the text with a tab char INSTEAD of moving the selection one indentation level over. I mean come on. Visual Studio does it, I'm sure Eclipse does it, even Microsoft Word does it. Get with the times.
- Weird bug where RAD will crash. Upon restart, all of the frames that make up the MDI interface of RAD are all undocked and floating freely. Not a major thing, but annoying nonetheless.
- If you launch your application from within RAD, it must be managed within RAD. If you use the Windows Task Manager to change your applications status because let's say.... your app is stuck in an infinite loop and you need to close it down, RAD will crash.
- You have to pay 3rd parties for extra widgets. That makes absolutely no sense to me. Visual Studio and the Windows API provide me all the widgets I could want. I know that Delphi has access to all of the Windows API, but for some reason, Delphi developers like to make their own widgets and sell them to each other.
- There is no free version of CodeGear RAD. Visual Studio has several excellent free versions, and Eclipse is absolutely free as in beer. I would think that providing a free entry level IDE would be a good way to get new developers using Delphi, and would be a segue into purchasing a license for a higher version of RAD. But what do I know....
- You can only write Delphi code using RAD, which costs money to own. There is absolutely no way to write Delphi code for free. There are properties and objects that are COMPLETELY HIDDEN from the developer, and the only way to access them is through RAD's wysiwyg editor. Wait a minute you say... doesn't Visual Studio do the same thing? No. Anything you can do in Visual Studio's wysiwyg editor, you can do in code. As a matter of fact, ANYTHING that Visual Studio can do, you can do in code, which is what you expect from any language and platform. If you were so inclined, you could grab a free C# .NET compiler and use notepad to write code just fine. This is impossible in the Delphi world, you must purchase an expensive piece of software to write "Hello World".
Saturday, June 14, 2008
Tuesday, June 10, 2008
Parallels: It's a toss up between Parellels and VMWare, both are good. I can run my bootcamp partition as a virtual machine from within OSX, which is nifty, and Coherence mode tries to make it appear that the Windows apps are running natively in OSX.
Google Notifier: I use gmail and google calendar to organize my life. I figure iCal and Mail.app have gotta be slick, but I can't think of a reason to force myself to use either. iCal+Mail has a smart text functionality, where it can parse your emails for contact info, dates, etc., and makes those actionable items. However, I can send an sms to my gmail account, and I can sms a new entry to my google calendar, which is extremely nifty. Perhaps with Apple's new mobileme service they might be comparable to Google Apps, but seeing as Google Apps is free..... I dunno. Google Apps still wins with me.
NTFS-3G: I WOULD be using this every day if I could get it to work properly. I'm not a *nix noob, I'm perfectly fine with manually mounting and unmounting volumes, but I think having my NTFS formatted drive mounted while I installed ntfs-3g is causing me to have problems. So it's either reinstall ntfs-3g, or reformat my external drive.
Friday, May 9, 2008
MS Office 2008 - yes yes yes, I know. As a converted macdude, I'm supposed to hate everything made by M$ (or whatever the cool kids call em nowadays). Word and Excel still can't be beat. And I still hold Visual Studio for .NET as a shining example of what a modern IDE should be.
iWork - I haven't found a need for Keynote yet, but I do use Pages on occasion. Pages isn't as full featured as Word is, but it is much much easier to write a pretty document in Pages. Case in point: I made my newest resume using Pages, and exported it into a *.doc.
Eclipse - Not as good as Visual Studio, but getting closer.
Terminal - OSX's terminal does all the good things that terminal apps other *nix os's do, tabbed sessions, etc. Not to mention all my familiar *nix commands which I can run. Indeed, I manage all the application servers at the office from Terminal.
Safari - not as good as firefox, but I need my Multitouch, which only works on Cocoa apps. No firefox extensions makes me a sad panda.
Omnigraffle - WOW. Just as full featured as Visio, and extremely well put together. I use Omnigraffle for mind mapping, especially when I have to learn new things.
Omnifocus - double WOW. I've read all about the GTD (Getting Things Done) fad, I thought it was just for people who don't know how to use post-it notes or a text editor. While I don't have to eat my words again.... I may have to nibble them.... just a little.
iTunes - Meh. I liked using Media Center in Vista better. Media Center's "album view" is just as pretty as Cover Flow, and lets me see more albums at once.
VLC - Oh yeah!
TrueCrypt - This app is a must. Seriously. The entire world should be using this.
Wednesday, April 23, 2008
Our idea was to use the GPS functionality built into Android to allow phones to sense and track proximity to each other. The analogy we used in development was an infection spreading through a population. Not the most user friendly analogy, so the one we submitted under was a smile passed from person to person =). We have a webservice which accepts updates from any device running our Android Connect application, which will then track location, and infection. One of the portions that I'm working on at the moment is building an emulator to simulate a bunch of Android Connect devices roaming around downtown Honolulu. That way when a new user joins up and gives their GPS updates, if they're in downtown Honolulu, they can see their infection spread across the simulated devices in real time.
If you want to check out our Android Connect project, you please visit this website: Android Connect
Tuesday, April 1, 2008
* Cost - There is no doubt that buying high end Apple hardware has a high sticker shock. The only way I could justify it to myself is that as a computer professional with delusions of grandeur and an overinflated sense of self worth, I deserve a high end machine =P
* Weight - The MacBook Pro is a heavy laptop. But that's ok, I think of myself as physically stronger than your average geek.
* Crappy Driver support for Win XP - For such a powerful machine with dual boot capability, Apple has some Win XP graphics drivers that are far behind the times. I mean, why can't they roll Nvidia's latest drivers into their bootcamp driver package?
* OSX Quirks - Yes yes yes, OSX is pretty cool, but it does have some annoyances. Luckily all of the ones that have bothered me so far are solved with some nifty 3rd party addons.
* Build Quality - This laptop is the most well constructed laptop that I have sampled, and while I didn't take the time to look at any Asus or Acer laptops, the MacBook Pro clearly *feels* better constructed than a Dell XPS or Latitude, or Sony Vaio.
* Keyboard - This is the best laptop that I have typed on yet. Keyboards are like mice, every person has their preferences. For me, the keys feel solid, with just the right amount of *springiness* and response. Typing is crisp.
* Looks - There is no doubt that when considered from all angles, the MacBook Pro is better looking than all other laptops in its price range. Lately, I've been more into minimalist designs in the things I buy, and Apple's current designs tickle me.
* High End Components - 2.6ghz proc with 6mb cache, 2gb ram (soon to be 4gb), 250gb hd, 802.11n, 512mb graphics card, LED screen.
* OSX - I consider OSX to be a selling point. To me, it feels that OSX took the GUI usability of Windows XP, included functionality from the *nix world (like multiple desktops), and added a heaping spoonful of eye candy. So far, it's seemed well put together.
* Nifty Things - Little things that make me go "hey, that's pretty cool". Examples are the magnet power connector, the backlit keyboard, the autodimming screen, the good keyboard, etc.
* Multitouch - I so thought that multitouch was just a gimmick. When I added a 3rd party addon called Multiclutch, it put multitouch firmly in the category of a must have. I know that Firefox has addons that do gestures, but you still need to click and drag. Multitouch is faster. Now only if firefox can have the appropriate Cocoa "hooks" so that I can have my multitouch AND firefox extensions, I will be in web browsing nirvana. Seriously, I only use safari because I can extend the multitouch functionality with the multiclutch addon.
Then came a lan party. I haven't been to one of those things in years, and indeed it had been about 2 years since I had played a pc game. Holy crap I forgot how much fun gaming is! So since my trusty gateway had only integrated graphics, I decided I needed an even better newer laptop. I began looking around at the flagship laptops from Apple, Dell, Lenovo and Sony. Do you know what the interesting thing is? When you spec out a Sony, Dell, or Lenovo to equivalent specs of a MacBook pro, they end up being about the same price! With that in mind, and the fact that you can use bootcamp to dual boot WinXP/Vista with OSX, I figure... why not. So I splurged and bought the high end 15" MacBook Pro.
I've had my MacBook pro for about a week now, and I can honestly say that it is tied with my first homebuilt pc as the finest piece of computing hardware that I have ever owned. It is totally worth the money that you pay.
Monday, March 10, 2008
The different frameworks that I've looked at were Ruby on Rails, PHP, and JSP. I decided on JSP/struts, since it seems to have built some momentum among my peers from UHM (I read your blogs once in awhile, even if ya'll don't remember me), and I figure if it's good enough for them, I should at least give it a shot.
So far, this is what I've accomplished:
* Installed jre and jdk se on my ubuntu server dev box
* Installed ant and tomcat
* Got a sample webapp from tomcat.apache.org running (Hello World!)
My next steps are to write my own simple webapps as a stepping stone to my overall goal, which is still a secret!
The last time I wrote a webapp was waaaay back in the .NET 1.0 days. Web technology has progressed since then, I have a lot of catching up to do.
Sunday, March 9, 2008
The Shogun: This stereotype leads from behind the scenes, as if playing a game of chess. This is good in that running a moderate to large organization is a nightmare of taskings to keep track of, contracts to manage, fires to put out, and work to chase, so secluding yourself in a castle and letting your sargeants handle the day to day issues allows you time to be a forward thinker. However, this is bad in that your soldiers are not loyal to you, since they never see the shogun. Instead, they are loyal to the sargeants who have lead them through the trenches. Paying your soldiers well helps, but ultimately human beings are social animals, and by removing yourself from the social circle, you are removing yourself from one of the most effective ways to command loyalty.
Alexander the Great: This stereotype leads from the front lines, and is often times the first into battle. Alexander the Great fought where his soldiers fought, slept in the dirt, and ate what his soldiers ate. His soldiers followed him to the end of the known world, and together they created one of the greatest empires in human history. This is good in that your soldiers love you, and will stick with you in thick and thin, through good pay and bad, crap work and good work. Being an Alexander the Great is bad in that you are just one person, and there are only 24 hours in a day. By spending so much time in the trenches, there is a tendency to neglect the day to day running of your organization, and often your next in commands have to pick up the pieces left in your wake. So while your soldiers love you, your generals may resent you for shunting so much work onto their shoulders.
These are my thoughts so far. And if any of my current or former managers happens to read this, my comments are not about any one person in particular. Rather, this is a combination of all the managers I have known in my life, and indeed I included what I think I would be like as a manager. For the record, I think I would be more of an Alexander the Great (obviously you can tell that my comments above are biased towards Alexander =P).
Wednesday, February 27, 2008
As a static file storage system, Mumps alone is inequitable to SQL Server, or other DBMS's, since Mumps only stores data in B-trees. Note that in the extreme back end of SQL Server, data is also stored in B-trees, but that level is never displayed to the developer. Instead, you interact with your B-tree data by using SQL the language. VistA solves this by using Fileman, which in itself is a combination DBMS, Display API, Database API, and various programmer level utilities. So rather, a better comparison would be the disk IO speed of Java vs Mumps globals, or the query speed of SQL Server vs Fileman. As a side note, Fidelity just released a beta version of PIP, which is their own relational engine, available on sourceforge. I'm really excited to try it out!
Mumps is also not directly equatable to Java, or C. Since Mumps is also a runtime environment and set of database utilities in addition to a programming language, it's better to compare Mumps to Java and JVM, or C# and .NET, or C# and WINE.
We were running some numbers at work on a virtual machine running Ubuntu 7.1, and in a nutshell, GT.M is slower than Java and C for number crunching, but GT.M has a higher level of inherent number accuracy. The Java and C implementations were having number overflows when they used a datatype that was too small to handle the large integers we were computing. Note that this did not throw a runtime error, and the results looked real enough until they were compared to a sample set. GT.M did not have this problem, and got the correct answers from the beginning.
When compared to disk IO, I have not had a chance to compare mumps global speed vs Java or C disk IO, but in GT.M I can update 4,000,000 subnodes in 17 seconds. That is blazingly fast, but again, I have nothing to compare it against.
When compared as a database, SQL Server far outperforms Fileman. The general rule of thumb is that SQL Server is faster than Fileman by a magnitude of 4 to 1. I know that many people always say how "SQL Server and Oracle are slower than Fileman", but that is simply not true. My coworkers and I have used the exact same server with the same problem set, implemented in both Fileman and SQL Server, and run the same query to receive the same dataset. SQL Server outperforms Fileman, bar none.
In Fileman's defense, it is more than just a DBMS, it handles user IO, and has it's own programming API (date/time utilities, etc.).
Our next step will be to have a complete problem which requires a large database query, and number crunching as a cohesive unit. Perhaps then the Mumps model of tight integration will see an advantage as you can directly manipulate globals and Fileman from your code, whereas C or Java has to interact with SQL Server through ADO or ODBC.
I know I haven't posted numbers yet, but we have more testing that we'd like to do. I don't want to have anything indexed by google until I have a complete set of numbers to post at once in a coherent manner.
Seriously, between Google Apps, Google the search engine, Blogger, etc., Google is taking over the world. I think Google is going to be Skynet.
Please don't kill me Skynet...... or at least save me for last!
Lately, I've been thinking about where I'm going to host this site. My choices are, host it from home, or host it on a webhost. Here are the pros and cons as far as I can tell.
24 x 7 uptime
Someone to bitch at if things go wrong
Tech support may be less competent than me
Storage and bandwidth caps
Hassle to move large amounts of data around
I own the server, thus I am root and can do whatever I want
Easy to plug and play new server components, or extend drive space, etc.
Monthly costs are actually comparable to paying for a Virtual Private Server at a hosting company. Electricity and hardware costs factored in, it will cost me roughly $35 a month.
I am responsible for my own tech support
More costly upfront, though most cheap-low power servers can be built for $200-$250
If I cap out my home bandwidth, that would suck.
Right now, I'm leaning towards a home server. It would be more fun anyway, and depending on how long the hardware lasts, it might be cheaper. In any case, I have some things to take care of, so this site probably won't be hosted anywhere in the near future.