- Видео 16
- Просмотров 1 341 472
Philomatics
Австрия
Добавлен 22 фев 2022
AI Won't Fix the Fundamental Flaw of Programming
AI won't fix the software crisis, by which I mean that we just don't expect software to work reliably any more.
Get my interactive git cheatsheet as soon as it's released here:
philomatics.com/git-cheatsheet/
My most useful video yet (interactive rebase)
ruclips.net/video/42392W7SgnE/видео.html
My first video on git rebase (without --interactive)
ruclips.net/video/DkWDHzmMvyg/видео.html
My Top 10 git shortcuts:
ruclips.net/video/CAnQ4b0uais/видео.html
Fixing merge conflicts:
ruclips.net/video/DloR0BOGNU0/видео.html
Video on `git pull --rebase`:
ruclips.net/video/xN1-2p06Urc/видео.html
How to change your default editor in git:
ruclips.net/video/CAnQ4b0uais/видео.html?t=131
References
Jonathan Blow - Preve...
Get my interactive git cheatsheet as soon as it's released here:
philomatics.com/git-cheatsheet/
My most useful video yet (interactive rebase)
ruclips.net/video/42392W7SgnE/видео.html
My first video on git rebase (without --interactive)
ruclips.net/video/DkWDHzmMvyg/видео.html
My Top 10 git shortcuts:
ruclips.net/video/CAnQ4b0uais/видео.html
Fixing merge conflicts:
ruclips.net/video/DloR0BOGNU0/видео.html
Video on `git pull --rebase`:
ruclips.net/video/xN1-2p06Urc/видео.html
How to change your default editor in git:
ruclips.net/video/CAnQ4b0uais/видео.html?t=131
References
Jonathan Blow - Preve...
Просмотров: 177 706
Видео
The Value of Source Code
Просмотров 215 тыс.2 месяца назад
Your code might not be as valuable as you think. Get my interactive git cheatsheet as soon as it's released here: philomatics.com/git-cheatsheet/ Link to Naur's article: pages.cs.wisc.edu/~remzi/Naur.pdf Panic's blog post: blog.panic.com/stolen-source-code/ My most useful video yet (interactive rebase) ruclips.net/video/42392W7SgnE/видео.html My first video on git rebase (without interactive) r...
Undo a git commit - git reset/revert - pushed/not pushed
Просмотров 5 тыс.3 месяца назад
How to undo a git commit. Pushed and not pushed/unpushed. Using git reset and git revert. Get my interactive git cheatsheet as soon as it's released here: philomatics.com/git-cheatsheet/ My best video yet (interactive rebase) ruclips.net/video/42392W7SgnE/видео.html My first video on git rebase (without interactive) ruclips.net/video/DkWDHzmMvyg/видео.html My Top 10 git shortcuts: ruclips.net/v...
Should you squash pull requests on GitHub?
Просмотров 8 тыс.3 месяца назад
Squashing pull requests on GitHub has advantages and disadvantages. I generally prefer rebasing locally. Get my interactive git cheatsheet as soon as it's released here: philomatics.com/git-cheatsheet/ My best video yet (interactive rebase) ruclips.net/video/42392W7SgnE/видео.html My first video on git rebase (without interactive) ruclips.net/video/DkWDHzmMvyg/видео.html My Top 10 git shortcuts...
I tried 3 different git GUI clients (NOT sponsored)
Просмотров 19 тыс.4 месяца назад
I tried 3 different git GUI clients: SourceTree, Sublime Merge and GitHub Desktop. This video isn't sponsored, so you can be sure that this is my honest opinion. Get my awesome interactive git cheatsheet as soon as it's released here: philomatics.com/git-cheatsheet/ My best video yet (interactive rebase) ruclips.net/video/42392W7SgnE/видео.html My first video on git rebase (without interactive)...
I was wrong about git stash...
Просмотров 166 тыс.5 месяцев назад
I always used a git stash based workflow when I quickly need to switch branches. In newer versions of git (since 2015), the git worktree command lets you check out multiple branches at the same time. Get my awesome interactive git cheatsheet as soon as it's released here: philomatics.com/git-cheatsheet/ My Top 10 git shortcuts: ruclips.net/video/CAnQ4b0uais/видео.html My video on git rebase ruc...
Go beyond git stash & pop
Просмотров 13 тыс.5 месяцев назад
git stash lets you store uncommitted changes to easily retrieve them in the future. If you like my style of teaching, I'd love to see you at a workshop! philomatics.com/git-workshop/ My other video on git rebase ruclips.net/video/DkWDHzmMvyg/видео.html Fixing merge conflicts: ruclips.net/video/DloR0BOGNU0/видео.html Video on `git pull rebase`: ruclips.net/video/xN1-2p06Urc/видео.html How to cha...
Filter, Map, Reduce from first principles
Просмотров 5 тыс.6 месяцев назад
Most developers have used filter, map and reduce at least once, but do you actually know what's going on under the hood? If you like my style of teaching, I'd love to see you at my intermediate git workshop! philomatics.com/git-workshop/ All code from this video: philomatics.com/filter-map-reduce-code/ My other video on git rebase ruclips.net/video/DkWDHzmMvyg/видео.html Fixing merge conflicts:...
git interactive rebase - Undo, Edit & Squash git commits with a single command
Просмотров 9 тыс.6 месяцев назад
git rebase interactive lets you undo, edit, squash and delete commits. If you like my style of teaching, I'd love to see you at a workshop! philomatics.com/git-workshop/ My other video on git rebase ruclips.net/video/DkWDHzmMvyg/видео.html Fixing merge conflicts: ruclips.net/video/DloR0BOGNU0/видео.html Video on `git pull rebase`: ruclips.net/video/xN1-2p06Urc/видео.html How to change your defa...
git rebase - Why, When & How to fix conflicts
Просмотров 66 тыс.6 месяцев назад
Why, when and how to do git rebase. How to fix merge conflicts during git rebase. If you like my style of teaching, I'd love to see you at a workshop! philomatics.com/git-workshop/ Fixing merge conflicts: ruclips.net/video/DloR0BOGNU0/видео.html Video on `git pull rebase`: ruclips.net/video/xN1-2p06Urc/видео.html How to change your default editor in git: ruclips.net/video/CAnQ4b0uais/видео.html...
Spend more money on developer tools and hardware
Просмотров 7 тыс.6 месяцев назад
How to get your manager to pay for developer tools, hardware and infrastructure like AWS/Vercel. LEGAL DISCLAIMER ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ Everything here is for informational purposes only. All non-licensed clips used for fair use commentary, criticism, and educational purposes. See Hosseinzadeh v. Klein, 276 F.Supp.3d 34 (S.D.N.Y. 2017); Equals Three, LLC v. Jukin Media, Inc., 139 F. Supp. ...
Never fear merge conflicts again - git merge/pull tutorial
Просмотров 27 тыс.6 месяцев назад
What I wish I had known when I started using git. 0:00 - Aborting the merge 0:26 - Understanding conflict markers 1:30 - Automatic merge options 2:38 - Doing a manual merge 3:36 - Understanding complex conflicts 4:09 - Adding the resolved files 4:32 - Completing the merge LEGAL DISCLAIMER ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ Everything here is for informational purposes only. All non-licensed clips used ...
Use past tense in git commit messages
Просмотров 17 тыс.7 месяцев назад
Should you be using past or present tense in your git commit messages? StackOverflow answer arguing in favor of past tense: stackoverflow.com/a/8059167/196540 LEGAL DISCLAIMER ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ Everything here is for informational purposes only. All non-licensed clips used for fair use commentary, criticism, and educational purposes. See Hosseinzadeh v. Klein, 276 F.Supp.3d 34 (S.D.N.Y...
My most used git aliases
Просмотров 19 тыс.7 месяцев назад
Learn how to use git much faster with useful shortcuts. Use the following command to change your default editor to VSCode: git config global core.editor "code wait" If you use a different editor, just Google "git set text editor to $yourEditor", it's usually easy to find. After that you can use the following command to open the global config: git config global edit There, you can paste the comm...
App/tool/language fetish is bigger problem. And the large amount of ai cost savings that companies try that will blow up, second worst of coming disasters. Bitcoin going to fuck us whether you ever own it or not
Let me guess I can create a DMZ using vlans right? Don’t you dare answer if you don’t know right answer
Nonsense. Are you kidding me. Nothing is buggy like it used to be. Software problem is just software business and it’s gotten better every year since mid 80.
Nonsense. Are you kidding me. Nothing is buggy like it used to be. Silliness. Software problem is just software business and it’s gotten better every year since mid 80
Kudos to the first video success..
How is :void (...data) these things are showing? Any extension?
What software crisis? I mean devs are the first to go
Forth? FEXPR by Jihn Shutt?!
Fascinating, This answers my concerns that came from nowhere
I don't agree, AI will fix this issue.
i have been trying to explain to people why rebase is better, but people are afraid of aborting. this can help me help them relax
I don't see a problem in buggy and clunky software because I already have to deal with people: d1sgu5t1ng 5tup1d m0nkeys with irrelevant, 5tup1d and, usually, ill intent, always trying to put their d1rty ap1sh hands on everything they can see. Want a good software? Unal1ve people first.
Technically you shouldn't work on the main branch, normally, I just fetch and rebase the main branch then rebase my working branch on top of my main branch.
What do you do if you want to stay rebasing but need to add more Code after pushing and getting a PR Review? I understand that rebasing pushed commits and force pushing the new state is dangerous if more people work on a branch, but still merging is no Option in that case. Should you just Squash in that case?
although your videos are really good, I was not subscribed (don't know why) but after you did mention about the 30h spend on the video production, the subscription was a must
This looks very interesting, had no clue this command existed! Specially on projects where build times are in the order of minutes and you have to do non-trivial code reviews for several people or compare the behavior of several versions
Just don't commit before making a pull. Stash all your changes, git pull, unstash your changes, resolve conflicts if arises, then commit your changes. Problem solved
You could also stash your changes and then pull and then push your changes
This also explains why we don't have a theory of everything. Maybe No theory can be simple enough to be useful AND explain everything. Maps cannot describe everything either.
The issue is compilation is not generally one-to-one and any bijective relation will essentially be a refactoring or restructuring of one object to another. Abstraction is inherently lossy, it will inevitably leave things out of the picture, as the name suggests. The best a lossless abstraction can do imo is factoring an unnecessarily repetitive/verbose lower-level system into something more succinct. It's unclear whether that's enough of a gain.
my cmpany instead asks for using git pull instead a git rebase, I am not sure why because I prefer to use git fetch and after full origin/master then use a git rebase origin instead of a git merge master to bring features from the main branch
Or you can do a pull before you commit your changes.
For me another solution is 100x better: 1. Make sure everyone is working on their own feature branches 2. Just do whatever you want on you branch and create merges, tons of useless commits and whatever you want 3. When merging to main/dev or whatever do a squash It creates clear history of commits related with bugfixes/features and also allows developers to commit their work even if not done yet to remote branch without thinking of commit messages etc.
The video presents an interesting idea that i have never heard of. But as many others in the comments I think bidirectional mapping between layers like assembly and code is impossible. I read a comment saying that compilation is like lossy compression. And I agree with that in the sense that it is absolutely impossible to know the exact input that produced some binary, because many different imputs can produce the same output. In other words you loose information. But it's even worse than that. Decompiling code also looses information, because many different binaries could be decompiled into the same code. For examples debug vs release builds or different optimizations beeing used or not. So actually there is a many to many mapping between code and binary. If you consider that your notion of layers kind of breaks apart, because it's not like one layer is "above" the other. Whenever you go from code to binary or from binary to code you have many paths to choose from and which path you choose depends on information that is not available. To fix this you would have to encode this missing information in both layers. But there is actually an overwhelming amount of information missing that you don't usually think about. For example if you have a formula in your code let's say for example the square function and at some point you evaluate it with a constant then the compiler can precompute the value. To preserve this information in the binary you would have to encode that this precomputed value came out of a call to a square function. And you need a representation of the square function too. Now let's change the value in the binary. Suddenly we have to compute what input to the square function would produce this output we just entered. So you'd have to calculate the inverse of an arbitrary function. That is fundamentally impossible. In case of the square function there are two possibilities a positive and a negative number. The mapper could choose one or say i have to choose. Both are bad options. If the mapper chooses one it could be a nonsense value that happens to give the right result, making the code hard to understand. If you have to choose a value you will be forced to decide on a million ambiguities for each change you do to the program. So to summarize you would need a representation of the program that contains complete information about what is important and what is not. This includes code that does nothing, for example: 1. This is a constant, but it is actually the result of evaluating this function with these constant arguments. 2. Here there would be an input validation, but since this function is inlined it is omitted. It also includes tradeoffs you took, like: 1. I implemented this with simd instructions to guarantee high performance 2. This code maybe slower because i implemented it branchless, but that is important, because I'm doing cryptography and need to prevent timing attacks. I think you will never be able to find a representation that expresses all these constraints, because you can't know all constraints people will want to have. And you can't use existing representations, because without knowing the constraints you can't map from one layer to another. And even if you did find such a representation you would need an insane constraint solver. Without such a representation you always loose information on each transformation. This is not a problem with the current unidirectional mapping, because it is a nondestructive workflow. Just throw away the binary and compile the changed code. Bidirectional mapping would be a destructive workflow. If you change the binary your code would be changed to something you may not recognize and understand and you can no longer work with it.
Thank you very much for your thoughtful comment!
Yes! All of this, exactly my experience! Btw, have you seen Unreal Engine 4 Blueprints coding? As a C++ dev I find it so revolutionary and forward-looking! Ofc it still lacks a lot but the principle is amazing.
that was useful. thank you for the video. I learned something good
OMG Your analysis brings home what I've always felt but cannot put into words. (1) More recently, with the rise of generative AI that builds a full-blown apps, as a programmer/maintainer of a given codebase, I'm still concerned to leave it to AI to build a new feature from scratch, because I won't have the mental map of where things are if I don't put down each lines of code, name each files, carefully choose a data flow/component hierarchy myself from the beginning. Even though the advertisement sounds attractive: let AI write code and you just review it, for features or domains that I don't get a hang of yet, I just have do it myself. (2) Can't agree more on the value of domain knowledge; the high turnover rate in the industry just makes people so insecure for being replaceable cogs.
I have watched a couple of your git videos, and thanks for bringing up these nuances in keeping a sane and meaningful git history :D I often take the same approach as you do, rebasing locally, squashing some commits while keep others for debugging. Not many developers I know are aware of these practices. Now I have your video to show my colleagues when needed!
Configure your pull to always --rebase 🙄
Issue can be solved by telling John to fuck off and work on his own remote branch. In all seriousness everyone should work on their own branches and raise a PR to main, and the PR should squash all commits to one.
I created a custom command in git call git paac which pulls, add all and then commits. If the pull fails, i stash my changes and then try again. Worked everytime without merge conflict so far.
great first video congrats!
I personally support using present tense. I think past tense is usually quite bad and I agree with the format/style advocated by the blog post "How to Write a Git Commit Message" by CBEAMS.
**bows down like Wayne & Garth**
My opinion is, devs are pushed to deliver, the pressure is unhealthy and they release garbage to get by
Like the integrated terminal in visual studio
What about GitExtensions?
I always do interactive rebase to keep the branch clean
0:17 That on the right, is that an ancient geek tablet? The mobile problem is even worse for someone who uses a degoogled phone like Volla. Small project, not much feedback to tell devs the screwed up. My app launcher got an update and was suddenly messed up in several ways. After asking whether I am subscribed to the beta channel and me saying no, someone told me that's a reported bug that has been fixed in the nightly repository. So now I should subscribe to the beta channel to get a fix more quickly. This is so upside-down: The regular channel is supposed to be for the stable software, not the bug-ridden one. - Plus, the OS update I did apparently removed a for me crucial feature. I hate updates! I should apply a policy like with mainboard firmware: Never update unless you encounter issues that you know for certain will be fixed with the update. ... Oh, BTW, the nightly app version is supposed to fix the launcher mess, but it didn't for me. I guess my phone is extra-special. 🤦♂ We are witnessing the core agenda behind technology, which is also conveyed in Michael Ende's Momo: Do more in less time, for no good reason but to push quantity over quality, make us more unhappy and distract us from the potential of human evolution. A system cannot transcend the people who make it up. AI is a supercharged tryhard imitation engine. One of those days someone is gonna ask the newest AI to develop a plan for world peace and suddenly a whole city is gonna experience a power outage. There's also a profound difference in compilers and AI, of course. A compiler can be a very precise tool if made well, but AI has a basic approach of 'fuzzy logic' and then patching, patching, patching, to never get a mathematically perfect result, because with the huge complexity of the computing task, massive skipping of human effort has already been built into it, and when you can only feed AI with stuff others have done, and that stuff is getting messier all the time, then it's the no-transcending issue again. And probably the most impressive 'marketing tool' for the power of assembly coding are 64K or even 4K graphical demos.
"Ancient geek tablet" --> love that! :D
Where’s the cheat sheet?
Hey, beta was released here, will soon be released as stable :) Let me know what you think! philomatics.com/git-cheatsheet-beta
16:00 something that comes to mind are automation frameworks, a cucummber-groovy one for example can provide 3 abstractions, the test in english, the steps definitions that build the test, and the code that builds the step
I don't see how this would work for Trunk based development.
We already have this in lisp and forth. The compiler and assembly are written in the language itself, and you can see each definition.
The software crisis is economic. Companies urge developers to deliver features as quickly as possible and this is the source of all the issues.
Take it back to the basics. A function takes an input, does something, and returns an output.
my company is "fast and uncomplicated" i.e. : programs are always 85% done (more time ain't available) then pushed to live. soon there will be external programmers added. I'm out.
Yeah you are describing a flaw of programming, we won't need to program anymore, just like you don't need to program an employee, you just tell it to do stuff. The AI won't create static code, It will only use it's hardware to deliver a task. You are thinking about AI generated code, that's only a transition.
That's like the claim that more evolved humans won't need tools any longer because we will have both a backhoe and a 2nm wafer fabrication tool built into our bodies. ;-)
Sub! I needed a refresh and your video was amazing! Thank your for being transparent that producing this video took 30+ hours. I also produce videos and I wondered if something's wrong with me if I need 30+ hours to produce 10min of condensed quality content
There is the value of the source code (which can be broken down into subcategories, e.g. the value of producing it, the value of the knowledge that is contained/exposed in it, and the value of the copyright) and the value of the knowledge (someone possesses, as human resource) of the source code. It is possible to have significant value in each of these, and how it is "marketed" plays a significant role. Don't generalise special cases, don't let special cases bias your thought. There is significant value in the source code and this is why commercial, for-profit enterprises keep it closed. Vice-versa, this is exactly why we need to support open-licensed open-source projects - the source code has significantly higher value that the cost (man-hours) of producing it!
The last bit about humans being abstracted to statistics made me think of liquid democracy. That seems to be a partial solution on that end. Perhaps some principles can be integrated in this new function paradigm you mentioned. Looking forward to a next video on this, it seems you're thinking/searching in a good direction, it just needs to crystallize some more. I've been working on a language that compiles to rust, to abstract away some complexity. That theoretically could have at least 1 layer of transparency, which (idea => ai => code) also has if you dig in ofc. Now that I think of it, manually changing the code should work better in the case of Ai then changing it further, that is, if you also adjust the test suite