Jeremy Friesner is the talented author of
MUSCLE,
BeShare and
Spicy Keys, essential applications to the BeOS experience.
Today The BeOS Journal put him through his Jedi Training, asking those questions you were too afraid to ask.
Welcome to The BeOS Journal Jeremy, thanks for taking the time to answer some long overdue questions.
Who is the man behind the ":^)" ? What hobbies do you enjoy besides BeOS addiction? In addition to these hobbies, what is your middle name? What university qualifications do you have? Do you have a family or plan on having a family any time soon?
I'm just a rather strange but harmless guy with too much time on his hands, I suppose -- I used to be an Amiga fan and programmer, but moved to Be after my Amiga died and I was forced to buy a PC to replace it (BeOS was the closest thing to "the Amiga experience" available on a PC). Other than computers and programming, I have a few hobbies -- bicycling, unicycling, scuba diving, reading, lobbying for election reform. My middle name is Allen. I graduated from the University of California, San Diego, in 1996, with BS in computer science, and a minor in cognitive science. I'm single at the moment, so thinking about family is a bit premature (unless you count the one I was born into).
You work at Level Control Systems correct? What is your role for this company? Could you please outline a normal day at work for us.
Yes; Level Control Systems has two offices, one in Vernon, British Columbia, and one in Sierra Madre, California. The office in Vernon is where all the hardware and firmware engineers work, while the office here in Southern California is much smaller and devoted mainly to sales and support. However, I work in the Sierra Madre office and do most of the PC-side programming of software that is used to operate LCS's sound-control projects.
I joined LCS because their flagship software, CueStation, runs on BeOS, which means I get paid to program BeOS software -- what more could you ask for? :^) With the unfortunate demise of Be, however, LCS had to look to the future, so I've spent the last year or so rewriting CueStation to be portable to multiple operating systems (including Windows (ech), Linux, and OS/X) using the Qt GUI toolkit. A normal day for me goes like this: wake up around 8:15AM, read my email, BeShare, and/or Slashdot for about half an hour, then shower, get dressed, and bike about 5 miles through sunny Pasadena and up the hill to the LCS office. Put the bike away, say hello to my co-workers (all three of them ;^)), then sit down at my computer (a dual P3/650 triple-booting Linux, BeOS, and WinXP) and work on CueStation for a few hours, then walk down the street for lunch, come back and program some more until 7 or 8, cvs commit the day's changes, then bike back home.
The BeOS Community knows you as a parent to their strength, author of BeShare. BeShare has played a pivotal role in the community as everyday new users stumble upon our quiet yet passionate abode and veterans can converse in the BeOS tongue, developing apps and helping binkies (new users). What do you attribute to BeShare's success and what will the BeShare experience entail for us in the Future? Any new features on the drawing board?
I think BeShare filled a need that many people maybe didn't know existed in the BeOS community -- the ability for BeOS users (who are few and far between) to quickly find other BeOS users and talk with them. This turns out to be quite useful any time someone has a problem or wants to know how to do something new under BeOS, and fun even if they just want to talk. BeShare's chat mechanism was originally an afterthought, but I think it evolved into BeShare's most used mechanism, with file sharing only a distant second.
As for new features, I'm not planning anything major -- I think BeShare has reached a comfortable size and feature set, and I've seen what happens to programs (read: Netscape) where the authors keep adding features just for the sake of more features. They turn into big, slow Frankenprograms that crash a lot, and most people never use 95% of the features anyway.
MUSCLE is certainly very impressive looking at its feature list at BeBits. How did the project originate and where is it leading to? Has there been to your knowledge any other projects totally BeShare/BeOS non-related utilizing MUSCLE for its purposes? If not, do you foresee any widespread use of it in the future?
MUSCLE is the third iteration in a series of bring-multiple-clients together packages that I've written. The first was called AMarquee, and was fairly similar to MUSCLE, except that it was C based and lower level -- the standard data type was raw byte buffers, not Message objects. The second was called SockHop, and was written for BeOS, but was designed primarily for Beowulf-style clustering, so there was no thought to security in it -- you were assumed to own all the machines involved, and could automatically download code to all of them. Needless to say, that architecture didn't find much application on the Internet at large.
I started MUSCLE as part of the CueConsole project at LCS -- they wanted to be able to connect a large number of small hardware modules together via serial lines and TCP/IP so that they would act like a single unified mixing console. Rather than write custom code to do that, I used my past experience with multi-client networking libraries to write a new library (MUSCLE) that would combine AMarquee's database design with BeOS's way-cool Message class, and then wrote a program called ccserverd that would use MUSCLE to accomplish its tasks.
Currently MUSCLE is used not just for CueConsole, but throughout CueStation 4 as well. In CueStation 4, every window in the GUI is a separate MUSCLE client, and a customized MUSCLE server lives within our (Linux-based) EtherTracks card in the hardware rack. This MUSCLE server coordinates all the clients and allows multiple people to control various parts of the hardware simultaneously, as well as keeping all clients immediately updated to any changes in the state of the hardware.
There have been a few projects using some or all of MUSCLE for various purposes. Certain people have found the MUSCLE Message class useful for porting BeOS code to other platforms (hi Agni! ;^)), and a few companies have looked into using MUSCLE for industrial process control and the like. I don't know that MUSCLE use will be very widespread -- mainly because it doesn't get much publicity outside of BeOS circles.