October 30, 2004

MD-fu

With the merge of the new gtk-sharp 2.0 stuff, (Mike Kestner rocks) MonoDevelop has upgraded its dep tree to require it. We are going to be making changes to use the new APIs where it makes sense. Also, we have set up a brand spankin new wiki that we are going to use for documentation and discussion.

0.6 is most likely not going to be released for a while, as we hope that 0.6 will include working debugger gui, and be completely free of obsolete 2.2 widgets and API. SVN is going to be a fun place though :)

Posted by tberman at 03:44 AM

October 29, 2004

LET THE FANBOYING COMMENCE!

mono: mkestner * gtk-sharp/ (Tag: gtk-sharp-1-0-branch ChangeLog configure.in): * configure.in : bump version and tag for 1.0.4.
mono: mkestner * gtk-sharp/ (254 files in 34 dirs): 
mono: merge to HEAD of jeroen and friends' work on the 2-4 branch. HEAD
mono: is now tracking Gnome 2.6.
Oh.Fuck.Yes.
Posted by tberman at 11:08 PM

October 19, 2004

Deploy me please

To preface this, I know I am picking on the iFolder guys here, and I know there are lots of other mono apps that probably do this as well, but to me, Novell should be setting the 'gold standard' for how to properly develop and deploy a mono app, and to see them set the bar this low for deployment is just not good.

Recently, talking with James Wilcox (a.k.a. Mr. S. Norpopolis, of YAMP and red-carpet fame) I discovered that ifolder and another app (which we will call YAMP#) were conflicting with eachother because both tried to put a log4net.dll into /usr/lib.

What? I said. Why would anyone put a dll in /usr/lib? Apparently both the iFolder and YAMP# teams are taking advantage of what is (imo) a bug that needs to be (again, imo) fixed in mono. Back before Mono had a GAC (right up until beta1 in early may), we used to load libraries out of MONO_ASSEMBLIES which was a compile time define to $prefix/lib. Now that we have a GAC, that bug(/feature/whatever) is still around. However, there is no longer *any* reason for mono to be loading anything from $prefix/lib. In HEAD and 1.1.1, even mscorlib.dll has been moved, so there should be no dlls ever in $prefix/lib.

So, the answer seems to be that iFolder should install log4net into the gac, and use it that way. *BZZT* Wrong. iFolder should never install anything into the gac that it expects other applications to use that it isn't 'responsible' for. Imagine this. iFolder installs log4net into the gac. YAMP# also installs log4net into the gac. There you get the RPM conflicts again. So the YAMP# guys could go ahead and make YAMP# depend on iFolder, which seems an insane way of getting log4net, but sure, it would work.

However, the real solution is a lot nicer, and far more maintainable. mono, when looking to load assemblies required by your application, will first look in what is called AppBase. That is the folder your app lives in. I explained this to Mr. S. Norpoplis, who then blurted out 'But a dll in /usr/bin is pretty weird'. What? Excuse me again? iFolder is putting ifolder.exe into /usr/bin?! Please, stop. dont.

Putting that executable into /usr/bin may seem like a cute thing, but it really is harmful in the long term. First, you are now limited in what is considered your AppBase to a location that you really shouldnt be tossing a lot of stuff into. Second, it is just wrong. It is like clubbing a baby seal. Don't do it.

Rarely will I ever point towards MonoDevelop as 'the proper way' of doing anything. However, we deploy ourselves very well. We create a directory, /usr/lib/monodevelop/ and start throwing stuff in there. We even go a step further than most applications would have to, and we create /usr/lib/monodevelop/bin/ to hold the executable and supporting libraries. Most applications won't need that kind of insanity. iFolder should be installing itself into /usr/lib/ifolder/, which would give you a /usr/lib/ifolder/ifolder.exe and a /usr/lib/ifolder/log4net.dll. Then you drop in a 2 line shell script at /usr/bin/ifolder to call mono /usr/lib/ifolder/ifolder.exe. Problem solved. Now YAMP# and iFolder don't conflict, and they dont get in each other's ways at all. As well, we no longer are leaving little assemblies sitting around int /usr/bin or /usr/lib.

But wait. Suppose that no one likes the idea of keeping multiple seperate copies of log4net.dll around for every app. Isn't that what the GAC is for? Yes. It is. However, iFolder (or YAMP#) should never install anything into the GAC that it isn't responsible for. You don't have log4net installing iFolder, or iFolder installing YAMP#, they are seperate applications. Anything put into the GAC really needs to be its own package. That way packagers can say 'I need the log4net package installed' instead of saying 'Well, since this app needs log4net, I guess we have to pull in X, Y and Z as a dependency'.

So it seems that the proper way out of this for iFolder, and YAMP#, is to take the day or so (tops) that it would take to give log4net a real linux auto* build, and create a log4net RPM to depend on. Then everyone benefits, log4net gets to be a first class citizen of the linux/mono world, and we can all do a ls /usr/lib/*.dll and not see anything. Which is exactly how it should be.

Posted by tberman at 03:22 AM

October 17, 2004

Ack. Boom.

Managed somehow to toast my iPod. So, asking for a bit of help here. Anyone with a 40GB 3rd generation (this one with the dock) HFS+ formatted iPod, and access to a copy of dd who can spare a bit of time, your help would be greatly appreciated, toss me an email if you can.

I know I can 'reset to factory conditions' or whatever with a mac or a win32 box, but I would really like to see if snagging a dd dump from the start of the disk to the end of 2nd partition would bring back the firmware and the partition table at least enough that I can get some (or all) of the data off.

Posted by tberman at 05:51 PM

October 15, 2004

Sean's (Of Gaim Fame) Response

Yesterday I blogged a screenshot of gaim and some new ui. Apparently Sean got some angry emails, ims, and other angryness. He sent me an email, which I am putting here in full for all to read.

Hi Todd.  You caused quite a stir with your blog about the uber-sexy
new Gaim preferences dialog.  I've been getting
hate-mail/im's/irc-messages all day.

You failed to mention (or perhaps even realize) that the screenshot
comes from a CVS branch that is currently in very active development
and that a release most likely won't come from it in  at least a
month.  As such, you shouldn't assume anything is complete.  You'll
also notice you can't set an away message at all.  We're not removing
that feature from Gaim either.

The assumption being made by people thinking the list is better is
that too-many-tabs is a terrible idea.  It is.  They say because we
have so many preferences, it's better to make a list.   It's not. 
Tabs are inherently *better* UI than a list but, unfortunately, they
don't scale well.  The problem is not with the UI, it's with the
number of preferences we have in the UI, which in itself is a problem.

What you saw was Phase I of an attempt to improve the UI.  By
switching to a UI that does not scale well with the number of
preferences, it forces us to control the number of preferences 
presented in the UI.  Phase II---killing preferences---was originally
to be done after the new status UI was complete, but due to the
outrage you caused, I bumped it up to today.  Check out the gaim-devel
list archives (http://sourceforge.net/mailarchive/forum.php?thread_id=5764816&forum_id=9587)
to get the scoop.  The goal is to rethink which preferences are
useful, and which aren't, and restructure the dialogs into few enough
tabs to fit reasonably along the top of the dilaog.  You will
certainly agree this is the ideal case.

Anyway, a few people said the might try to relay this information to
you, but a correction in your blog might be nice to quell the number
of hate-IMs I'm getting.  Then again, I'm sure everyone will have
forgotten about it by tomorrow.

Hope this clears things up :)

-Sean.

It does for me Sean.

Posted by tberman at 12:32 AM

October 14, 2004

Employment possibilties.

My company (Medsphere) has a position open, and we are looking to fill it yesterday.

We need someone who eats xslt and css for breakfast, and then lunches on pretty layouts.

We have a lot of data that right now comes across in plain text, and you would be responsible for designing an xml schema for that data to come across the wire in, and writing xslt and css to format that information into nice reports and layouts.

You would also have to relocate down to southern California (Aliso Viejo to be specific, which is about 10 minutes from Laguna Beach, 15 from Newport Beach, and an hour (or so) away from LA and San Diego).

Anyone interested, please email me your resume.

Posted by tberman at 10:11 PM

UI Crack

Like a page out of the 'worst ui decisions of all time' or something, here is a screenshot of the new and 'improved' gaim preferences dialog.

gaim-2.0.0-prefs.png

Chip: And all I wanted was a little topdown ui! (Update: Chip had nothing to do with the obscenity that is this new UI)

Posted by tberman at 01:46 AM

C# kicks your ass

I just have to say, that developing applications (particularly Gtk# desktop apps) with C# totally kicks ass.

In case you have yet to play with C# and Gtk#, you need to do so. I recommend picking up Edd's book about Mono. It is essential.

Posted by tberman at 01:19 AM

October 12, 2004

fucking commuting

Directly from the Jackson-pays-out-45-percent-of-his-salary-for-plane-tickets department

(21:26:04) Jackson: dude i don't commute for fucking
(21:26:25) Jackson: the fucking commutes for me
Posted by tberman at 05:39 AM

Me too.

I second Jackson's idea, and think that everyone needs one of these...

Posted by tberman at 12:40 AM

October 06, 2004

System.Windows.Insane

You want to run code written by this man?

insane_jackson.jpeg

Migration path to alcohol poisoning maybe.

Posted by tberman at 05:46 AM

October 04, 2004

Sure Sure

(23:18:45) Jackson: You should reciprablog me
(23:18:49) Todd: dude
(23:18:50) Jackson: cause i need pagerank foo
Jackson: Done. and Done.
Posted by tberman at 07:28 AM

John

John: Yeah, i fixed the link, didn't realize it was time-based. The two issues are totally seperate. I absolutely advocate voting for not-Bush. But I also absolutely advocate voting for not-draft. A vote for Kerry isn't a vote against the draft, and a vote for Bush isn't a vote for the draft. Remember, those very people who put that bill up (at least in the House) are up for re-election around the nation. There are more votes than just the Bush/Kerry vote on the 2nd. All of them are important, and this shows why.

Assuming that being anti-Bush means anti-Republican or pro-Democrat is just naive.

There are many seperate issues, which have to be looked at on their own merits, not just voting down a left leaning (barely) party line.

Posted by tberman at 06:56 AM

If you don't fucking vote, you might fucking die.

Just got an email, with a disturbing bit of news.

This bill basically starts the draft up again (I cant seem to get a good link to the bill. Go to: http://thomas.loc.gov/ and search for bill HR163). Potentially as early as spring of 2005. If passed, anyone aged 18-26 could be drafted for military service. College will not be accepted as a reason not to serve. And Canada won't harbor you this time.

Anyone who is 18-26 now, or has kids who will be 18-26 any time in the near future (remember, this is a war on something that doesnt exist, it really can't be won) needs to not only get their ass to the polls on the 2nd, but they need to call their representatives in the federal government and explain exactly how much they would like to see themselves, or their kids dead. It really doesn't get much more serious then this shit.

Here is another link, outlining exactly how the government plans on figuring out who to draft. And just in case you aren't yet scared, how about another bill, for the same purpose (Killing american youth) in the senate.

Again, this goes beyond just this upcoming election. You also need to get word out to your representatives in the House, and the Senate *now* and basically tell them how unacceptable it is for this kind of shit to happen again.

As much fun as many people might think the late 60s and early 70s were, there are a huge number of dead kids, and their parents, who I don't think would agree.

Posted by tberman at 06:12 AM

Amazon, A9, etc.

I have recently become addicted to amazon.com. For some reason, something clicked, and I have spent a stupid amount of money buying books and other stuff from amazon. For some reason it just is too damn easy to do.

Some people have mentioned the a9.com search engine, and how generally cool it appears to be. I have yet to see anyone mention that if you use a9.com, and then buy things at amazon, it looks like they are giving you 1.57% (or (pi/2)%) off your purchases.

Alex mentioned that amazon must be the data-miners dream. It appears to only be getting more so as time goes on.

Posted by tberman at 01:14 AM