Ask yourself if you are happy and then you cease to be.
Ik kan mij nog een blog-post herinneren van Microsoft dat ze SPF gingen invoeren op hun domeinen, maar dat ze helemaal geen idee hadden hoeveel mail servers ze hadden, waar ze stonden, en wie daarvoor verantwoordelijk was. Dus hadden ze de SPF records ingesteld op soft-fail, met forensic reports. Zo konden ze dus zien welke mailservers namens microsoft.com emails verstuurde, en zo deze mailservers autoriseren, of (nadat ze hem gevonden hadden) konden opheffen. Dat bleken eruit eindelijk heel erg veel te zijn, omdat iedere afdeling hun eigen uitgaande email servers bleken te hebben.Lethalis schreef op donderdag 9 februari 2023 @ 14:09:
[...]
Dat schijnt trouwens soms best moeilijk te zijn tussen de verschillende afdelingen
Vandaar dat de PDF viewer in Edge weer uitbesteed gaat worden aan AdobeLethalis schreef op donderdag 9 februari 2023 @ 14:09:
[...]
Dat schijnt trouwens soms best moeilijk te zijn tussen de verschillende afdelingen
Iets met resultaten uit het verleden, nu de java, flash, silverlight en activex controls ook nog weer terug in de browser
Dat geloof ik direct - organisaties hebben vaak slecht zicht op wat door wie gebruikt wordt, vooral als dat niet centraal geregeld is. Dan is zelf Postfix opzetten makkelijker dan intern toestemming vragen voor wat je ook van plan bent. Overigens is dat ondertussen gelukkig al duidelijk beter aan het worden.ThomasG schreef op donderdag 9 februari 2023 @ 14:49:
[...]
Ik kan mij nog een blog-post herinneren van Microsoft dat ze SPF gingen invoeren op hun domeinen, maar dat ze helemaal geen idee hadden hoeveel mail servers ze hadden, waar ze stonden, en wie daarvoor verantwoordelijk was. Dus hadden ze de SPF records ingesteld op soft-fail, met forensic reports. Zo konden ze dus zien welke mailservers namens microsoft.com emails verstuurde, en zo deze mailservers autoriseren, of (nadat ze hem gevonden hadden) konden opheffen. Dat bleken eruit eindelijk heel erg veel te zijn, omdat iedere afdeling hun eigen uitgaande email servers bleken te hebben.
🠕 This side up
1
2
3
4
5
6
7
8
9
10
11
12
13
| #include <iostream> int main() { while (1) { ; } return 0; } void unreachable() { std::cout << "Hello, world!\n"; } |
Output (clang 15.0):
Hello, world!
Bewijs
Een koekje voor wie dit kan verklaren
[ Voor 11% gewijzigd door .oisyn op 10-02-2023 10:05 ]
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Werd er door een maat op gewezen dat die zonder optimization (-O0) er wel uit klapt, heb zelf bar weinig kennis van C++/compilers maar vind dit soort shit hopeloos interessant.
Komt d'r in, dan kö-j d’r oet kieken
Je loop moet extern observeerbaar gedrag hebben of eindigen, ander heb je undefined behavior. De loop mag weggeoptimaliseerd worden.
Waarom unreachable vervolgens toch wordt aangeroepen....
[ Voor 9% gewijzigd door Barin op 10-02-2023 10:56 ]
Echter, die `unreachable` function wordt nergens aangeroepen ?
https://fgheysels.github.io/
De compiler doet niets meer met statements na de loop in main, dus ook de return. Voeg een statement ervoor toe en alle output verdwijnt sowieso (unreachable is niet meer de eerste code). Kortom, unreachable lijkt simpelweg de eerste code die omgezet wordt in assembly die niet weggeoptimaliseerd wordt.
Undefined behavior
Als het de CPU is dan zou je verwachten dat de code uit de main wel in de assembly zit, en dat is blijkbaar niet het geval. En als het niet in de assembly zit moet het dus wel door de compiler geoptimaliseerd zijn (getuige ook dat het anders werkt met -O0).Caelorum schreef op vrijdag 10 februari 2023 @ 11:21:
Dit is toch niet weer zo'n gevalletje CPU probeert slimmer te zijn dan het is door alvast wat meer statements in te laden en die "per ongeluk" uit te voeren?
Dat is de grondslag idd
Maar daar zit vervolgens de crux. Clang bepaalt dat het gedeelte ná de loop unreachable is, maar dat de loop zelf niets doet en haalt 'm dus wegProgress guarantee
In a valid C++ program, every thread eventually does one of the following:No thread of execution can execute forever without performing any of these observable behaviors.
- terminate
- makes a call to an I/O library function
- performs an access through a volatile glvalue
- performs an atomic operation or a synchronization operation
Note that it means that a program with endless recursion or endless loop (whether implemented as a for-statement or by looping goto or otherwise) has undefined behavior. This allows the compilers to remove all loops that have no observable behavior, without having to prove that they would eventually terminate.

Het "verdwijnt" niet zozeer. Het werkt alleen mogelijk niet meer goed als main() een function prologue bevat terwijl unreachable() hier een tail-call doet, waardoor de stack management niet meer klopt. Door unreachable() iets aan te passen zodat hij bijvoorbeeld zelf een exit() of std::terminate() doet dan kan het op zich weer werken.Voeg een statement ervoor toe en alle output verdwijnt sowieso (unreachable is niet meer de eerste code).
[ Voor 37% gewijzigd door .oisyn op 10-02-2023 12:22 ]
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Wat je zegt lijkt me correct en, inderdaad, het effect is vreemd, maar te verklaren. Een beetje spelen met extra statements voor, na, en in de loop heeft mij in elk geval weer wat inzicht opgeleverd in wat daarvan wel en niet overblijft in de assembly. Hoe unreachable überhaupt "valide" lijkt te aangeroepen te worden had ik je zeker ook niet kunnen vertellen op voorhand. Weer wat geleerd.oisyn schreef op vrijdag 10 februari 2023 @ 12:15:
[...]
Dat is de grondslag idd. Loops mogen worden geacht ooit te terminaten om bepaalde optimalisaties mogelijk te maken. Dat maakt een loop die verder geen outside observable behaviors heeft undefined behavior en kunnen worden weggeoptimaliseerd.
[...]
Maar daar zit vervolgens de crux. Clang bepaalt dat het gedeelte ná de loop unreachable is, maar dat de loop zelf niets doet en haalt 'm dus weg. Met als gevolg dat er dus gewoonweg geen instructies meer worden gegenereerd vanaf het punt van de loop. Strict gezien mag dit, want het was UB, dus alles mag. Maar wat ik wel apart vindt is dat er geen UD2 (illegal instruction) wordt gegenereerd voor het unreachable stuk, zoals Clang/LLVM over het algemeen doet. Denk dat dit in een latere versie wel wordt aangepakt, want dit is gewoon raar, ook al is het technisch correct.
[...]
Het "verdwijnt" niet zozeer. Het werkt alleen mogelijk niet meer goed als main() een function prologue bevat terwijl unreachable() hier een tail-call doet, waardoor de stack management niet meer klopt. Door unreachable() iets aan te passen zodat hij bijvoorbeeld zelf een exit() of std::terminate() doet dan kan het op zich weer werken.
Beetje raar gedrag natuurlijk van die compiler. In Rust world llvm.sideeffects gebruikt om aan te geven dat een loop oneindig is (https://reviews.llvm.org/D38336) en doet de compiler gewoon het juiste.oisyn schreef op vrijdag 10 februari 2023 @ 12:15:
Maar daar zit vervolgens de crux. Clang bepaalt dat het gedeelte ná de loop unreachable is, maar dat de loop zelf niets doet en haalt 'm dus weg.
Edit; 't lijkt dat die patch inmiddels weer uit staat omdat 't niet nodig is en gewoon in LLVM upstream gefixed is https://github.com/rust-lang/rust/pull/82884
[ Voor 14% gewijzigd door PrisonerOfPain op 11-02-2023 21:59 ]
:fill(white):gifsicle():strip_exif()/f/image/QUL4lyH17cfT8KPVM0W7r2A7.gif?f=user_large)
Iemand zin in koffie?
Afgelopen week nagenoeg enkel bezig met documentatie (blog) en voorbereiding voor een talk die ik geef in Amsterdam over 1.5 week
Van 't weekend begon ik ontwenningsverschijnselen te vertonen dus maar even aan m'n bureau gezeten om een issue in aws-erlang af te vinken en gisteren maar even support toe te voegen voor logical decoding messages in een Erlang pgoutput plugin.
Toch nog iets aan code geklopt
[ Voor 10% gewijzigd door Swedish Clown op 15-02-2023 11:13 . Reden: Edit zoveul: in het Nederlands schrijven begint blijkbaar lastig te worden... ]
Always looking for developers wanting to work with Erlang.
Ach, ik heb ook wel eens van die perioden dat ik vooral aan het investeren ben in de werkvoorraad van anderen, maar ik ben toch altijd weer blij als ik me inhoudelijk op een technische uitdaging kan storten. Ik loop ook altijd een beetje het risico dat ze me ook richting people management functies proberen te duwen omdat ik er soms van word beticht ook nog wel over redelijke soft skills te beschikken, maar tussen weten hoe je moet communiceren en met mensen om moet gaan betekent niet dat je daar ook energie van krijgt natuurlijk.Caelorum schreef op woensdag 15 februari 2023 @ 12:28:
Ik ben al drie weken lang alleen documentatie aan het doen en anderen aan het werk aan het zetten. Ik moet zeggen dat het zwaar viel in het begin, maar nu begint het steeds leuker te worden. Straks ga ik nog met tegenzin weer daadwerkelijk wat code schrijven...
"The question of whether a computer can think is no more interesting than the question of whether a submarine can swim" - Edsger Dijkstra
Waarover gaat de talk gaan?Swedish Clown schreef op woensdag 15 februari 2023 @ 10:25:
Afgelopen week nagenoeg enkel bezig met documentatie (blog) en voorbereiding voor een talk die ik geef in Amsterdam over 1.5 week
Without nipples, boobs are pointless - 365 project - In mijn hoofd is het alle dagen Kerstmis - What type of bees make milk? Boobies! - What type of bees are scary? BoooOOOOOooobeees! - Cactusliefhebster
The three commandments of a migration project
Een soort mashup van een talk die ik samen met een collega heb gegeven alleen waren we toen nog niet klaar
Always looking for developers wanting to work with Erlang.
En wat zijn de 3 geboden voor de tl;dw-ers onder ons?Swedish Clown schreef op woensdag 15 februari 2023 @ 17:48:
[...]
The three commandments of a migration projectOftewel, wat zijn drie dingen die wij hebben geleerd van onze migratie die generiek genoeg zijn om toe te kunnen passen op andere migraties
Zoveel mnesia -> Postgres migraties zijn er namelijk niet maar sommige lessen zijn wel degelijk toe te passen op andere soorten migraties
![]()
Een soort mashup van een talk die ik samen met een collega heb gegeven alleen waren we toen nog niet klaarInmiddels wel. Dus de talk is iets geupdate maar in hoofdlijnen redelijk gelijk aan: YouTube: Onno Vos & Daniel Szoboszlay: Migrate your service with confidence
"The question of whether a computer can think is no more interesting than the question of whether a submarine can swim" - Edsger Dijkstra
De TL;DR/DWMugwump schreef op donderdag 16 februari 2023 @ 08:06:
[...]
En wat zijn de 3 geboden voor de tl;dw-ers onder ons?
1. Start with a plan - Oftewel, teken je plan uit, denk na over hoe je migratie eruit moet komen te zien en hoe je een zero-downtime migratie kan uitvoeren. Waar een wil is, is nagenoeg altijd wel een weg
2. Pay attention to the details - De devil is in the details zeggen ze altijd. In elk migratieplan zal dit ter sprake komen. In ons geval (mnesia -> Postgres migratie) had dat te maken met Serializable Isolation. Zorg ervoor dat je de ins-en-outs van dergelijke details snapt en er ook voor kan testen.
3. Verify thoroughly - Zodra je nieuwe tech stack gelijk is aan de oude en je alle ins-en-outs op orde hebt, is het tijd om te testen

Always looking for developers wanting to work with Erlang.
Die sprongetjes lijken in de software wereld heel groot omdat ze eindelijk iets 'gekraakt' hebben, maar de 'gewone' automatische vertaalwereld is al een paar jaar flink gestagneerd. Enkele jaren geleden is DeepL heel groot geworden met hun model, maar zelfs die gaan weinig vooruit.Voutloos schreef op donderdag 9 februari 2023 @ 13:56:
Het illustreert dus volledig gerelateerd waarom natuurlijke taal 100.00% goed krijgen toch nog best lastig is, zelfs met de recente sprongetjes.
Ik zie het echt wel gebeuren dat volledig automatisch software schrijven er gaat zijn voordat we bruikbare automatische Engels->Nederlands vertalingen hebben. Aan de ene kant is DeepL een hele leuke tool voor vertalers, aan de andere kant beginnen ze heel snel achter te lopen op vergelijkbare tools binnen development die veel meer gebruik kunnen maken van snippets en herkennen van logica, want die logica is er in tekst niet.
Ik zit zelf ook alweer een aantal jaar in grote migratietrajecten en dit zijn wel herkenbare zaken ja.Swedish Clown schreef op donderdag 16 februari 2023 @ 11:34:
[...]
De TL;DR/DW![]()
1. Start with a plan - Oftewel, teken je plan uit, denk na over hoe je migratie eruit moet komen te zien en hoe je een zero-downtime migratie kan uitvoeren. Waar een wil is, is nagenoeg altijd wel een weg![]()
2. Pay attention to the details - De devil is in the details zeggen ze altijd. In elk migratieplan zal dit ter sprake komen. In ons geval (mnesia -> Postgres migratie) had dat te maken met Serializable Isolation. Zorg ervoor dat je de ins-en-outs van dergelijke details snapt en er ook voor kan testen.
3. Verify thoroughly - Zodra je nieuwe tech stack gelijk is aan de oude en je alle ins-en-outs op orde hebt, is het tijd om te testenIn ons geval hebben we enorm geleund op property based tests (random google link over property based testing). Mede vanwege onze uitgebreide property based tests hebben we het vertrouwen gehad dat ons plan zonder problemen zou gaan werken
Het kost wat moeite en tijd om goede property based tests te schrijven, maar zodra ze staan, zijn ze goud waard
Ik denk dat het er ook wel vanaf hangt wat voor soort migratie je doet. Het zal bij een wat technischere migratie zoals een database wellicht anders zijn dan bij een wat meer operationeel systeem als geheel dat in een organisatie is ingebed en met vele leveranciers en afnemers te maken heeft.
Mijn ervaring is dat een big bang migratie go-live vermijden ook cruciaal is om deze soepel te laten verlopen, maar ik zit dan ook wel in omgevingen waarbij de systemen onder migratie ook continu aan een stortvloed aan wijzigingsverzoeken onderhevig zijn. In ons geval zijn het systemen die (veel) data verwerken en bewerken en uiteindelijk weer informatie leveren aan afnemers. De aanpak om te beginnen met simpelweg een nieuw systeem 'voor' het oude te plaatsen dat niet veel meer doet dan de data doorlussen en geleidelijk aan logica van het oude naar het nieuwe systeem te verplaatsen veel soepeler gaat dan er een volledige kopie naast bouwen. Dan heb je veel meer kleine, incrementele changes die makkelijker te testen zijn, tot je op het punt komt dat je ook de 'afnemende kant' geleidelijk aan naast het oude systeem kunt laten meedraaien en de output 1 op 1 kunt vergelijken.
En als het gaat om legacy code, kijk ook heel kritisch naar code / functionaliteit die al lang dood en begraven is, want afhankelijk van de software is dat rustig zo'n 10-30%. Voeg extra logging / metrics toe aan het oude systeem indien nodig, ga door een organisatie shoppen, gebruik feature toggles om in het oude systeem zaken 'per ongeluk' uit te zetten zodat eventueel het piepsysteem afgaat (zo niet, mooi, gebeurt het wel dan is het 'oeps, foutje'
"The question of whether a computer can think is no more interesting than the question of whether a submarine can swim" - Edsger Dijkstra
Voel er niet veel voor om handmatig een paar dozijn bestanden te renamen en referenties te fixen.
Ik pak maar eens een bak koffie en probeer het later weer.
De truc was schijnbaar om elk bestand een keer te openen voor de rename, waarom?

[ Voor 16% gewijzigd door D4NG3R op 17-02-2023 10:52 ]
Komt d'r in, dan kö-j d’r oet kieken
Mjah de eerste sprongen van compleet prut, naar of en toe goed, naar best redelijk nog wel best snel verlopen.Oon schreef op donderdag 16 februari 2023 @ 11:39:
[...]
Die sprongetjes lijken in de software wereld heel groot omdat ze eindelijk iets 'gekraakt' hebben, maar de 'gewone' automatische vertaalwereld is al een paar jaar flink gestagneerd. Enkele jaren geleden is DeepL heel groot geworden met hun model, maar zelfs die gaan weinig vooruit.
Ik zie het echt wel gebeuren dat volledig automatisch software schrijven er gaat zijn voordat we bruikbare automatische Engels->Nederlands vertalingen hebben. Aan de ene kant is DeepL een hele leuke tool voor vertalers, aan de andere kant beginnen ze heel snel achter te lopen op vergelijkbare tools binnen development die veel meer gebruik kunnen maken van snippets en herkennen van logica, want die logica is er in tekst niet.
Maar die laatste paar procenten naar echt bruikbaar en state of art steeds moeilijker te behalen zijn. Dus ja ontwikkeling lijkt wel vaker te stagneren nadat er enkele veelbelovende sprongen in korte tijd gemaakt zijn.
Always looking for developers wanting to work with Erlang.
MS: Oeh Visual Studio 17.5 is uit. Download 'm! 't Is hip! Het heeft brace pair colorization
.oisyn: sweet, checking it out...
** wachten op update **
** launch VS **
.oisyn: Hmm geen brace pair colorization? Misschien staat het uit by default
** zoekt optie **
** kan 'm niet vinden **
** gaat naar Twitter **
MS: Oh sorry brah het zit er toch niet in ktxbye
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Intellij heeft daar gewoon een plugin voor, VS kennelijk ook..oisyn schreef op woensdag 22 februari 2023 @ 23:40:
Lekker dan.
MS: Oeh Visual Studio 17.5 is uit. Download 'm! 't Is hip! Het heeft brace pair colorization
.oisyn: sweet, checking it out...
** wachten op update **
** launch VS **
.oisyn: Hmm geen brace pair colorization? Misschien staat het uit by default
** zoekt optie **
** kan 'm niet vinden **
** gaat naar Twitter **
MS: Oh sorry brah het zit er toch niet in ktxbye
https://marketplace.visua...sKristensen.RainbowBraces
"The question of whether a computer can think is no more interesting than the question of whether a submarine can swim" - Edsger Dijkstra
Brace yourself!.oisyn schreef op woensdag 22 februari 2023 @ 23:40:
Lekker dan.
MS: Oeh Visual Studio 17.5 is uit. Download 'm! 't Is hip! Het heeft brace pair colorization
.oisyn: sweet, checking it out...
** wachten op update **
** launch VS **
.oisyn: Hmm geen brace pair colorization? Misschien staat het uit by default
** zoekt optie **
** kan 'm niet vinden **
** gaat naar Twitter **
MS: Oh sorry brah het zit er toch niet in ktxbye
🠕 This side up
1
2
3
4
5
6
7
8
9
10
| List<String> customersRegistered = new LinkedList<String>(); retrieveRegistered(customerNumbers, customerNumbersRegistered, someOtherParameter); List<String> customersNotRegistered = new LinkedList<String>(); for (String customer : customers) { if (!customersRegistered.contains(customer)) customersNotRegistered.add(customer); } } |
Lekker side effects in je methodes gooien (de laatste twee parameters van retrieveRegistered worden in de methode zelf gevuld), niet snappen wat een set is en hoe disjunctie werkt en ga zo maar door. En dit is dan slechts een fragmentje uit een methode met een paar honderd regels code en 15 niveau's aan geneste control structures.
"The question of whether a computer can think is no more interesting than the question of whether a submarine can swim" - Edsger Dijkstra

:fill(white):strip_exif()/f/image/zHoj7AqYLEe3R1Zft9PX3pPl.png?f=user_large)
“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”

Je kunt dus tegenwoordig niet meer inloggen met digid met alleen je gebruikersnaam en wachtwoord voor belastingzaken, je hebt de app nodig of je moet inloggen met sms verificatie. Dat vind ik dus bloedirritant want dan moet ik steeds de telefoon van mijn vrouw erbij pakken om dingen te regelen.
Dus ik dacht, als ze mij nou gewoon machtigt dan hoeft dat niet meer. Is ook "netter" want dan heb ik haar login ook niet nodig. Blijkt dus dat een machtiging gewoon nog kan met louter gebruikersnaam en wachtwoord. Heb mezelf dus gemachtigd.zonder haar telefoon nodig te hebben

[ Voor 10% gewijzigd door .oisyn op 01-03-2023 18:37 ]
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Ik zat letterlijk alle instellingen door te zoeken.. super fijn.oisyn schreef op woensdag 22 februari 2023 @ 23:40:
Lekker dan.
MS: Oeh Visual Studio 17.5 is uit. Download 'm! 't Is hip! Het heeft brace pair colorization
.oisyn: sweet, checking it out...
** wachten op update **
** launch VS **
.oisyn: Hmm geen brace pair colorization? Misschien staat het uit by default
** zoekt optie **
** kan 'm niet vinden **
** gaat naar Twitter **
MS: Oh sorry brah het zit er toch niet in ktxbye
.Gertjan.: Ik ben een zelfstandige alcoholist, dus ik bepaal zelf wel wanneer ik aan het bier ga!
7.0.200 toevallig? Liep ik ook tegen aan en de Github action images zijn nog niet geupdate naar 7.0.201Caelorum schreef op woensdag 1 maart 2023 @ 22:12:
Ach..... Microsoft... Gisteren de laatste versie van dotnet sdk gedownload. Vandaag tegen een issue aangelopen met msbuild. Blijkt de laatste versie gewoon doodleuk een preview versie van msbuild mee te packagen, met daarin uiteraard het probleem waar ik tegenaan liep. Fijn Microsoft, misschien gewoon even niet een preview versie van tooling meepackagen met een non-preview versie van een sdk die door honderdduizenden (en waarschijnlijk meer) ontwikkelaars wordt gebruikt.
Dat was in 2006 al zo bij de DUO. Om daar in te loggen met DigiD moest je verplicht SMS verificatie hebben. Zonder mobiele telefoon, en dat was in 2006 helemaal niet zo raar, kon je dus gewoon geen OV-studentenkaart aanvragen; want je kon niet inloggen..oisyn schreef op woensdag 1 maart 2023 @ 18:35:
Lol, fantastisch geregeld weer.
Je kunt dus tegenwoordig niet meer inloggen met digid met alleen je gebruikersnaam en wachtwoord voor belastingzaken, je hebt de app nodig of je moet inloggen met sms verificatie. Dat vind ik dus bloedirritant want dan moet ik steeds de telefoon van mijn vrouw erbij pakken om dingen te regelen.
Dus ik dacht, als ze mij nou gewoon machtigt dan hoeft dat niet meer. Is ook "netter" want dan heb ik haar login ook niet nodig. Blijkt dus dat een machtiging gewoon nog kan met louter gebruikersnaam en wachtwoord. Heb mezelf dus gemachtigd.zonder haar telefoon nodig te hebben.

Het zit ook in .201GrooV schreef op donderdag 2 maart 2023 @ 08:52:
[...]
7.0.200 toevallig? Liep ik ook tegen aan en de Github action images zijn nog niet geupdate naar 7.0.201
"Ja nee dat is ook logisch, jullie zijn meer van de praktijk, wij meer van de theorie". Nee lul, plaatjes maken van dingen die niet bestaan heeft niets te maken met theorie, dat is gewoon fantasie. Ik wil je best een theoretische, ontologische verhandeling geven over Quine's interpretatie van Russel's theorie van omschrijvingen als voorwaarde om te praten over wat er bestaat, maar dat volg je waarschijnlijk toch niet.
Nou is wat er concreet staat een hopeloos complex en gefragmenteerd geheel van logica en configuratie waarvan helemaal niemand meer kan raden wat er aan de achterkant uitkomt als je er aan de voorkant iets ingooit, dus eigenlijk is de wens ook gewoon om vanaf scratch een 'simpel alternatief' te bouwen. Of ik even een ballpark estimate kon geven voor het bouwen van 'iets simpels'. Zucht.[/liefdagboek]
Koffie dan maar?
"The question of whether a computer can think is no more interesting than the question of whether a submarine can swim" - Edsger Dijkstra
Een paar rechte hoofdlijntjes, geen complexiteit, waar zit toch iedereen altijd zo moeilijk over te doen, als wij het tekenen is het super simpel.
Hahaaa altijd lekker architecten en developers die zo lekker met elkaar communiceren. Ik denk dat jullie daar wat sterkers nodig hebben dan koffie.Mugwump schreef op vrijdag 3 maart 2023 @ 08:45:
Gisteren wel weer een mooi dagje lachen met enterprise architectuur gehad. Die hadden in al hun wijsheid besloten dat 'iets' dat in het systeem zit dat wij aan het migreren zijn conform 'doelarchitectuur' niet hoort in het het betreffende systeem, maar bij een ander onderdeel van de organisatie. Prima joh, kun je dan even aangeven hoe de concepten in jullie architectuurplaatjes relateren tot wat er in de werkelijkheid bestaat? Want ik kan het niet rijmen.
"Ja nee dat is ook logisch, jullie zijn meer van de praktijk, wij meer van de theorie". Nee lul, plaatjes maken van dingen die niet bestaan heeft niets te maken met theorie, dat is gewoon fantasie. Ik wil je best een theoretische, ontologische verhandeling geven over Quine's interpretatie van Russel's theorie van omschrijvingen als voorwaarde om te praten over wat er bestaat, maar dat volg je waarschijnlijk toch niet.
Nou is wat er concreet staat een hopeloos complex en gefragmenteerd geheel van logica en configuratie waarvan helemaal niemand meer kan raden wat er aan de achterkant uitkomt als je er aan de voorkant iets ingooit, dus eigenlijk is de wens ook gewoon om vanaf scratch een 'simpel alternatief' te bouwen. Of ik even een ballpark estimate kon geven voor het bouwen van 'iets simpels'. Zucht.[/liefdagboek]
Koffie dan maar?
Dè developers podcast in je moerstaal : CodeKlets Podcast
Wie is wij? De bakker om de hoek, of Google? Als de diagrammen die jullie tekenen voldoende zijn voor jullie om software te kunnen bouwen, en te zorgen dat je daarmee ook de juiste beslissingen kunt nemen is dat goed. Maar dat geld toch niet voor alle organisaties?gekkie schreef op vrijdag 3 maart 2023 @ 09:00:
Enterprise architectuur, dat is toch een beetje Mondriaan nadoen met plaatjes bakken ?
Een paar rechte hoofdlijntjes, geen complexiteit, waar zit toch iedereen altijd zo moeilijk over te doen, als wij het tekenen is het super simpel.
Dè developers podcast in je moerstaal : CodeKlets Podcast
Ik ben ook gewoon 'architect' hoor.OMX2000 schreef op vrijdag 3 maart 2023 @ 09:33:
[...]
Hahaaa altijd lekker architecten en developers die zo lekker met elkaar communiceren. Ik denk dat jullie daar wat sterkers nodig hebben dan koffie.
Ik maak de hele dag ontwerpen en architectuurkeuzes, maar dan wel met inhoudelijke diepgang en ook daadwerkelijke gegrond in bestaande systemen. Wat je bij dat soort grote organisaties echter ziet is dat enterprise architectuur vooral vanuit een eigen ivoren toren aan het roeptoeteren is. Men heeft geen idee wat er in de praktijk is aan IT systemen en hoe die werken, men heeft slechts diagrammetjes die vaak alweer hopeloos gedateerd zijn, met concepten die wat er in de realiteit bestaan totaal niet dekken en ga zo maar door. Een model is altijd een abstractie van de werkelijkheid waarbij je zoveel mogelijk complexe details weglaat die niet relevant zijn voor hetgeen je probeert te communiceren. Het gaat vaak mis als mensen dat model gaan interpreteren als de werkelijkheid.
"The question of whether a computer can think is no more interesting than the question of whether a submarine can swim" - Edsger Dijkstra
21323332180770816 17 bits
4789388835553280 16 bits

Voor als je 't niet helemaal kunt volgen, even de Readme skimmen.
[ Voor 29% gewijzigd door RobIII op 03-03-2023 14:31 ]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij

There's no place like 127.0.0.1
Jeetje Rob, echt vriendelijk is ook anders he.RobIII schreef op vrijdag 3 maart 2023 @ 14:27:
Mijn. God. Blijkbaar is
21323332180770816 17 bits
4789388835553280 16 bits
Voor als je 't niet helemaal kunt volgen, even de Readme skimmen.
Ach, op die laatste twee alinea's in de laatste comment na heb ik 'm volgens mij heel netjes en zakelijk te woord gestaan. En zelfs dat laatste stukje valt nog mee volgens mij.PrisonerOfPain schreef op vrijdag 3 maart 2023 @ 15:14:
[...]
Jeetje Rob, echt vriendelijk is ook anders he.
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
"The question of whether a computer can think is no more interesting than the question of whether a submarine can swim" - Edsger Dijkstra
Schei uit. Jaaaaren terug iemand moeten uitleggen dat 2.37 hetzelfde is als 2.370Mugwump schreef op vrijdag 3 maart 2023 @ 15:24:
Zo had ik onlangs nog een klant die boos was dat een API niet altijd netjes 3 cijfers voor het aantal milliseconden in datetimes gebruikte. Maar even uitgelegd dat dit ook niet het aantal milliseconden is in de ISO-8601 specificatie, maar dat iets na de punt een fractie is van het laatste element voor de punt. Die bleef volhouden dat zijn developers zo niet konden werken omdat de date time niet te parsen viel zonder fixed precision.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
Nou zijn mijn laatste wiskundelessen alweer meer dan 20 jaar geleden, maar ... iets met significantie? "2.37" kan ook "2.374444..." zijn.RobIII schreef op vrijdag 3 maart 2023 @ 15:39:
[...]
Schei uit. Jaaaaren terug iemand moeten uitleggen dat 2.37 hetzelfde is als 2.370
https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...
Ja, true, daar heb je een punt, maar dat was niet de context.CodeCaster schreef op vrijdag 3 maart 2023 @ 15:45:
[...]
Nou zijn mijn laatste wiskundelessen alweer meer dan 20 jaar geleden, maar ... iets met significantie? "2.37" kan ook "2.374444..." zijn.
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
Dus dit werkt (.321):
1
2
3
4
5
| var dateTimeString = "2023-03-03T15:48:12.321"; var dateTime = DateTime.ParseExact(dateTimeString, "yyyy-MM-ddTHH:mm:ss.fff", null); Console.WriteLine(dateTime.ToString("O")); |
En dit niet (.3):
1
2
3
4
5
| var dateTimeString = "2023-03-03T15:48:12.3"; var dateTime = DateTime.ParseExact(dateTimeString, "yyyy-MM-ddTHH:mm:ss.fff", null); Console.WriteLine(dateTime.ToString("O")); |
Want de input moet exact aan de formatstring voldoen.
[ Voor 64% gewijzigd door CodeCaster op 03-03-2023 15:51 ]
https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...
Je gebruikt dan ook ParseExact. Wat wil je nou?CodeCaster schreef op vrijdag 3 maart 2023 @ 15:47:
Want de input moet exact aan de formatstring voldoen.
Nee, ik begrijp je punt hoor - klopt helemaal. Maar zoals ik zei: de context had niks met computers (of 'academisch geneuzel over significantie'
Ik weet 't exacte getal niet meer, maar het ging IIRC over een prijs waar (waarschijnlijk door een formattering-bug) iets van €2.3 op stond ipv €2.30 of zoiets.
[ Voor 16% gewijzigd door RobIII op 03-03-2023 16:11 ]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
*slap*CodeCaster schreef op vrijdag 3 maart 2023 @ 15:45:
[...]
Nou zijn mijn laatste wiskundelessen alweer meer dan 20 jaar geleden, maar ... iets met significantie? "2.37" kan ook "2.374444..." zijn.
Natuurkunde en daarboven. Wiskunde is gewoon exact
[ Voor 16% gewijzigd door .oisyn op 03-03-2023 16:54 ]
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Eigenlijk nog specifieker, want er werden "milliseconden" verwacht, dat is wat wezenlijk anders dan een fractie. Je mag volgens iso ook gewoon 20:30.5 als tijd hanteren. Dan is 5 ook niet het aantal seconden ofzo, maar een fractie van minuten, oftewel 30 seconden. Je kunt dus geen concrete eenheid afleiden aan hetgeen achter de punt staat, het is slechts een fractie van hetgeen voor de punt staat.RobIII schreef op vrijdag 3 maart 2023 @ 16:10:
[...]
Je gebruikt dan ook ParseExact. Wat wil je nou?
Nee, ik begrijp je punt hoor - klopt helemaal. Maar zoals ik zei: de context had niks met computers (of 'academisch geneuzel over significantie') te maken. Gewoon "in de volksmond" is 2.37 == 2.370.
Ik weet 't exacte getal niet meer, maar het ging IIRC over een prijs waar (waarschijnlijk door een formattering-bug) iets van €2.3 op stond ipv €2.30 of zoiets.
[ Voor 7% gewijzigd door Mugwump op 03-03-2023 18:13 ]
"The question of whether a computer can think is no more interesting than the question of whether a submarine can swim" - Edsger Dijkstra
ACC/Surgeon zeggen "Not fit for work"
Dus, heb ik single-handedly (letterlijk), mezelf maar een nieuwe website in elkaar geflanst op https://firesphere.dev
Not fit for work my :butt:
I'm not a complete idiot. Some parts are missing.
.Gertjan.: Ik ben een zelfstandige alcoholist, dus ik bepaal zelf wel wanneer ik aan het bier ga!
Wintersport?Firesphere schreef op zondag 5 maart 2023 @ 04:17:
Met verbrijzeld sleutelbeen en minstens 3 gebroken ribben, zit ik momenteel me thuis een ongeluk te vervelen.
ACC/Surgeon zeggen "Not fit for work"
Sterkte gewenst
Ik kwam er wel er wel achter dat de laatste Visual Studio update oude 7.x SDKs deinstalleerde. Op zich al discutabel, maar goed. Echter, al mijn builds het niet meer.GrooV schreef op donderdag 2 maart 2023 @ 08:52:
[...]
7.0.200 toevallig? Liep ik ook tegen aan en de Github action images zijn nog niet geupdate naar 7.0.201
He bleek dat hij wel de SDK had weggegooid, maar in de [versienummer] directory toch nog een Roslyn directory had laten staan en daardoor de [versienummer] directory ook niet heeft weggegooid, waardoor dotnet.exe zoekt naar een SDK in een directory die voor de rest leeg is.

Snel opgelost door de betreffende directories weg te gooien, maar was wel even schrikken toen Rider, Visual Studio en de command line problemen aangaven met het projectsysteem na een routineupgrade die ik even tijdens een daily standup laat lopen
[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]
Nee, het is zomer herfst, dus wintersport is een beetje zinloos
Controle over m'n fiets kwijt op zo'n beetje 40km/h
I'm not a complete idiot. Some parts are missing.
.Gertjan.: Ik ben een zelfstandige alcoholist, dus ik bepaal zelf wel wanneer ik aan het bier ga!
I'm not a complete idiot. Some parts are missing.
.Gertjan.: Ik ben een zelfstandige alcoholist, dus ik bepaal zelf wel wanneer ik aan het bier ga!
hCaptchaFiresphere schreef op maandag 6 maart 2023 @ 23:40:
Meer een vraag dan dev-rant, maar weet iemand een anti-form-spam oplossing zonder google?
Sinds de 2 dagen regel reageer ik hier niet meer
Tegen SPAM of tegen niet-menselijke gebruikers? Tegen SPAM heb ik in het verleden Akismet gebruikt, en dat zorgde ervoor dat er nauwelijks SPAM binnenkwam. Tegen niet-menselijke gebruikers heb ik helaas nog niets gevonden dat net zo betrouwbaar en effectief is als reCAPTCHA (van Google dus). In verband met redenen gebruiken wij reCAPTCHA v2, en dat blijkt bijzonder effectief. Het is alleen een behoorlijke impact op de gebruikerservaring dus we proberen "slim" te zijn in wanneer we hem tonen. In ons geval iig bij alle verkeer van buiten Europa. Voor alternatieven houd ik me aanbevolen.Firesphere schreef op maandag 6 maart 2023 @ 23:40:
Meer een vraag dan dev-rant, maar weet iemand een anti-form-spam oplossing zonder google?
Read the code, write the code, be the code!
Anders bieden ze ook Turnstile aan, privacy vriendelijke reCHAPTCHA alternatief https://blog.cloudflare.c...vate-captcha-alternative/
IE support is dood, en Chrome en Edge support stopt voor het OS.
Hoe vaak ik al niet heb gezegd dat het niet meer kan... ach ja. I'll watch the world burn.
Ask yourself if you are happy and then you cease to be.
Blijf je altijd houden. Het domste vind ik nog wel dat het argument vaak 'kosten' is.Lethalis schreef op woensdag 29 maart 2023 @ 09:41:
Als een aantal grote klanten nog Windows Server 2012 gebruiken en klagen dat ze geen websites meer kunnen openen![]()
IE support is dood, en Chrome en Edge support stopt voor het OS.
Hoe vaak ik al niet heb gezegd dat het niet meer kan... ach ja. I'll watch the world burn.
Als het puntje bij paaltje komt moet het opeens hals over kop worden geregeld door de mensen welke er eerder al voor waarschuwden en kost het vaak meer.

Over IE gesproken; de online omgeving van onze software geeft al jaren aan dat IE niet ondersteund wordt (heeft het nooit gedaan), de laatste ~2 jaar werken de nieuwste features in haar totaliteit niet meer als je het via IE benaderd. En dan nog krijgen we af en toe een klacht dat iets niet werkt, waarna we er achter komen dat ze in IE zitten.

Komt d'r in, dan kö-j d’r oet kieken
IE ondersteuning was sowieso altijd 'interessant' met alle compatibiliteitsmodi, vage feature flags, register settings en versies die niet helemaal hetzelfde waren tussen verschillende OS versiesD4NG3R schreef op woensdag 29 maart 2023 @ 10:00:
[...]
Blijf je altijd houden. Het domste vind ik nog wel dat het argument vaak 'kosten' is.
Als het puntje bij paaltje komt moet het opeens hals over kop worden geregeld door de mensen welke er eerder al voor waarschuwden en kost het vaak meer.
Over IE gesproken; de online omgeving van onze software geeft al jaren aan dat IE niet ondersteund wordt (heeft het nooit gedaan), de laatste ~2 jaar werken de nieuwste features in haar totaliteit niet meer als je het via IE benaderd. En dan nog krijgen we af en toe een klacht dat iets niet werkt, waarna we er achter komen dat ze in IE zitten.
:fill(white):strip_exif()/f/image/loRcK08c9QfNOyScFswX8BYM.png?f=user_large)
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
was xkcd niet eerder?Cartman! schreef op woensdag 29 maart 2023 @ 11:49:
[...]
Beetje gejat van de random number generator van Sony wel
[Afbeelding]
Einstein: Mijn vrouw begrijpt me niet
Wauw, kende je de XKCD niet?Cartman! schreef op woensdag 29 maart 2023 @ 11:49:
[...]
Beetje gejat van de random number generator van Sony wel
[Afbeelding]
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Bij de werkgevers die ik in het verleden had was kosten maar zelden het argument. Maar nieuwe business functionaliteit krijgt prioriteit terwijl upgrades (die geen nieuwe functionaliteit opleveren) als een intern probleem van IT worden gezien.D4NG3R schreef op woensdag 29 maart 2023 @ 10:00:
[...]
Blijf je altijd houden. Het domste vind ik nog wel dat het argument vaak 'kosten' is.
Als het puntje bij paaltje komt moet het opeens hals over kop worden geregeld door de mensen welke er eerder al voor waarschuwden en kost het vaak meer.
In de praktijk is gebrek aan mensen vaker het probleem. Nieuwe functionaliteit en upgrades vragen vaak om dezelfde mensen met kennis van het landschap.
Was Dilbert niet eerder?

Sinds de 2 dagen regel reageer ik hier niet meer
Yup.
For science heb ik het uitgezocht. Die dilbert comic komt gezien de url (http://www.dilbert.com/co.../dilbert2001182781025.gif) waarschijnlijk uit 2001. Wayback heeft hem schijnbaar in de cache, maar daar kom ik atm niet bij. De XKCD heeft nummer 221, welke volgens explainwiki in 2007 is uitgekomen.
Doet me denken aan een indrukwekkend snelle Fibonacci-implementatie van wijlen Joe Armstrong.
Ipsa Scientia Potestas Est
NNID: ShinNoNoir
Without nipples, boobs are pointless - 365 project - In mijn hoofd is het alle dagen Kerstmis - What type of bees make milk? Boobies! - What type of bees are scary? BoooOOOOOooobeees! - Cactusliefhebster
Google? Hell no. Best erg dat een site als Tweakers dat niet privacy vriendelijk kan doen. Wel lopen te adverteren met hun tracking vrije banners en vervolgens naar Google linken voor wat effectief een poll is. En dan niet alleen Google er voor inzetten maar als ik de link gebruik moet ik meteen met een Google account inloggenElkeBxl schreef op dinsdag 4 april 2023 @ 14:58:
[Afbeelding]
Hier zullen wel wat darkmode fans te vinden zijn zekers? Hier stemmen

Sshhhh, gewoon eraan toegevenRobertMe schreef op dinsdag 4 april 2023 @ 15:12:
[...]
Google? Hell no. Best erg dat een site als Tweakers dat niet privacy vriendelijk kan doen. Wel lopen te adverteren met hun tracking vrije banners en vervolgens naar Google linken voor wat effectief een poll is. En dan niet alleen Google er voor inzetten maar als ik de link gebruik moet ik meteen met een Google account inloggen

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Is ook wel weer een goede herinnering waarom een adblocker een eerste levensbehoefte is op het internet.
[ Voor 18% gewijzigd door .oisyn op 04-04-2023 16:06 ]
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
De blauwe variant van een donkere tweakers wordt gesponsord door CoolBlue.RagingPenguin schreef op dinsdag 4 april 2023 @ 15:56:
[Afbeelding]
Is ook wel weer een goede herinnering waarom een adblocker een eerste levensbehoefte is op het internet.
Sinds de 2 dagen regel reageer ik hier niet meer
Idem hier. Gebruik nu al een tijd de "Tweakers Perfect Dark" CSS en Tweakers zo in het grijs bevalt prima..oisyn schreef op dinsdag 4 april 2023 @ 16:06:
#teamgrijs!
En een bergje customCSS om het werk van de UI/UX'ers weer een beetje in het gareel te krijgen zodat je tussen alle meuk het nieuws weer kunt vinden.RagingPenguin schreef op dinsdag 4 april 2023 @ 15:56:
[Afbeelding]
Is ook wel weer een goede herinnering waarom een adblocker een eerste levensbehoefte is op het internet.
Je hoeft niet in te loggen he? Daarbij, je zou 'm in een private window kunnen openen...RobertMe schreef op dinsdag 4 april 2023 @ 15:12:
[...]
Google? Hell no. Best erg dat een site als Tweakers dat niet privacy vriendelijk kan doen. Wel lopen te adverteren met hun tracking vrije banners en vervolgens naar Google linken voor wat effectief een poll is. En dan niet alleen Google er voor inzetten maar als ik de link gebruik moet ik meteen met een Google account inloggen
Maargoed, ik ben het wel met je eens dat het suboptimaal is om hier een dienst van Google voor te gebruiken, dat stoort mij ook. Voor de context: Deze enquete wordt buiten development om gedaan, want dan hoeven we hier geen dure devtijd aan te spenderen. Als je een schappelijk betaalbaar alternatief weet dat wél privacyvriendelijk is, en waar niet-devvers mee kunnen werken, dan hoor ik 't heel graag
Einstein: Mijn vrouw begrijpt me niet
Tweakers zelf heeft ook poll functionaliteit voor de redactie..
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Met alle cloud oplossing gaat de noodzaak om sneller te reageren op veranderingen / deprecations / ... alleen maar toenemen.downtime schreef op woensdag 29 maart 2023 @ 12:22:
[...]
Bij de werkgevers die ik in het verleden had was kosten maar zelden het argument. Maar nieuwe business functionaliteit krijgt prioriteit terwijl upgrades (die geen nieuwe functionaliteit opleveren) als een intern probleem van IT worden gezien.
In de praktijk is gebrek aan mensen vaker het probleem. Nieuwe functionaliteit en upgrades vragen vaak om dezelfde mensen met kennis van het landschap.
Als je cloud gehoste VM's hebt, ga je die niet tot het einde der tijden zeg maar op niet ondersteunde OS'en kunnen laten draaien.
En met PaaS services gaat dit nog extremer zijn. Zo bouwen wij een oplossing die een bepaalde Azure service gebruikt. Die service beginnen onderzoeken toen het nog in public preview was; daarna ook daadwerkelijk gebruikt toen het GA was. Anderhalf, tot twee jaar nadien de melding: 'vanaf 2025 wordt dit niet meer ondersteund en zal de service verdwijnen'. Dus ja, nu bezig met een migratie
https://fgheysels.github.io/
Een groot voordeel van de cloud is dat dit veelal bij services inbegrepen zit. Al is het een beetje afhankelijk van hoe 'hoog in de stack' je gaat zitten. Je eigen databases hosten en up to date houden betekent dat er echt heel wat werk gaat zitten in onderhoud. Kies je voor iets als RDS op AWS, dan wordt al heel wat onderhoud voor je geautomatiseerd, waaronder minor version upgrades van je database. Kies je voor iets als DynamoDB, dan heb je al helemaal geen omkijken meer naar onderhoud op de database zelf.whoami schreef op woensdag 5 april 2023 @ 14:17:
[...]
Met alle cloud oplossing gaat de noodzaak om sneller te reageren op veranderingen / deprecations / ... alleen maar toenemen.
Als je cloud gehoste VM's hebt, ga je die niet tot het einde der tijden zeg maar op niet ondersteunde OS'en kunnen laten draaien.
En met PaaS services gaat dit nog extremer zijn. Zo bouwen wij een oplossing die een bepaalde Azure service gebruikt. Die service beginnen onderzoeken toen het nog in public preview was; daarna ook daadwerkelijk gebruikt toen het GA was. Anderhalf, tot twee jaar nadien de melding: 'vanaf 2025 wordt dit niet meer ondersteund en zal de service verdwijnen'. Dus ja, nu bezig met een migratie
Ik vind het zelf overigens wel een mooie stok achter de deur dat een grote Amerikaanse partij gewoon kan zeggen 'dit is EOL, we stoppen de service over X tijd en succes met migreren' versus de oude situatie waarbij je als hostende partij moest lullen als Brugman om een klant te overtuigen van het feit dat dit soort tijdsbesteding noodzakelijk is.
"The question of whether a computer can think is no more interesting than the question of whether a submarine can swim" - Edsger Dijkstra

Onze web projecten stonden al jaren in git, maar de core ERP software (Windows Forms) dus niet.
Vorige week dus eindelijk goedkeuring ervoor gekregen, omdat we een paar grote wijzigingen in het pakket willen doorvoeren, maar het wel moeten blijven supporten. Dus ik uiteraard meteen over git begonnen en dat we dan verschillende branches kunnen bijhouden.
Aan de ene kant ben ik blij dat ik eindelijk afscheid mag nemen van SourceSafe, aan de andere kant heb ik wel zoiets van "waar ben ik aan begonnen??"
Heb ook al een artikel over "squash merge" gelezen, om de history van de master wat cleaner te houden, als we feature branches mergen. Ook maar eens mee spelen.
Ach ja. Straks worden we nog modern

Ask yourself if you are happy and then you cease to be.
Dit is op zich wel een aardige uitleg wat betreft workflows voor beginners in de git wereld:Lethalis schreef op vrijdag 7 april 2023 @ 12:17:
Heb ook al een artikel over "squash merge" gelezen, om de history van de master wat cleaner te houden, als we feature branches mergen. Ook maar eens mee spelen.
Ach ja. Straks worden we nog modern
https://www.atlassian.com/git/tutorials/comparing-workflows
Sinds de 2 dagen regel reageer ik hier niet meer

Een meer paradoxale naam hadden ze niet kunnen kiezen voor dat pakket.
[ Voor 61% gewijzigd door .oisyn op 07-04-2023 13:06 ]
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Erg he?.oisyn schreef op vrijdag 7 april 2023 @ 13:06:
Serieus, SourceSafe?
Een meer paradoxale naam hadden ze niet kunnen kiezen voor dat pakket.
Ik wil er al vele jaren vanaf, maar het had bij mijn (oudere) collega's geen prioriteit. Vorig jaar is onze meest senior collega met pensioen gegaan. De beste man wist heel veel van de business en programmeerde hier en daar nog dingen. Durfde het eerlijk gezegd niet aan om hem git door zijn maag te splitsen.
Met zijn vertrek is er iets meer ruimte gekomen om te moderniseren.
Eigenlijk had hij niet meer moeten programmeren en was het beter geweest als hij een andere rol had gekregen, maar goed. Het feit dat ik dit over hem dacht, gaf mij tegelijkertijd ook het gevoel van "hoe lang kan ik nog puur developer zijn?"

Want als je eenmaal 60+ bent dan is de kans dat je de ontwikkelingen nog bijhoudt vrij klein.
Ik ben pas 42 en heb nog even de tijd, maar het is wel iets waar ik soms bij stil sta. Op een dag ben je die dino en dan moet je het van andere vaardigheden hebben.
Ask yourself if you are happy and then you cease to be.
Het geeft inderdaad een prima samenvatting. In de webprojecten gebruikten we tot nu toe een Centralized Workflow, maar in het ERP project wil ik naar iets dat veel lijkt op een Feature Branch Workflow. Met name omdat we een aantal features hebben die maanden in ontwikkeling zullen zijn, terwijl we de "main" branch moeten supporten en bugfixes moeten doen.CurlyMo schreef op vrijdag 7 april 2023 @ 12:20:
[...]
Dit is op zich wel een aardige uitleg wat betreft workflows voor beginners in de git wereld:
https://www.atlassian.com/git/tutorials/comparing-workflows
1
| git pull --rebase origin main |
Die rebase optie zag ik weleens voorbij komen, maar zie nu dankzij dit artikel pas wat het doet

Anyways, gaat vast goedkomen
Misschien kan ik hierna wel iets van continuous integration opbouwen, door een server regelmatige builds van de main branch te laten doen. Nu SourceSafe de deur uitgaat, opent het de deuren voor nog wat meer nieuwe mogelijkheden.
PS
Ik ga die link trouwens even doorsturen aan het team
Ask yourself if you are happy and then you cease to be.
Meteen vergeten. Zorgt voor meer ellende dan je er gemak van hebt. Een rechtlijnige geschiedenis is leuk om naar te kijken, maar verder niet bepaald praktisch.Lethalis schreef op vrijdag 7 april 2023 @ 12:17:
Heb ook al een artikel over "squash merge" gelezen, om de history van de master wat cleaner te houden, als we feature branches mergen. Ook maar eens mee spelen.
https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...
Oneens, squash merge is bij mij echt favoriet, maar je moet wel weten wanneer het wel en niet de voorkeur heeft. Voor kortlopende branches zou ik altijd squash merge doen, want wat heb je nog voor voordeel bij de historie van die branch. Je moet vooral zorgen dat je ook vaak genoeg merged, dan zijn de squash commits juist fijne eenheden die je ook makkelijk weer terug kunt draaien, of nog naar een release branch kunt cherry picken. Als je gebruik maakt van release branches en je wilt een hotfix terugmergen naar master dan moet je natuurlijk weer geen squash merge doen.CodeCaster schreef op vrijdag 7 april 2023 @ 15:59:
[...]
Meteen vergeten. Zorgt voor meer ellende dan je er gemak van hebt. Een rechtlijnige geschiedenis is leuk om naar te kijken, maar verder niet bepaald praktisch.
[ Voor 9% gewijzigd door Woy op 07-04-2023 16:14 ]
“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”
Hoe gaan jullie dan om met de hoeveelheid commits die iedereen produceert?CodeCaster schreef op vrijdag 7 april 2023 @ 15:59:
[...]
Meteen vergeten. Zorgt voor meer ellende dan je er gemak van hebt. Een rechtlijnige geschiedenis is leuk om naar te kijken, maar verder niet bepaald praktisch.
Als ik aan een feature werk, kan dat zomaar tot 20 commits leiden voordat ik het idee heb dat de feature gereleased mag worden. Soms probeer ik het nog een beetje te beperken door commits gedurende de dag te amenden.
Ik commit en push ook weleens aan het einde van de dag simpelweg zodat er een back-up van wordt gemaakt (gezien van de server een back-up wordt gemaakt, maar van de machine waarop ik werk niet per se... sowieso kan dat ook mijn privé laptop zijn die ik voor van alles en nogwat gebruik).
Het is dus eigenlijk een nietszeggende commit. Het hoeft niet eens te builden (in mijn eigen feature branch).
Overigens heb ik daarnet nog een merge gedaan zonder commit (met Git Extensions door daar "squash commits" aan te vinken) en die vervolgens als 1 commit naar de main gecommit en gepusht. Dat ging prima, maar jij bent het hiermee dus niet eens?
Ik wil de commit history van de main branch toch graag netter houden dan van de feature branches (die zoals @Woy aangeeft vaak kortlopend zullen zijn).
Ask yourself if you are happy and then you cease to be.
Release branches zou eventueel wel de volgende stap kunnen zijn, zodra iedereen een beetje gewend is aan git en de Feature Branch Workflow.Woy schreef op vrijdag 7 april 2023 @ 16:12:
[...]
Oneens, squash merge is bij mij echt favoriet, maar je moet wel weten wanneer het wel en niet de voorkeur heeft. Voor kortlopende branches zou ik altijd squash merge doen, want wat heb je nog voor voordeel bij de historie van die branch. Je moet vooral zorgen dat je ook vaak genoeg merged, dan zijn de squash commits juist fijne eenheden die je ook makkelijk weer terug kunt draaien, of nog naar een release branch kunt cherry picken. Als je gebruik maakt van release branches en je wilt een hotfix terugmergen naar master dan moet je natuurlijk weer geen squash merge doen.
Ik zie daarin het voordeel dat we snel zouden kunnen controleren wat in welke versie zit en wat niet. Aan de andere kant kunnen we ook commits in de main branch taggen (oftewel commit X betekent versie x.y.z van de software).
Ask yourself if you are happy and then you cease to be.
Lijkt mij afhangen van wat er in commits zit en hoe omvangrijk en op zich zelf ze staan.Lethalis schreef op vrijdag 7 april 2023 @ 16:19:
[...]
Hoe gaan jullie dan om met de hoeveelheid commits die iedereen produceert?
Als ik aan een feature werk, kan dat zomaar tot 20 commits leiden voordat ik het idee heb dat de feature gereleased mag worden. Soms probeer ik het nog een beetje te beperken door commits gedurende de dag te amenden.
Ik commit en push ook weleens aan het einde van de dag simpelweg zodat er een back-up van wordt gemaakt (gezien van de server een back-up wordt gemaakt, maar van de machine waarop ik werk niet per se... sowieso kan dat ook mijn privé laptop zijn die ik voor van alles en nogwat gebruik).
Het is dus eigenlijk een nietszeggende commit. Het hoeft niet eens te builden (in mijn eigen feature branch).
Overigens heb ik daarnet nog een merge gedaan zonder commit (met Git Extensions door daar "squash commits" aan te vinken) en die vervolgens als 1 commit naar de main gecommit en gepusht. Dat ging prima, maar jij bent het hiermee dus niet eens?
Ik wil de commit history van de main branch toch graag netter houden dan van de feature branches (die zoals @Woy aangeeft vaak kortlopend zullen zijn).
Als het vooral bugfixes of brainfarts zijn die niet echt heel relevant zijn dan zou ik die wel squashen want het levert niet iets bruikbaars op voor je historie. Maar een hele feature altijd platslaan tot een enkele commit lijkt me ook niet verstandig. Zeker niet voor omvangrijkere zaken waar een aantal stappen zijn gezet om tot het eindresultaat te komen. Bijvb. eerst stukje refactor en daar de rest. Dan kun je het waarom mooi duidelijk maken in de commit message.
Kortom vooral nadenken waarvoor het (in de toekomst) meer inzicht kan geven of van pas kan komen. Of je iets splitst of juist squashed. En lijkt me onderdeel van de review.
Zie je bij (grotere) opensource projecten ook vaak genoeg. Om commits/patches anders in te delen om een leesbaarder beter reviewbaar geheel te krijgen. En daar doorgaans het ook de bedoeling is dat je code op enig punt in je commit reeks van een feature/patch-serie nog compiled en werkt.
[ Voor 10% gewijzigd door gekkie op 07-04-2023 16:38 ]
Dit topic is niet de plaats om te lopen helpdesken. De Coffee Corner is primair bedoeld als uitlaatklep voor iedereen in de Devschuur® en niet als vraagbaak.