HN user

difflens

73 karma

https://github.com/marketplace/difflens

Working on improving diff tools for developers!

Posts7
Comments44
View on HN

It's interesting that this piece mentions "to get really rich" as one of the primary motivators. Especially to high school students. I wonder if that's good advice or if society is better served by motivating students to start companies that make the world better.

Full Time 3 years ago

Congratulations! I identify with this post a lot. Good luck! Your actions are certainly an inspiration

The worry is understandable. As someone who's been in a similar situation before, the worry with a work visa and housing tends to go away one way or another. Either you get out of a work visa at some point, or you accept that you will never receive a green card in your productive years and you jump into the property market with that risk anyway.

Just wanted to chime in and say that this was a good read. Reminded me of reading editorials when I was younger. I agree with most of these points, and especially appreciate the fact that you present a nuanced view. Too often, western views are translated directly to other places and result can be inaccurate assessments.

I wonder if you can pick your favorite language/framework and write a daemon that serves as the "backend". Then, write a UI in whatever you like, and send calls to the backend to modify state. It's the same concept as MVC, but implemented in different processes

My recommendation would be to apply to as many positions as you can, but steel yourself to the fact that you may not hear back from any of them. I'd also recommend exploring if you can push graduation back by a year (assuming funding would cover it and you have legit research to do), or if you can pick up part time lecturer, post doc etc type of positions for the next year. IMO, job prospects for software engineers will likely start improving in the last quarter of 2023 and be much better in 2024. So I'd plan to tough it out till then.

I do empathize with your position and wish you luck :) I'm ever grateful to the first manager who hired me. He changed my life forever and that of my family.

as I see it is that it provides a uniform api for traversing a parse tree, which makes it relatively straightforward to onboard a new language to a tool with tree-sitter support. The problem though is that the tree-sitter grammar is nearly always going to be an approximation to the actual language grammar, unless the language compiler/interpreter uses tree-sitter for parsing.

Author of DiffLens (https://marketplace.visualstudio.com/items?itemName=DiffLens...) here. A uniform API for traversing a parse tree for all languages would be amazing for DiffLens! However, I fear languages are different enough that this ideal may never be reached :) Or maybe there would be a core set of APIs and extensions for the idiosyncrasies of each language. For DiffLens though, we try to use the language's official parser/compiler if it exposes an AST

Haha, I found this quite funny :) I'm sure there's an element of truth to it considering how complicated the code base must be for the various services

This is a great post! I have very similar thoughts! I haven't escaped the corporate job yet, but the pandemic and subsequent layoff scares have convinced me that bootstrapping a business is a good way to take back some economic control.

I'm working on DiffLens to improve how developers see diffs of their code changes. DiffLens uses abstract syntax trees to make diffs more focused and understandable. It's free at the moment while we iterate on it and get the word out. I think it's the best way to view source code changes. If someone is interested in checking it out, see https://marketplace.visualstudio.com/items?itemName=DiffLens... . It works within VS Code and supports JS, TS, CSS and text diffs. JSON support is coming soon!

Interesting execution. I'm not totally sold that Sapling is somehow forcing smaller/(more understandable) commits. Running Sapling restack with the manual step of an `amend` doesn't sound too different than running `git rebase -i` and moving the commits around. ReviewStack is interesting, but nothing new. It seems like it's removing the need to click through the commits page in GH by exposing it in a dropdown. IMO, the real improvement to our workflows will come from using better diff tools to make reviews more intuitive. I am biased of course :) (full disclosure: I work on DiffLens https://marketplace.visualstudio.com/items?itemName=DiffLens... )

Not related to this article per se, but I wonder if there is a tool (or a market) for "validating" pdfs. Specifically I'm thinking of a tool that validates that different fields in a pdf have been filled. Sort of like "required" fields in a document that need to be filled for back office processing. I'm thinking about a recent experience where I had to send a pdf back and forth via email a couple times because some fields were missed each time. Perhaps an automated system would've caught this and saved everyone some time.

Might even make for a nice weekend project

Great write up! I don't have much practical experience with Paxos/Raft other than coursework. I'm curious, if I wanted to insert a row into a table, what is the overhead of all these extra nodes in the insert operation now compared to a single table?

I realize the answer depends on how big the cluster is, what state it is in at any given moment etc, but I'm happy to accept back of the envelope calculations/estimations!

I've been wondering over the past few months if we can build a "public" cloud. I have some old machines gathering dust, I'm sure others do too. Is it feasible to build an ad-hoc network of such computers where the compute power is rented out. For ex: I can connect my old lenovo i5 laptop to this network for 6hrs a day and charge 1.2x my electricy cost. Sort of like on demand EC2 instances, but backed by torrent like tech. It'd make computers pay for themselves over time

Interesting, will give sqlglot a look when we get to adding SQL support in DiffLens [https://github.com/marketplace/difflens]. Or perhaps DiffLens can just use sqlglot :) Either way we're very happy to see another semantic diff tool.

P.S: We work on DiffLens. It currently supports TS, JS, CSS and text diffs. We're working on making a VS Code extension currently

Great idea! I did something similar for a weekend project that folks can checkout at (PauseTheVideo)[https://pausethevideo.vercel.app] if they're interested. We're big fans of Agadmator at DiffLens and made that site as a tribute to his videos! I haven't had time to update it with the latest videos, but there are about 10 games currently from the candidates tournament. The idea is to find the best move in the position to win the game!

The website is not complete yet but the games are definitely play-able.

In my experience, code reviews are currently viewed as time sinks because of the cognitive load they put on the reviewer. I agree with the other comments here about a team culture that values code reviews as an important process. IMO, the tools surrounding code reviews can be improved. In particular, any time spent trying to make changes smaller and easier to follow is a big win. We use and develop DiffLens (https://github.com/marketplace/difflens) for this. As a team, it's made reviewing our changes easier and lets us probe deeper into the changeset. If your code base is mostly TS, JS and/or CSS, feel free to try out DiffLens! We're around to answer any questions or take feedback :)

However, we can create serious bottlenecks when it comes to moving memory back and forth between the CPU and GPU. We’d have to learn what kinds of models would take advantage of this, we have little experience with GPUs as a team—but we may be able to utilize lots of existing ND-array implementations used for training neural nets.

Indeed, moving memory back and forth from CPUs to GPUs has an overhead. There are ways to mitigate this though! I vaguely remember that one of the patterns in reducing this movement was to keep the data in the GPU as much as possible. I haven't kept up with the latest tech in GPUs off late. When I first played around with CUDA, ArrayFire (arrayfire.com) (no affiliation) was a promising library, and might be a good fit for your GPU prototypes?

What case law, if any, did you rely on in Microsoft & GitHub's public claim, stated by GitHub's (then) CEO, that: “(1) training ML systems on public data is fair use, (2) the output belongs to the operator, just like with a compiler”? In the interest of transparency and respect to the FOSS community, please also provide the community with your full legal analysis on why you believe that these statements are true.

If it is, as you claim, permissible to train the model (and allow users to generate code based on that model) on any code whatsoever and not be bound by any licensing terms, why did you choose to only train Copilot's model on FOSS? For example, why are your Microsoft Windows and Office codebases not in your training set?

I'm not sure I buy this argument. In the first point, the authors state that Copilot was trained on public data. In the very next point, they slightly tweak it by saying training was done on "any" code which loses the distinction between public and private code. Obviously Windows and Office are not public code.

I also interpreted "public data" to mean they trained on codebases that explicitly specified, say, MIT licenses or other permissible licenses. That seems like fair use to me. Those licenses don't explicitly restrict training AI models on their codebases do they? It's ironic if these licenses started banning AI training now though. That would effectively mean Copilot would be sole trained AI model.

I'm happy to be proven wrong though. In general I have a distrust of Copilot. I fear it would make individuals worse programmers in the end at the cost of productivity

Across the different teams and orgs I have worked at, there's always been 1 constant during code reviews: Each comment provided an explanation of why some change was being debated. Every engineer knew the review is not a judgement of their coding prowess. Rather each discussion was purely on the merits of that line of code. Sure, there can be disagreements, but it was never judgemental. Usually folks are amenable when there is good justification to the feedback in my experience. It goes both ways too: I personally don't care if some of my nits are not fixed.

Btw, since I think it is relevant to this discussion, we're working on making code reviews deeper than text based diffs. Check out (DiffLens)[https://github.com/marketplace/difflens] if you're code base is primarily TS, JS and/or CSS to get language aware diffs on your GitHub pull requests. We've found that it makes understanding code changes much easier

Hi! Your comment about managing ad spend on facebook caught my eye. I've worked on AdTech before, especially reducing acquisition cost by using the Conversions API from Facebook. Just wondering if you've already tried that? If not, and you want someone to set it up for you, feel free to email me at support at difflens.com. I have some time and am willing to help out :)