Posts Tagged ‘Software Development’

400 million downloads later, I miss Phoenix

Tuesday, September 11th, 2007

All highly successful large projects battle bloat and complexity. Sooner or later, lighting a controlled burn can really help out. Microsoft has done a great job with this in their Office line. Office 2003 did a lot to reduce code size and speed launch times. Office 2007 does away with more than a decade of familiarity in favor of a new and more thoughtful user interface.

arton125.gif

Phoenix was born out of the need to cast off the horrific bloat and instability that characterized the Netscape/Mozilla suite in 2001. Dave Hyatt and Blake Ross wanted a lean and mean browser that would load and run faster and provide a simple and extensible way of defining the user interface. They did a great job.

Renamed Firefox, the project just hit the 400 million download mark. Despite all this success, I can’t help but think that somebody needs to start a controlled burn on Firefox. Each month that passes I find myself progressively more dissatisfied with Firefox. Launch times are ever increasing despite my progressively newer hardware. It is wildly unstable on OS X – crashing daily. On Windows it is better, but not much. It doesn’t have to be like this. Don’t make me run IE.

Somebody get moving – build me me a better browser

libcurl on Windows with Visual Studio 2005

Friday, July 27th, 2007

Developing on Windows can be a real pain. I spent a few hours looking around for an easy way to perform simple HTTP GET calls inside vanilla win32 code. What a pain. WinINet is a disaster and WinHTTP is not much better. It also isn’t supported on all the versions of Windows we target, argh. It turns out that you can get libcurl [one of favorite libraries] to work on Windows within Visual Studio. Here is a quick overview how to make it happen with the 7.16.4 release.

  1. Download the source and load lib\curllib.vcproj in Visual Studio

  2. In curllib project properties->Configuration Properties->C/C++->Code Generation->Runtime Library change the value to Multi-Threaded /MT [assuming a release build] so it correctly builds as a static library

  3. Then in the project you intend to use libcurl – in the preprocessor section, define CURL_STATICLIB and add the curl include directories

  4. In the linker section add curllib.lib, ws2_32.lib, winmm.lib

  5. Prosper

For good measure, I’ve uploaded a release build of this lib that you can link to in your project [skip steps 1 and 2]

Coconut Wifi – Airport Menubar replacement

Wednesday, July 25th, 2007

This is what I’ve been looking for! I’ve complained before that the default Airport dropdown is hopelessly inadequate if you’re looking to discover an open access point, or select one that has the strongest signal. Thankfully, this guy went and made it happen. Awesome.

Here is a screenshot from their website that shows you what’s up:

Slingshot and Connector go Open Source

Saturday, July 14th, 2007

Joyent Slingshot, which we helped develop, has just been released to the public as an Open Source project under GPL v2. Along with Slingshot, Connector is being made available too. Grab the source, help make it awesome.

slingshotlogo.png

It’s time to switch to VMWare Fusion

Wednesday, July 11th, 2007

I’m a proud owner of Parallels Desktop for OS X. It has served me admirably, but it’s time to move on.

A while back, when Parallels announced they could finally boot my BootCamp partition directly, I was in love. I had visions of Visual Studio and XCode existing side by side. Working on the SftpDrive Windows and OS X clients at the same time. Wouldn’t that be grand?

Then I tried it out, and was distinctly less enamored. It was SLOW. It worked, but I didn’t just buy a brand new MacBook Pro so I could have a slow, often painful, primary work environment that lacked any graphics acceleration. I’d love for it to have worked, but I switched back to plain old BootCamp. What can I say, I need my speed.

SWSoft is adding features to Parallels at a rapid pace, which I appreciate. However, their “core” virtualization experience really isn’t that good. Especially compared to VMWare Workstation, which I spend a huge amount of time using. I hate to do this, but let’s go over some of the major offenses:

  1. 20% CPU usage while the VM is completely idle, on a fresh install. No need to explain this further, not acceptable. For references – VMWare gives me about 2-4% usage.

  2. It only supports one processor. That sucks.

  3. Disk usage: Parallels Virtual Disk access is WAAAY slower, especially in BootCamp. I get around a 75% performance hit using the disk in BootCamp mode. That’s a made up number, but it feels SLOW. Copying around a 1GB file, painful. With VMWare I experience no such grief.

  4. Memory usage: Man, nothing makes my system, with 2GB RAM, go turbo like trying to run a VM in Parallels with over 512 megs of RAM then switch to another memory-heavy applications, like XCode.

VMWare to the rescue!
fusion.png

Thanks, Parallels – you really lit a fire under VMWare’s ass. It has taken a while to get here, but VMWare Fusion is at RC1. It’s time you gave it a shot. They are using the same x86 virtualization technologies that they’ve fined tuned in other products for nearly 10 years. It’s really good – you’ll notice the difference. It’s still free, so why not? VMWare is quickly approaching feature parity with Parallels, and it blows down the doors with the performance.

UI Stupidity: Confirm Network Key

Monday, June 25th, 2007

Here is my least favorite Windows XP dialog:

confirm-key.gif

Let’s say I have a long WEP key – maybe a random 26 digit hexadecimal string [quite common]. Not only do you have to type it in without the option of seeing the characters you type, you must type them TWICE.

This is dumb.

It is only critical that a user confirm a typed password during the process of creating a new password, just so they don’t accidentally get locked because they unwittingly made a typo while entering in the new password.

Here, OS X gets it exactly right:

airport2wep.jpg Type the password once, hit ok. If I mistyped the password authentication will fail and I can try again. Brilliant. In the spirit of complaining, I do have one major gripe with the OS X wireless stack that Windows XP does a much better job with.

Head up the the Airport dropdown on your menu bar and you’ll see the list of access points that have a strong enough signal to connect to. If you’re in a public place you might see 25-30 access points. OS X gives you no indication of which of those are open or closed, and certainly no idea what their signal strengths are. Want to find one that has a good signal and is also unencrypted out of that list of 30? Good Luck.

Joyent Slingshot

Thursday, March 22nd, 2007

For a while now, Magnetk has been engaged in developing ‘Slingshot‘ with Joyent. Slingshot is a platform which allows Rails developers to easily create hybrid web/desktop apps with ease and flexibility. There are some great office 2.0 applications out there, but you must admit there is but there is only so much you can do with just AJAX in terms of flexibility and performance. I love Google speadsheets, but they are slow and kind of clunky. It’s cool, but it’s very 1991.

We’re starting to run up against some painful limitations inherent in today’s web 2.0 experience. Most notable is the lack of any functionality and data accessibility while no internet connection is present. Also, there is no integration with other applications running on the end users’s desktop. Others out there are also in the process of trying to solve some of these problems – but we think we have a particularly powerful take on it. Briefly, I’ll answer the most obvious question people have:

“How is Slingshot different than Apollo or Firefox 3?”

Apollo is a great framework and certainly powerful. It will meet with great success. The Wikipedia entry describes Apollo as:

“A cross-OS runtime that allows developers to employ their existing web development skills (Flash, Flex, HTML, Ajax) to build and deploy desktop Rich Internet Applications.”

Slingshot has the same goals – with the key difference being we allow developers to employ existing applications with no re-write necessary. Additionally, as a bit of personal criticism that you might disagree with: Flash and related technologies don’t come easily to most programmers. ActionScript is super cool, but I’ve always found the Flash platform non-intuitive and confusing. Perhaps I’m dumb; but I know I’m not alone.

Firefox 3 adds the option of local datastores for applications to access in an offline mode, and it is certainly a step in the right direction. The major downside is that it requires developers to specifically tailor their application to this framework and design for it. With Slingshot, we wanted to make it really simple for existing applications to be dropped into our framework basically unmodifed and have them “just work.”

Slingshot is bit the same but a lot different than Firefox 3 and Apollo. Here are our major design goals:

  • Let developers write hybrid desktop/web applications with Rails. Rails is elegant, well designed and allows for rapid development and deployment. It’s also much easier for a novice to learn than Cocoa or C# and it enforces some good decomp and design.
  • Allow Rails developers to create more robust applications that have a comparable user experience to traditional desktop applications. Drag in and drag out of data/files/etc, for starters. In the future, filesystem access to remote data [like SftpDrive...]
  • Allow Rails apps to run offline with simple and transparent data synchronization
  • Lightweight and customizable – we want you to make the decisions about exactly how your app runs, not us.

How this it’s done:

We started by developing application shells for both Windows and OS X that provide a consistent and stable binary environment in which to run Rails apps. One nice thing about the Rails community is that most developers are already developing their application in “offline” development mode, usually on a Mac. Similar to the Locomotive framework on OS X or the Instant Rails application on Windows, we make it easy to bring your custom environment into a stable well defined shell that you can customize in any way necessary. Gems, binaries, auxiliary worker processes – whatever. You have full control.

On top of this, we have a customized browser that runs without any of the traditional dressing [address bars, buttons, etc] of a web browser. This allows much more intimate access to the application and to the host operating system. By controlling the browser and extending it, we can build a bridge into the OS. A developer can easily tie together existing data import<->export controllers within their existing application directly to normal OS data transport mechanisms like the drag and drop interface, the clipboard, and eventually the filesystem. This is all done without modifying any of the compiled code, and is OS independent. Also, your app is still available from any browser in the world, just like it was before.

A good example of why this is important can be seen by looking at Joyent’s Strongspace. Right now if you want to upload multiple files you browse for each individual file, one by one, hit upload and wait on a page until it finishes [unless of course, you're using SftpDrive]. With Slingshot, you grab a bunch of files, and drop them onto Strongspace, and they are uploaded in the background. That was easy. Drag out – it’s the same thing, but in reverse. Drag a file from Strongspace directly into Photoshop. Awesome.

Offline mode is cool, so is integration with traditional desktop apps, but it is all somewhat worthless without an easy way to synchronize data with your live server. Slingshot data sync is designed to be extremely powerful while still being lightweight and flexible. We provide controllers and code to handle data serialization & transport in both directions. As the developer, you merely need to aggregate all the ActiveRecord objects that particular user needs to have access to offline. Slingshot does the rest. Same goes for upsync, and we have similar methods built in for files and other data types. The only extra work for the developer is deciding who gets what.

We’re quite proud of Slingshot and are very happy to be working with the fine guys at Joyent. The goals of Slingshot are quite similar to the goals of SftpDrive. Both applications target facilitating a highly connected user experience with transparent and ubiquitous data access. SftpDrive is designed to provide a more networked experience for all traditional applications speaking the one API they all speak – the file system API. Slingshot takes centrally hosted applications that are accessible from anywhere in the world and make them available with or without an internet connection along with integrating them with powerful traditional applications.

Things we love: Kinesis Ergonomic Keyboards

Wednesday, February 14th, 2007

Jonathan, for about as long as I can remember, has been a proud owner and advocate of Kinesis ergonomic keyboards. He was the first among a growing group of people I know who swear by these things. Problems with RSI and CTS, for most, seem to melt away or be largely alleviated by the Kinesis. I’ve never really had any problems with my wrists/fingers, so there was no pressing reason to get one of these things. On the outside, I always thought the Kinesis was ridiculous. I couldn’t even log into my webmail without hunting and pecking away. Pair programming on it was pretty much impossible. However, after I could count 10 friends who swear by these, and finding myself [again] in need of a new keyboard I took the $300 leap and gave it a chance.

The first week of retraining micro-muscle patterns was painful, I admit. But now I find myself in love. It’s Freaking INCREDIBLE. Take a look at this thing, it’s a beauty, and the geek factor is off the charts.

Kinesis
There are a couple basic features of the design that really set it apart:
1.) The most obvious – the recessed “pods” in which the keys are laid out.
What is going on is a design that allows you to access literally every button on the keyboard without leaving home row [which has blue keycaps, I love that]. This means no more reaching, no more moving around to page up and down or use the arrows to navigate a text editor. Get your palms into a comfortable position and stay there. Everything is easily touched by a simple up down motion or a bend of your thumb.
2.) Somewhat less obvious, is the pattern that keys are laid out within the pods.
Look at your regular keyboard; you’ll notice that the QWERTY keys are not directly atop the ASDFGH keys. Q is offset above and to the left of A. This makes it very difficult to reach the Q with your left pinky finger if you’re comfortably positioned on home row. On the Kinesis the keys are aligned in a grid, of sorts. To hit the Q, given the parabolic shape of the pod and the grid layout, you just slightly lift your pinky. No reach, a simple vertical transition.

Along with these two major ergonomic features, it’s just a great keyboard. I type WAY faster than I had with the three MS Natural Pro keyboards that I had used for years. A side benefit of the retraining process is that it has really cleaned up my regular typing. It comes with a nice instruction booklet that has 20 or so exercises that it recommends you perform daily for the first week. Given how comfortable it is to type correctly, you really notice when you are doing things that you shouldn’t be. Like hitting P or Q with your ring finger instead of your pinky.For $300 you get some nice extras, like support for crazy reprogramming features and extra keycaps and quick layout changes for transition back and forth between Mac and PC mode. People seem to jump at the chance to drop $800 on an Aeron chair, arguing that “I sit in it 8-12 hours a day.” Not a bad argument. Do the same for your hands — it’s a tough first week, but well worth the effort.

Update from jrk: Finally, Jeff understands why I always found his MS Natural so disgusting to my fingers…

Also, I should point out that you don’t have to pay $300 to get one — they nearly always have refurbished models available for $191 (PS/2 Essential — non-programmable) and $239 (USB Advantage) at their online store. I’ve never paid more than $239.

re: Vista – I’m downgrading

Tuesday, January 30th, 2007

After about 3 weeks of using Vista RTM as my primary windows development environment, I’m officially downgrading to XP.

The reasons for this are many:

  1. Driver issues; Mouse, firewire controller, power management, to name a few.

  2. Nothing works without about 10 extra installation steps. VMWare Workstation and Visual Studio are the two key components of my development environment. Visual Studio needs a custom patch, needs to be run as administrator, yet still doesn’t fully work right with some plugins I rely on. VMWare Workstation doesn’t run or install correctly without modifying Vista security settings. I’d love to run the 6.0 beta [which has amazing Visual Studio integration] on Vista – but Visual Studio wouldn’t start because it could not “acces the log file”. That’s awesome.

  3. Vista has been out in beta in one form or another for quite a long time now, but the level of changes made during the final 6 months created all sorts of issues that are similar to this. SftpDrive has had Vista support throughout this process, only to have various aspects of it broken and require various fixes for release. The latest 1.6 beta now works with RTM.

  4. UAC is really annoying. The first thing you need to do is turn it off. You would hope some basic sanity would have resolved a few of the issues, such as using control panel. You can’t do anything in the control panels without re-authorizing priveledges on practically every click.

  5. Everything covered in here: The 5 sins of Vista. #1 and #5 really bother me. #1 is truly asinine.

Overall – I’m left trying to figure out why Vista is better and why it took 5 years to make it happen. The start menu is new, I guess. The windows have translucent borders if you spent over $1500 on your machine. Give me a break.

The lesson I’m taking away is that developers can only sell upgrades and “new” revisions based on features. It’s truly poor form to roll 5 years of bug fixes into a $350 package with more regressions than new features.

I’m going back to XP.

MacFUSE — Awesome

Friday, January 12th, 2007

Amit Singh over at Google has ported FUSE to the Mac. Good Work!

FUSEFUSE is popular user space framework for Linux, and now the Mac. What this means is that it is much easier for filesystem developers to create and test new filesystem implementations. Filesystems run, usually, as extensions to the kernel of the OS – like a device driver. When code runs in the kernel, it is much more difficult to develop and debug. When code crashes in the kernel, your machine crashes. It’s hard.

FUSE tries to abstract away some of that pain for developers, by providing a “general” filesystem driver that communicates with a service in user space. Then you can write an extension to the FUSE user space service, much like normal application development, and have it extend the power of the general purpose filesystem driver. This is a real boon for programmers.

Also cool — Google has a patch for SSHFS, a fuse module, so that you can mount an SSH/SFTP server using MacFUSE.

It’s no secret that we’re working on SftpDrive for OS X, it’s nice to see other people out there are trying to get some innovative work done on OS X network filesystems. SftpDrive:Mac is our number one dev priority, and along with that iMac, we’ve got a half dozen other Macs that we’re using for development and testing. I’ve gotten quite a few emails and IMs today about MacFUSE. We’re excited that it is being done. SftpDrive for the Mac will be released as a very polished product with robust reconnect support, a simple user interface, and the a great overall experience – just like our windows client. Having SSHFS is great, but beachballing finder when your wifi connection drops or you hop to a new AP isn’t very fun.

We’re not bashing FUSE by any means – but this example illustrates certain virtues of commercial software, developed by people that really care about what they are doing. Software where developers spend an inordinate amount of time solving edge cases, so that the experience doesn’t have gaps. When you plunk down $39 for SftpDrive, you get software that effortlessly hops between wireless access points and has intelligent caching to provide a good experience while using poorly behaving applications. And just like free software, you get developers who really cared about what they are doing.

That last 20% of functionality really does take 80% of the effort.

Subscribe:

Add to Google
RSS
Try ExpanDrive

If you’ve heard of SSH then you need ExpanDrive.