HNHacker News
TopNewBestAskShowJobs

etwigg

153 karma · joined September 11, 2012

I'm building DiffPlug. I'm all about differs and version control.

Go to diffplug.com and use the livechat if you'd like to get in touch.

[ my public key: https://keybase.io/nedtwigg; my proof: https://keybase.io/nedtwigg/sigs/hY3Lg4LQSbqlinCMgUK_4eHErwQ7Y76PbJPyXTq4faU ]

submissionscomments
etwigg··on Clang vs. GCC – code coverage checking
> is there a code review gate that forbids the code coverage figure to go below 80%?

That's one usage pattern.

Here are two others, more focused on individual productivity rather than team standards.

1. Write some code, write a test, run the test. Rather than stepping through the test with a debugger, you enable code coverage and can see the code path instantly. Same idea as a debugger, just faster and less precise. Occasionally a test passes for the wrong reason. Looking at coverage data is a fast way to find out that you didn't quite understand what your test did.

2. Write some code, and write a quickcheck-style test (generate random data, assert that properties hold on the output). Look at the code coverage, and see if the random data is covering all of the code paths. If it is, hurrah, you just built a great test with almost no effort. If the random data isn't triggering some code paths, you can now target your efforts on that unexplored branch.

etwigg··on An obsession with safe spaces is not just bad for education
I agree that college is a chance to experiment and make mistakes. But I hope that they fail in making the changes they're advocating for.

It's good to hear people you disagree with. The students at Yale have been preventing opportunities to hear people they disagree with.

etwigg··on GitHub Desktop is now available
Thanks for the feedback! On the spectrum from "iOS" to "airplane cockpit", I think GitHub is trying to be iPhone, but I think git has enough inherent power (like an aircraft) that you leave a lot of functionality on the table if you constrain yourself to a "no training required" interface. It's certainly something to aspire to, though! If there's anyone out there who thinks they can clean this up, I'm always looking for partners :) Based in SF, open to remote collaboration, contact info in my profile.

The differ / merge resolution story is gonna get a whole lot better real soon.

etwigg··on GitHub Desktop is now available
100% agree! Was hoping to have the full manual done today, but it's not ready yet. Kinda worked out - I'll spend today ducking as the GitHub goliath whooshes over me for HN readership's attention ;-).

The rest of the product's docs are complete and full of screenshots:

https://docs.diffplug.com/1.6.1/ViewerDiffers/TextViewerDiff...

so the git client will be too. This client animates changes to the DAG, so I'm experimenting with animated gifs so that the manual can capture the feel of using it.

etwigg··on GitHub Desktop is now available
Shameless plug: I recently built a new linux GUI git client. The people who use it really like it. Still working on docs to better explain what makes it different. Like GitHub's client, it's more than just a wrapper around the CLI, but unlike GitHub's client it exposes git's full power (tags, cherry-pick, rebase, etc.) If you'd like to try a new linux gui client, give it a spin!

Video in action: https://www.youtube.com/watch?v=X4UQpGk1Ry8

Free download Win/Mac/Linux: https://secure.diffplug.com/versions/1.6.1

etwigg··on Diffoscope: in-depth comparison of files, archives, and directories
I don't think diff will perform well on two 4gb inputs. I agree there should be a modular approach, but I don't think flat text is the best lowest-common-denominator. Your proposal would certainly work for a lot of cases though, and it is very unix-y!
etwigg··on Diffoscope: in-depth comparison of files, archives, and directories
Great idea! That would work well for a lot of stuff, but I don't think it would scale to diffing, say, two 4Gb iso files. Also, some structured content has user-hidden IDs which can help a differ, but they probably wouldn't show up in a "human-readable" representation.
etwigg··on Diffoscope: in-depth comparison of files, archives, and directories
Looks great! Shameless plug: DiffPlug can also diff arbitrarily nested zip/tar/gz, runs on Win/Mac/Linux, and supports text/image/other stuff too. It's closed-source and GUI, but you can control it from the command line, and we're working on an Apache 2.0 API for building the differ plugins.

Open API for differs (totally incomplete, but we've already released some its pre-reqs): https://github.com/diffplug/opendiff

Archives and filesystems that we support: https://docs.diffplug.com/1.6.1/Filesystems/

etwigg··on Show HN: Git for DiffPlug
The software is in pretty early beta. It's a typical pre-order: pay $40 now while it still has bugs, or full-price later (likely $80) when it's cleaned up. There's also a stretch goal to release a big chunk of infrastructure as open source.
etwigg··on Show HN: Guava's missing pieces for Java 8
I think the most useful / interesting part is the generic exceptions and one-liner error handling stuff: https://github.com/diffplug/durian/blob/develop/test/com/dif...
etwigg··on Show HN: Lonenote App - Make handwritten notes to share moments alone
Way cool! The handwriting feature is very well done, and seems like a decent barrier to entry for copycats.

One critique - when I was trying to write letters that required multiple strokes, such as 'i' or 't', oftentimes the screen would scroll away from me as I was trying to do the second stroke, and I would make a mess. Maybe it should disable writing while the text is scrolling? Maybe a sine-interp on the movement to make it a little more predictable?

Once I figured out to pause as I wrote to let it finish scrolling, I was confused that sometimes my last letter was still visible, but other times I had to scroll backwards to dot my 'i' or cross my 't'. The undo and scroll commands are very good, but ideally I wouldn't have to use them them unless I made a mistake.

etwigg··on Show HN: DiffPlug — the pluggable differ
People have suggested that I put the engine behind a web service. I don't personally have strong web skills, but I could learn / find collaborators.

The thing that I'm most interested in is building diff for things which haven't had very good diff before - CAD files, schematics, spreadsheets, etc. For each data format, you need a different set of diff tools.

I've built a grab-bag of diff algorithms for diffing different kinds of data (the Simulink diff in particular is a showcase of the different kinds of data DiffPlug can work with).

My goal is to release this grab-bag so that people can build their own tools on top of it, but I also have several tools in particular that I want to build.

etwigg··on Show HN: DiffPlug — the pluggable differ
Working in embedded software for aerospace is what drove me to make DiffPlug. When I built the Simulink differ, I spent a lot of time making it very general so that I could go after PCB schematics and layouts, some of the FPGA toolchain, etc.

I don't have any specific experience with PLC programming, but I bet some of DiffPlug could help your co-worker. The public API is still months from being stable, but I'd love to talk with your co-worker, I expect we have some shared interests. If he or she is interested, my personal email is ned.twigg@diffplug.com

etwigg··on Show HN: DiffPlug — the pluggable differ
No way! My little brother drew most of DiffPlug's icons (and took the photos used in the demos). He is also just finishing high school, and part of why I made the image differ was to help bring him into the version control fold.

Thanks for the 3D differ link! The conventional wisdom when I talk to people about DiffPlug is that I should make it into a web service. For diffing, I think a desktop app is better than a web service for a few different reasons, but one of them is that the cloud is a pain for big documents like CAD files. I haven't had any real data to support that so far, but the comments thread for that link is very helpful!

etwigg··on Show HN: DiffPlug — the pluggable differ
I actually think there's an even bigger market for desktop diffing than web diffing. Most files that need diffing start their lives on a desktop. And most of the time, the diff happens before those files hit the cloud - while you're committing / merging with the central server.

If things like circuits.io and Cloud9 beat their desktop counterparts then I'm wrong, but if people (and especially enterprises) continue to do most of their complex work in native apps and not in the browser, then I think I'm right.

etwigg··on Show HN: DiffPlug — the pluggable differ
Welp, this doesn't mean that either video is good, but more people were downloading it with the "teaser" video, so I'm going back to that one. I've definitely got a lot of work to do on the marketing side.
etwigg··on Show HN: DiffPlug — the pluggable differ
Funny you should ask! That little blue/green eye that's used in the demo was the logo for "PictureDiff". I took out all the heavyweight stuff, and made it just a filmstrip, and you could click images in the filmstrip to open diffs. It also had the ability to compress images using diff: you compare a JPEG quality 50 image to a quality 80 image to decide if the extra filesize is worth the extra quality.

I spent $100 on AdWords to get people to look at it, but not a single visitor liked the site enough to download it. I might have given up too soon, but I decided to scrap it. I was way more motivated to tackle the general diff problem, and I didn't want to put a lot of effort marketing something I wasn't excited about.

etwigg··on Show HN: DiffPlug — the pluggable differ
Do you recall if one of the videos was the "Getting Started" video on the documentation page? I had been using a fast-moving "teaser" on the front, hoping that it would get people interested enough to watch the "getting started". My conversion rate isn't very good right now, so I'm gonna try just putting the "Getting started" video on the front.
etwigg··on Show HN: DiffPlug — the pluggable differ
Right now I've got two videos: the teaser on the front page, and a "getting started" video.

My goal was for the teaser video to get people interested enough to start the download and watch the "getting started" video. Based on my google analytics, it looks like I'm getting a pretty low conversion rate, so I'll try using the "getting started" video as the teaser. Gimme a few minutes...

etwigg··on Show HN: DiffPlug — the pluggable differ
Thanks! I must be doing something wrong with flowplayer, I'll dig into it.
etwigg··on Show HN: DiffPlug — the pluggable differ
How much do you think you'd be willing to pay for an SVG diff? One issue I'm grappling with is that I think people are willing to pay a lot to diff their CAD files, and probably nothing for their text files. There's a lot of useful stuff in-between, but I don't have a good feel for what price is appropriate.
etwigg··on Show HN: DiffPlug — the pluggable differ
It's all free! Paying is only for the Simulink diff features. Time for me to make that more clear...
etwigg··on Show HN: DiffPlug — the pluggable differ
I spent the last 3 years building this differ thing. It has plugins for different filetypes (text, image, and simulink) and for different filesystems (local disk, web, and S3). Right now I'm working on turning it into a good version control client too (SVN first, then git).

Curious to see what people's first impressions are!

← PreviousPage 3 of 3