HNHacker News
TopNewBestAskShowJobs

luckydude

3,428 karma · joined December 2, 2009

lm at mcvoy.com (Larry McVoy)

BitKeeper guy, lmbench guy, L programming language guy.

submissionscomments
luckydude··on Why SQLite Does Not Use Git
A thought not universally shared. Intel was our biggest customer and when they saw the quality of the breadcrumbs produced by our gui check in tool vs the command line checkins they were smart enough to push hard that everyone used the guis.

I get why, as a dev, you want git commit -m'Fixed bug' but as the debugger guy, the reviewer gui, anyone who reads the code, that's a horrible thing to do to those readers.

Who, if you wait long enough, will be you. And I'll laugh my ass off at all the lazy committers who really could use more breadcrumbs when they have to debug their code later. Been there, done that, I haven't worked with people that lazy in decades.

edit: since HN won't let me extend the thread, let me reply to the comment below because BK does do something special.

The GUI for checkins presents you with a list of files, a place to type comments, and a big pane that shows the diffs. You type in comments for the first file, go to the next, type in comments (yes, there is a way to say use the previous comments). As you move from file to file, the bottom pane shows the diffs for that file so you can see what changed in that file.

The special sauce, that Git most definitely does not have, is when you get to the last file, which in BK is the ChangeSet file, this is where you would type the commit message. What are the diffs? There aren't any so we stuff all the comments you just typed on individual files. What does that do? Well, on the files you are usually typing in details of how you did this or that, when you get to all of those comments, you naturally uplevel and type in why you were doing all that.

It dramatically increases the usefulness of commit messages. That's why Intel pretty much mandated the use of the gui checkin vs the command line checkin.

luckydude··on Why SQLite Does Not Use Git
We took too long to open source it, people didn't like it being closed source and used for the Linux kernel. RMS was hugely butthurt that we had the best system and all open source had was CVS and SVN.

Whatever, it paid the bills nicely for almost 20 years.

luckydude··on Why SQLite Does Not Use Git
OK, enjoy Git then.

Your claim about merging is false though, demonstrably. Picking a repo gca when you could have used a much closer file gca is better. BK does that and automerges, correctly, more frequently and is way way faster than Git.

I've written two source management systems. I'm confident in my knowledge. Arguing with some random dude who thinks he knows more than me is not really fun. So go enjoy Git. Lots of people are too busy/whatever to know what they are missing, maybe that's you. It's not me, I kinda like my audit trail to be accurate.

Even Linus admitted to me in my kitchen that Git's audit trail is lossy. But go enjoy Git, I'm glad it works for you. Knock yourself out.

luckydude··on Why SQLite Does Not Use Git
A version control system is an accurate audit trail of everything that has happened in the repository. Every create, delete, rename, every rwx mode change, every content change.

In BitKeeper files work like they do in Unix, there is a (globally) unique name for each file object. Where the object lives in the repository is an attribute of that object, as are the contents, the permissions, who has changed etc.

Here's a super common workflow that's easy in BitKeeper and miserable in Git. I'm debugging an assert. I want to see who added the assert. I pop into the gui that shows me the per file graph and contents, search for the assert, hover over the rev and see that it was done a long time ago. I look in the area above the assert and I see a recent change, hover over that, see the comments and go "hmm, maybe this". Double click that line and I pop into a different gui that shows me the whole commit that contains that suspect line.

Note that because I have a graph per file, I have checkin comments per file. More work for you poor committers but a godsend for us debuggers. More breadcrumbs are more better.

In Git, less breadcrumbs, single commit message. Git wants to go from the rev to the commit, it's miserable to look around in a file and then go backwards to the commit.

When I was supporting BitKeeper our average response time to bug report or a crash report was 25 minute. 24x7. The only reason it was that long was because we were all in North America so there was a window where we were all asleep. Response time 6am-6pm PST was typically under 5 minutes. And I credit the fact that the tool accurately recorded everything and you could find the history really easily.

Oh, and it didn't slow down as the repo got big. Git is fine in little repos but it sucks pretty hard in big ones. Sucks even worse if you are on NFS. I can dig up benchmarks, we built up a synthetic 4M file repo and ran a bunch of tests on it (it was a modified version of the facebook repo builder, the facebook one had some stuff in it that made Git look incredibly bad, we looked at that and decided that wasn't real world or fair, we took that part out).

luckydude··on Backpage Founder's 93 Charges Lack Actual Sex-Trafficking Claims
I read some article that claimed that the sex workers are really against the new laws. If I'm to believe the article, there are apparently a bunch of sex workers who weren't forced into the sex trade by some evil person (I think most do it because it is the "easiest" path to making decent money). These workers used craigslist and backpage to have clients contact them and then there is some way they screen the clients (is luckydude some creep or just some normal schmoo who wants his ashes hauled? They network and talk to each other about clients somehow).

Now with the internet removed as an easy way to screen these workers are claiming they'll have to work the streets or work with pimps which is far worse.

I hadn't really thought about that but I can see it. So perhaps these new laws are not so great. Who would have thought our awesome congress would do that?

luckydude··on Backpage Founder's 93 Charges Lack Actual Sex-Trafficking Claims
I emailed Craig about that and they are gone now.
luckydude··on My experience with off-shoring teams and what went wrong
I think there is some loyalty. As an example, my younger son is looking for his first job, I'm gonna see if the local grocery store will hire him, but I talked to him and said "Look Dylan, if you get a job there then you have to stick with it. They are going to spend time to train you, that's an investment, you need to stick with it even if you get bored."

If US engineers bounced from job to job as much as the out-sourcing guys seem to it would be a red flag. I don't know what the norm is today, but back when I was hiring, people that didn't stick it out for at least a year at each company (and had no explanation, things happen, I'd allow for that), were considered less desirable than someone who stuck it out for longer.

But in general, I agree with your point that you gotta pay if you want quality people. Good people are expensive. The lure of out-sourcing is a pipedream so far as I can tell.

luckydude··on Facebook Employees Are Quitting or Switching Departments Over Ethical Concerns
I think I tested around 30 (apparently still insecure enough back then to care, these days I care what my dogs think more than I care what people think :)
luckydude··on Why SQLite Does Not Use Git
I've built two source management systems (NSElite, internal to Sun, and bitkeeper, now open source at bitkeeper.org).

Calling Git sane just makes it clear that you haven't used a sane source management system.

Git has no file object, it versions the repo, not files. There is one graph for all files, the repo graph. So the common ancester for a 3 way diff is the repo GCA, which could very well be miles away from the file GCA if you have a graph per file (like BitKeeper does).

No file object means no create event recorded, no rename event recorded, no delete event recorded. If you ask for the diffs on "src/foo.c" all Git can do is look at each commit and see if "src/foo.c" was modified in that commit. That's insanely slow in a big repo. And it completely ignores the fact that src/foo.c got moved to src/libc/foo.c years ago and there is a different src/foo.c that is completely unrelated. There is an option to try and intuit the renames when you are spitting out diffs but noone uses that because it's even more insanely slow.

Git is basically a tarball server. Calling that a source management system is an enormous stretch. Calling it a sane and powerful source control tool is just not supported by the facts, calling "the most ..." is laughable.

Yeah, I get it, Git won. You all lost out on "the most sane and powerful" as a result. Which sort of doesn't matter since everyone thinks GitHub is source management.

luckydude··on My experience with off-shoring teams and what went wrong
BitKeeper guy here (predecessor to Git and Hg). If you think about the capabilities of a distributed source management system you can quickly see it's an enabler for out-sourcing.

As a commercial DSCM provider, we got to watch a lot of out-sourcing attempts.

In 18 years of doing that, I've only seen one really successful one. Which was a Portland based dev team and a Singapore based test team. Every day, the dev team would check in their stuff (or make it available in a test tree) and the Singapore team would wake up, pull it, test it, document the failures, the Portland team would wake up fix and dev some more, lather, rinse, repeat.

As I recall, the Singapore team was out-sourced, different company, but they had a stable group of people dedicated to working with the Portland guys. It was more like two teams working on the same project.

I've seen countless efforts based on "I can get 3 guys in India for what I have to pay one junior guy here" fail. The time difference makes communication hard, you have to send someone to manage the India guys and communicate what you want, there is zero loyalty, if a better gig comes along all the time you put into onboarding those guys is lost, the quality of the code is pretty crappy, etc.

Pretty quickly it becomes not worth it.

luckydude··on Facebook Employees Are Quitting or Switching Departments Over Ethical Concerns
Unless I'm mistaken, I tested out at 140 a long time ago.

There is no friggin way I'm remotely as intelligent as Feynman was so there goes any faith in IQ tests being meaningful. Most of the people who have worked for me are demonstrably smarter than me and none of them are close to Feynman. Smart people but not at his level IMO.

RIP IQ tests :)

luckydude··on Want to Be Happy? Think Like an Old Person (2017)
My personal belief is hang with kids. I'm 56 and I dread the day that my kids are out of the house (and it's coming).

My kid keep me young, keep me learning. I used to coach high school hockey, that was a blast.

Want to be happy? Don't get old. Want to not get old? Hang with kids.

There was some interview with a tailor in HK I think, he was pushing 100 and still working. He credited kids, he said they kept him young and interested.

luckydude··on Portland Anarchist Road Care Fixes Potholes Anonymously (2017)
That's great news, I'll pass that on to the county. Thank you!
luckydude··on The real threat to Facebook is the Kool-Aid turning sour
I'm pretty happy with Linux. Yeah, I wish it were better but it mostly just works for me.

Commercial Unix is as dead as commercial compilers. Which is to say not completely dead, but pretty darn close. Trying to make money off of an OS, a compiler, a source management system is a non-starter these days. Yeah, Github is a thing but that's not source management (even though everyone thinks it is), that's a UI and a very very constrained work flow.

luckydude··on Portland Anarchist Road Care Fixes Potholes Anonymously (2017)
I organized a crew to do this in the Santa Cruz mountains last year. I did it after losing two tires in the same car to the same pothole. That gets expensive.

I tried to work with the county to make it official, the idea was to form a group of trained, careful people that would be to public works what the volunteer fire department is to Cal-Fire. Then we could be insured, etc.

The county wanted no part of it even though their budget, at the time, was about $1M/year for 600 miles of roads (that's pathetic and the roads show it. The road I'm on hasn't been paved or screened for decades and it's falling apart, just like many others).

I was hoping we could pioneer a model that other states/counties could emulate. Still am but don't know how to get there. We can bring way more people to the table than the county can. For example, they fill potholes with 2 people, one guy driving a pickup, one guy on the back shoveling patch. We did that (as you'll see below) with 7 people and two trucks (my flatbed and my 1/2 ton). Our protocol on busy roads was to park the flatbed facing into traffic, lights on, flashers on, safety LED flashers up high on, then cone off a buffer behind and in front, put two people with slow/stop signs just inside each cone zone, a person at the middle that directs traffic (everyone had radios on them), a driver for the flatbed (used to tamp in the patch) and shoveler. That's 7 people where the county had 2. We were dramatically safer. We could do that because we all volunteered.

That's a lot of man power for free, it's less risky, it still blows my mind that the county can't get behind that. Someone decided it made them look bad. Personally, I think not using that man power makes them look bad but what do I know?

https://www.mercurynews.com/2017/03/17/mountain-vigilantes-t...

luckydude··on The real threat to Facebook is the Kool-Aid turning sour
Zander certainly didn't help, the whole "planets" didn't help, but for me it was definitely Solaris. It took the wind out of my sails and I eventually left.

I looked at Solaris recently and it still sucks. Sad to see all that work come to naught but it happens.

luckydude··on Surgeons urge people to throw out bristle BBQ brushes (2016)
Just a chunk of wood works quite well. If you want to get fancy you can use a file to round out some grooves but that will happen naturally.

https://www.amazon.com/Scraper-Natural-Barbecue-Non-bristles...

luckydude··on Quit Social Media, Your Career May Depend on It (2016)
You manage what? I'd like to know because this just seems like a young person who wants to do well but hasn't been around the block.
luckydude··on Quit Social Media, Your Career May Depend on It (2016)
Man, so much of what seems defensive pushback, I don't get it.

Here's the deal. I ran a small company for almost 2 decades in the valley. Everyone worked with everyone else very closely. One bad apple can screw up the whole company, make everyone miserable. So I used every chunk of info I could get to make sure that a potential hire was gonna be a fit. That's just being prudent.

If you are posting on mailing lists about how you screwed your boss out of a pile of work by outsourcing it to some dude in India, yeah, not a great fit. If you are posting on facebook how you partied all week on your companies' dime while they thought you were working, yeah, not so much. Etc.

If you are in to Harley-Davidson motorcycles (which I hate), well, not gonna hold that against you, though I'll let you ride my r1200gs (every Harley guy who has taken me up on that walks away looking at that GS like that's the bike he should have gotten).

I'm somewhat surprised that people question a hiring manager looking around. If you were building a team that had to work together are you seriously telling me you wouldn't look? I'd like to hear that from anyone who has successfully built multiple teams and then have them explain why they wouldn't look.

luckydude··on Quit Social Media, Your Career May Depend on It (2016)
Resume screen first. Phone screen next. In person screen next though I may well have done the google search before the in person thing if I'm paying to fly them out.

And it's worth stating that for me, social media is any sort of web foot print I can find with google (or these days duckduckgo).

We did the same thing with prospective customers. You google them and see if you find a bunch of people complaining about them. Yes? Work less hard on that sale. No, everyone loves them? Work more hard on that sale.

luckydude··on Quit Social Media, Your Career May Depend on It (2016)
This guy/gal gets it. That's exactly what I was trying to say and apparently failed at saying.
luckydude··on Quit Social Media, Your Career May Depend on It (2016)
I think I failed to communicate.

Let's try a different version and call it the "no assholes rule".

If I hired someone who was a top 1% engineer but was a complete asshole to work with, that's someone who would fail the asshole test. It's extremely unlikely I'd have hired that person, we built a team of people who were both good at what they did and friendly with each other.

The grocery store test I apparently completely screwed up in getting across what I meant. Someone who failed the asshole test would fail the grocery store test. What the grocery store test is trying to get across is how you would react when you saw a co-worker outside of work. Do you like them enough that you'd go say hi, maybe chat a little before moving on with your shopping? Or do you dislike them enough that you'd try and avoid them?

If applied in the right way, it makes you think about the person in a broader sense than just their coding skills. If you like how they code and you would like to chat with them outside of work, that's a pretty strong indicator, in my experience, that you'll bond as a team.

I'm not sure how I failed so badly at explaining that, whatever. The point is that building a team is not just about individual skills, it's also about how the team gets along. A soccer player recently was trying to make the same point when he said "you can buy any player you want, you can't buy a team".

tl;dr: building a team is not just about skill, it's also about chemistry.

luckydude··on Quit Social Media, Your Career May Depend on It (2016)
I'm pretty much retired but I was an engineer and then a manager and then a CEO/VP engineering for ~20 years. If you think I'm not going to google you before I offered you a job you are mistaken. Of course I'm going to do that.

Think of it this way. One of the questions we asked ourselves about every hire is "would they pass the grocery store test?" Which is: if we saw that person in the store would we go chat with them, because we thought that would be fun, or would we cringe and try and hide from them. It's a good test, work is not just cut and dried, there is a social aspect of work even if it is just you'd say hi outside of work.

Your social media gives me a glimpse into the rest of your life and you'd better believe that is interesting info to a prospective employer.

luckydude··on The Oforth Programming Language
I tried to like lisp, it just doesn't fit with my brain, dunno why. I tried to like emacs and it doesn't fit either. I'm a C/sh/vi sort of guy. I like troff, don't care for LaTex. Some stuff just works better for me, working in C comes very naturally to me, working in lisp was always a struggle.

I think if I had done more compiler work I'd like lisp better, I've been told that making an AST in lisp is trivial and it is work in C.

I get your point about small and knowable, I love stuff like that.

luckydude··on The Oforth Programming Language
I do wonder why someone at HN decided that to stomp on the guy who was asking about forth as bootloader. Didn't seem weird at all to me. HN? Care to explain? Did I miss something?
luckydude··on The Oforth Programming Language
[I'm sticking this here because there was a dude who said this was a good reply and I tried to reply to him and HN say s his post was deleted. I don't know why, his post seemed pretty reasonable to me, he was asking if forth was a good boot loader. Shrug.]

I don't for a minute think that forth is the best answer, it's an awful answer. Even lisp, which I hate with a passion, would be a better answer because more people have experience in lisp than forth.

Forth is just less shitty than what Intel came up with, I think it was part of EFI, it's amazingly bad. I've designed a few programming languages and I'm not good at it, but holy crap, I could be drunk and come up with a better answer than Intel did. Forth is just a crappy language but it's less crappy than what Intel did.

The idea that Forth is somehow special for boot loaders is nuts. There is nothing, that I know of, that makes forth somehow magical for that.

What you want for the bootloader, and for the debugger that you drop into when there is a panic, is something like C but interpreted. You want to be able to walk a linked list of page table structures. And to its credit, Sun's forth could do that. It's sort of twisted to think it could but it did, there were forth words that did all sorts of kernel magic.

I think that the magic of forth was that it was tiny, back 30 years ago you didn't want to have a lot of storage for your debugger. That's not the case today, if someone made the case that they could make things better, here you go, here's a gig of storage. That's a little crazy but still. Forth was cool when a meg of storage was a crazy amount.

We can do better. Intel pushed us backwards, Forth would be a step forwards, but man, I'd take python or Tcl (because then I'd get my pet language L, http://little-lang.org) or even perl as a better boot language.

Froth has no special boot sauce in my opinion. It was just small.

luckydude··on The Oforth Programming Language
I'm a forth programmer, I've implemented an editor in forth, a more(1) clone in forth, a grep(1) in forth and I did a bunch of stuff I've forgotten in forth for the geophysics department at UW Madison.

I HATE forth. It's a miserable language, I just hate it.

And then I went to Sun and the boot prom language was forth, still hated it.

Then I got to PCs. The BIOS had no language and then Intel did whatever garbage they did and I was like please, just give me Forth. It's not what I'd do for debugging a panic but I could make it work. The Intel stuff was way worse.

I suspect that Mitch priced himself out, otherwise we'd all be using Forth as the boot language, I dunno what happened. But if you had asked me 20 years ago would I be saying anything positive about forth I would have kicked you in the XXXs. Yet here I am wishing that forth was how we dealt with a panic. We'd all be happier.

luckydude··on How Facebook Helps Shady Advertisers Pollute the Internet
Yeah, I'm not a facebook fan, I don't use it because it always felt sort of creepy. But fleecing poor people through AI like technology seems worse than creepy.

They'll get regulated at some point, assuming the politicians are awake enough to understand what is going (that's not at all clear). At least I hope they do.

luckydude··on What questions should I ask the engineering team I'm going to manage?
When I was at Sun John Entemann was an engineer who got promoted to manager. We all laughed like crazy. John? Really?

And then he walked into each of our offices and said "what do you need? I'll get it"

And he was suddenly our hero, our favorite manager.

So do that. Help them.

luckydude··on C for All
Hmm, we took a different approach, here's my C-like dialect (built on Tcl's byte codes so it co-exists with Tcl code. And yes, I know, but we needed Tk so were stuck with Tcl).

http://little-lang.org

Stuff that I'd like to C in an evolved C:

regexp engine as part of the language so you can do

    while (buf = <>) if (buf =~ /some regexp/) puts(buf);
<> and <FD> from perl, just handy.

Lists as a built in, with any element type and builtins like push, pop, shift, unshift, etc. Again, more perl goodness without all the @'s and $'s.

${expr} interpolation inside strings. Like shell, and it's handy.

At this point I'm just typing in the L language docs, so most of the stuff here:

http://www.little-lang.org/little.html

BTW - the logo for the language is a tip of the hat to the things that inspired it: the Tcl feather logo, the Perl camel logo, and "C" all bunched together. I'm very fond of that logo but not sure that anyone but me gets it.

← PreviousPage 3 of 29Next →