Thursday, July 26, 2012

Make the Apple Magic Trackpad Ergonomic

I've been using the Apple Magic Trackpad and found that it is not terribly ergonomic because it slants up to match the keyboard angle which forces the wrist to slant upwards. The Magic Trackpad can be made much more ergonomic by simply turning it around (I got my directions from here). In order to turn it around the coordinate system must be reoriented. To do that, type this into the terminal:

defaults write com.apple.trackpad.orientation TrackpadOrientationMode 1

sudo defaults write com.apple.MultitouchSupport ForceAutoOrientation YES
NOTE: Both commands might not be required but I couldn't get it to work otherwise on Lion or Mountain Lion. Then disconnect the Magic Trackpad, shut it off, reboot the Mac, reorient the Magic Trackpad and until the system is booted. Then turn on the Magic Trackpad and rest 5 finger tips spread out (like you are playing piano) on the Magic Trackpad and move them away from you. Viola! I have also found the settings tap-to-click and 3-finger drag to be useful and can be enabled in the trackpad control panel. To Remove the settings type:
defaults remove com.apple.trackpad.orientation TrackpadOrientationMode
sudo defaults write com.apple.MultitouchSupport ForceAutoOrientation NO

Monday, June 25, 2012

Virtual Box VM to VMWare

I prefer either Parallels or VMWare over Virtual Box. Virtual Box is free though. But at 50 bucks, video acceleration is nice to have when working with graphics. So here are steps that work as of today to convert a Virtual Box VM to a VMWare VM. These steps are out there on the interwebs and they aren't difficult but I didn't find them in one place so hopefully this will help someone.


1. From Virtual Box select your VM and choose File | Export Appliance...
2. Download and install VMWare OVF Tool from http://www.vmware.com/support/developer/ovf/
3. Run the OVF Tool on you .ova file (I'm on a Mac):

"/Applications/VMware OVF Tool/ovftool" --lax image.ova /Users/[username]/Downloads
NOTE: Use the --lax option to get past some errors that will stop the conversion in their tracks. 4. Drag and drop into VMWare and before you do anything increase the available RAM and processor to at least 2 if you can. Otherwise the Vm will be super sluggish. 5. Run in VMWare!

Monday, June 18, 2012

JavaFX Native Packaging

One of the benefits of native programming languages has been fairly easy deployment and bundling. In many cases static libraries one single EXE. Programming languages that depend on a run-time such as C#, Java, Python, Perl, etc, all require that run-time to be pre installed and the total size (Application + run-time) is typically larger than a native application. Well, I think much of that is over with JDK 7u6 currently in beta. Rich client JavaFX applications can bundle the JRE and your application and provide a very easy installation. So easy in fact it's silly. I love making complicated things super easy! Check out this blog post by one of my colleagues for all the nitty gritty details: https://blogs.oracle.com/talkingjavadeployment/entry/native_packaging_for_javafx

Monday, May 14, 2012

JDK 7 Beans.setDesignTime/Beans.isDesignTime

JDK 7 introduces a change to Beans.setDesignTime(bool value) and Beans.isDesignTime() where the design-time state instead of application global is now a thread group local variable. It's so multiple frameworks can be used simultaneously and they can be either design-time or run-time as needed. Basically it is an IDE requirement. Needless to say this change is a bit unorthodox with a bizarre side effect and most will want to bring back the old behavior. The simplest way of doing this is to iterate over each thread group and set the design-time state.

  Runnable runnable = new Runnable()
  {
    public void run()
    {
      Beans.setDesignTime(true);
    }
  };

  ThreadGroup root = Thread.currentThread().getThreadGroup();
 
  while (root.getParent() != null)
    root = root.getParent();

  ThreadGroup[] threadGroups = new ThreadGroup[root.activeGroupCount()];
  // ThreadGroup.enumerate copies all ThreadGroup subgroups, not including the root ThreadGroup.
  root.enumerate(threadGroups, true);

  new Thread(root, runnable).start();

  for (ThreadGroup group : threadGroups)
    new Thread(group, runnable).start();
If any thread groups are created after this code is run then design-time will not be set. So the best practices are all thread groups need to have design-time set, or any calls to Beans.isDesignTime() need to be synchronized to the EDT.

Tuesday, April 3, 2012

Hiring

My group is hiring a couple C/C++ and Java developers focused on security based in Santa Clara CA. If interested contact me via the "Contact Me" link on the right.

Monday, March 26, 2012

You can X...if you X

A friend posted the blog post You can draw...if you draw and I think it is so good I'm going to talk about it!

Replace X in the title with anything you want to do. The Missus and I are in the process of teaching this to our 5 year old using the violin. 3 minutes a day for the last 6 months and she can now play at talent shows at school. She didn't believe us at first. But now she is well on her way to being able to play the violin as good as her Grandpa; with lots of practice. Practice practice practice.

I learned how to ride a unicycle 2 years ago. Now I mountain unicycle all over the Santa Cruz mountains. I hear from people all the time "I could never do that". It turned out to be such a good workout the Missus picked it up, my sister became addicted and our 5 year old is learning as well.

I do think some people are inherently more skilled at certain things, but that doesn't mean with practice and perseverance one can't do anything they set their mind to. Honestly that's one of the reasons I get so annoyed at the current hiring practices for software engineers and alluded to in this post. I've interviewed countless people who I think could do the job. And the question usually isn't "are they smart", the quest that should be answered is "are they a team player". I'd rather have a whole bunch of average people that can learn and work as a team than a couple rock stars with a complex.

So what is it that you want to learn to do?

Thursday, March 8, 2012

New iPad

My take on this is the resolution is pretty awesome, but other than that I see no reason for original iPad or iPad 2 owners to upgrade. Especially since the weight has increased. As far as I'm concerned the size of the battery should have been reduced to decrease the weight. However, if I were buying an iPad today I'd have to go for the new iPad 32GB because 16 fills up rather fast, but that makes it a $200 price increase which is pricy.

By the way, I picked up the "YOOBAO Red Genuine Leather Slim Case Portfolio Case For Apple iPad 2" and it's really nice.

Monday, March 5, 2012

Monitor

It seems that dual monitors has finally hit the mainstream. Article after article comments on research that people are more productive with dual monitors than with one monitor. I really dislike dual monitors. Sure, it's more productive, but nobody ever mentions the whiplash one can get from using the off center monitor too often. No, I prefer one big monitor with a high resolution for most tasks. 24", 27" or 30". I think if they went back and did their research with everyone running a 30" monitor they'd find people are even more productive than with dual monitors. The advantage is price. Small monitors can be picked up for a few hundred bucks while a very large high resolution display is considerably more. But once you factor in the chiropractic bill I'm sure the savings would more than justify the large monitor.

Note: I am in no way benefiting from you buying a large display from the likes of Dell, Viewsonic, Samsug, LG, etc.

Tuesday, February 28, 2012

Bret Victor - Inventing on Principle

Yesterday I posted a little bit about what our ideas of a software developer are. Here is a video that is along those same lines. I warn you, the video is a little long, the concept and analogies are a bit odd but it's still worth watching:

video

Monday, February 27, 2012

What Makes a Good Software Developer

I've been thinking more about the video I posted the other day. It's a good video about what it's like to be a software developer; The current standard for what makes a good software developer is a person that is good at playing computer in their head. Software engineers have to be able to visualize code and data structures in their head, twiddle bits in their head while taking into account the constraints of the particular data type. Interviews are geared toward this mindset. Developer tools support this. We have all become complacent.

There are those who are very good at these things I mentioned above and there is nothing wrong with that. I just have a lot more important things to think about than play computer or to do hex math in my head. That's why we have computers. I like to think that there is room for different kinds of software developers. And I think the tools are still not quite there. Development environments such as Delphi, C++Builder, Visual C# and even Visual Basic are the best development environments that I've used. I haven't used every environment out there but I've looked at a lot of them. There is a reason developers using these environments consistently write applications faster than with any other programming language and environment. The paradigm and environment support quick prototyping without having to play computer in your head. So the bar to become a developer is shifted a bit to support less traditional software developers and different kinds of thinkers. The approach and ideas these people can bring to the software world will only make it better, but for that what we all need to expand our view of what makes a good software developer by changing the interview process and making better developer tools.

Wednesday, February 22, 2012

So You Want to be a Developer

This is a great video on what it's like to be a software developer.

http://penny-arcade.com/patv/episode/so-you-want-to-be-a-developer-part-1

Wednesday, December 21, 2011

Thom on Windows 8 using Delphi

Thom has some great preliminary information on Windows 8 using Delphi. Check out his blog here

p.s. COM will never die.