April 2017

910111213 1415
16171819 2021 22

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
marcmagus: Ten the hard way (ten the hard way)
Thursday, August 19th, 2010 02:41 pm

Language choice kind of matters not at all to most projects, so the question in my last post is really about what's worth learning to broaden my horizons. It's also a question that's limited to a pretty strict subset of my followers. Here's one explicitly for the bikeshed crowd.

My goal with manakin is to have a totally awesome UI. So, an open poll to help me brainstorm for what I want it to do and get me excited about it:

What features would make for an awesome UI in your opinion? What features have you seen in an existing client and loved. What misfeatures have you hated? What do you really wish your client could do but you've never seen?

Features which don't apply to the terminal still welcome. If you're aware of limitations on scope of a feature (e.g. only makes sense on a SmartPhone), that doesn't make them uninteresting, but mentioning that would be great.

marcmagus: (regexp)
Thursday, August 19th, 2010 02:30 pm

I'm contemplating resuming work on manakin, and I accept that at this point it's so stale that it's succumbed to sufficient bitrot that I might as well start from scratch, using what I had as a model. What I have was in large part intended to be a quick prototype anyway.

This project has two purposes. One is to build a working Twitter client that I can live in and with, with a UI that doesn't make me want to scream, and with whatever functionality seems relevant to me. I think I'll stick to keeping it in the terminal so I can access it remotely using screen, although I'm finding myself increasingly more frustrated with the terminal's limitations than enthusiastic about its advantages.

The other purpose was to get more experience in a language I didn't have much experience in. Last time around I picked Python, because I've heard so many positive things and it seemed like a good job skill to pick up. I feel like I only scratched the surface of Python, so I could certainly stick with that when I go back again, but I'm also open to alternatives.

What language, that isn't Perl and isn't Java, do you think I should use making a terminal-based, UI-design focused Twitter app as an excuse to improve my skills in. Why that language? Are there any particular libraries I should/shouldn't use when doing so?

marcmagus: Me playing cribbage in regency attire (Default)
Tuesday, August 10th, 2010 03:20 pm

So after my recent experiences with system-wide resource exhaustion thanks to Chromium, I've started paying a bit more attention. This thing gobbles up available system memory like there's no tomorrow. Ok, sure, no point it sitting around idle. Only it's not sitting around idle, because my OS dynamically uses available memory for cache.

Ok, sure, I've actually been somewhat sold on "1. Don't Optimize. 2. Optimize Later.", but seriously, what the hell is this thing doing with all this memory? Yes, the sandboxed multi-threaded model does mean a higher memory footprint, and I really appreciate that I can kill the thread for libflashplayer without bringing the whole browser down, considering that libflashplayer is a piece of junk that crashes on average twice a day (more if I'm actually spending any amount of time using Flash). But still:

  • Each extension gets its own thread. Cool. Why the hell is the minimum private memory footprint for an extension (Eye Dropper) over 7 MB? What the hell does it need 7MB for? (Note: actually using it makes it jump over 16MB, then fall down to 15MB.) For a color picker + eyedropper! Yes, yes, process overhead. 7+MB of process overhead?! And Chrome is supposed to work on phones?

  • The memory footprint for active tabs is comparably appalling. A process containing only the "new tab" page needs 10 MB. In fact, a process containing only a tab on a 73B file containing minimal HTML for a blank page with the title "Nothing" requires 14 MB! (6 MB for JavaScript?!)

    • A page which adds a link to that page is also 14 MB, but then having both pages open in the same process is almost 18 MB, so not only does each browser process have about 10 MB of overhead, but it takes about 4 MB just to have a blank page open, Changing the window size (and killing the thread and starting a new one) doesn't seem to change this significantly, so it doesn't even seem to be that it's allocating a bunch of memory for the display, unless it's doing so for some arbitrary viewport that's not the actual window size. (Actually, I haven't done the math closely enough, I guess it could be allocating exactly the size of my entire display here so I can resize/maximize quickly.

I guess that's probably what's going on. In order to give a snappier response, it's renders every page and keeps it in memory as a bitmap, but also does so as though it were fullscreened in case you change the window size? Which doesn't explain that extension overhead or what it's doing to keep the processor so busy even when I'm not doing much of anything.

I might even appreciate all that, if it worked to give me a responsive system. Except once I've been using it for a bit I'm not actually sure it does. And as mentioned previously, browsing Amazon gets pretty catastrophic. It should in theory be, say, swapping out memory for pages I haven't viewed recently, except it doesn't really seem to do that (until swap spontaneously decided to go from empty to full).

Not sure this is working...stay tuned...

marcmagus: Me playing cribbage in regency attire (Default)
Saturday, August 7th, 2010 01:05 pm
  • The annoying problem with Flash where after the browser has been open for a while sometimes it will get messed up such that audio is corrupted and video is slow and choppy happens in Chromium as well, unfortunately.

  • Chromium's threaded model is awesome, in that when this inevitably happens I can kill the thread devoted to Flash and go about my business. Reloading a page that needs Flash (such as the one where I had the problem) will bring it back up and it will work correctly. Any other tabs which were using Flash will show a cute dead plugin image wherever there was supposed to be a Flash object until I reload them to fix it. This is a huge advantage over having to restart Firefox a couple times a day.

  • Attempting to shop on Amazon is painful to the point of impossibility, at least if you shop the way I do (opening a new tab for each item I want to look at so I can keep track of everything). Once I have about 5 Amazon tabs open the entire computer (not just Chromium) slows to a crawl for a while, although it seems to balance out after a couple minutes so I can browse those tabs and do other things as long as I don't, say, try to open another new tab.

  • Correcting the previous, apparently I managed to exhaust both memory and swap on the system, resulting in a giant mess. Unrelatedly, system didn't come up from a reboot due to an upgrade error, so I just lost a few hours to burning a rescue disk and performing a kernel upgrade. (The wasted time was in figuring out the problem and in not being able to multitask during the upgrade.)

  • I miss access to the LJ New Comments Greasemonkey script. However, in writing this, I went and poked around and found Tampermonkey, which provides GreaseMonkey support for everything possible, and which seems to support it, so I think I'm good to go there. Yay.

I'm still not sure if this represents an improvement or a [what's the antonym for improvement?] to Firefox...

marcmagus: Me playing cribbage in regency attire (Default)
Thursday, August 5th, 2010 11:02 pm
  • Once it's up and running, Chromium seems able to handle my c. 50 simultaneous tabs comparably to Firefox in terms of overall system performance, or at least not noticeably worse.

  • Restarting with that many tabs is also comparable. I was hoping for an improvement.

  • Actual browsing of the sort of thing I generally browse (which is mostly a lot of text with images) feels noticeably slicker. In particular, in Firefox I get a very noticeable delay when I change tabs or especially windows. In Chromium I can jump around between windows with a delay that is within reason (comparable to typing speed).

  • Yesterday in Firefox I found the scribd webapp for the Prop 8 Ruling unusably slow. Here in Chromium today it's a bit pokey, but quite usable. I sincerely doubt it's a difference between yesterday and today.

  • In-browser video seems to be inconsistent, perhaps depending on the underlying technology. YouTube videos actually seem slightly improved. Other sources (which I have no idea how different they are under the hood) seem choppier than I'm used to. Not sure what to make of this one.

  • I haven't yet had the problem where Flash applications (such as streaming videos) have the audio get completely screwed up and I have to quit the browser to correct the problem. This may just be luck, though.

  • I've tried two programs which are supposed to provide a similar experience to vimperator in Chromium: vrome and vimium. Both offer a really inconsistent user experience (not always working, frustratingly), and a strict subset of the features I want. It seems part of this may well be due to limitations of the Chromium extension architecture, which is, well, frustrating. I'd like more of an :ex-style interface, and the ability to hide the address-bar like Vimperator offers. Very annoyingly, both extensions don't seem to use keypresses chorded with Control correctly, and instead pass them through to the browser.

marcmagus: Me playing cribbage in regency attire (Default)
Thursday, August 5th, 2010 08:30 pm

Having heard that Chromium (the Open Source browser under the hood of Google Chrome uses threading to display separate tabs, I thought I'd install it and give it a whirl and see if it can keep up with my normal browsing habits.

Some initial thoughts:

  • I use a two-level hierarchy for browsing, with separate windows for conceptual distinction and tabbed browsing within each to manage multiple things I might want to flip between. Chromium will let me have multiple windows, but new tabs opened via the command-line seem to always want to open in the first window rather than the window with focus.

  • Out of the box I can't easily paste a URL into the browser to open it. There's an extension which does that, but it's a bit limited. It works, but its "open in new tab" feature (very cool idea) opens the new tab in the first browser window rather than the current one.

  • vrome works to provide some vi-like keybindings, but is already missing some features I liked from vimperator. Notably, Shift-Insert seems to work with the chromium clipboard (I thought it did nothing) rather than the selection buffer, removing another way to easily open a URL I have in another program.

You might notice that so far the problem is related to my trying to quickly and easily get all the stuff I had open in my most recent Firefox session open in Chromium to see how they compare. Once I get that going I'll have a much better opportunity for comparison under load; it seems pretty nice and snappy right now, but it's not really a fair comparison yet.

More later...

marcmagus: (regexp)
Thursday, August 5th, 2010 06:01 pm

I'm an unrepentant vim user, eschewing other text editors which might have less terrible internal scripting languages. I love vimperator for Firefox, and I'm about to give Chrome a whirl and the first thing I'm going to do is install Vrome for it. I prefer crawl to nethack and nethack to ADoM (at least in UI terms). I passionately hate almost every "webapp" ever written.

I do almost all my work in the console. It's not actually that I prefer doing everything in a cell matrix containing characters in a monospaced font; in fact, for a lot of things, especially reading, I'm increasingly finding that proportional fonts really are advantageous. [Please don't ask me about antialiasing; I still haven't done a good enough side-by-side comparison to determine whether it results in "smooth" or "blurry".] It's just that console applications as a general rule are much more likely to have an input UI which allows a little more expressiveness than pointing with your finger and grunting. (To be fair, some GUIs do allow you to grunt, whine, or whistle while pointing.)

The goal of the input portion of a tool's UI is to effectively transmit information (what you want to do) from your mind to the tool. I think there are a few basic principles that should be kept in mind when designing or evaluating a UI.

Read more... )

As a designer of a tool, it's your job to think about how people will want to interact with that tool and make it as easy as possible for them to do so and get the most out of it. It's not good enough to do what's easiest for you to design, and it's not good enough to stop at only the features that will be easy to learn. For input, the tool should be able to capture relatively complex ideas in a simple way, and grow with the user. Users shouldn't have to ask, "I need to do this simple task about 20 times a day, why does it take 5 minutes to do each time?" At the worst, the answer should be because the user wasn't aware of the simpler way; it should never be because of an unnecessary limitation of the UI. Designers of database-interactive software, I'm looking at you, here.

marcmagus: Ten the hard way (ten the hard way)
Thursday, May 6th, 2010 01:27 am

I'm getting sick of cable clutter. I use a keyboard podium and the keyboard cable keeps getting caught under the wheels. I love my wireless trackball for not having that problem.

I don't want to buy a new keyboard. I like my keyboard. I do want to eliminate the cable getting in the way, though.

It seems like the obvious solution is a battery-powered dongle I can plug the keyboard into that turns it into a Bluetooth device. An alternative that used some proprietary RF signalling would work just fine too, however.

When I started writing this I was going to admit that my searching skills were failing me, but I have in fact discovered "USB extenders", all with prices well over $100, that look like they might do the trick, although the ones I'm seeing require wall power, which would rather defeat the purpose. With all the things we can put into a dongle inexpensively, I'd think this would be out there.

Anybody know of a device like what I'm looking for in not-ridiculously-expensive? Or of something close to what I'm looking for that might be adaptable to the purpose?

marcmagus: (regexp)
Sunday, April 11th, 2010 05:15 pm

I recently purchased a new wireless access point/router (Netgear WNDR3300 for $30 shipped from NewEgg; got $5 off a future purchase due to a minor defect [missing rubber foot], so final cost was $25), which arrived on Friday and I set about to set it up.

Part of the reason for the purchase is that, try as I might, my friends with Macintosh laptops have consistently had trouble connecting to my current Trendnet TEW-432BRP AP/router. In fact, at some point they went from an odd 10 minutes on/10 minutes off cycle to flat-out unable to connect. Weird.

So on Friday I asked [livejournal.com profile] kdsorceress to come over while I played with setting up the router. First I confirmed that she was able to connect to the default firmware, so I knew I had this as a fallback. Then I decided to play with installing DD-WRT, which is really cool. Confirmed that the Mac could still connect [though I've played with some settings since and will need to reconfirm].

So last night I got hit by one of those sporadic attacks against my main system that I get because I have ssh enabled, and decided to attempt to configure iptables on the router to rate-limit incoming ssh connections. This is a nice little trick to interrupt brute-force attacks on your password. For some reason, though, nothing I did seemed to work, or at least I couldn't trigger the dropping by attempting to connect from one of my computers to another of my computers.

Thinking the problem might be because all computers in question were inside the LAN, and might thus not be passing through the router even though I was telling them to [for some strange reason], I resolved to borrow a neighbor's wireless for a bit using my netbook so I could test an incoming connection that way. Unluckily, all the visible networks were protected with at least WEP.

Well, WEP is terrible security, I'm told, and there are plenty of packages out there to defeat it rapidly, so I thought maybe it was time to give one of those a try. The one I decide to try depends on another tool to log packets, and recommends kismet, so I go to install that.

Whereupon I discover the driver I'm using for the wireless card in the netbook [the proprietary Broadcom wl driver] doesn't support monitor mode, recommended to switch to the in-kernel driver. After some research, I discover that a very recent version of the b43 driver does support my card in the mode I want, but to make it work I both need to fetch a firmware update [fine], and update my kernel, because the version I'm using doesn't support my particular card even with the firmware update.

So now I'm recompiling the kernel on my netbook. To update the wireless driver. To sniff wireless network traffic. To break WEP encryption. To connect to my neighbor's wireless. To test that my router is properly protecting me from outside attacks.

But I don't know why she swallowed the fly.

[Note: Yes, this is probably technically computer trespass. In much the same way that cutting across the neighbor's lawn to get home is technically trespass. The amount of bandwidth I'll be using is completely negligible, and I won't be snooping around their network while I'm there.]

marcmagus: Ten the hard way (ten the hard way)
Monday, March 29th, 2010 12:37 am

Remember switching from Netscape Navigator to Mozilla because Navigator had become a bloated piece of crap that was beginning to collapse under it's own weight and Mozilla was new and fresh and speedy?

Remember switching from Mozilla to Firefox because Mozilla had become a bloated piece of crap that was beginning to collapse under it's own weight and Firefox was new and fresh and speedy?

Firefox has become a bloated piece of crap that's beginning to collapse under its own weight. Where do I go next? Is there anywhere I can go that won't decay within a few years?

I'm currently running Opera on my netbook . . . it at least runs, as opposed to Firefox, which crawls. But it seems to have its own problems, at least tonight when it's asked to look at LiveJournal. Suggestions welcome. Must run on a 1.6GHz Atom with 2GB RAM and minimal storage [the whole thing has only 4GB SSD].

marcmagus: (regexp)
Thursday, February 11th, 2010 10:40 am

It turns out there's a bug in jlj, the program I use to compose messages in my favorite editor and submit them to LiveJournal and DreamWidth. I've finally tracked it down and written a quick fix. I feel slightly dirty, but the proper fix requires ripping out the existing band-aid on a band-aid and going back and fixing the underlying problem, which is a bit more effort than I want to go to for someone else's code at this time, as there could well be unexpected consequences.

The problem was that if you had written a post to go to a server other than LiveJournal, and you had it in your queue but it failed to post for some reason, then when you ran jlj -f to flush the queue it would attempt to log in to LiveJournal using the credentials for whatever site you had intended to post to. The symptom looked something like this:

[magus@cabinet ~]$ jlj -f
Logging in to server www.dreamwidth.org
Error Message returned:
Invalid password

Read more... )

marcmagus: Me playing cribbage in regency attire (Default)
Thursday, December 10th, 2009 04:54 pm

As it required minimal effort on my part and might someday help someone get in touch with me, I've turned on LJTalk.

As with the other IM-type services I use, I'm just going to leave it logged in all the time. Feel free to use it if that's convenient for you.

I'm experimenting with the feature that lets some notifications come as IMs rather than as emails....it's a nice idea; we'll see if I actually end up liking it.

marcmagus: Me playing cribbage in regency attire (Default)
Thursday, December 10th, 2009 03:56 pm

When did Dreamwidth sneak the "Quote" button into the comment editor?

I'm still not all that big on application-in-your-browser type stuff, but this gets points for making a tool that directly addresses a common task one might want to perform and makes it easier for the user. Go Dreamwidth devteam.

marcmagus: Me playing cribbage in regency attire (Default)
Tuesday, December 8th, 2009 10:40 pm

Because I am ridiculous, I basically only use my microwave for the following intervals:

  • 0:11
  • 0:33
  • 0:44
  • 0:55
  • 1:06
  • 1:39
  • 2:22
  • 3:33
  • 4:44
  • 5:55
  • 9:28
  • 10:00
  • 10:39
  • 15:00

I don't suppose anybody else is weird like me?

marcmagus: Me playing cribbage in regency attire (Default)
Tuesday, November 3rd, 2009 05:30 pm

I just returned from my polling place. I feel I could have done a better job of being aware of local issues earlier and taking opportunities to discuss the candidates with the small number of people I know who'd be voting on the same tickets and gotten a better sense of the relative merits of the candidates. I did find the relevant debates for the local community access TV station and listen to them, however, and formed an opinion. It helped that for one position there were two candidates, one of whom came across as a single-issue candidate with a stance I was dubious about.

But what I really want to talk about is the voting process. I forget if I mentioned this last year, but it bears repeating: my Ward makes voting really simple and straightforward, in a way that gives me good confidence in the accuracy of the machine-tabulated results, and in a way that leaves a strong paper-trail which would be simple and straightforward to count manually should it be necessary.

You walk into the polling place. A person asks you for your address and name, locates it in the check-in book, and marks you as having entered. You can see all of this. You are handed a ballot in a "privacy sleeve".

You then walk to an empty booth, which is basically a table with walls dividing it into four parts, which you stand at while filling out your ballot. There is a black felt-tip pen there. You slide the ballot out of its sleeve, mark it with the marker, and slide it back into the sleeve.

To elaborate, marking the ballot consists of drawing a dark line from the tail to the head of the arrow pointing at the name of the candidate you wish to vote for. That's it. Using instruments [pen and paper] that most Americans are reasonably proficient in, in a straightforward way. If you want to see more about how that works, the ballot can, at least at present, be seen here. They've made it pretty hard to vote for the wrong person, and it seems to me that ambiguous ballots would be fairly rare. There are even clear instructions with examples provided at the top of the ballot.

Then you walk over to the exit area. You tell the person there your address and name, and they mark you in their book, just like when you came in. Then you walk over to the machine. It has a little green light showing it's ready, and a prominently displayed number which is presumably the count of ballots it has accepted. You feed your ballot out of the privacy sleeve and into the machine using the slot which runs most of the length of the sleeve. This is probably the most difficult part of the process, and I have to take on faith that they have people reasonably trained to assist without violating privacy if somebody needs help. It should be pretty doable. The slot doesn't line up with the arrows. The machine feeds in your ballot, makes a little noise, and another light lights up and you can see the counter increase. You're done.

Some highlights of the system:

  • You mark the ballot directly, and can thus see that it is what you intend.
  • A machine counts the votes, reducing needed manpower and potential for human error.
  • There is a clear paper trail should a recount be called for.
  • You don't need multiple computers to allow multiple people to fill out their ballots at the same time.
  • Privacy can be readily offered without interfering with the effectiveness of the system [if you wanted more private booths fr marking the ballot, they could certainly be provided; ditto when you're feeding your single ballot into the machine].

I've heard tell of electronic voting machines with touch screens which silently accept input. I'd like to say, for the record, this is terrible design. I personally have a lot of trouble with touchscreen input for some mysterious reason presumably related to my skin chemistry. I also have very steady hands. But I would not trust that the input a touchscreen had accepted would be what I had intended: anything like this must have a feature which makes it clear to the user what input it received, not just that it received valid input. This is true for anything using a touchscreen for input.

The system we use here in Somerville Ward 6 might not be the best one out there, I don't know, but it's the best one I've ever personally used, and it at least passes basic tests of not totally sucking. Whoever was on that search committee, good work.

marcmagus: Me playing cribbage in regency attire (Default)
Wednesday, October 14th, 2009 05:56 pm

Broke my own friends page.

NTS: In Markdown, unindented asterisks produce unordered lists; anything indented by 4+ spaces is a preformatted code block.

marcmagus: Me playing cribbage in regency attire (Default)
Wednesday, October 14th, 2009 05:50 pm

I need to learn that:

  • Manual labor takes me longer than it used to/than I think it should, because I'm likely to work slower due to hand pain.
  • A simple task like moving the thermostat through to the other side of the wall will leave me in frustrating amounts of pain, and also leave me feeling to exhausted to do anything but take an immediate nap.

[livejournal.com profile] gyges_kant, I'm still planning to come gaming tonight, but if I don't show, know it's because I wiped myself out making it so my room can be heated independently of the rest of the apartment.

marcmagus: Me playing cribbage in regency attire (Default)
Monday, August 10th, 2009 02:17 pm

I want a new drink refrigerator, to replace the old 18" cube fridge I had in college we've been using as one. I've taken some measurements, and now I know what I'm looking for.

  • It must be no bigger than 18"x18"x24" to fit in the available space.
  • It should not have an integrated ice cube tray freezer section; this wastes space, and the function will be filled by the real freezer.
  • The door should have a rack sufficient to hold 4 metric fifth bottles of the standard dimensions. [750 mL wine bottles]
  • The body should consist of shelves extending straight back as far as the working innards of the refrigerator allow. Ideally, they should be configurable, but one shelf stuck right in the middle would do the trick nicely. There should be plenty of room to accommodate 12 oz bottles [or cans] standing upright and to remove them without too much difficulty. Even at only 18" high, a single unobstructed shelf would accommodate this perfectly, so it should be doable.
  • It should be inexpensive. I may or may not have a use for it beyond about 9 months from now, I don't have a ton of funds, and I don't know if I could get my housemates to chip in on the cost.
  • It should be at least as energy efficient as the current model.

Obviously some of the shoulds may contradict one another.

The goal here is to help my housemates get their beer off the floor (and out of the main refrigerator, which we've largely succeeded in), give us some space to keep some wine chilled, and let me chill my sake. The current solution didn't work as well as I'd hoped for this.

Now that I've spec'ed it out, anybody have any suggestions for how I go about searching for and acquiring such a thing?

marcmagus: (regexp)
Wednesday, July 22nd, 2009 01:43 pm

I just had an annoying amount of difficulty doing an emerge -avtuND world.

The reason? I'm an idiot.

Note to self, and other Gentoo users: Never add anything to /etc/portage/package.unmask; it will come back to bite you later.

This is a slight lie: it's appropriate to add games-roguelike/nethack for manual unmasking. But in general, if you think this is the correct solution to your problem, you're probably wrong; think two more times.

Also, I'll point out that running ~arch can be viral: trying to run the ~arch version of net-www/mozilla-firefox, for example, results in about a dozen packages having to be added to package.keywords. This is a giant pain in the ass.

Question: is there a tool which will helpfully add a package to package.keywords and helpfully recursively add dependencies as necessary until the package will be compiled? Doing it by hand is really tedious, especially because emerge will only tell you the first package which is going to cause a problem, not all of them, so you can't even get a list. Meh.

Sometimes Gentoo is a right PITA. Also, I'm worried that tuomov may be right about the direction Linux is going, though I can't believe he's right about the solution. I think what he's putting up with by switching to Windows is worse than what I'm putting up with by sticking to Linux, which I guess shows we have different priorities despite generally agreeing about what sucks.

marcmagus: Me playing cribbage in regency attire (Default)
Friday, July 3rd, 2009 10:49 pm

I own a pretty decent set of Henckel's International knives (high end of one brother imprint). Not having yet had an opportunity to borrow really high end knives from anybody, I suspect they're the best knives I've ever used, and they're certainly the best I've ever owned or had regular access to. So I try to take good care of them. I hone them occasionally, I don't sharpen them with a home sharpener, I make sure to only cut on wood or cutting-board plastic, and a knife is either clean, dry, and in the block, or is currently in use.

Because the knives are good and pretty expensive, and I don't want to have to worry about how other people might be handling them, I have a standing request with my housemates that nobody use my knives, and I keep them in their own block in a somewhat remote part of the kitchen to make that less burdensome to other people (there are house knives, kept on a convenient magnet near the stove, with a wall-mounted manual sharpener nearby).

I just went into the kitchen to discover my chef's knife sitting in the sink with a cutting board [a nice wood cutting board of mine, and that's a separate but related rant, actually] and a prep bowl filled with whatever was in there and water.

I'm not pissed yet, because I don't really get pissed these days, but . . . seriously? You [allow your friends to] use my knife after I've explicitly asked you not to, and you [allow your friends to] leave it lying around dirty and wet? Do you simply completely lack any respect for others' property?

It's bad enough that it was left sitting in the sink, but should I be worrying that when I'm not around somebody is sharpening them, putting them through the dishwasher, or even cutting on glass? I mean, seriously, a complete stranger is using my good tools when I'm not looking; I don't actually know what they're doing to them.

[Edit: Of course, it could always be a simple miscommunication where somebody didn't get the memo, and I could be overreacting.]