Older blog entries for jmg (starting at number 58)

sergent:
There is the freely available MPEG-1 library based on code from Berkley that will return a frame for decoding. I wrote a FreeBSD console app to view MPEG-1 video, but because it actually returns a full frame instead of the differences (kinda hard to do), it's a bit more complex, but for RTP data, you probably don't need 30/24fps speed. It was very simple to write. Should do the job for you.

gstein:

Digest Auth doesn't cut it as it still requires a clear password sent to the otherside. As for the others, there isn't any rfc that tells how these are standarized. Sure you can write your own, but then that's your own. So, still no strong auth.

As for the design document, it should include all features you will want to include in the product and not include any implementation details. Implementation is later, the design document is to describe what you are going to do, and what features you are going to include so that when you start implementing it, you don't end up doing extra work for what isn't in the design document, or you forget to include features. SVN's design doc is more of a basic implementation documentation as it includes this is how we are going to do it.

If you had know/pointed me to future.texi earlier in the discussion, less misunderstanding would of happened, but at least I did finally find that you guys are planning on it (sounds like you didn't even know about it before), but haven't included it as part of your design.

As for it being Open Source, that's just spiffy, but to many people think of open source is the end all solution. What really open source have shown is that code sharing between groups/orginizations is a good thing. Do you think FreeBSD would be so successful if it wasn't for the GNU gcc compiler, nvi and other projects that are out there? It all comes down to being able to share code. People reimplement code all the time including stupid mistakes such as skiplists. If everyone wrote their own, it'd be a waste of time.

With Inter-repository communication and public/private key authentication, it becomes easy for people to share code and follow bug fixes that have happened. Imagine being able to run a simple command sc update and suddenly have all of the latest code for the 15 different libraries your product has. Now that be a 21st century feature. This would also be equally applicable to commerical ventures as free ones. It would allow a company to sell certain releases of the library and allow them to fetch patches and all those goodies.

So, when will Subversion 1.0 be released? Any general idea? This year? 2001? 2002? Will Inter-repository communication make it up to the design document so it's not one of those well, if we have time, we'll get around to it, but we don't really care about it so it isn't going to be part of the project unless someone contributes code to do it? Thanks for the information, and I do hope that the project goes well.

thom:
Sounds like your experience was pretty similar to mine while I was in Melbourne, Australia. Danced with this girl for a while, get her mobile, run into her a couple days later, and I realize that she's a lesbian.

mfleming:
That Happy Hacking keyboard looks cool. Just the type of thing I need. Though I'm not sure how well it'd balance on my lap because I'm used to having the lop sided keyboard. Plus it's a bit expensive for being so small. If it was even $30, I'd understand, but it being 5 times more expensive than the inexpensive Mitsumi keyboards I've grown used to, I don't think it's worth it. I'm also not so sure about having no lip on the bottom side of the keyboard. When I get my hands rested there, I need that lip to keep my hands comfortable. Of course, they teach keyboarding in schools so that you end up with RSI instead of preventing it. They always have the keyboard to high, and your wrists in the worse possitions.

Hmmm, looking at my hand possitions, I think that if you don't have your pointer finger near straight, you probably aren't typing correctly. It may seem strange, but you'll keep your hand lined up with your arm so that you're wrists are straight instead of bent like they teach you.

gstein:
Looks like you guys need to post the subversion/doc/future.texi to your web page. This actually includes a small part of what I consider a 21st century revision control system: Inter-Repository Communication. The short description you provide is good, but doesn't deal with the strong authentication required, and doesn't mention inter-project management. Oh well, I'll see what I can whip up. Sure it ain't going to be pretty, but I'm doing it more for a proof of concept type thing. If it turns into a project, so be it. It's just something that I've wanted for a year or two after some people started sending me bug fixed to my libraries that I've done.

Guess I'll let the issue drop since you're so quiet on it.

gstein:
Looks like you missed my diary entry where I explain exactly what I want out of a version control software. Also, all those buzz words you state is all spiffy, but they are just that. Sure, you're using all the latest software to do your implementation, but are you actually doing something new? Nope, P4's already been there and done all of what you mentioned in the design doc. Sure, it's not using stuff like http for client/server communications or anything like that, but it's already done all this work.

I was going to see if DAV actually used strong authentication for client authorization, and possible ACLs on file read/write/execute permissions. I'm pretty sure it supports ACL, but I'm not sure it supports strong authentication (RSA or similar) for clients. I would of looked, but WebDAV doesn't provide any search features (or if they do, they burry it in their site), and trying to wade through their faq and other stuff isn't my ideal way of spending my Saturday.

Dare I say that Subversion is using HTTP which is a 20th century protocol? (Though in my implementation, I was going to look at using a modified HTTP to support RSA client authentication.) If you don't get that comment as a joke, you need to go on a hiatus like I did two and a half years ago.

Oh, did you actually read the design doc? Or did you sasy, hmm, it's only a couple pages, must not be worth reading.

Also, minor comments about your design doc. It overflows the width of my browser, so I have to scroll to the side to be able to read it (and the nav bar on the side is now off the screen). Did you write the doc after you started the project? The reason I ask is that you include exactly how you implement tree deltas, which you had to start your implementation before you wrote that section. If not, why did you update it to include that? It just made for a whole section that I skipped over.

Ok, finally got the design doc for the project posted. Hopefully this will explain what I'm looking at doing better. What I'd like to see in freesoftware is where a person can make an external library/program a "part" of their source tree and automaticly have a brach their work. When the author updates the library/program, the consumer can then integrate the changes they see fit. This will also make it easier to submit patches back to the original author if part of the commit process you had a "Notify author of commit (Y/n)?" question.

I was planning on doing it in Python. I've receintly grown to really like python on how it handles things. I like how you can pass handle code as if they were normal objects. A class really isn't more than a spiffy dictionary. Oh well, we'll see how things progress. Biggest problem with python is that it doesn't come with a good multiprocess db method. There is ZODB (or something similar), but the last time I tried to get the running on my server, it crashed my main server.

Jade+docbook produces nice HTML output, but if you try to use TeX to produce ps/pdf output good luck. I know people use it to produce them, but TeX is bloated and poorly documented. Sure you need to redump your config file, but no where is it documented how you do that. I've scoured the info files for help. Heck, I can't even get it to find the jadetex isoents.tex file and have to copy it into the current directory. I've played around with TEXINPUTS and still no luck.

I think my main server has some issues. Either that or larn has some data corruption bugs in it. I've been playing this version of larn for years (I remeber playing it as a MS-DOS port back in the 80's). I've never had really any issues, but in the past few days, I've had it segfault on me, and then when I load the checkpointed game, It'll be messed up. It is fun to have a belt of stricking +728 and a leather armor +700. Then of course find a dagger +7xx and sell it for 500k gold. Makes completing the game a bit easier, but it detects "inconsistancies" like this and won't put you on the scoreboard. At least it prevents me from having to pay taxes on 700k gold. Oh, I am up to difficulty 4, which is getting to be a real bitch. I haven't been able to get past level 5 in a fair game since I've started.

Hmmm, probably should stop rambling and get some sleep. That way I can actually go to class and a weapons seminare for martial arts. I wanna get a start on the staff, but they don't start teaching the staff till you're an orange (I'm only a yellow). The weapons seminare will give me that chance.

One more game of larn before bed won't do any harm. Assuming I can keep it to one game.

cwinters:
Another person sent me email about <project>Subversion</project> too. It looks like it just fixes misfeatures of CVS instead of actually being a 21st (oh my god, a buzz word) source control program. It's still based on the NIH is bad idea, among other ideas. I'm going to post my design doc that I've writen so far so that other people will understand what I would like to see in a version control system. If you've use P4, something like P4, but on a global instead of per repository scale.

I also finally realized that I'd been thinking of doing my version control system in the wrong way. I was thinking of doing it the CVS way, which is storing the files seperately, but that is completely wrong. Now I should be able to make headway in starting the project.

Just checked out CVShome and all projects should have a design document so that you know what the project want to encompass. A project that is this large should have one.

Arg! I hate logging into a machine to do something, and by the time you get to the prompt, you've forgotten what you were going to do! Hmmm, I think it might of been writing a cgi to locate my on-line broadcast of my music, but I'm not sure.

I decided to learn docbook to write the design document which is cool. I have the html production working properly, but I haven't gotten tex to generate ps or pdf output yet.

Ack! gotta go home! I'll edit this later tonight.

FreeBSD's install needs a ton of help. I tried to use sysinstall (yeh, I'm smart enough not to need it) to install from da0 onto a new disk, ad0, but it just installed over the existing system. Also, as of 4.0-R and 4.1-R (haven't tried with 4.1.1-R, you can't install on a Tekram 390F card. The included sym device driver is broken with these cards. Guess that's why there's an amd device driver, though I haven't tried it yet. Had to drop back to 3.4-R on this machine (don't have 3.5-R handy) just to get it installed. Then 3.4-R installer was broken that caused it to segfault when selecting the distribution options on a custom install. This is really making me think of rewriting FreeBSD's install. It's a joke that this can't work better. I also wonder if the boot blocks in 3.4-R suffer from the same problems that's noted in the errata of 4.1-R. Guess I really shouldn't complain as I haven't done that much FreeBSD work reciently.

I really think there needs to be a replacement for CVS, I've been thinking about one, and started writing up a paper for the goals of the project. Needs some more fleshing out, but when I come to sit down and think about how to implement it, I get a bit lost. Guess I should go on a walkabout thinking about how to do it. The hard part is being able to cordinate merging diffs between three branches. I may just break down and do a really braindead algo at first and hope someone improves afterward. Pretty sure I'll do it in python intialy. So much quicker, but I'm just not motivated.

I am looking at possibly doing some outside consulting work in the BSD kernel/VFS/file system/device driver area part of things. It'll be all the way in Condon(?), Mass. If I do it, it'll definately be telecomute as I'm not going to move to Mass for a 6+ month contract. Should be interesting, I feel a bit out of my leage as this is my first contract that I'd do on my own in naming the price, but it'll be a good learning experience. I hope the project is interesting that I'd be into working on for 30+ hours/wk.

AArthur:
Just as a hint, if you're going to use qbasic, learn about sub and function. I started (real) programming with qbasic, and have to say that you don't need to use goto's in qbasic. You'll found out that goto's are evil and pretty much should be avoided. If you start using sub/function, I'm sure your prof will be impressed. Now if the prof told you not to use sub/function, then ignore everything he says.

I'm finally back from my trip to Australia. Finally gotten back into work, and gotten the time to be able to write a diary entry for Advogato. Still having some issues with my sleep schedule being messed up, but that shouldn't take to long to fix.

I had written a little bit about bi-directional hyperlinks, but Netscape was kind enough to crash before I had posted it. I don't feel like typing it over, but it'd be a nice feature to have.

Guess I should get back to the daily grind.

uweo: Take a look at FreeBSD's version of ijj-ppp (userland ppp). This should have completely support and be fully documented in the ppp(8) manpage. Look at the section "Supports PPP over TCP and PPP over UDP." I could of sworn that ppp supported encryption, but I guess it doesn't. I guess I was thinking of natd supporting GRE translation for MS-VPN solutions.

Basicly UDP would be better than TCP as you will be able to better use the link. With TCP you have to wait for retransmits if a packet gets lost, but since you're simulating a link, packet loss is acceptable and shouldn't require it to wait for the remote end to say, hey! I didn't get this packet. So, going over UDP will eliminate about RTT delays for all sessions in the case of packet loss.

Hope this helps, I really should finish packing and making sure I get a shuttle and all that fun stuff for my trip to Australia. I'm leaving tonight!! Whee!!

raph and dto: The X Windows system definately needs to be brought up to todays standards. But the design is significantly better than you think. One think that isn't exploited very much is the fact that you can have the X server to YUV instead of RGB. The problem is that many X servers don't support the extension.

Adding transparency shouldn't be hard at all. It's just adding an alpha channel to the window. X already has the windowing layering, so you simply definate how transparent the current window is, and there you go!

What really needs to have happened is to have X grow extensions to support effecient 2D acceleration. One really useful feature would be the ability to create a block of memory that you can modify in your local environment. Then using the pipe, you pass a reference to the memory to the Xserver (or kernel space if we ever get X in there) and then the graphics card adds it to the list of windows to be rendered. This would make effecient MPEG playing really cheap as you simply define a window the YUV encoding, and tell the Xserver to display that window. Then you get all the clipping and YUV to RGB conversion that the video card does. You may have to go backwards where the Xlib gives you a frame buffer, but it still isn't hard.

The real problem is that we haven't seen anybody champion an effort to add modern features to the Xserver. It would also be nice to stick the Xserver in the kernel (yeh, I know some of you will scream fowl), but the performance improvement should be tremendous. Even with modern workstations, you get a nice performance boost if you run the application on one machine (like a 440Mhz Ultra 10) and display it on another machine (like a G3 running MacOS). It simply comes down to the fact that you suddenly have two processors instead of one. One is dedicated to running the application, and the other is dedicated to displaying the results.

X should be brought into the 21st century.

nymia: Don't forget someone still has to write the new compilers and implement the assemblers for new processors. Assembly will never be dead, just few people will have a use for it.

GJF: New Zeland is more 1st world than 3rd world. I thought that 3rd, 2nd and 1st was just a line of econmic developement, but according to Merriam-Webster, 2nd world contries are those associated with Communism. (Darn it, m-w using post instead of get!). After visiting New Zeland earlier this year, the econmic situation is quite nice. I only spent about NZ$300 in cash while I was there as I could use my Visa Check card for almost all of my purcases. This included most meals. Most cash was spent on internet cafe's and transportation.

Uraeus: That only works if you can get ahold of the person you'd like to spend time with. I reciently had to call it quits with a recient (non-romanic) relationship because she just couldn't take any time out of her life to actually maintain some semblense of a relationship. She tells me which weekend would be best for her, and then is to busy to even remeber the correct date, let along call/tell me that she'd be busy that weekend. Constantly fighting a battle isn't worth it, and could possibly be why I haven't felt like doing much computer work the last two years.

Reading the "I Don't Like Your Examples! article raph posted is so true. At least he has the guts to defend his possition and not take the easy way out.

Probably shouldn't of spent so much time on this diary entry. Guess I'm just avoiding have to spend more time documenting the new hardware tool wrapper scheme that I have written for Credence Systems. I did a presentation to the people here in Hillsboro on it, and they like it. I just presented what I have done and they were like, ok, sounds good, can we do this with it? At least I did about double the size of the documentation, but there is so much to document. The documentation will probably end up being larger than all the shell scripts!

I have been thinking about a new revision control system. Really want to make something liker perforce, but behave on a WAN scale, so a developer can "import" my tree for libmime into his, and be able to "branch" the code and submit changes back to me, and be able to integrate any changes/bug fixes that I make.

After a discussion last week about documentation, I have been writing a design spec/paper for it. It really is true that you need to make sure you know exactly the problem you are solving before you start on the project, You just might get side tracked on the way. I was lucky with the hardware tools wrapper project as that one is pretty easy to fit in my head. Though I would of done better (not wasted as many hours) had I done a design document. It was just that I already had a better idea of what the tool environment should look like than my manager, that my manager just finally gave up and let me run with it. Thanks to the people from Racyer Graphics (now at Apple Computer) for inspiring my work. If I hadn't worked with their environment, I would of never been able to design this one and improve upon it.

Hopefully my trip the Australia will help get me back to being more sane. I was about to say caring about work, but why should I? If I want to travel and goof off, that's fine. I don't need to love work, I'm just lucky that I'm in an industry that pays well enough that I can save up to do an international trip in six months or so.

Hmmmm, long enough diary entry? I just had to add something to make it longer, didn't I?

nymia: Regarding your research on various file formats. The .com is simply a binary image that is loaded at 0x100 and jumps there to start execution. The first 0x100 is used for command line and other information. I would recommend you take a look at Ralph Brown's Interrupt List for more information. That was a very usefull place to find data structure for .exe's among others. I have an old printed copy of something very similar from Microsoft Press, but the book is at home. As for a.out and elf, take a look at any unix box for a.out.h and elf.h. FreeBSD has some good man pages on a.out(5) and elf(5).

Last night was interesting. Around 9:30pm the power went out at my apartment. It really sucked as I haven't invested in an UPS. My firewall was up for around 220+ days when the power went out which is impressive considering that other parts of the South Bay (namely Fremont) had massive problems with power outages and brown outs over the past summer. I was also lucky in that I happen to know exactly were my flashlight was under the futon. Made lighting candles easier.

After about a half hour of talking with my neighbors, I decided I might as well do something, so I headed off to a local bar to have a few drinks. They didn't have any Marzen in stock which sucked. But I made it through the night.

I got home and my main server hadn't rebooted because of fsck problems on the file system. I had to do a fsck -y (yeh, I know that is very bad, esspecially when you don't log it) to get things back up and running. I also wasn't sure that my firewall would come back secure, so I made sure that I had turned off my DSL modem before I left. I still don't know, but luckily, I had reciently saved my firewall rules to /etc/firewall.conf, so I just had to reload them. I did have to attach a terminal to my other mini-file server to get that machine up and running. Right now it's a K5-90, but really should be something else. FreeBSD's wdc and the IDE chipset don't like to talk DMA to each other, so I had to disable DMA (which I had done before manually) in order to get it booted. I still haven't added the server file system to fstab because I was originally going to use this hd for test of video capture.

In short, I really need to fix my home network so that it will come back up into a sane state if the power goes out. I'm just really glad I didn't need console access to my firewall, that would of really been anoying.

I'm also excited about going to Australia for a couple weeks. I'm leaving this friday. Hopefully will meet up with Holocaine for a few drinks while I'm in Melbourne. Finally took care of making sure I have a visa for when I arrive. I was nervous when I went to New Zeland because being a US citizen, you don't have to have a visa. You just show up at New Zelands door, and they give you a vistors permit which is good for three months.

I'm going to be taking my digital camera with me on the trip, so I will hopefully to posting photos and diary entries to my Base of Operations while I'm there.

I'm also going to be going up to Hillsboro, OR tomorrow for work. Gotta do a presentation on the hardware tools environment that I've designed to sell the people up there. It shouldn't be to hard, and is somewhat based on the hardware tool environment that I saw at Apple Computer while I was there. This environment is significantly better than Apple's and should be very flexible for the future. It's also extermely easy to wrap a program.

It has been nice keeping my diary up to date.

49 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!