tag:blogger.com,1999:blog-274882382019-05-23T11:35:56.707+02:00taw's blogThe best kittens, technology, and video games blog in the world.tawhttp://www.blogger.com/profile/16972845140253292628noreply@blogger.comBlogger663125tag:blogger.com,1999:blog-27488238.post-51180890133898407952019-05-04T18:56:00.003+02:002019-05-04T18:56:59.516+02:00Total War: Rome II Review<div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-M3T9rQA9KQo/XM3EOX36NwI/AAAAAAAAijc/4IGngZsuLDk5Wy1X6zY--2E0Ap9zmGVMwCLcBGAs/s1600/an_embarrassment_to_all_feral_kind_tom_cats_all_over_the_world_are_shaking_their_head_in_disgust_by_praline3001_from_flickr_cc-nc-nd.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" title="An embarrassment to all feral kind... Tom cats all over the world are shaking their head in disgust.... by praline3001 from flickr (CC-NC-ND)"><img alt="An embarrassment to all feral kind... Tom cats all over the world are shaking their head in disgust.... by praline3001 from flickr (CC-NC-ND)" border="0" data-original-height="1206" data-original-width="1600" height="482" src="https://1.bp.blogspot.com/-M3T9rQA9KQo/XM3EOX36NwI/AAAAAAAAijc/4IGngZsuLDk5Wy1X6zY--2E0Ap9zmGVMwCLcBGAs/s640/an_embarrassment_to_all_feral_kind_tom_cats_all_over_the_world_are_shaking_their_head_in_disgust_by_praline3001_from_flickr_cc-nc-nd.jpg" width="640" /></a></div><br />I'm really late to the party, but this game had such awful launch, I delayed it a bit, and then I was busy, so here I am, reviewing a 6 year old game.<br /><h3>It is not Rome I</h3>At first I tried to play it like it's basically Rome I with better graphics and weird settlement system, and that really doesn't work.<br /><br />Battles work more or less like in previous Total War games, but on campaign level it's definitely not so. The biggest difference is that you literally can't have any troops not attached to a general, and limit on number of armies you're allowed to have is quite low.<br /><br />This breaks a lot of common patterns like recruiting more units and sending them to frontlines, leaving some units behind as extra garrison, or to protect settlement from rebels, splitting big army in half to clean up multiple leftover AI troops, or separating a single unit to send it ahead to scout.<br /><br />There's a new system of provinces made out of (usually) 3-4 settlements. This really cuts on micromanagement. A very interesting thing they did is that province's capital settlement has walls, but none of its minor settlements do. This completely avoids the problem Medieval 2 had, where 80% of battles were assaults on walled settlements, which might have been historically accurate, but not terribly exciting.<br /><h3>Autoresolve all the things</h3>A surprising and very welcome change is autoresolve not being ridiculously biased against the player, like it was in all previous Total War games. In Empire I'd sometimes try to autoresolve a trivial fight where I had 10:1 advantage and I'd likely wipe out the enemy completely without a single casualty, only to be told that my army lost. None of that here.<br /><br />Even if win was guaranteed, manually fighting all trivial battles was necessary because reinforcing required getting back to high level settlement (in Rome I and Medieval 2), or paying ridiculous amounts of money (Empire).<br /><br />Here, army losses are surprisingly inconsequential. Armies reinforce for free, and quite fast, so as long as none of the units in your army get completely wiped out. This was introduced back in Napoleon, but together with reasonable autoresolve, it means there's no point in fighting most one-sided battles. You'd mostly fight close battles, which are far more interesting.<br /><h3>Female generals drama</h3>For my first campaign I took the obvious choice of Ptolemaic Egypt. I don't really give much shit about Western Rome, Constantinople the only true Rome etc. Back in Rome I, Egypt was infamous for being ridiculously ahistorical, with bronze age armies thousand years out of their time. In fact "Egypt" by that time was a Greek kingdom, with the usual Hellenistic armies of heavy phalanx supported by skirmishers and light cavalry.<br /><br />Now Egypt has a reasonable unit roster. Except all the generals I can hire are female. I was quite baffled by that, and thought that maybe they're some family members, which would maybe be excusable, but nope, they're just some total unrelated randos. WTF?<br /><br />So it turns out there was this big drama, about 5 years after release, Rome II silently pushed a patch which added female generals, at ridiculously high spawn rates, to all factions including those which had absolutely no business having them. And then instead of toning it down to reasonable levels, and just to factions where it would make some sense, or at least making this silliness optional, devs went full "fuck you all, don't like it, don't play the game" mode. They got very well deserved Steam review bombing for it, but did not learn their lesson.<br /><br />It's shockingly different from how well a game like Crusader Kings 2 handles gender. Playing a king is quite different from playing a queen, different cultures and religions handle status of women differently, and when you start a new game you can choose a few options to expand state of women. Or if you reform a religion.<br /><h3>Immersion failures continue</h3>One really annoying thing about historical Total War games is that they start by hiding the whole map except your country and its immediate neighbours. It's good that I remember what the map looked like, so I can play based on that. And it turns out Rome II map has very little to do with actual history. Seleucids are really tiny!<br /><br />In 272 BCE Seleucids were basically half the map, a mega-Persia stretching from Western Anatolia through Mesopotamia, Persia, all the way to a chunk of Central Asia and Afghanistan and Western India. Instead they have 6 settlements on Syrian coast and a bunch of vassals. Wat?<br /><br />Let's talk immersion. People play historical games for the same reason they watch 22nd Avengers movie. They have connection with historical countries or established characters. I've heard Shogun 2 is a good game, but I've never played it because I don't give a fuck about all the Shimazus, Takedas, and Uesugis. Who is that even? EU4 has about 400 countries, but it turns out <a href="https://forum.paradoxplaza.com/forum/index.php?threads/eu4-playerstats.757556/">over 60% of games are just top 15 nations</a>. Only half of these are even that strong.<br /><br />It's just so much more fun to immerse yourself in all those historical conflicts. Playing Byzantium in EU4 is borderline masochistic, and yet 1 in 40 of all games is someone trying to stop the kebab menace and restore the glory of Constantinople. People even make mods for restoring Byzantium in HoI4. It's great to also have Hins Kayfa and Tannu Tuva for people who are looking for their 100th campaign, but even these campaign feature mostly well known countries as key antagonists and NPCs.<br /><br />What does it have to do with it all? When you start with historical setting, or established fictional setting for that matter, you have a budget for how much you can change before people go "<a href="https://www.imdb.com/title/tt4123430/">fuck this shit, it's not the Harry Potter I love</a>". And many things already demand a chunk of this budget. Better gameplay or technical issues will require breaks with history. Tiny Seleucids might very well be good for the game. Being historically inaccurate to increase the coolness factor is good use for the budget. Being true to people's perception of history rather than actual history (like Rome I Egypt) is fine use of the budget. Every MCU movie needs to spend some time introducing new characters viewers don't care for yet, that uses up part of that budget.<br /><br />Go too far, and break immersion stupidly, and you get backlash. Even most beloved universes like <a href="https://www.imdb.com/title/tt3778644/">Star Wars</a> and Harry Potter have breaking point. For historical games this budget is a lot lower. Blowing up a big chunk of immersion budget on something as stupid as forcing female generals on Greek and Roman factions is just so fucking dumb. Not listening to the players is even dumber.<br /><h3>Interface prioritizing minimalistic style over functionality</h3>Anyway, back to the game. Older Total War games had big interfaces where all relevant information was always easily accessible. Rome II instead uses minimalistic highly stylized interface, with completely meaningless icons without text, and where information is hidden behind multiple layers of tooltips, or requires alt tabbing to a wiki. Like, how do I know which buildings I can build in a settlement once I expand it? As far as I can tell, there's no in-game way at all.<br /><br />From UX point of view that's just atrocious. If you play a lot and don't mind alt tabbing to wiki, you'll get over it eventually, but your first few campaigns it will be a constant pain.<br /><br />In older games it was really easy to understand what's going on. When game gave me the choice which building to construct, or which unit to recruit, all relevant information was there. In Rome II it's just not there. What's the difference between those two units? Here's 10 sliders, have fun figuring out what they mean. How much money will this building generate compared to that other building? Can anyone even figure this out without alt tabbing to Excel?<br /><br />This complexity doesn't make game deeper. On the contrary, without any clear information what which choice does, players will either pick at random, or just read somewhere what's the optimal choice, and in either case they'll make no meaningful choices during gameplay.<br /><br />One interface issue that is highly problematic every single time is that routing units are basically invisible during battles, and chasing them is very important. Giving them white flags like in previous games would be such an obvious improvement.<br /><h3>Bugs 6 years after release</h3>It really did not help my first impression of the game that during the first tutorial siege, AI army hit some invisible wall in the settlement, and just stood there stuck. I tried to attack them, but my armies were also staring at invisible wall in the middle of some street. I finally figured out that if I take my troops out of the settlement and walk in from same direction AI took, I can fight them. It was the only bug I encountered so far (not counting Greek female generals, which are arguably a bug), but wow, those were not good first impressions.<br /><h3>Politics stuff</h3>Rome II has whole extra layer of managing politics of your faction, with other families, something like 40 interactions, civil wars, senate, and so on. It's not clear what all of that does, and so far I've been mostly ignoring it, and it seems to be fine to ignore it.<br /><br />One baffling thing is that I can't find any options for getting my children married. Maybe all the women joined the army, so there's nobody left to marry?<br /><h3>Overall</h3>Battles are great. Maybe comparing your best Medieval 2 battle to best Rome II battle, Medieval II still wins. But thanks to autoresolver and reinforcement changes getting rid of most one-sided battles, much better mix of walled sieges / unwalled sieges / field battles, and how well battles play, I'd say that a median Rome II battle is more fun than median battle in any previous Total War game.<br /><br />Campaign changes reduce micromanagement, but consequences of the choices are much less clear, so it's a bit mixed.<br /><br />Interface is just plain bad. It prioritizes style over functionality far more than is reasonable.<br /><br />Immersion is mostly fine. I'm reasonably tolerant, but I'll get a mod to fix the biggest silliness for my next campaign.<br /><br />Game performance is so far totally great. It runs better than Rome I on my hardware.<br /><br />I had horrible first impressions of the game, but mostly positive second impressions.<br /><div><br /></div>tawhttp://www.blogger.com/profile/16972845140253292628noreply@blogger.com4tag:blogger.com,1999:blog-27488238.post-21938269786147528142019-04-30T04:19:00.000+02:002019-04-30T04:19:35.141+02:00Challenges for April 2019 SecTalks London<div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-uk6taClZFJM/XMewK97c1UI/AAAAAAAAihA/MwgmWEWtq1YvU4BCQGAedBTtl0F4RYWbACLcBGAs/s1600/omalley_by_sylvie_mm_from_flickr_cc-nc-nd.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" title="O'Malley by Sylvie MM from flickr (CC-NC-ND)"><img alt="O'Malley by Sylvie MM from flickr (CC-NC-ND)" border="0" data-original-height="1600" data-original-width="1600" height="640" src="https://4.bp.blogspot.com/-uk6taClZFJM/XMewK97c1UI/AAAAAAAAihA/MwgmWEWtq1YvU4BCQGAedBTtl0F4RYWbACLcBGAs/s640/omalley_by_sylvie_mm_from_flickr_cc-nc-nd.jpg" width="640" /></a></div><br />I just keep winning them, and by convention the winner organizes the next one, so I just ran another round of&nbsp;<a href="https://www.meetup.com/SecTalks-London/">London SecTalks CTF</a>.<br /><br />There were 10 challenges. The winner got only 6, but each challenge was solved by at least one person during the event. So maybe it was just a bit too much, but it's better to have too many than too few challenges.<br /><br />Challenge files and code used to generate them are&nbsp;<a href="https://github.com/taw/sectalks-april-2019">available on github</a>.<br /><br />There are no answers below, but some serious hints which might make it too easy.<br /><br />For previous rounds, see posts about&nbsp;<a href="http://t-a-w.blogspot.com/2017/10/challenges-for-september-2017-sectalks.html">September 2017</a>,&nbsp;<a href="http://t-a-w.blogspot.com/2017/12/challenges-for-november-2017-sectalks.html">November 2017</a>,&nbsp;<a href="http://t-a-w.blogspot.com/2018/06/challenges-for-may-2018-sectalks-london.html">May 2018</a>,&nbsp;<a href="http://t-a-w.blogspot.com/2018/08/challenges-for-july-2018-sectalks-london.html">July 2018</a>, <a href="https://t-a-w.blogspot.com/2018/10/challenges-for-october-2018-sectalks.html">October 2018</a>, and <a href="https://t-a-w.blogspot.com/2019/03/challenges-for-february-2019-sectalks.html">February 2019</a> CTFs.<br /><h3>EBCDIC (5 points)</h3>It was a simple challenge for beginners. The flag was encoded using <a href="https://en.wikipedia.org/wiki/EBCDIC">EBCDIC</a>. It could even be done manually.<br /><h3>CSS (10 points)</h3>This was possibly the most original challenge, the flag was encoded in a pure CSS maze, where you'd need to mouseover each correct letter in order to get the challenge.<br /><br />CSS wasn't too obfuscated, so that was the easiest way to solve it.<br /><h3>CTR (15 points)</h3>A small server which encrypted your message with AES-CTR. There was also encrypted flag.<br /><br />The problem was that <a href="https://xkcd.com/221/">IV was not generated every time</a>, and <a href="https://en.wikipedia.org/wiki/Stream_cipher_attacks#Reused_key_attack">there's a standard attack for that</a>.<br /><h3>sayflag (20 points)</h3>This was a small MP3 file, encrypted with a <a href="https://en.wikipedia.org/wiki/XOR_cipher">XOR key</a>. The file did not have ID3 tag, so there's <a href="https://en.wikipedia.org/wiki/Known-plaintext_attack">not enough known plaintext for the usual attack</a>.<br /><br />The hint suggested one alternative approach:&nbsp;<i>MP3 compression works like JPG, but block artifacts would be fatal, so compressed blocks overlap a bit. To avoid special treatment for the last block, encoders add some silence at the end of the file (also sometimes at the start), so that part usually has very low entropy. No ID3 here.</i><br /><br />With this hint it should be fairly easy to adapt the attack.<br /><h3>Rust (25 points)</h3>A simple flag validator, this time written in Rust to make reverse engineering a bit more challenging.<br /><h3>RSA Signatures v1 (30 points)</h3>This was a fun double challenge. The challenge was "<a href="https://en.wikipedia.org/wiki/RSA_(cryptosystem)">textbook RSA</a>" signature server without any padding or hashing. It would verify and sign any "safe" message, and the task was to give it "unsafe" one containing <code>admin=yes</code>.<br /><br />There were two versions of this challenge, and diffing them revealed some extra checks which were missing from the first version, which could be very easily exploited.<br /><h3>Codage Hexadecimal (35 points)</h3>French plaintext got <a href="https://en.wikipedia.org/wiki/Hexadecimal#Base16_(Transfer_encoding)">hex-encoded</a>, but with digits mixed up. It was tiny bit harder than previous English challenge, as there were was a bit of Unicode with accented characters.<br /><h3>from_past_import_flag (40 points)</h3>A program that would generate a flag, but only if you run it in 2005. To avoid being fooled by changing laptop clock it double checks with <a href="https://en.wikipedia.org/wiki/Network_Time_Protocol">NTP server</a>, but NTP is completely unsecured, so it's very easy to redirect that traffic to a local NTP server.<br /><br />Or just attack the file with gdb.<br /><h3>RSA Signatures v2 (45 points)</h3>In the second part of textbook RSA signatures challenge, bounds check issues were fixed, so a proper <a href="https://en.wikipedia.org/wiki/Malleability_(cryptography)">RSA signature malleability attack</a> was needed.<br /><h3>Chifferment par Substitution (50 points)</h3><a href="https://en.wikipedia.org/wiki/Substitution_cipher">Substitution cipher</a>, this time on a French text, and without most punctuation. It's not difficult, it's just fairly time consuming.tawhttp://www.blogger.com/profile/16972845140253292628noreply@blogger.com0tag:blogger.com,1999:blog-27488238.post-21167446272615792872019-04-27T09:17:00.003+02:002019-04-27T09:17:51.838+02:00A Guide to 2020 Elections for non-Americans<div class="separator" style="clear: both; text-align: center;"><a href="https://www.blogger.com/Ginger%20Temptation%20by%20Bennilover%20from%20flickr%20(CC-ND)" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Ginger Temptation by Bennilover from flickr (CC-ND)" border="0" data-original-height="1313" data-original-width="1600" height="524" src="https://1.bp.blogspot.com/-HWNauZertlE/XMQBn9eV2OI/AAAAAAAAigM/R0xQ3DzEzzMq1tJPd3DRFaeOMNRZXHvqgCLcBGAs/s640/ginger_temptation_by_bennilover_from_flickr_cc-nd.jpg" width="640" /></a></div><br /><br />American elections are a great show, but it might be difficult for a non-American to understand what's going on exactly.<br />To help everyone enjoy it, I wrote this post.<br /><br />It's a post about politics, but I'm not advocating any political position here. If you're interested in more, I linked a lot of references.<br /><br />Before I get to the candidates, I need to clarify some background points.<br /><h3> American elections do not matter </h3>American political system is designed to maximize gridlock and inertia, so even the most radical claims made during campaigns rarely translate to much policy change.<br />Candidates tend to propose sweeping changes, and most of the time either nothing happens, or some extremely watered down compromise bill passes.<br /><br />Regardless of who wins, government will grow bigger, public debt will keep growing, young people will keep getting screwed by gerontocracy, housing and healthcare will keep getting more expensive, Constitutional rights will keep getting curtailed, and so on.<br /><br />Most of time something changes suddenly it's due to unelected Supreme Court legislating from the bench and bypassing the whole democratic process.<br /><h3> Two Party System and Primaries </h3><a href="http://t-a-w.blogspot.com/2019/03/how-democratic-are-countries-really.html">First Past The Post</a> system enforces two big national parties. Sometimes regional parties also emerge (like <a href="https://en.wikipedia.org/wiki/Bloc_Qu%C3%A9b%C3%A9cois">Bloc Québécois</a> or <a href="https://en.wikipedia.org/wiki/Scottish_National_Party">SNP</a>), but not in US. National "third party" is basically impossible, except when the part system falls apart completely.<br /><br />This effect is even stronger in the US. On one hand <a href="https://en.wikipedia.org/wiki/Gerrymandering_in_the_United_States#Bipartisan">bipartisan gerrymandering</a> lets major parties collude to prevent any minor from emerging. And on the other hand, American parties are far more open than European parties, with "<a href="https://en.wikipedia.org/wiki/Big_tent">big tent</a>" model.<br /><br />Even if someone's positions are very far from the mainstream, they should just pick one of the major parties and stand in primaries, it's far more promising than a futile independent run. Donald Trump is an example of this approach succeeding, but many people like Ron Paul and Bernie Sanders attempted this with some success. Of previous presidents under new primary system, Jimmy Carter, Ronald Reagan, Bill Clinton, and Barrack Obama were fairly marginal figures in their parties, and not definitely not their party's establishment first choices.<br /><br />Similar system exists for Congressional and state elections. It's less so nowadays, but it used to be common to have wide diversity of views on both sides.<br /><h3> How Primaries Work </h3>Parties choose their candidate in "primaries".<br /><br />Presidents can serve two terms, and sitting president gets de facto automatic nomination from their party. Sometimes there's a token primary opponent, but nobody expect anything to come out of it.<br />For 2020 elections, Republican Party will nominate president Donald Trump. Democratic Party will hold a proper primary.<br /><br />During primaries different states vote at different times, which is extremely helpful for candidates with less money. Instead of being forced to get money from big donors for a national campaign, a candidate can just focus on a few early states, and if that appeal is successful, they'd have much easier time fundraising for the rest of the campaign later.<br /><br />Each state elects some number of delegates. Republican primaries are closer to "winner takes all" model, and Democratic primaries are closer to "proportional" model, but each state's primary is different.<br /><h3> Everybody is horrible. It's by design </h3>Two party system means both parties are vast coalitions including a lot of views. Including many absolutely horrible people.<br /><br />Even if two parties take fairly similar moderate position on some issue, people with very extreme views will join whichever party is closer to their views. And there's assortment of special interests and people with unusual causes who end up in one party or another.<br /><br />As it's necessary to keep parties broad to win, candidates and parties cannot reject such people except in most extreme circumstances. This is somewhat moderated by the need to appeal to swing voters.<br /><br />In primaries extremist tendencies tend to be a lot more pronounced, as candidates are fighting over voters from their own party, not for swing voters. People with extremists views are also much more likely to participate in primaries, contribute money, volunteer, and so on. To a degree, big donors act as a bit of a counter-balance to this extremist bias.<br /><br />So all successful candidates always pander to people on the fringes, including often some really horrible people. It's mostly cheap talk, and generally very little policy change comes out of it.<br /><h3> Horrible candidates do not help third parties </h3>One would naively think that major parties nominating horrible candidates would help third parties, but the opposite is the case.<br /><br />Donald Trump and Hillary Clinton in 2016 were <a href="https://fivethirtyeight.com/features/americans-distaste-for-both-trump-and-clinton-is-record-breaking/">the first and second most hated candidates in recorded history</a>, and this only made sure everyone voted for one of them due to hating the other. For what it's worth people who disliked both mostly voted Donald Trump, so basically Donald Trump was disliked by more people overall, but Hillary Clinton was disliked more intensely by swing voters.<br /><h3> Polarization </h3>It's not completely clear why, and there are many interesting theories, but American politics became a lot more <a href="https://www.people-press.org/2014/06/12/political-polarization-in-the-american-public/">polarized</a> over last few decades.<br /><br />Depending on how you look, it started in the 1990s, and got progressively worse with time. By now it got so bad, <a href="https://www.pri.org/stories/2016-02-15/people-don-t-date-across-political-party-lines-any-more-why">huge number of people say they'd have an issue with their child dating a person supporting the other party</a>, a position that would be totally baffling to Americans of the past, or to most of the world today.<br /><br />A side effect of this polarization is that media generally take sides, and whatever you'll read about the candidates will likely be from highly partisan position. It's difficult to get fair information, but that's what I'm here for.<br /><br />Anyway, let's get to the candidates. Democratic candidates ordered alphabetically.<br /><h3> Never vote for old people </h3>There needs to be a maximum age for top level positions. Humans at this age are biologically incapable of high level performance, and the system is gerontocratic enough as is. <a href="https://www.telegraph.co.uk/news/2017/01/20/obama-now-barack-has-aged-eight-years-white-house/">Presidency ages people fast</a>, and people who already start old really can't do it.<br /><br />Old candidates often claim that they're far healthier than typical person their age, but don't believe any such claims.<br /><br />It's well documented that White House lied about Ronald Reagan's mental decline. Even more extreme case, for Franklin D. Roosevelt's 4th term press lied about his health so much American people basically elected a corpse. In both cases having mentally incapable president had serious consequences, it was especially bad for Roosevelt, as <a href="https://en.wikipedia.org/wiki/Alger_Hiss">his government was overran by Soviet agents</a>.<br /><h3> <a href="https://www.donaldjtrump.com/">Donald Trump</a> </h3>Current president and presumed Republican nominee. As a political outsider he's awful at being a politician, failing at navigating the process, failing to stay on message, and generally acting as a huge troll. In terms of actual policy, he achieved very little. His old age is definitely not helping.<br /><br />Democratic-leaning media are frequently described as suffering from a "<a href="https://en.wikipedia.org/wiki/Trump_derangement_syndrome">Trump Derangement Syndrome</a>", greatly exaggerating all issues, and believing conspiracy theories like the Russia collusion theory. It's not that different from treatment president Obama got from Republican-leaning media, with "<a href="https://en.wikipedia.org/wiki/Barack_Obama_citizenship_conspiracy_theories">birtherism</a>". It was also true to lesser degree of Bill Clinton and George W. Bush. As far as I can tell, presidents before Bill Clinton rarely faced this, at least not to this degree.<br /><br />Also he's 72 years old, so nobody should vote for him for this reason alone.<br /><h3> <a href="https://amyklobuchar.com/">Amy Klobuchar</a> </h3>Senator from Minnesota, <a href="https://www.businessinsider.com/all-staff-mistreatment-abuse-allegations-amy-klobuchar-2020-2019-2?r=US&amp;IR=T">best known for abusing her staff</a>.<br />She disputes these allegations, but <a href="https://www.politico.com/story/2018/03/21/worst-bosses-congress-476729">she has highest staff turnover in all Congress</a> so regardless of how correct all the details are, it would be really shocking if the story wasn't basically true.<br /><h3> <a href="https://www.yang2020.com/">Andrew Yang</a> </h3>The first serious Asian candidate. Best known for his support of Universal Basic Income (in the most modest opt-in form, so people could get welfare or UBI but not both), and premature worry about technological unemployment.<br /><br /><a href="https://www.youtube.com/watch?v=cTsEzmFamZ8">He was brave enough to go on Joe Rogan to argue his positions</a>, something all other candidates are too cowardly to do.<br /><br />He seems to be non-horrible. Also one I'd be most interested to see in debates.<br /><h3> <a href="https://berniesanders.com/">Bernie Sanders</a> </h3>In spite of coming second in 2016 Democratic primaries, he still refuses to officially join the Democratic Party. Supports big government as solution to all the world's problems.<br /><br />People often compare Bernie with Corbyn, but that's unfair, as Bernie actually has some integrity, while Corbyn supports anti-Semites, xenophobia against Central Europeans, Venezuelan dictatorship, Islamic terrorists, and pretty much every evil dictator imaginable. Bernie is same socialism with less hate.<br /><br />He's 77 years old, so nobody should vote for him for this reason alone.<br /><h3> <a href="https://betoorourke.com/">Beto O'Rourke</a> </h3>Best known <a href="https://www.vox.com/2019/3/22/18274294/beto-orourke-standing-on-countertops-tables">for standing on tables</a>, <a href="https://www.texastribune.org/2018/11/09/ted-cruz-beto-orourke-closest-texas-race-40-years/">for losing to Ted Cruz</a>, but far more narrowly than any Democrat did in Texas, and <a href="https://www.houstonchronicle.com/news/politics/texas/article/Police-reports-detail-Beto-O-Rourke-s-1998-13195088.php">for drunk driving</a>.<br /><br />He fundraises like a tier 1 candidate, but polls like a tier 2 candidate. He's known for taking very "woke" positions.<br /><h3> <a href="https://corybooker.com/">Cory Booker</a> </h3>Black senator from New Jersey. Liberal but not too extreme. Tries his best to pull off Obama 2.0, but black voters inexplicably seem to prefer white grandpa Joe Biden.<br /><br />Would be the <a href="https://www.livekindly.co/vegan-new-jersey-senator-cory-booker-celebrates-plant-based-diet-at-vegfest/">first vegan president</a>. <a href="https://en.wikipedia.org/wiki/Adolf_Hitler_and_vegetarianism">And you know who else was vegetarian</a>?<br /><h3> <a href="https://elizabethwarren.com/">Elizabeth Warren</a> </h3>A white woman best known for falsely claiming to be a native American, which DNA test then disproved. It's unclear if she tried to exploit "affirmative action" policies with her fake ancestry claims. She claims not, but evidence is mixed.<br /><br />In terms of policy positions fairly close to Bernie Sanders, but she's committed to Democratic Party. So far her campaign is getting nowhere, as Bernie Sanders is dominating that lane.<br /><br />She's also 69 years old, so fairly borderline if she'd be mentally capable of presidency.<br /><h3> <a href="https://joebiden.com/">Joe Biden</a> </h3>Barrack Obama's vice-president and current front-runner. It's difficult to know what he stands for, as over his long political career he took a lot of different positions. Usually presumed to be "moderate".<br />He recently became notorious for having <a href="https://www.youtube.com/watch?v=JKeG1iJNxGs">a fairly different idea of what's appropriate personal space</a>, making some people feel awkward, but <a href="https://www.politico.com/story/2019/04/10/poll-democrats-unfazed-by-joe-bidens-handsiness-1264132">most voters don't seem to care</a>.<br /><br />He's 76 years old, so nobody should vote for him for this reason alone.<br /><h3> <a href="https://kamalaharris.org/">Kamala Harris</a> </h3>A genuine mixed race woman, and former attorney general of California. Most notable for <a href="https://www.nytimes.com/2019/01/17/opinion/kamala-harris-criminal-justice.html">supporting all kinds of police and prosecutorial abuse</a>, doing her best to keep innocent black men in jail. Will black people vote for someone who represents the worst of mass incarceration police state just because she's half black? It's a theory I find seriously insulting to their intelligence.<br /><br />Also notable for <a href="https://twitter.com/NateSilver538">Nate Silver</a>'s belief that she's a tier one candidate, contrary to polling and all other data.<br /><h3> <a href="https://peteforamerica.com/meet-pete/">Pete Buttigieg</a> </h3>A gay mayor of a minor Indiana town. Most notable for <a href="https://edition.cnn.com/2019/04/10/politics/mike-pence-pete-buttigieg-know-better/index.html">hating on Vice-President Mike Pence</a> instead of the usual hating on Donald Trump.<br /><br />Also known for learning Norwegian for fun, which shows he questionable priorities in life.<br /><h3> <a href="https://www.tulsi2020.com/">Tulsi Gabbard</a> </h3>Representative from Hawaii. Easily the best designed website.<br />Best known <a href="https://edition.cnn.com/2019/03/10/politics/tulsi-gabbard-syria-bashar-al-assad-war-criminal/index.html">for being buddies with Syrian dictator and notorious war criminal Bashar al-Assad</a>.<br /><br />She's far lower tier than anyone else on this list, but come on, that beautiful website...<br /><h3> There's a bunch of others. </h3>According to DNC debate rules, <a href="https://fivethirtyeight.com/features/16-candidates-now-qualify-for-the-first-democratic-primary-debates/">at least 16 candidates qualify</a> to take part in primary debates. In addition to those I mentioned, Jay Inslee, John Delaney, John Hickenlooper, Julian Castro, Kirsten Gillibrand, and Tim Ryan<span style="white-space: pre;"> </span>also qualify, and a few more might just make it.<br /><br />Hopefully this post gave you enough background to grab the popcorn and enjoy primary debates.tawhttp://www.blogger.com/profile/16972845140253292628noreply@blogger.com2tag:blogger.com,1999:blog-27488238.post-18497875557613729702019-04-13T03:25:00.001+02:002019-04-13T03:25:17.464+02:00Napoleon Total War reviewEmpire Total War was the last Total War game I seriously played. Then I got into making modding tools for Empire, but I never played any of the newer games other than a few quick battles.<br /><br />I didn't get into Napoleon because I much prefer sandbox campaigns to scripted ones, and this is basically one big scripted war. Well, I'm going to ignore this and try to unify Germany as Prussia.<br /><br />So here's how I played, and towards the end a bit of game review.<br /><h3>Opening moves</h3>So playing Prussia at normal/normal. Started by trading some technologies, and making some trade deals.<br /><br />There's a huge war between France and various minors vs Great Britain, Austria, Russia, and other minors. Prussia doesn't take part in it yet, but it has oversized army it can barely pay for, so it's time to get some new taxpayers.<br /><br />So the obvious targets are German minors like Saxony and Mecklenburg.<br /><br />First battle of the game was one for Saxony, where AI was actually trying to much harder than in Empire. Enemies formed line before charging, then ran forward. Cavalry only tried doing its things when infantry attack was imminent. When attack broke out and Saxony reformed its troops, it did so away from my line (and diagonally, so I had to reposition my artillery), instead of each unit doing separate suicide run into my canister shot. There was still some derping, but improvement is real. Also the battle mini-map is top quality. It was real bad in Medieval 2 and Empire.<br /><br />Battle of Mecklenburg was even more fun. We both had about 800 regulars, except they also had 1600 firelock armed citizens. Mecklenburg put all its professional troops on one flank, and would not advance. After some feints, I charged my cavalry into the mob like it's Medieval 2 all over. This was sweet, and also probably wouldn't work on higher difficulty levels. 144 horsemen routing 1600 enemies losing just 10, that's some winged hussar tier charge. All this forced them to advance on me. AI still derped, and moved its artillery behind a hill just so it can shoot into it and not into my troops. Well, there's only so many bugs they can fix. Overall 872 vs 2408 battle ended up with just 45 casualties. I really like how they buffed cavalry, it was far too weak in Empire.<br /><h3>Lesser German Unification</h3>I took it slow basically waiting who's going to attack me first, France or the Coalition. France annexed its two German minor allies by event. That's something that existed in Empire too - AI gets those annexation events, but player doesn't. In Empire it was Spain integrating New Spain and Britain integrating Thirteen Colonies.<br /><br />I took Hesse, getting my general killed, and discovering just how damn expensive they are. I guess it's not such a great idea to use them as cheap cavalry.<br /><br />Then Oldenburg was the last German minor I could take while staying neutral.<br /><h3>First War with France</h3>It was now the question of which alliance to join. France held Hannover, Holland, Belgium, Bavaria, Baden-Wurttemberg, Alsace, and Tyrol, and it would be fairly clear Western / South-Western front.<br /><br />Coalition would require fighting in multiple directions while horrible exposed to backstab from France.<br /><br />I waited a few turns trying to get some diplomatic offers, but nothing came out of it. Well, time to attack France anyway. First turn I took Hannover, Amsterdam, and Baden-Wurttemberg. Another one of my generals died taking Brussels.<br /><br />After that I wanted to do a quick swing East and take Bavaria and Tyrol, but my spies informed me that somehow Napoleon with a full stack found his way there. Damn. So instead I took Alsace, sacked it, and abandoned it to the locals. I likewise sacked Reims.<br /><br />I was preparing for a big showdown with Napoleon, but just in case I asked him for peace, and he agreed, letting me keep all the lands, including Alsace and Reims, which were now going to be totally overran by rebels because they got sacked. Oops.<br /><h3>Napoleonic Rebels</h3>In Empire occupying anything automatically looted it and gave -13 unrest for minor settlements, and -30 unrest for majors. What counted as major wasn't totally clear.<br /><br />In Napoleon you can occupy peacefully which generates about -8 unrest, or loot which seems to generate about -25 unrest, damages a lot of buildings, but gives you lump sum of gold. I'm saying about as these don't seem to be the same between settlements. Or you can release as protectorate OPM, but only certain regions.<br /><br />If you want to keep settlement, it seems that peaceful occupation is far more profitable. Repairing damaged buildings, town watch cost, loss of tax income from destroyed town wealth, and upkeep cost of troops needed to pacify a region all together are just far more than gold you get from looting.<br /><br />Rebels in Alsace got absolutely ridiculous units. There was a tiny 3 unit stack I crushed. I didn't even notice that they also spawned second stack - 6 dragoons, 4 12-pound artillery, 10 line infantry, all with 3 experience. Like no country has this kind of units - they had huge advantage in numbers and in quality of infantry, artillery, and cavalry. Oh well, I guess I don't really need Alsace. I might be able to defeat that, but it was just the first wave, and next one would be coming in 3 turns.<br /><br />In Empire they'd be like 4 Militia 1 shitty artillery 1 Provincial Cavalry.<br /><br />Rebellion in Reims was much more modest, so I kept that.<br /><br />French Tyrol fell to rebels and then to Austria. Romania emerged somehow. But the main war between France and Coaliton was rather uneventful. Napoleon just stayed in Munich while Austrians and Russians did basically nothing.<br /><h3>Napoleon in Vienna</h3>I allied Austria because mission gave me 1000 gold for it, and I didn't really have a good reason not to. They bribed me to join their war against Switzerland, and that did not call France into war against we. Wat?<br /><br />Second Reims rebellion spawned full stack of professional troops, even if not quite as ridiculous as one in Alsace. At this point, it was finally possible to keep it under control, barely.<br /><br />Napoleon left his entrapped Bavaria with no garrison behind and sacked Vienna. Undefended Bavaria fell to the Austrians, but the war continued.<br /><br />Well, I didn't have anything better to do so I got best stack I could and assaulted Alsace. I sacked it again just to send the message. Thus ended year 1805, first 24 turns of the game.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-MbCnL9N077o/XLE5rkaepLI/AAAAAAAAicQ/HGdnmMRd20EUo3GtUfpVXjISsHmlF7nMACLcBGAs/s1600/03_alsace_rebels_20190412174516_1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1000" data-original-width="1600" height="400" src="https://4.bp.blogspot.com/-MbCnL9N077o/XLE5rkaepLI/AAAAAAAAicQ/HGdnmMRd20EUo3GtUfpVXjISsHmlF7nMACLcBGAs/s640/03_alsace_rebels_20190412174516_1.jpg" width="640" /></a></div><br /><div style="text-align: center;"><i>Fighting OP stack of Alsace rebels. As usual I deploy to the side with artillery embedded in the line. Skirmishers deployed stakes to protect the left flank, right one is protected by end of the map and by cavalry. When attacked I fell back a bit to better expose the enemy to canister shot fire.</i></div><div style="text-align: center;"><i>Most important on this screenshot is the glorious minimap.</i></div><div style="text-align: center;"><br /></div><h3>Second War with France</h3>I had 2.5 stacks, one in Reims, one in Alsace, and half in Switzerland. I got some of that replaced by militia, recruited a few more, until I had one full attack stack in Saxony and another in Switzerland.<br /><br />I was ready to backstab Austria with that, but instead France declared war on me. Great timing France, you're barely holding to what you have and Great Britain took Brittany.<br /><br />Well, my Western borders were sort of secure thanks to my two stacks of leftovers in Reims and Alsace.<br /><br />France held Bavaria, Vienna, and Venice behind my lines. Napoleon did the silly thing and split his forces into three between Vienna, Munich, and his personal stack, so taking them all was easy. I ambushed Napoleon as he was trying to sneak back West. Napoleon is unkillable, but I wounded the bastard, and it will take him a while to respawn.<br /><br />I tried to very generously offer to return Vienna to the Austrians for Bohemia so I'd have pretty borders and one fewer rebellious province to worry about, but they didn't take it.<br /><br />After taking Vienna I accepted Russian and British offers of alliance for some petty cash, basically joining the anti-French coalition.<br /><br />Wounded Napoleon accepted peace treaty.<br /><h3>War with Austria</h3>Germany was basically unified, the only victory condition region left was Bohemia, so I needed to cause a diplomatic incident with Austria. Austria allied Pope without the rest of the coalition getting involved.<br /><br />So I sent a polite letter to the Pope inviting him to Vienna for my coronation as Holy Roman Emperor. Austria and Naples somehow got involved on Pope's side, but Russia, Britain, Sweden, and Sardinia ignored that. I instantly took Prague, Milan, and Zagreb without a single shot being fired. Then Tyrol and Piedmont with a lot of shots being fired.<br /><br />And that was exactly 25 regions I was supposed to have, including all regions on the list, which unlike Empire (where I'd need to wait for time to run out) instantly popped Supreme Victory dialog. No Steam achievement for it somehow. Oh well.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-u4gKrVRzuxY/XLE6UQ5JOgI/AAAAAAAAicY/Pf6_5xwmQxYXBEWrYulqVz-f2QTerBpMgCLcBGAs/s1600/04_munich_cavalry_charge_20190413003107_1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1000" data-original-width="1600" height="400" src="https://4.bp.blogspot.com/-u4gKrVRzuxY/XLE6UQ5JOgI/AAAAAAAAicY/Pf6_5xwmQxYXBEWrYulqVz-f2QTerBpMgCLcBGAs/s640/04_munich_cavalry_charge_20190413003107_1.jpg" width="640" /></a></div><br /><div style="text-align: center;"><i>AI puts infantry in the middle and splits artillery and cavalry between flanks. This glorious light cavalry charge crushed artillery on one flank, then routed citizens of Munich. It then tried to go behind advanced enemy lines and do the same to other artillery, but it got crushed by enemy cavalry.</i></div><div style="text-align: center;"><i>Overall great strategy not really possible in Empire, as balance is worse, and AI deployment is too much just tossing everyone at random.</i></div><h3>Overall Impressions</h3>This is an expansion pack for Empire, not a real new game. It doesn't fix any of the fundamental issues of Empire, like godawful naval battles, or poor moddability, but it improves it in many small ways.<br /><br />I liked most of the changes. Battle AI is definitely better. Good battle minimap is great quality of life improvement. Battles are much more enjoyable. Units not requiring any cost for reinforcements, but requiring stay in home province for a while, with rate based on tech, buildings in province, and generals is a great idea. There's even winter attrition, but I'm less sold on that really. Various economic numbers got rebalanced quite hard, and I think new numbers are better overall.<br /><br />The big downside is that there's basically one big war on a small map, and you can't really play it as a sandbox game. They included a few extra campaigns, but they're even more scripted and less sandboxy.<br /><br />One big exception to balance changes are Napoleon rebels who are just ridiculously too strong.<br /><br />If someone managed to have Empire style big map with Napoleon engine enhancements, that would be combination very much worth playing. People did just that for Medieval 2 and Kingdoms (Retrofit Mod). Unfortunately moddability of the game engine is too poor for it. There's a "retrofit" mod for Empire, but that's just for some battle and balance changes, and still runs on the original Engine.<br /><br />Ironically after praising Napoleon so much, I can see myself coming back to Empire much more than to Napoleon.<br /><br />I definitely don't hate this game the way LegendofTotalWar does. I don't see that much replay value, but it was enjoyable.tawhttp://www.blogger.com/profile/16972845140253292628noreply@blogger.com0tag:blogger.com,1999:blog-27488238.post-91552778888645172902019-04-09T22:52:00.001+02:002019-04-09T22:52:36.925+02:00Playing Empire Total War as VeniceSo after <a href="https://t-a-w.blogspot.com/2019/04/revisiting-empire-total-war.html">a quick campaign as Russia on normal/normal</a>, I decided to do something a bit more challenging. Playing as tiny Venice long past its prime, on hard/hard.<br /><br />Using Additional Units Mod, diplomacy fix mod, and no walls mod. Now due to bugs, playing as minors is only possible if I completely disable fog of war over the whole map. Or spend a weekend figuring out how to mod visibility quad trees. No fog of war definitely made the game a bit easier than it would be otherwise, but it wasn't decisive.<br /><h3>Year 1700</h3>Venice is a teensy minor with 2 armies:<br /><br /><ul><li>Venice: General, 1 Provincial Cavalry, 2 Pikemen, 1 Militia</li><li>Morea: General, 1 Fixed Canons, 1 Pikemen, 1 Militia</li></ul><br />Plus a small fleet. So what do we do? Well, first we need to research stuff, build up economy... Who am I kidding, we ally Austria and Spain (just for one turn to call them into our war), and attack Ottoman Empire turn one. They already start at war with Russia.<br /><br />First army takes Athens against overwhelming force in a two stage battle.<br /><br />Second army lands in Bosnia, takes that without a fight, then goes to Serbia and against wins against enemy force twice the size.<br /><br />That unfortunately meant I left behind one unit of Ottoman Line Infantry, and they took Bosnia back. I had 2x 60 Firelock Armed Citizenry against their 1x Line Infantry. This was hopeless, as each citizen has 3 bullets, and can't fight in melee. Thanks to amazing tactics I managed to kill 57/120 of them. They will be missed.<br /><br />Next turn my army from Serbia came back, ad crushed the remaining Ottoman forces with just 1 man dead. Oh and Austria and Spain both broke our alliance, but since they're at war with Ottomans, it's fine.<br /><br />So, my main problem is that I don't have any way to recruit good units. Additional Units Mod is not helpful, since it mostly adds units to major and some late game units. If I remember correctly only Prussia gets stupid OP early units in it.<br /><br />All this reset Bosnia's unrest from -13 to -4, so I only had two regions where rebellions were a problem. Thanks to no fog, I could also see that Austrians were actually fighting Ottomans in some skirmishes, and that prevented early counterattack against my undefended Serbia.<br /><br />But God, those end of turns take forever that I see every AI unit movement anywhere on the map. After a few such turns I disabled following AI moves. It's a bit bad, as I can miss enemy units walking next to my cities, but it makes end turns bearable.<br /><h3>Liberation of Constantinople</h3>I raided Ottomans ports. And maybe that's what finally convinced them to peace out. Or maybe all the other wars they were at.<br /><br />Meanwhile rest of the world was at total war already - Austria vs Poland, Austria vs Prussia, Russia vs Sweden, Spain vs Netherlands, France vs Netherlands, Britain vs Poland, Britain vs Prussia, Marathas vs Mughals, Sweden vs Denmark, Ottomans vs everyone I made them fight, and then various German minors and American natives dragged into all this.<br /><br />Well, I had Serbian and Greek revolts to deal with. Both spawned with armies a bit stronger than what I got. I crushed Serbians, but battle with Greeks was a long distance shootout with fixed artillery, and I withdrew with 0 loses on both sides instead of trying something risky. One of my general died fighting the Greeks.<br /><br />Ottomans lost Bulgaria to the Austrians, but captured Transylvania instead. Then Transylvania rebelled, so I was pretty happy about how things were going, merged my shitty armies into one stack (1 general, 1 cav, 6 militia, 2 fixed artillery) and declared war on them again, marching on Constantinople.<br /><br />Damn Pope took this opportunity to attack me. I seriously wish it was possible to go Orthodox in this game, but sadly I need to remain Catholic forever. This meant something horrible - I had to fight a bunch of naval battles to clear route to Venice. And they were just as miserable as I remembered them. I started recruiting second stack, but Pope agreed to peace out after losing some ships.<br /><br />Meanwhile my first army took Constantinople. Those battles can take seriously forever if AI is not cooperating, and me still only having fixed artillery means AI does not like to cooperate. Once Constantinople fell, I agreed to peace with the Ottomans, as majors' capitals are all 30 turns of unrest. Ottomans still have one holding in Europe somehow - Moldova, I wonder if Austrians or Russians get to it first.<br /><br />Meanwhile Spain took over Portugal, Sweden took over Denmark, and French blobbed into Belgium and Rhineland a century too early.<br /><h3>Liberation of Rome</h3>I demolished one building in my capital on first turn to build one college, but that's research is really slow, so I've been also stealing and trading techs. I even got a Steam achievement for stealing a lot of techs. When this game get achievements? Well, apparently ages ago as I got some in 2010. A welcome surprise, most are unfortunately either for multiplayer or for playing all the way to the end, so not really seeing myself going for that.<br /><br />And finally, after liberating Constantinople and nearly single-handedly removing kebab from the European premises against overwhelming odds, I can recruit my first horse-drawn artillery. The very unit I probably should have waited for before starting the first war. I also didn't use any Line Infantry up to this point, but I recruited a bunch to face the Pope. Their first task was to fight Ottoman rebels, who wouldn't accept liberation of Constantinople. Two revolts got nicely crushed, but then election happened, and new government got elected, highly unpopular with the peasants.<br /><br />I divided my troops into two stacks. One general leading militia and fixed artillery stayed in Constantinople to keep order. The other took line infantry, mobile artillery, and cavalry to Africa. On the way minor stop to take Malta. And that's where I needed to stop as Malta somehow had -30 unrest like capitals of majors. Why? Nobody knows, that's the kind of game Empire is. So now I have two babysitting armies. So much for Africa.<br /><br />The Pope declared war on me again. And the Ottomans next turn. Ottomans are not a big deal, as they'd have to pass through Constantinople and I'm blockading the straits with a single ship for good measure, but Pope might take Venice. So I recruited some armies in Greece, and together with armies from Malta I landed everyone next to Rome. The key to victory was Pope only having fixed artillery which can't join as reinforcements, so I could fight him without his artillery, and that's decent odds. And Rome is also at -30 unrest. What the hell, seriously. Now I have two stacks and need to babysit three provinces, definitely nothing left over to spare for fighting Ottomans.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/--C82IRPQN0s/XK0D0hQ_dmI/AAAAAAAAia0/CDHtX_1vtUw3LsuKXbP6r2dMi5DuzbL8gCLcBGAs/s1600/20190407153653_1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1000" data-original-width="1600" height="400" src="https://4.bp.blogspot.com/--C82IRPQN0s/XK0D0hQ_dmI/AAAAAAAAia0/CDHtX_1vtUw3LsuKXbP6r2dMi5DuzbL8gCLcBGAs/s640/20190407153653_1.jpg" width="640" /></a></div><div style="text-align: center;"><i>Battle for Rome. Good cavalry charge on weaker wing can cause massive chaos in enemy ranks while the artillery keeps shooting, but it backfires occasionally if enemy holds.</i></div><div style="text-align: center;"><i>That fog is sure annoying, and Total War games would be better without weather effects.</i></div><h3>Unification of Italy</h3>There was going to be fun ping pong to get one army to babysit two provinces, but what needs to be done needs to be done. Empire Total War is just so much better at making overextension feel real than EU4. This desperate struggle to keep the expanding country from just falling apart, and done without any bullshit events, just with solid core game mechanics.<br /><br />I now had three half-stacks - Constantinople, Rome, and Malta. And one from Malta took a quick break to liberate Tunis. Then Genoa attacked me. So many fronts, and I've been mostly giving up naval supremacy because I don't want to spend more time fighting naval battles than necessary, so it's hard to haul troops to the right place.<br /><br />Fighting on so many frontline is quite hard. At least Austria didn't attack me yet - I allied them like 3 or 4 times already, then they break up but accept alliance next turn anyway. Weird relationship.<br /><br />So I took Genoa and it's -30 unrest again. If I could figure out which provinces will have -30 and which only -13, that would be nice. I thought it's just capitals of majors, but that doesn't seem to be the case. Is it based on capital of major or anything with a level 4+ government building? That's my best pattern match.<br /><br />Well, Spain attacked me before I could figure it out. I'm OK with AIs ganging up on me, or with this massive undocumented unrest, but why both? I quickly took Milan, but Spain wouldn't accept any terms. And neither would they after I took Naples. At least that unifies Italy. Not counting Corsica, Sardinia, and I guess Savoy.<br /><br />I had my relatively speaking bloodiest battle to date when Barbary States sent their stack at me, and did basically melee charge. They even had female unit of Dahomey Amazons, whatever that's based on. At least after that Barbary states peaced out. They lost Algiers to Spain, so they're now just Tripoli.<br /><br />Meanwhile - Sweden took Moscow but then lost it, Prussia took Warsaw but then lot it, France took Amsterdam but then lost it. It feels like a bit of a pattern, probably -30 unrest together with foreign armies does that. Everybody is at war with everybody else.<br /><h3>Justinian would be proud</h3>Savoy declared war on me just turn later, as my army was standing next to them in Genoa. So I guess my Italy will be a bit bigger than originally planned. Unfortunately Genoans rebelled same turn, but I just barely managed to squeeze both battles with last fraction of movement point.<br /><br />Spanish Sardinia was undefended, so I seized it too.<br /><br />Then France attacked me. That's with the mod that fixes diplomacy? Well, at least none of them are pushing me too hard except on sea. Constantinople and North-West Italy are good chokepoints. Places like Tunis and Malta are exposed, but AI doesn't invade by sea too often.<br /><br />I wanted to take Genoa, but Genoa, France, and Ottomans together successfully navally blockaded me, and I really didn't want to slog through a few hours of naval battles. So instead I took some armies from Constantinople, recruited a few more troops, and landed in Egypt. I took Cairo unopposed, Jerusalem in a small battle, and Damascus in another.<br /><br />Ottomans could either try to stop my fairly small army there, or they could try to break into Constantinople. In their probably fifth futile one ship attack they failed to break blockade of the straits, and I finally had some savings to upgrade my Constantinople army to a reasonable stack and went to fight in Anatolia.<br /><br />I finally got an epic battle. On my side 4 cavalry (1 General, 1 Regiment of Horse, 2 Hussars), 6 basic Artillery, 10.1 infantry (5 Line Infantry, 5.1 old Militia).<br /><br />On Ottoman side 5 cavalry (all Camel Nomads), 3 artillery (1 stronger version of basic, 2 howitzers), 10 melee infantry (3 Swordsmen, 2 Pikemen, 2 Peasants, 3 basically Berserkers), and 1 Mob with firearms. Do they realize which century this is? That's West vs East, the battle which will decide the fate of the Middle East. After that Anatolia got taken and by 1720 my borders are so close to Justinian's borders like I've been actually trying.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-xDz93G_cJ2M/XK0C0B4XxrI/AAAAAAAAias/1BnBwC45JAU8ISlgucTdpEEjpxR4JhhLQCLcBGAs/s1600/20190408231948_1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1000" data-original-width="1600" height="400" src="https://1.bp.blogspot.com/-xDz93G_cJ2M/XK0C0B4XxrI/AAAAAAAAias/1BnBwC45JAU8ISlgucTdpEEjpxR4JhhLQCLcBGAs/s640/20190408231948_1.jpg" width="640" /></a></div><br /><div style="text-align: center;"><i>Battle for Anatolia, and my usual setup. Artillery in 2-3 batteries between infantry line. Using groups to quickly refocus where they fire. Cavalry in reserve.</i></div><h3>Liberation of France</h3>Those armies from the East could now land in Corsica, switching to fresh ships a few times on the sea. I know it's cheesy, but I don't feel like playing legit naval game.<br /><br />While all those campaign in the East were going on, I recruited some dragoons to keep North Italy in check, somehow randomly got a really good justice minister, and moved straight for Paris. That risks Prussia and Britain attacking me, as seems to be the pattern, but France is wealthy enough to basically pay for upkeep of a full stack.<br /><br />Paris was defended by some really advanced troops. I put my artillery in 3 groups of 2, with infantry between them, and some cavalry as reserve. The French assaulted everything on my left flank, and managed to break it, fortunately at this point they were spent and my remaining half the army finished the job. French would not negotiate even when reduced to just Alsace and some colonies, but at least without Ottoman and Genoese fleets, I could challenge small French fleet, break blockade of my ports, and finally get some serious trade income.<br /><br />Spanish and French troops were ravaging French countryside, so I couldn't move against Alsace, but surprisingly my Dutch allies took it, destroying France, and liberating Quebec. How did I get Dutch as allies? French once destroyed them, then they respawned, then they asked to ally me, and I said sure whatever. That was long before I was anywhere near France.<br /><br />So now my Northern borders are my ally Netherlands, impassable Switzerland, and my ally Austria. To the East there's broken Ottomans and Barbary States leftovers in Tripoli. So just Spain to crush.<br /><h3>Liberation of Spain</h3>My armies shrunk a lot from the peak as I didn't need quite that many stacks and merged some damaged units. Some were left in Paris, Anatolia, and even a few dragoons in Savoy, but there was still plenty left. I landed in Algiers which surrendered without a fight. A bigger force just marched onto Madrid.<br /><br />Spanish armies were ravaging countyside, so I took some troops, 5 full units against half of enemy unit so about 10:1, tried to autoresolve as it would be completely trivial massacre and then got defeated. Seriously, autoresolve in all old Total War games is just ridiculously biased against the player. When I finally fought them, they didn't even fire a single shot, basically marched, got shot by all my artillery, and died.<br /><br />Spain was not willing to surrender yet. They attacked Algiers with overwhelming force, and it was a really close fight.<br /><br />Then I reached Madrid and AI marched halfway there and then derped for 15 minutes trying to figure out if it wants to place its line diagonally left or diagonally right against mine, like some cat trying to get in or out, while getting shot from fairly close range by my artillery. That's how a 1000 vs 1000 battle turns into 1000 died vs 50 dead.<br /><br />Spanish stack tried to siege Madrid, but then cancelled same turn and went to raid some farms instead. Oh well. Spain still held Lisbon, Gibraltar, Morocco, and good chunk of America, but just a bit later they peaced out.<br /><br />Peace was achieved, and I basically recreated Roman Empire at its peak. Well, without England, Vienna, and a few peripheral provinces here and there, but it's basically done.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-76X63kik9Kk/XK0EWqVUrzI/AAAAAAAAia8/m8u0PYAyvJkuvTDCAjEKHGyR2ONDxAT2QCLcBGAs/s1600/20190409132730_1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1000" data-original-width="1600" height="400" src="https://1.bp.blogspot.com/-76X63kik9Kk/XK0EWqVUrzI/AAAAAAAAia8/m8u0PYAyvJkuvTDCAjEKHGyR2ONDxAT2QCLcBGAs/s640/20190409132730_1.jpg" width="640" /></a></div><div style="text-align: center;"><i>Battle of Madrid. AI artillery really hated this hill, so it fortified itself behind it so the hill is the only thing it could possibly shoot. Empire artillery has very low max gun elevation, that might be historical, but for gameplay it would be better off if they increased max elevation to howitzer levels. AI is completely lost, and it's hard for the player too as even tiny hill might be too big for artillery.</i></div><h3>Strategy Retrospective</h3>I really liked the turn one ally Austria invade Ottomans and rush 3 provinces opener. Maybe Serbia was one too far, and I would be better off limiting myself to Bosnia and Athens, but no big deal.<br /><br />Empire Total War has some amazing opening turns, as you can do diplomacy with anyone - in Medieval 2 it would take forever to get your diplomats anywhere. Instant diplomacy is the biggest improvement Empire did, no question about it. It's really easy to basically "win" the campaign turn 1, for example as Mughals just pay Marathas a bit of gold for peace, this will give you time to move troops South and consolidate, basically removing all the challenge.<br /><br />Permanent blockade of straits to Constantinople to keep Ottomans stuck in Anatolia, then opening a second front against Egypt was a great way to turn a prolonged stalemate into a victory.<br /><br />What I feel I did wrong was leaving Venice undefended for so long. AI chain declared on me - Pope, Genoa, Spain, Savoy, France, pretty much turn after turn. If they didn't lollygag and just seized Venice, it would be really awkward. I had relatively safe second homeland in the Balkans I guess, so I would turn into real Eastern Roman Empire there if that happened.<br /><br />I've been massively handicapping myself economically both campaigns by not sending any trade ships to colonies, but that would mean far too much naval combat. That's another reason why I'm not too keep on playing on very hard campaign difficulty - AI would get too strong economic bonuses, so I'd need to get some colonial trade, and so I'd need to fight all those damn naval battles.<br /><br />Research stealing and trading was far more successful that expected. I got almost as good research with 1 school as Venice as I did with 4 as Russia previously.<br /><h3>Conclusions</h3>This was quite fun. Playing as a minor on hard/hard made battles a lot more interesting. I was usually facing stronger opponents, so maybe about half the battles were either fun or quick massacre, similar proportion as in Medieval 2. The unfun ones were a lot worse, since they drag on forever. It's always easier to have AI come to me, but in Medieval 2 it's not a huge deal if I have to be on the offensive. In Empire, dragging the artillery across the map just takes forever, and enemies won't just stand somewhere, they'll reshuffle again.<br /><br />Naval combat was just as miserable as I remembered, every single time. If this game had no ships, just a lot of land bridges, it would be a lot more fun. That's one thing that's worst for my enjoyment of the game. And I can't even autoresolve it, as autoresolve has absolutely ridiculous level of bias against players. New games removed naval combat, and got rid of this crazy autoresolve bias.<br /><br />As planned, I'll now go on to try the next Total War game - doing some short Napoleon campaigns.<br /><br />I can totally see myself coming back to Empire later. As long as I'm fighting on land, I'm having fun. So countries like Sweden, Prussia, or Persia could be a lot of fun.<br /><br />As for optimal difficulty level, hard/hard might be right since:<br /><br /><ul><li>very hard campaign is really hard without doing colonial trading, and that means naval combat, and all its tedium</li><li>very hard battles gives enemy massive morale buffs, making cavalry basically useless, encouraging uniform art/inf lines, and reducing tactical complexity</li></ul><br />I made <a href="http://taw-gaming.blogspot.com/">second blog for gaming content</a>, but it was more Google+ backup, and campaigns that take 50+ episodes to finish. I'm not really sure what to do with it going forward. I think I'll just post everything here unless it really takes a lot of parts.tawhttp://www.blogger.com/profile/16972845140253292628noreply@blogger.com0tag:blogger.com,1999:blog-27488238.post-80051596342483120652019-04-03T22:36:00.001+02:002019-04-03T22:36:20.556+02:00Revisiting Empire Total WarI finally have a bit of free time, so I decided to revisit some old games. This post will be about Empire, but first I did a bit of Medieval 2.<br /><br /><h3>Medieval 2 Britannia as Wales</h3><br /><br />So first, Medieval 2 Kingdoms - Britannia campaign - as Wales. I only played Britannia once before, but I played the hell out of Medieval 2.<br /><br />I didn't play that much Medieval 2 recently, and the manual claims Wales is the most difficult country, so I picked only hard / hard. I'm not really sure how they reached this conclusion - Wales gets enormous event stacks during first few turns. I was the strongest country almost right away with barely any recruiting. The only problem was paying all those troops, but then there's loot button.<br /><br />In 10 turns it was basically over, with England being reduced to Nottingham and some Irish towns. I actually lost a few battles, but most of them were me sending a single unit to grab some fort (forts in Britannia campaign are small permanent castles) and that unit getting ambushed or attacked. Oh well, not a big deal.<br /><br />I really like those mini-campaigns. They add just enough new mechanics to make things fresh for a few sessions, but don't do anything crazy. "Culture" replacing "religion" was a cute idea, but then London was 50% Welsh in 5 turns of me holding it, so maybe nobody looked at the numbers. Permanent forts definitely mattered. In all Kingdoms campaigns merchants are somehow worth many times more than vanilla, so they're actually good.<br /><br />Overall Medieval 2 is fun, but damn it's easy. Now onto Empire.<br /><h3>Empire Total War</h3>I <a href="http://t-a-w.blogspot.com/2010/02/more-honest-review-of-empire-total-war.html">reviewed this game once before</a>. It's nice to see I hated "professional game reviewers" years before Gamergate made it mainstream to do so. Hating someone before it was cool is even more hipster cred than liking someone before it was cool. It's still completely ridiculous that publisher-paid whores rated this game as better than Medieval 2.<br /><br />Anyway, regardless of its many flaws, I mostly enjoyed this game, and it's been so long since I last played it. I had some old mods - one I wrote to remove walls, and another someone else wrote to fix diplomacy based on my research. Figuring out how to activate them took a while. A lot of links I googled were dead or led to tools for newer Total War games.<br /><br />So here's the story. Rome and Medieval 2 were very moddable, but then Empire came with a new engine, and moddablity was nearly zero. Even Creative Assembly couldn't really mod it, they had some extremely convoluted build system to duct tape everything together overnight, and that was it. I was so annoyed by this state of events that I researched format after format, and wrote decoder after decoder - not just for Empire, but for all Total War series going forward. I even wrote tools to mass crack tens of simple formats with statistical analysis.<br /><br />There were a few people doing some research and tooling, but to be honest I don't think the Total War modding scene would have survived without my push. By the time of Shogun 2, CA figured out modders exist, started releasing some modding tools, mostly complementary to what community already did, and it's kinda self sustaining now. Still none of the new titles are anywhere as moddable as Medieval 2 was. Medieval 2 was peak Total War.<br /><br />The modding scene is formed mostly by all the people who actually create mods, but there's plenty of games which could have had thriving modding scenes, but don't due to lack of tooling. Like XCOM has godawful tooling and it basically has just one mod (Long War) - plus a bunch of minimods doing literally VM binary patching, half of which got broken by a game patch and never fixed. Total War series was heading in such direction before it got saved. Congratulations past me.<br /><h3>Empire Total War as Russia</h3>Unfortunately while adjusting graphics settings I accidentally switched to Large unit size (120 for line infantry, 3 cannons per unit) instead of Ultra I wanted (160 for infantry, 4 cannons per unit etc). I only figured it out after a few turns and didn't feel like restarting.<br /><br />My least favorite part of Empire was naval combat, so I picked Russia at normal / normal to avoid it as much as possible. I used to play on very hard / very hard, but this is just a casual revisit. 1700 Russia starts at awful economy, awful tech, awful army with most of infantry not even having guns, and at war with Ottomans and Crimea. It feels so much more realistic than EU4, where 1444 Russia is basically a fully Westernized power already.<br /><br />In the first war I took Crimea, tried to peace out Ottomans, but they didn't, so I took Moldova to get them to peace talks. This gave me first port (in Empire Arkhangelsk doesn't have a port), and let me get my economy on track.<br /><br />OPM Dagestan declared on me. I forgot just how aggressive Empire AI was. They didn't last long. Since I already had my troops there, I took Georgia - and Armenia which Georgia grabbed in some war with Ottomans. I allied Persia as I didn't want another front.<br /><br />I attacked Sweden for Ingria, Livonia, and Finland, leaving them with just Sweden.<br /><br />Ottomans attacked Persia, pulling me into their war, so I grabbed Bulgaria, Mesopotamia, and Constantinople itself before they peaced out.<br /><br />Sweden attacked me, and was sending 2 nasty stacks all the way around the coastline, so I recruited a single ship (in Total War the whole army fits on the smallest ship), and dropped it next to Stockholm ending the war in no time.<br /><br />Then once Constantinople chilled down I actually attacked Ottomans again.<br /><br />That's overall a shocking mix of everyone declaring wars in every way. It's biased against the player, but every AI was fighting one or more other countries. This is fun. EU4 diplomacy is so tame by comparison. After this session, Paradox games feel so static, as all wars are either declared by me, by a coalition against me, or by some AI blob against minor who can't defend itself.<br /><br />I tried trading techs, and I managed to buy a lot, but I have no idea what's the AI logic. Friendly AIs would refuse trades like 1 their tech for sometimes even 10 my techs. Overall this Civ1 style tech trading is a bad mechanic as AI is always awful at it, and it's not surprise that very few games have this mechanic nowadays.<br /><br />I built a lot of universities - 3 in my capital region, and got 1 each in Georgia and Sweden, then I discovered just how big clamor for reform penalty gets with enlightenment research. I had to destroy one of universities in my capital region. Then again, the only really important tech is Canister Shot, and it's available right away. The rest are nice-to-haves.<br /><h3>Empire Total War tech system</h3>Empire has such a weirdly designed tech system. A stack of like 1 General, 10 Line Infantry (available right away), 6 basic mobile artillery (needs Canister Shot), and 3 whichever cavalry to chase routing units is really close to being a perfect stack, and you can get it basically immediately.<br /><br />Line Infantry gets a lot of upgrades for first few techs, but high tier infantry units are more gimmicky than good. High level cavalry is better, but cavalry is mostly going to be chasing routing units who don't fight back. High level artillery doesn't get meaningfully better.<br /><br />Everything naval is a joke - the optimal strategy is taking one cheapest ship and zig-zag-ing with chain shot to defeat a fleet with 100x as many cannons.<br /><br />Industry tech unlocks better buildings, but while early buildings have amazing return on investment, late ones are fairly mediocre upgrades and come with lower class unhappiness penalty.<br /><br />Enlightenment techs improve research speed, but they also massively increase unhappiness from universities, so it's quite awkward.<br /><br />Oh and you also get prestige from researching tech, which does literally nothing unless you select Prestige Victory condition. Not like there's any chance of ever winning by prestige, if game lasts that long, you'll just be the biggest blob with most prestige anyway.<br /><br />It's super easy to rush late techs by just building more universities - having 4 universities means 4 times faster research than having 1 most major countries start with. But it doesn't feel like there's really that much reason to get those techs. I can't think of any game that does this.<br /><h3>Minor Interface Annoyances</h3>In Rome and Medieval 2 it was possible to rearrange units by getting all your cavalry in one stack, all your infantry in another, then merging them, or so. Basically last unit to join the stack was last on the list, except for generals always being first. Also during battle grouping and ungrouping units rearranged their order to my liking. Trying the same things in Empire? Nope, all unit cards are always totally mixed, and that gets on my nerves. I think in newer games at some point they introduced drag and drop to rearrange units.<br /><br />Inability to wait for better weather is annoying too, but at least Empire doesn't have those extreme foggy weathers like Medieval 2, where AI could see everything, but I couldn't unless I paused all the time. So it's about even. Are there any Medieval mods to get rid of those silly weathers? They mostly make everything look bad.<br /><br />With building slots scattered in minor town of every province, it's difficult to see what's available for building. There's "building browser" which shows what's current state of all towns, but you can't see what's under construction or build anything from it, so it's a bit wasted interface. Not like it matters terribly much to do it a bit suboptimally. In new games there's just one central place to manage all building in a province.<br /><br />None of these are what makes Empire a bad game. It's just an inevitable consequence of new engine.<br /><h3>Battles in Empire</h3>Empire AI tries some maneuvers - infantry lines up, marches forward until enemy is in range, each unit faces nearest enemy, and keeps shooting until one side or the other is dead. Mobile artillery advances to the point where enemy is in range, then start firing. Cavalry prances around and sometimes flanks.<br /><br />Except it never works properly. Just standing still with a mix of line infantry and artillery on canister shot completely obliterates AI in 80% of battles with nearly zero loses. About 20% of battles are actually fun, when this script doesn't work for any reason.<br /><br />Battles in Empire are paced like a Tarantino movie. There's a very long setup, then the action is over in a minute. AI spends so much time forming its initial line, often derping in process and having to restart multiple times, while under artillery fire. 10 minutes of that, and it loses maybe 1% of its troops, because long distance round shot is so inaccurate against infantry. It's more decent against cavalry, enemy artillery, and buildings, so it's common that enemy general dies before the battle stars.<br /><br />Then AI slowly marches towards me. It's all tolerable up to this point. Then 125m from my line artillery unloads canister shot causing massive casualties, but AI infantry still slowly walks forward, and takes time to form lines facing me at 70m while both canister shot and muskets are murdering them. Many units never even fire, they just break. What's left loses the firefight quite fast. I might send cavalry against units running away, but that risks friendly fire, so it's the riskiest part of the whole fight. Not exactly exciting.<br /><br />The only AI counter to this I've ever seen was when AI had a lot of garbage melee infantry, and decided to just charge at my lines. Of course it didn't win, line infantry (especially after a few bayonet techs) is actually much stronger in melee than most melee infantry units, but it inflicted far more casualties than typical AI slow derping.<br /><br />The simplest AI strategy that could work is checking if enemy has canister fire, and if so, don't try to form lines to shoot, just get bayonets on and run through the whole canister fire range straight at artillery. Or just nerf canister shot and make regular shot better to compensate?<br /><br />The obvious self-limitation of using less artillery doesn't work, as without artillery superiority on my side AI often just derps around forever, and I have to really slowly advance while it runs around the map. It makes every battle drag on forever.<br /><br />Actually now that I think of it, I'm seeing a lot less suicidal cavalry behaviour than I remember. Did that get patched?<br /><br />Oh and this was all normal, but it only gets worse on higher difficulty levels, as AI gets completely ridiculous morale bonuses, as well as more reasonable shooting bonuses, basically making cavalry unusable, and nerfing a lot of tactics, but canister shot is just as good at very hard as at normal.<br /><h3>Continuing as Russia</h3>And so I destroyed the Ottomans - this gave me really nice borders down South as there's no way to walk to Egypt from the West in any reasonable time, and shockingly my ally Persia didn't backstab me yet.<br /><br />Then I wasn't sure about Norway (who rebelled from Denmark at some point I guess), so I took the stack which was keeping Sweden under control and took it.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-ryTb4XW-cJ0/XKUV8V02HnI/AAAAAAAAiUI/IyXIWO0a56oevI3UgrDJUQp6v_vuV73ngCLcBGAs/s1600/20190402183137_1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1000" data-original-width="1600" height="400" src="https://3.bp.blogspot.com/-ryTb4XW-cJ0/XKUV8V02HnI/AAAAAAAAiUI/IyXIWO0a56oevI3UgrDJUQp6v_vuV73ngCLcBGAs/s640/20190402183137_1.jpg" width="640" /></a></div><br /><div style="text-align: center;"><i>Battle of Norway, viewed from AI side.&nbsp;I did a very suboptimal thing and placed artillery on a cliff, just because the cliff was there and it was something different to try.</i></div><div style="text-align: center;"><i><br /></i></div><div style="text-align: center;"><i>Notice AI immobilizing both its artillery unit with entrenchment. This is like top trivially preventable dumb AI mistake. Entrenched artillery not only can't move, it can't even rotate properly and can only shoot forward, so basically it will ever affect the battle, and any unit can just walk around and shoot them at its leisure.</i></div><div style="text-align: center;"><i>It's notable because this is the worst tactic I've ever seen LegendofTotalWar try, when tried to play Empire.</i></div><div style="text-align: center;"><br /></div>Lower class was getting unhappier and unhappier. Weirdly farms at level 3 have -1 to lower class happiness, but that disappears at level 4, and level 5 is actually +1 upper class happiness. All industrial buildings get from 0 to -1 t -2.<br /><br />So I triggered revolution, and switched from absolute monarchy to being a republic. I didn't even need to do any shenanigans, 2 universities in capital region was enough. That didn't really help that much - instead of nobility and lower class, I have middle and lower classes now, and better lower class base bonus. But absolute monarchy let me have amazing cabinet with huge lower class happiness bonuses, so it ended up being not all that much better.<br /><br />At this point it became really weird that none of my allies backstabbed me yet, and we were already in 1726, so I attacked Polish protectorate of Courland to invade Poland. I took 6 provinces from Poland, 1 from Courland, then I bribed Poland to peace out with 2 techs. AI seriously overvalues techs.<br /><br />Two turns later, OPM Austria attacked me. I thought they'd actually do something useful, like attack with their full stack and a bit in Vienna against my 2/3 stack in Pressburg, as my armies were scattered around recently the conquered Balkans to keep public order, but AI didn't do anything, so I moved some extra troops from Serbia, sieged Vienna, and won in one turn. I still hate lack of grid on this map. I had to reload 3 times just to move my armies from Serbia the way I wanted to join the siege. With Medieval 2 style grid it's very easy to do precise movements. In Empire if you clicked a few pixels off, your armies will just barely not be able to join, and the route game choses is generally not the faster route due to random downs blocking roads which can you enter but only manually. It's an awful change.<br /><br />I remembered just how highly AI overvalues techs, so I bought Morea from Venice for 10 techs. That really cleans up my borders. And there I was wondering if they'd take all techs plus Vienna for Morea - mostly so I wouldn't have to babysit Vienna while resistance slowly dies out (for capitals of majors it's 30 unrest, for everything else just 13, either way dropping 1 per turn). I tried it with a few other countries by nobody took it. Looking at tooltips I guess that's because Venice likes me as I'm a republic, but all absolute monarchies hate me.<br /><br />OPM Mysore declared war on my ally Persia, so I joined. Mysore doesn't even have a port.<br /><br />I was end of 1730, I was absolutely dominant militarily, economically, and scientifically, so I guess that's a good time to end this.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-lVu9jUgD-GE/XKUV8TIykFI/AAAAAAAAiUM/w_2FZSiXec4axIHooyQpwiVnK9PEHWChgCLcBGAs/s1600/20190403015409_1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br class="Apple-interchange-newline" /><img border="0" data-original-height="1000" data-original-width="1600" height="400" src="https://2.bp.blogspot.com/-lVu9jUgD-GE/XKUV8TIykFI/AAAAAAAAiUM/w_2FZSiXec4axIHooyQpwiVnK9PEHWChgCLcBGAs/s640/20190403015409_1.jpg" width="640" /></a></div><div><br /></div><div style="text-align: center;"><i>Battle of Hungary. Poland had two stacks against my one damaged stack. The river map has 2 crossings, so I split my army in two defending each. 6 line infantry, 2 canister shot artillery, 1 howitzer, and 2 cavalry chilling behind.</i></div><div style="text-align: center;"><i>AI could have easily forced the crossing if it just charged my artillery, or if it unpacked all its artillery (8 or so total) and tried to win a long distance shootout against one of my half-stacks. It was still a good battle, and I had to send cavalry across multiple times.</i></div><h3>Overall impressions</h3>It was much slower paced game than how I'd usually play. I used my regular stacks to maintain public order instead of just hiring some cheap dragoons while I keep pushing against next and next enemy.<br /><br />What I totally loved was how it really felt like the country is developing. Villages turned into new towns, industry and infrastructure developed, disorganized militias turned into professional armies, there was peasant unrest for a while, workers' unrest getting worse as time went, revolutionary movements among the students only got worse and worse, while religious and ethnic minorities in conquered lands slowly accepted my rule.<br /><br />Thanks to the mod I used, AI diplomacy was actually interesting, not just suicidal as in vanilla, and it wasn't just standing there waiting for me to do things like in EU4. This world felt far more alive and evolving than EU4, where 1444 is basically same as 1821 except for some bonuses.<br /><br />Comparing campaign part of Empire to Medieval 2, I think Empire mostly wins, especially if we forgive it all the minor issues caused by a new engine.<br /><br />Battles compare much worse. Every now and then I'd get an interesting battle, but most felt just trivial and some were outright tedious. I disabled sieges with my mod, and picked a country which could ignore naval battles (the only naval action was sneaking my stack to Stockholm and some recon), as they are far far worse than land battles. Naval battles are completely unfixable, and I'm saying that after wasting far too much time trying to mod them into something not horrible years ago.<br /><br />Probably the best thing is that sieges are generally just regular field battles - Rome 1 and Medieval 2 field battles are far more fun than sieges, but playing them normally sieges are a big majority of fights. At least early game, late game without mods become boring siegefest.<br /><br />The game definitely needed massive polish and balancing fixes it never received. I don't even think it was such a bad game, it was just a big downgrade from Medieval 2 in so many ways.<br /><div><br /></div>tawhttp://www.blogger.com/profile/16972845140253292628noreply@blogger.com0tag:blogger.com,1999:blog-27488238.post-79032396370198840602019-04-03T01:50:00.000+02:002019-04-03T01:50:03.587+02:006 Amazing Games<div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-QgQ5oukWIkw/XKPy_9NnPOI/AAAAAAAAiT8/ZQQ3W9uqeJsEhlrwMg0TOe6NxrBOxkXWwCLcBGAs/s1600/after_a_long_day_of_gaming_by_oceanattic_from_flickr_cc-sa.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" title="After a long day of gaming. by ocean.attic from flickr (CC-SA)"><img alt="After a long day of gaming. by ocean.attic from flickr (CC-SA)" border="0" data-original-height="1038" data-original-width="1600" height="414" src="https://2.bp.blogspot.com/-QgQ5oukWIkw/XKPy_9NnPOI/AAAAAAAAiT8/ZQQ3W9uqeJsEhlrwMg0TOe6NxrBOxkXWwCLcBGAs/s640/after_a_long_day_of_gaming_by_oceanattic_from_flickr_cc-sa.jpg" width="640" /></a></div><br />Now that Google+ <a href="https://killedbygoogle.com/">got murdered by Google</a>, I'll go back to reviewing stuff on this blog. I should probably start coming up with backup plan in case they murder Blogger too. Oh and maybe I'll dig through my Google+ posts and report reviews here as well.<br /><br />So here's 6 video game recommendations of games I played relatively <b>recently</b>. These games are not merely good and enjoyable, they go far beyond that. If you like games and game design, it would be utter silliness not to try out every one of them.<br /><h3><a href="https://store.steampowered.com/app/368370/Her_Story/">Her Story</a></h3>My memory is fairly poor when it comes to stories. Even if I enjoy a movie or a book, I would have a lot of trouble recalling much beyond general outline and a few highlights. Video game stories are usually even less important and less memorable, usually just providing some background on which the actual game takes place.<br /><br />And yet, somehow I remember every minute of playing Her Story. It just burned into my memory like no other game ever.<br /><br />It doesn't "tell a story". It invented a completely new genre, which lets you discover what might have happened, in a way that naturally leads to emergent plot twists, and apparently people end up strongly believing completely opposite conclusions on what the story was depending on which way their exploration went, even if they've seen the same content, just in different order, and with different mindset. This level of story engagement is unprecedented.<br /><br />I very strongly recommend everyone to play it <b>without any spoilers</b>, as soon as possible. It's a one evening game.<br /><br />I hope more games like that get made, but it was such a masterpiece of story construction and acting that maybe it's too difficult and it will remain a singular masterpiece forever.<br /><h3><a href="https://www.factorio.com/">Factorio</a></h3>It's <a href="https://steamdb.info/stats/gameratings/">Steam's second highest game of all times</a>, behind just Portal 2, so throwing another endorsement to million other endorsements might feel a bit redundant.<br /><br />Factorio invented a new genre of automation games. You start on a new planet, manually extract some resources, and gradually setup more and more complex manufacturing chains so everything runs without your participation as much as possible. If everything in base game is too simple, you can ramp up complexity by another factor of 10x by getting some mods, which are conveniently available from in-game menu.<br /><br />It's been such a great hit that new Factorio-style games like <a href="https://www.satisfactorygame.com/">Satisfactory</a> and <a href="https://store.steampowered.com/app/860890/Factory_Town/">Factory Town</a> started coming out, but I don't think they're really there yet.<br /><br />I don't love all their choices - color palette feels depressingly desaturated, and combat feels like a distraction from core gameplay (it can be turned off when starting a new game). It's still first and so far the best game in this new genre. It wouldn't surprise me if Factorio did to automation what Minecraft did to crafting, and it became regular feature in new games soon.<br /><br />And it did it all while still in "early access". It's been far more ready for years than most games are on publication day.<br /><br />Warning: The game can easily take hundreds of hours of your lifetime.<br /><h3><a href="https://store.steampowered.com/app/489830/The_Elder_Scrolls_V_Skyrim_Special_Edition/">The Elder Scrolls V: Skyrim Special Edition</a></h3>Everybody knows Skyrim by now, but special edition brought new life into the game. Games like Skyrim only truly come to life with mods, but setting up mods for them was always pain. I still remember wasting a weekend setting up modded Oblivion for it to only glitch itself into unplayability as soon as I left tutorial dungeon.<br /><br />Special Edition wasn't just the usual remaster with some better graphics, it brought 64 bit support (which enables big mods), and built mod support into the game itself, so installing a hundred mods at once is fairly easy. It still doesn't have perfect detection of mod dependencies and conflicts, but you'll only face problems if you take things too far, and they'll probably be fairly minor.<br /><br /><a href="https://www.nexusmods.com/skyrimspecialedition/mods/1918">You can use third party tools</a> if you're setting up particularly complex mix of mods, but you don't have to, and it will probably going to be fine anyway. Amount of content provides by the mods is enormous, and many of them are of very high quality. And many are not. It's all good fun.<br /><br />Special Edition even brought mods to console playing peasants! Much more limited, but still, give them a taste of what PC gaming is like.<br /><br />Annoyingly you need <a href="https://www.nexusmods.com/skyrimspecialedition/mods/245">a special mod to enable achievements on modded games</a>, which is basically the point of Special Edition. And between game bugs and 100 mods at once, I ran into bug in main questline, and didn't figure it out right away to reload, so I couldn't actually win this time, but it was so much fun anyway.<br /><br />It's not a game for everyone, especially because you need a lot of time to play it, but it's definitely best in its genre of vast open world games.<br /><h3><a href="https://ddlc.moe/">Doki Doki Literature Club!</a></h3>This completely free game pretends to be a dating sim taking place in literature club of a Japanese high school, but it turns into... Well, I can't say without spoilers. There's a bit of gameplay, but it's mostly a really great mindfucky story.<br /><br />As the trailer says "This game is not for children or those who are easily disturbed", so I can't recommend it for everyone, but other than that, do it, it's amazing. Play without any spoilers. It probably helps if you enjoy anime visuals, but it only really pretends to be a dating sim. It's a one evening game.<br /><h3><a href="https://store.steampowered.com/app/312660/Sniper_Elite_4/">Sniper Elite 4</a></h3>Having played Sniper Elite 3 previously, I was expecting a decent stealth shooter, but I got a lot more.<br /><br />The levels are huge, and allow a lot of approaches. Very few games ever tried that - Far Cry 1 and its sequels Crysis 1 and Crysis Warhead did it and then the whole concept died out, probably because console hardware had too little memory, and PC exclusives don't sell quite as well. It's those console peasants' fault as usual.<br /><br />The second great thing is what happens when you break stealth. In basically all other games every enemy within some distance would magically know where you are, and now you'd have to run away or face a shootout against overwhelming odds. That's fine, and even Sniper Elite 3 did basically that. Sniper Elite 4 has a better idea. Enemies lack this magic, and only guess you might be based on when you've been last seen or where shots have been heard from. They'll try to suppress and flank your suspected location, throw grenades, and even artillery strikes to get you, but you can use it to your advantage.<br /><br />This change makes breaking stealth a tool, not a fail mode. You can shoot to reveal yourself to lure enemies in direction you want, straight into some mines you just put, while you take advantage of them moving away from their posts to sneak past. Blow something up to make them take cover facing completely wrong direction, while you backstab them staring at the blazing inferno. Huge maps give plenty of options for creativity. Oh and as is tradition of the series, you get to kill Hitler in a DLC, in many unique ways. <a href="https://en.wikipedia.org/wiki/Possible_monorchism_of_Adolf_Hitler">You can even shoot him in his one ball</a>.<br /><br />A big downside is third person perspective, which offers less control and immersion than first person would. But it's still an amazing shooter taking the genre in a new direction. If you enjoy shooters, it would be silly not to give this one a try.<br /><br />The game doesn't actually explain all that well that you can take this dynamic approach, and I guess many people will play it as a traditional stealth game, which also definitely works. But if you do, you won't see why it's so special.<br /><h3><a href="https://store.steampowered.com/app/684270/Silicon_Zeroes/">Silicon Zeroes</a></h3>So it looks like a puzzle game inspired by TTL era chip design. Except they didn't just take vague inspiration, by the end of it, you will actually be designing superscalar pipelined processors with bypass logic. A lot of details of real hardware are simplified, but problems you'll be solving are completely genuine. It's a total opposite of games like Shenzhen I/O where everything is as fake as fake gets.<br /><br />It feels to me like the most successful educational game I've ever seen, and I'm not even sure if that's what they were aiming for, or just accidentally hit.<br /><br />There's also some story in it, but it's totally lame (half of negative reviews it has are about the story). At least it's not much of a distraction, you can basically ignore it and just enjoy the game.<br /><div><br />The game starts very easy, but final designs are sort of Microprocessor Design 101 finals level, and only 1.5% of people have achievement for completing all challenges.<br /><br />Oh and there's a free downloadable demo with first levels. Just give it a try.<br /><h3>Good gaming!</h3>Enjoy the games. For summary of key points:<br /><br /><ul><li><b>Her Story</b> - one evening game, avoid spoilers at all cost</li><li><b>Factorio</b> - long and very replayable, little to spoil, it's more fun if you try your own designs first few times; then it's OK to see how others did it, but if you want to start by watching some let's plays it's all fine too</li><li><b>Skyrim Special Edition</b> - very long, and mods make it a lot longer, spoilers are mostly fine,&nbsp;</li><li><b>Doki Doki Literature Club!</b> - one evening game, avoid spoilers at all cost</li><li><b>Sniper Elite 4</b> - medium length, little to spoil</li><li><b>Silicon Zeroes</b> - medium length, mostly avoid spoilers as it's a puzzle game</li></ul><br />I plan to posting a lot more on this blog now.</div>tawhttp://www.blogger.com/profile/16972845140253292628noreply@blogger.com0tag:blogger.com,1999:blog-27488238.post-28133494942538720302019-03-30T16:03:00.005+01:002019-03-30T20:21:14.801+01:00stringify-any<div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-ovoF-ky-7Kc/XJ-E9V0N4XI/AAAAAAAAiTk/GbgOSS_1zQEFSMF2COhTcVrzcI4reSFxQCLcBGAs/s1600/a185975_jewel2_by_therohit_from_flickr_cc-nc.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" title="a185975 jewel-2 by The.Rohit from flickr (CC-NC)"><img alt="a185975 jewel-2 by The.Rohit from flickr (CC-NC)" border="0" data-original-height="1067" data-original-width="1600" height="426" src="https://4.bp.blogspot.com/-ovoF-ky-7Kc/XJ-E9V0N4XI/AAAAAAAAiTk/GbgOSS_1zQEFSMF2COhTcVrzcI4reSFxQCLcBGAs/s640/a185975_jewel2_by_therohit_from_flickr_cc-nc.jpg" width="640" /></a></div><br />So here's my second interesting Javascript npm package - <a href="https://www.npmjs.com/package/stringify-any"><tt>stringify-any</tt></a>.<br /><br />Javascript is a basically very low quality language where everything only kinda sorta mostly works. In this case I ran into problems of inspecting objects.<br /><h3>Problem this package is targeting</h3>If you want to inspect <code>obj</code> in a browser, you'd usually just do:<br /><br /><pre><code>console.log(obj)</code></pre><div><br />And the browser will generate appropriate interactive widget you can click around to look around.<br /><br />That's of course not possible outside the browser. So what if you want to print the object?<br /><br /><pre><code>console.log(`${obj}`)</code></pre><br />The most obvious way will fail with <code>[object Object]</code>.<br /><br /></div>JSON sort of helps, and we can do this:<br /><br /><pre><code>console.log(JSON.stringify(obj))</code></pre><br />It's hard to read due to bad indentation, but copy and pasting JSON into pretty printer is a basic web development skill, so it's kinda tolerable.<br /><br />And then you try some modern Javascript, and somewhere in that <code>obj</code> there's a nested <code>new Set([1, 2, 3])</code>, which quietly turns into <code>{}</code>, making you want to drop Javascript and just code <a href="http://opalrb.com/">Ruby in browser</a> or <a href="https://clojurescript.org/">Clojurescript</a> or something.<br /><h3>What you can do now</h3>Just get the package, import <code>stringify</code> function, and call it:<br /><br /><pre><code>import "stringify-any" as stringify<br /></code></pre><pre><code>console.log(stringify(obj))</code></pre><br /><div>It will do the right thing.<br /><br />It handles all cases I could think of, like <code>undefined</code>, <code>-0</code>, infinities, <code>NaN</code>, <code>Date</code>,&nbsp;<code>Map</code>,&nbsp;<code>Set</code>.<br /><br />It also sort of handles&nbsp;<code>WeakMap</code>,&nbsp;<code>WeakSet</code>,&nbsp;<code>Function</code> - we can't show what's inside, but we can at least show the type.<br /><br />Because Javascript is Javascript I'm sure I missed something. Please report, <a href="https://github.com/taw/stringify-any">github issues</a> are the best place.<br /><br />I couldn't find any other package that does this correctly (found a lot which tried but failed), but then it's totally possible something like this already exists.</div>tawhttp://www.blogger.com/profile/16972845140253292628noreply@blogger.com0tag:blogger.com,1999:blog-27488238.post-5864121566996664502019-03-15T13:16:00.000+01:002019-03-15T13:16:28.303+01:00How democratic are countries really<div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-3SgmArRtQmc/XIuXN5tnxLI/AAAAAAAAiD4/JX9Ymc90j8kw2FRhgszsd1kL6UlaKrX6wCLcBGAs/s1600/boy_was_that_exhausting_by_lisa_zins_from_flickr_cc-by.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" title="BOY was that EXHAUSTING!! by Lisa Zins from flickr (CC-BY)"><img alt="BOY was that EXHAUSTING!! by Lisa Zins from flickr (CC-BY)" border="0" data-original-height="1291" data-original-width="1600" height="516" src="https://1.bp.blogspot.com/-3SgmArRtQmc/XIuXN5tnxLI/AAAAAAAAiD4/JX9Ymc90j8kw2FRhgszsd1kL6UlaKrX6wCLcBGAs/s640/boy_was_that_exhausting_by_lisa_zins_from_flickr_cc-by.jpg" width="640" /></a></div><br />I mentioned many times how "democratic" countries are actually not all that democratic. It's time to quantify that.<br /><div><br /></div><div>I have no time to data mine all the Tanzanias and Liechtensteins of the world, so I limited this analysis to <a href="https://en.wikipedia.org/wiki/OECD">OECD member countries</a> plus 3 extra not-yet-OECD <a href="https://en.wikipedia.org/wiki/European_Union">EU members</a>. Also excluded is Switzerland, as it has a completely unique system of government.</div><div><h3>Limitations</h3></div><div>This ranking only covers how representative elections are, and only for Lower House, Upper House, Head of State, and Head of Government, as most countries either have those four roles, or a single entity covers two of those roles in a way that's easy to score.</div><div><br /></div><div>This excludes all other elections, such as regional elections, super-national elections, possibly judicial&nbsp;elections, and such.</div><div><br /></div><div>This also excludes any issues such as term limits, mandatory retirement age, campaigning, party financing, relative division of power between those branches, any rule of law issues and such. There's a lot to cover beyond this list, but it's very country-specific and difficult to score objectively.</div><div><br /></div><div>It's all about how will of the voters is translated into results. If votes are thrown away (by non-proportional system), or voters are forced to vote for their non-preferred candidates (by FPTP and such), it gets lower scores.</div><div><br /></div><div>If a very insignificant number of seats are reserved (like <a href="https://en.wikipedia.org/wiki/Vice_President_of_the_United_States">current VP</a>, <a href="https://en.wikipedia.org/wiki/Senator_for_life">former presidents</a>, ethnic minority groups), I'm not counting that either way.</div><div><br /></div><div>I compiled the information from Wikipedia, and it's possible that I made a few mistakes.</div><div><h3>Scoring</h3></div><div>Power is divided differently between branches of government in different countries, but for some reasonable baseline the following mix is used:</div><div><ul><li>Lower House - 40%</li><li>Upper House - 15%</li><li>Head of Government - 30%</li><li>Head of State - 15%</li></ul><div>If there's no Upper House, Lower House is counted for both roles.</div></div><div><br /></div><div>If elected Head of State is also Head of Government, they're counted for both roles.&nbsp;</div><div><br /></div><div>If parliament elects Head of Government and/or Head of State, Lower House is counted for both roles. This also includes all cases where technically Head of State nominates Head of Government, but they need some kind of parliamentary confirmation, as that's in practice the same as direct election by the parliament.</div><div><h3>Scoring for parliamentary elections</h3></div><div><ul><li>Proportional representation (with threshold less 4%) - 100%</li><li>Proportional representation (with threshold 4% or higher) - 80%</li><li>Single Transferable Vote - 80%</li><li>Mixed Member Representation - 60% -&nbsp;there's a lot of variety here, so it's a non-committal scoring</li><li>Proportional representation (with threshold 7% or higher) - 60%</li><li>FPTP with runoff - 60%</li><li>Proportional representation (with threshold 10% or higher) - 40%</li><li>Proportional representation with <a href="https://en.wikipedia.org/wiki/Majority_bonus_system">majority bonus</a> - 40%</li><li>FPTP - 40%</li><li>FPTP with vastly disproportional sized districts (like US states) - 20%</li><li>Unelected - 0%</li></ul></div><div><div>Proportional representation always has some threshold. For example a no-threshold elections with single national list for 100-member parliament basically forces de facto 1% threshold. And any kind of regional lists de facto results in low thresholds, even without any distortionary intend.</div></div><div><br /></div><div>Medium-threshold systems are distortionary in practice. For example in Poland's electoral threshold alone was responsible for overturning results of 1993 and 2015 elections.</div><div><br /></div><div>High threshold systems and bonus for largest party are intentional distortions targeted against minor parties.</div><div><br /></div><div>FPTP is extreme distortionary in theory and practice, and it only somewhat works if districting just so happen to be random and not too biased. In practice every single FPTP system in the world has severe bias against certain demographies and parties.</div><div><br /></div><div>FPTP with&nbsp;vastly disproportional sized districts is borderline if it should count as elections at all.</div><div><br /></div><div>Unelected Upper House obviously gets no points.</div><div><br /></div><div>STV and Mixed Member Representation systems cover various systems which are generally less representative than pure proportional representation would be, but it's difficult to score them properly.</div><div><h3>Scoring for presidential elections</h3></div><div><ul><li>Single Transferable Vote - 100%</li><li>Majority with runoff - 80%</li><li>Plurality without runoff - 60%</li><li>Electoral College - 40%</li><li>Monarch - 0%</li></ul></div><div>This should be fairly obvious. There's no way to elect a single position proportionally, so whichever system most reasonably approximates <a href="https://en.wikipedia.org/wiki/Condorcet_criterion">Condorcet winner</a> is best.</div><div><br /></div><div>None of the countries currently hold Prime Minister elections (<a href="https://en.wikipedia.org/wiki/Prime_Minister_of_Israel#Direct_election">Israel had them for a while</a>), so either Lower House score or Head of State score counts.</div><div><h3>Results</h3></div><div><ul><li>100 Israel</li><li>97 Finland</li><li>97 Portugal</li><li>94 Iceland</li><li>91 Romania</li><li>85 Denmark</li><li>85 Luxembourg</li><li>80 Bulgaria</li><li>80 Croatia</li><li>80 Estonia</li><li>80 Latvia</li><li>80 Slovakia</li><li>80 Slovenia</li><li>79 Chile</li><li>76 Spain</li><li>74 Czech Republic</li><li>74 Poland</li><li>71 Ireland</li><li>70 Netherlands</li><li>68 Australia</li><li>68 Austria</li><li>68 Norway</li><li>68 Sweden</li><li>63 France</li><li>63 Lithuania</li><li>60 Hungary</li><li>60 Italy</li><li>60 Mexico</li><li>60 South Korea</li><li>58 Turkey</li><li>56 Belgium</li><li>51 Germany</li><li>51 Japan</li><li>51 New Zealand</li><li>40 Greece</li><li>37 United States</li><li>28 Canada</li><li>28 United Kingdom</li></ul></div><div><h3>Raw data</h3></div><div><br /></div><table><tbody><tr><th>Country</th><th>Lower House</th><th>Upper House</th><th>Head of Government</th><th>Head of State</th></tr><tr><td>Australia</td><td>STV</td><td>STV</td><td>Parliament</td><td>Monarch</td></tr><tr><td>Austria</td><td>4%</td><td>Unelected</td><td>Parliament</td><td>Runoff</td></tr><tr><td>Belgium</td><td>5%</td><td>Unelected</td><td>Parliament</td><td>Monarch</td></tr><tr><td>Bulgaria</td><td>4%</td><td>none</td><td>Parliament</td><td>Runoff</td></tr><tr><td>Canada</td><td>FPTP</td><td>Unelected</td><td>Parliament</td><td>Monarch</td></tr><tr><td>Chile</td><td>0%</td><td>2 per state</td><td>President</td><td>Runoff</td></tr><tr><td>Croatia</td><td>5%</td><td>none</td><td>Parliament</td><td>Runoff</td></tr><tr><td>Czech Republic</td><td>5%</td><td>FPTP</td><td>Parliament</td><td>Runoff</td></tr><tr><td>Denmark</td><td>2%</td><td>none</td><td>Parliament</td><td>Monarch</td></tr><tr><td>Estonia</td><td>5%</td><td>none</td><td>Parliament</td><td>Parliament</td></tr><tr><td>Finland</td><td>0%</td><td>none</td><td>Parliament</td><td>Runoff</td></tr><tr><td>France</td><td>Runoff FPTP</td><td>Mixed</td><td>Parliament</td><td>Runoff</td></tr><tr><td>Germany</td><td>Mixed</td><td>Unelected</td><td>Parliament</td><td>Parliament</td></tr><tr><td>Greece</td><td>3%+bonus</td><td>none</td><td>Parliament</td><td>Parliament</td></tr><tr><td>Hungary</td><td>Mixed</td><td>none</td><td>Parliament</td><td>Parliament</td></tr><tr><td>Iceland</td><td>0%</td><td>none</td><td>Parliament</td><td>Plurality</td></tr><tr><td>Ireland</td><td>STV</td><td>Unelected</td><td>Parliament</td><td>STV</td></tr><tr><td>Israel</td><td>3.25%</td><td>none</td><td>Parliament</td><td>Parliament</td></tr><tr><td>Italy</td><td>Mixed</td><td>Mixed</td><td>Parliament</td><td>Parliament</td></tr><tr><td>Japan</td><td>Mixed</td><td>Mixed</td><td>Parliament</td><td>Monarch</td></tr><tr><td>Latvia</td><td>5%</td><td>none</td><td>Parliament</td><td>Parliament</td></tr><tr><td>Lithuania</td><td>Mixed</td><td>none</td><td>Parliament</td><td>Runoff</td></tr><tr><td>Luxembourg</td><td>0%</td><td>none</td><td>Parliament</td><td>Monarch</td></tr><tr><td>Mexico</td><td>Mixed</td><td>Mixed</td><td>President</td><td>Plurality</td></tr><tr><td>Netherlands</td><td>0%</td><td>Unelected</td><td>Parliament</td><td>Monarch</td></tr><tr><td>New Zealand</td><td>Mixed</td><td>none</td><td>Parliament</td><td>Monarch</td></tr><tr><td>Norway</td><td>4%</td><td>none</td><td>Parliament</td><td>Monarch</td></tr><tr><td>Poland</td><td>5%</td><td>FPTP</td><td>Parliament</td><td>Runoff</td></tr><tr><td>Portugal</td><td>0%</td><td>none</td><td>Parliament</td><td>Runoff</td></tr><tr><td>Romania</td><td>0%</td><td>Mixed</td><td>Parliament</td><td>Runoff</td></tr><tr><td>Slovakia</td><td>5%</td><td>none</td><td>Parliament</td><td>Runoff</td></tr><tr><td>Slovenia</td><td>4%</td><td>none</td><td>Parliament</td><td>Runoff</td></tr><tr><td>South Korea</td><td>Mixed</td><td>none</td><td>President</td><td>Plurality</td></tr><tr><td>Spain</td><td>3%</td><td>FPTP</td><td>Parliament</td><td>Monarch</td></tr><tr><td>Sweden</td><td>4%</td><td>none</td><td>Parliament</td><td>Monarch</td></tr><tr><td>Turkey</td><td>10%</td><td>none</td><td>President</td><td>Runoff</td></tr><tr><td>United Kingdom</td><td>FPTP</td><td>Unelected</td><td>Parliament</td><td>Monarch</td></tr><tr><td>United States</td><td>FPTP</td><td>2 per state</td><td>President</td><td>Electoral College</td></tr></tbody></table><div><h3>Commentary</h3></div><div>There's a lot of "democratic" countries with very questionable scores. It's usually not quite as bad, as the general pattern is that more representative branches of government have more power than less representative branches.</div><div><br /></div><div>So monarchs tend to have a lot less power than presidents, unelected Upper Houses tend to have a lot less power than elected Upper Houses and so on. Notably Emperor of Japan (sort of Head of State) has no role whatsoever, and British House of Lords (Upper House) is basically meaningless.<br /><br />If this list was weighted by actual power, it would look a bit better.</div><div><br /></div><div>The main exception to this pattern is US, which has it exactly backwards, and the (relatively speaking, none of them are actually good) most representative House of Representatives (Lower House) is least powerful, while the even less representative Senate (Upper House) and Presidency have almost all power between them.</div><div><h3>Consequences</h3>It all might have seemed like a purely theoretical issue a decade ago, but right now of the bottom 4 countries, 3 are in a major unending political crisis, and Canada's luck might run out just as it did for UK and US.<br /><br />Of 13 countries scored 60% or lower, only Canada, Mexico, and New Zealand avoided major political crises recently, unless there were some that I missed. On top of the list, such situations are fairly rare.<br /><br />One thing that's not directly connected with electoral systems, but would greatly improve quality of democracy, is implementing strict term limits, especially for top positions like presidents and prime ministers. <a href="https://en.wikipedia.org/wiki/Investigations_involving_Benjamin_Netanyahu">Eternal prime ministers cause all sorts of problems</a>, which could be easily avoided if their party just picked someone else for the role.</div>tawhttp://www.blogger.com/profile/16972845140253292628noreply@blogger.com2tag:blogger.com,1999:blog-27488238.post-36409179055357348672019-03-15T02:07:00.003+01:002019-03-15T02:07:33.385+01:00Emojiful ls in your terminal<a href="https://github.com/Peltoche/lsd"><code>lsd</code></a> is a really sweet looking <code>ls</code> replacement, unfortunately it's awkward to install, so here are the steps for OSX:<br /><div><h3>Install <code>lsd</code> and font with emoji</h3></div><pre><code><br />brew tap caskroom/fonts<br />brew cask install font-hack-nerd-font<br />brew install lsd</code></pre><h3>Change font in your terminal</h3><div>For iTerm2, it's: Preferences &gt; Profiles &gt; Text.</div><div>Then for both Font and Non-ASCII Font, choose "Hack Regular Nerd Font Complete".</div><div>It's a bit smaller than default font so I increased point size from 12pt to 14pt, but it's up to you.</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-y-tHum5geU8/XIr5A-ykesI/AAAAAAAAiDk/WtoAlaBhVcgtowZ3p1L2OMocdCcBSxLRgCLcBGAs/s1600/Screen%2BShot%2B2019-03-15%2Bat%2B00.59.23.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="941" data-original-width="1600" height="376" src="https://2.bp.blogspot.com/-y-tHum5geU8/XIr5A-ykesI/AAAAAAAAiDk/WtoAlaBhVcgtowZ3p1L2OMocdCcBSxLRgCLcBGAs/s640/Screen%2BShot%2B2019-03-15%2Bat%2B00.59.23.png" width="640" /></a></div><div><br /></div><div>For builtin Terminal app, it's Preferences &gt; Profiles &gt; Font.</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-6GdfAXC3MwM/XIr5yLCA6oI/AAAAAAAAiDs/MgbHikPXgCMCzAkq1JU1-nPYvQ-6vONKQCLcBGAs/s1600/Screen%2BShot%2B2019-03-15%2Bat%2B01.02.45.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1182" data-original-width="1340" height="564" src="https://1.bp.blogspot.com/-6GdfAXC3MwM/XIr5yLCA6oI/AAAAAAAAiDs/MgbHikPXgCMCzAkq1JU1-nPYvQ-6vONKQCLcBGAs/s640/Screen%2BShot%2B2019-03-15%2Bat%2B01.02.45.png" width="640" /></a></div><div><br /></div><div>Because this setting is per-profile, if you use multiple profiles, or some non-default profile, you might need to set it in multiple places.</div><div><br /></div><div><h3>Make it default</h3></div><div>Depending on your setup, add this to your <code>~/.bashrc</code>&nbsp;or <code>~/.profile</code> or <code>~/.bash_profile</code>:</div><pre><code><br />alias ls="lsd"</code></pre><div><br />Or depending If you use another shell, edit <code>~/.zshrc</code> or such file.</div>tawhttp://www.blogger.com/profile/16972845140253292628noreply@blogger.com0tag:blogger.com,1999:blog-27488238.post-46508848280124182832019-03-12T00:18:00.003+01:002019-03-12T00:22:53.797+01:00Map mode for Hearts of Iron 4 resistance and suppression system for 1.6<br />I previously published this data for HoI4 1.0-1.5, and simply <a href="http://t-a-w.blogspot.com/2016/08/map-mode-for-hearts-of-iron-4.html">updated that post each release</a>, as there were minimal differences.<br /><br />1.6 changes thing a lot, so it's best to just publish new maps.<br /><br />For some theory behind this map, <a href="http://t-a-w.blogspot.com/2016/08/analysis-and-critique-of-hearts-of-iron.html">check out this post as nothing really changed</a>. It's still a horrible system that forces endless tedious and boring micromanagement on the player, and which completely cripples the AI.<br /><br />If Paradox wants to do resistance, it should be possible to just put units anywhere in some big region like "France", and they'd apply to all its states, not this nonsense of individually placing every damn 1cav brigade by alt-tabbing out of the game and hoping you clicked things right. Or just remove it completely, the game already applies flat static penalty to occupied lands.<br /><br />EU4 figured that out, why can't HoI4? Also contrary to romantic visions of&nbsp;La Résistance, all that resistance was historically close to irrelevant minor hassle, except <i>maybe</i>&nbsp;in <a href="https://en.wikipedia.org/wiki/Yugoslav_Partisans">Yugoslavia</a>.<br /><br />Anyway, here are the maps. Click for full resolution version.<br /><br />Gentlest:<br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-Wy56Ltx2nsA/XIbqoHCJUDI/AAAAAAAAiBw/9hvUQKG4R7EgxlO-7Dpc3aSXnIXau9BtACLcBGAs/s5632/suppression_gentlest.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="582" data-original-width="1600" src="https://3.bp.blogspot.com/-Wy56Ltx2nsA/XIbqoHCJUDI/AAAAAAAAiBw/9hvUQKG4R7EgxlO-7Dpc3aSXnIXau9BtACLcBGAs/s1600/suppression_gentlest.png" style="width: 100%;" /></a></div><br />Gentle:<br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-x657IK7qMV8/XIbqn-h4E4I/AAAAAAAAiBs/a8gytkMsGbs-leJzHtk7EjqaCFgfyaUhACLcBGAs/s5632/suppression_gentle.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="582" data-original-width="1600" src="https://4.bp.blogspot.com/-x657IK7qMV8/XIbqn-h4E4I/AAAAAAAAiBs/a8gytkMsGbs-leJzHtk7EjqaCFgfyaUhACLcBGAs/s1600/suppression_gentle.png" style="width: 100%;" /></a></div><br />Harsh:<br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-4XyfevoUwKY/XIbqoBoT4bI/AAAAAAAAiB0/oAsZ23YKZJg4w58QnV6lElZfjeLImacbACLcBGAs/s5632/suppression_harsh.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="582" data-original-width="1600" src="https://2.bp.blogspot.com/-4XyfevoUwKY/XIbqoBoT4bI/AAAAAAAAiB0/oAsZ23YKZJg4w58QnV6lElZfjeLImacbACLcBGAs/s1600/suppression_harsh.png" style="width: 100%;" /></a></div><br />Harshest:<br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-IQgO1dzsS4I/XIbqo_NrKJI/AAAAAAAAiB4/j4eUTFpzGvMB7ZOmRWvIjt1T1zzLfXU7QCLcBGAs/s5632/suppression_harshest.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="582" data-original-width="1600" src="https://3.bp.blogspot.com/-IQgO1dzsS4I/XIbqo_NrKJI/AAAAAAAAiB4/j4eUTFpzGvMB7ZOmRWvIjt1T1zzLfXU7QCLcBGAs/s1600/suppression_harshest.png" style="width: 100%;" /></a></div><br />tawhttp://www.blogger.com/profile/16972845140253292628noreply@blogger.com0tag:blogger.com,1999:blog-27488238.post-56583517377632490192019-03-01T11:01:00.000+01:002019-03-01T11:01:11.379+01:00Challenges for February 2019 SecTalks London<div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-GTG0SuWHjjs/XHkCvX11hBI/AAAAAAAAh7k/Bfk5jgtqvzQP3q_n9v4bkOO-mrthG7yWwCLcBGAs/s1600/snow_leopard_cub_looking_curious_by_eric_kilby_from_flickr_cc-sa.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" title="Snow Leopard Cub Looking Curious by Eric Kilby from flickr (CC-SA)"><img alt="Snow Leopard Cub Looking Curious by Eric Kilby from flickr (CC-SA)" border="0" data-original-height="1066" data-original-width="1600" height="426" src="https://4.bp.blogspot.com/-GTG0SuWHjjs/XHkCvX11hBI/AAAAAAAAh7k/Bfk5jgtqvzQP3q_n9v4bkOO-mrthG7yWwCLcBGAs/s640/snow_leopard_cub_looking_curious_by_eric_kilby_from_flickr_cc-sa.jpg" width="640" /></a></div><br />I ran another round of <a href="https://www.meetup.com/SecTalks-London/">London SecTalks CTF</a>.<br /><br />There were 12 regular challenges, and 1 super-hard bonus challenge. Only 10/13 got at least one solve during the event, so maybe difficulty or number of challenges were a bit too high.<br /><br />Challenge files and code used to generate them <a href="https://github.com/taw/sectalks-february-2019">available on github</a>.<br /><br />There are no answers below, but some serious hints which might make it too easy.<br /><br />For previous rounds, see posts about <a href="http://t-a-w.blogspot.com/2017/10/challenges-for-september-2017-sectalks.html">September 2017</a>, <a href="http://t-a-w.blogspot.com/2017/12/challenges-for-november-2017-sectalks.html">November 2017</a>, <a href="http://t-a-w.blogspot.com/2018/06/challenges-for-may-2018-sectalks-london.html">May 2018</a>, <a href="http://t-a-w.blogspot.com/2018/08/challenges-for-july-2018-sectalks-london.html">July 2018</a>, and <a href="https://t-a-w.blogspot.com/2018/10/challenges-for-october-2018-sectalks.html">October 2018</a>&nbsp;CTFs.<br /><h3>from_future_import_flag (5 points)</h3>It was a simple program which could tell you the flag if you run it in year 2020.<br /><h3>Censored SVG (10 points)</h3>A simple HTML file with SVG image on it. The image contains flag covered with some censoring square. SVG image is base64 encoded for one small layer.<br /><h3>Hello RISC-V (15 points)</h3>A simple binary which will give you the flag if you run it. It only runs on RISC-V, so you'll need to figure out a way to do so.<br /><div><h3>Crystal (20 points)</h3></div><div>Password validator binary compiled from Crystal. Binary contains a lot of extra stuff, but validating function shouldn't look all that strange.</div><div><h3>Powerpoint (25 points)</h3></div><div>PowerPoint PPTX file encrypted with XOR. Flag is on the slides.</div><div><h3>RISC-V Verify (30 points)</h3></div><div>RISC-V binary validating password. It might be easier to run static analysis, but you should still understand basics of RISC-V assembly. Or you could run gdb on RISC-V emulator.</div><div><h3>OCaml (35 points)</h3></div><div>Password validator binary compiled from OCaml. OCaml uses unusual integer representation, so it's extra layer of confusion.</div><div><br /></div><div>It had zero solves during the event.</div><div><h3>LOLHEX (40 points)</h3></div><div>English text encoded by hex encoding, but which of 16 digits is which is scrambled. Simple statistical analysis should do here.</div><div><h3>Imba (45 points)</h3></div><div>Password validator written in <a href="http://imba.io/">Imba</a>. It will tell you if you get your flag right. It can be solved by static analysis (data driving logic is easy to see), or in-browser, possibly by by attaching DOM breakpoints.</div><div><br /></div><div><div>It had zero solves during the event.</div></div><div><h3>Catzip (50 points)</h3></div><div>For mandatory meme challenge. It's a zip format made by gzipping something, then turning it into a PNG containing cat emojis. There's two cat emojis, 8 per row, so you can probably guess where it's going.</div><div><h3>FPGA (55 points)</h3></div><div>A slight variant of challenge from previous time. It's a small circuit, and you need to find inputs which give positive result. This time circuit has NAND, AND, NOR, OR, and XOR gates.</div><div><br /></div><div>It's highly advisable to use <a href="https://github.com/Z3Prover/z3">Z3</a> or similar for it.</div><h3>Monoalphabetische Chiffrierung (60 points)</h3>German text encoded with monoalphabetic cipher, and then turned into Unicode Fraktur.<br /><br />It's actually very easy, as punctuation, capitalization, digits etc. were not really scrambled.<br /><h3>LOL64 (100 points)</h3>For super hard bonus challenge, it's English text encoded by Base64 variant, but which of 64 digits is which is scrambled.<br /><br />Understandably, it had zero solves during the event.<br /><br />It's definitely solvable in principle, but I'm not really sure how to write such solver. It can be seen as breaking a key of 64 6-bit parts, so 512 bits total. Knowing that it's all ASCII and simple statistical methods get a lot of those bits, but from that point on it would take some creative statistical analysis. Big difficulty is just size of the key, and how a single error in decoding can mess up all following statistical analysis, and cost a lot of time.<br /><br />I'm sure there are also some ways to circumvent this whole process, and find exact encoded text from some simple statistical properties, but I didn't try it this way as it's less fun.<br /><br />tawhttp://www.blogger.com/profile/16972845140253292628noreply@blogger.com0tag:blogger.com,1999:blog-27488238.post-4286147381713212082019-02-24T21:11:00.004+01:002019-02-24T21:11:51.062+01:00Parable of the Sharks<div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-vmPPAy1JIzw/XHL6IDWOGRI/AAAAAAAAhxg/y62ziBFqC1oWPH5n9WeSVWZZfJjzo2UpgCLcBGAs/s1600/art_show_for_sharks_at_spoke_art_by_steve_rhodes_from_flickr_cc-nc-nd.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" title="Art show for sharks at Spoke Art by Steve Rhodes from flickr (CC-NC-ND)"><img alt="Art show for sharks at Spoke Art by Steve Rhodes from flickr (CC-NC-ND)" border="0" data-original-height="1067" data-original-width="1600" height="426" src="https://2.bp.blogspot.com/-vmPPAy1JIzw/XHL6IDWOGRI/AAAAAAAAhxg/y62ziBFqC1oWPH5n9WeSVWZZfJjzo2UpgCLcBGAs/s640/art_show_for_sharks_at_spoke_art_by_steve_rhodes_from_flickr_cc-nc-nd.jpg" width="640" /></a></div><br />Alice believes sharks are the biggest problem facing humanity.<br /><br />If you ask her, she'll tell you about <a href="https://en.wikipedia.org/wiki/Shark_attack">all documented cases</a> of shark attack. She'll tell you how it's definitely undercounted - random disappearances will be counted as drownings even if they were shark attacks. Or someone could actually drown but only because they were running away from sharks.<br /><br />She'll tell you that <a href="https://www.un.org/development/desa/en/news/population/world-population-prospects-2017.html">population increases every year</a>, <a href="https://en.wikipedia.org/wiki/List_of_countries_by_population_growth_rate">mostly in warmer and so presumably more shark-infested areas</a>, that <a href="https://scienceblogs.com/gregladen/2011/10/18/how-many-people-live-near-the">most people live in coastal areas</a>, so we can expect more shark attacks in the future.<br /><br />She'll tell you that <a href="https://www.wttc.org/-/media/files/reports/economic-impact-research/regions-2018/world2018.pdf">as people get wealthier, tourism increases, and more tourists means more possibility of shark attacks</a>.<br /><br />She'll tell you that even living far away from the coast doesn't guarantee safety, as <a href="https://en.wikipedia.org/wiki/River_shark">some sharks live in rivers</a>. And what stops sharks from <a href="https://www.youtube.com/watch?v=597mWx7dVJQ">swimming into canals</a> and sewer systems really?<br /><br />She'll tell you that direct sharks attacks are just start of the problem. Sharks <a href="https://www.sharks-world.com/what_do_sharks_eat/">will eat fish</a>, <a href="http://www.bbc.com/future/story/20120920-are-we-running-out-of-fish">causing famines or mass unemployment in fishing dependent regions</a>. <a href="https://nypost.com/2018/08/01/surfers-panic-as-great-white-shark-attacks-seal-off-coast/">Panics caused by shark attacks</a> might cause mass migration, and <a href="https://en.wikipedia.org/wiki/Cod_Wars">all that together increases likelihood of armed conflicts</a>. The more you talk to her, the most every problem turns out to be related to sharks.<br /><br />She'll tell you how we need global solution to shark problem. <a href="https://www.wikihow.com/Survive-a-Shark-Attack">Armed guards on every beach</a>. <a href="https://itunes.apple.com/gb/app/global-shark-tracker/id570772231?mt=8">Shark radars</a>. Maybe <a href="https://www.youtube.com/watch?v=FBKqR_Eo7Jk">even security bars in every toilet so shark won't swim up to bite you in your most vulnerable moment</a>. The more you talk to her, the more elaborate her solutions become.<br /><br />And of course she'll happily provide links with evidence for all those claims.<br /><br />Bob <a href="https://www.imdb.com/title/tt2724064/">doesn't believe sharks are even real</a>.<br /><div><br /></div>Which of them is less wrong?tawhttp://www.blogger.com/profile/16972845140253292628noreply@blogger.com0tag:blogger.com,1999:blog-27488238.post-47979177203918393182019-01-27T23:47:00.000+01:002019-01-27T23:47:04.269+01:00finder-sort<div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-OG36ZPDx5zg/XE40Rhd79sI/AAAAAAAAhTw/f47EBwx2uIcMh5xijAEm02nmJBgsFu0MgCLcBGAs/s1600/cat_oof_by_long_road_photography_formerly_aff_from_flickr_cc-nc-nd.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" title="Cat (OOF!) by Long Road Photography (formerly Aff) from flickr (CC-NC-ND)"><img alt="Cat (OOF!) by Long Road Photography (formerly Aff) from flickr (CC-NC-ND)" border="0" data-original-height="1068" data-original-width="1600" height="426" src="https://4.bp.blogspot.com/-OG36ZPDx5zg/XE40Rhd79sI/AAAAAAAAhTw/f47EBwx2uIcMh5xijAEm02nmJBgsFu0MgCLcBGAs/s640/cat_oof_by_long_road_photography_formerly_aff_from_flickr_cc-nc-nd.jpg" width="640" /></a></div><br />I was playing a bit with <a href="https://electronjs.org/">Electron</a>, building a small image viewer, as <a href="https://theunarchiver.com/xee">Xee</a> is weirdly crashy nowadays. A small aspect of any image viewer is sorting images to show them in order. As far as I know there's no programming language with any special support for sorting file names, and default ASCII sort is just atrocious - going&nbsp;<code>cat1.jpg</code>,&nbsp;&nbsp;<code>cat10.jpg</code>,&nbsp;&nbsp;<code>cat2.jpg</code> etc.<br /><br />It's not uncommon to find file manager or image viewer which uses this completely unsuitable sort order.<br /><br />OSX Finder is notable for very much not doing so, and using human-friendly ordering. Exact details are unfortunately not properly documented.<br /><br />I created something which works more or less the same, and published it as npm package&nbsp;<a href="https://www.npmjs.com/package/finder-sort"><code>finder-sort</code></a>.<br /><br />There could be some differences, especially for non-ASCII locales. In the end, it's trying to solve the same problem, not necessarily match OSX Finder exactly.<br /><br /><a href="https://github.com/taw/finder-sort">The source code is on github</a>.<br /><br />About the only interesting thing about it from code point of view is that I used&nbsp;<a href="https://www.npmjs.com/package/ava">ava testing package</a>&nbsp;this time. Javascript has over 9000 different testing packages, and it's not uncommon for a single program to duct tape together 10+ of them. I'm surprised there's no clear winner yet. Some of the new ones like ava and <a href="https://www.cypress.io/">cypress</a> seem mostly decent.tawhttp://www.blogger.com/profile/16972845140253292628noreply@blogger.com2tag:blogger.com,1999:blog-27488238.post-66589573149311949872019-01-13T22:54:00.001+01:002019-01-13T22:54:15.022+01:00What I learned from Awair Air Quality Monitor<div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-gbbDC6JO9R8/XDuxhVftTdI/AAAAAAAAhK0/_knHtq40VC0V7FocAUWrabFpkUGRagw_wCLcBGAs/s1600/unimpressed_kitten_by_magnus_brth_from_flickr_cc-by.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" title="Unimpressed kitten by Magnus Bråth from flickr (CC-BY)"><img alt="Unimpressed kitten by Magnus Bråth from flickr (CC-BY)" border="0" data-original-height="600" data-original-width="800" height="480" src="https://4.bp.blogspot.com/-gbbDC6JO9R8/XDuxhVftTdI/AAAAAAAAhK0/_knHtq40VC0V7FocAUWrabFpkUGRagw_wCLcBGAs/s640/unimpressed_kitten_by_magnus_brth_from_flickr_cc-by.jpg" width="640" /></a></div><br />After watching <a href="https://www.youtube.com/watch?v=MRqh8oLY7Ik">DHH's video about air quality</a> I decided to get myself <a href="https://getawair.co.uk/">AWAIR 2nd Edition air quality monitor</a>.<br /><br />Here's what I found.<br /><h3>Setup</h3>Awair setup was fairly awkward. It couldn't connect with my WiFi until I changed my router to some compatibility mode, there were weird error messages about firmware update and so on. I finally got it running, but it wasn't smooth. At least there were no further issues after that.<br /><h3>Air circulation inside the flat is poor</h3>I originally assumed that air in the flat would rapidly be fully mixed up, as it's a fairly small London flat, but that's not what I found. If I open all windows, fresh air gets to the sensor real quick, but as soon as I close them, the stale air is back just as fast from parts of the flat not on air flow path between open windows. I guess it's all the awkwardly placed walls and doors. Keeping windows open much longer eventually works, at least for a while.<br /><h3>How much CO2 per day do I need to get rid of?</h3>One person burns about 2000 kcal a day, so let's say that's 500g carbohydrates getting burned. That's 200g carbon, or 730g CO2 per day, or 17 moles. 17 moles of CO2 takes volume of a bit over 400 liters. Plus a bit more for the cat, and for gas cooker.<br /><br />Let's say the flat is 50 square meters, at height of 250 cm, so 125 cubic meters. Atmospheric CO2 is 400ppm, and let's say I want to keep it under 1000ppm, so 600ppm difference. 600ppm of 125 cubic meters is just 75 litres.<br /><br />These are all heavily rounded calculations, but unless I forgot all the high school chemistry already, I need to somehow fully replace air at home 5-6 times a day to keep it in the happy range. Either by opening windows until fully replaced, or by having some small continuous air "leaks".<br /><br />This number doubles with a second person, to 11 times a day.<br /><br />That's a far higher number than I expected.<br /><br />This number also changes depending on carb vs fat based diet, actual caloric expenditure, and so on, but in any case, it's very high.<br /><h3>Cooking anything generates massive PM2.5 spike</h3>The sensor is placed in the computer room, about as far from the kitchen as it gets. And it looks like cooking anything whatsoever without windows open generates a massive PM2.5 spike for a fairly long time. This can fortunately be easily fixed by only cooking with windows open.<br /><h3>It's difficult to keep Awair happy</h3>Awair never had any serious problems with chemicals, and PM2.5 spikes were only caused by cooking.<br /><br />The problem were the other three readings. If windows are closed, CO2 levels creep up. If windows are open, CO2 levels go down, but temperature and somehow humidity go into unhappy zone. Pretty much no matter what I do, Awair will be unhappy. Only briefly after closing the windows when temperature goes back up but CO2 is still low Awair becomes briefly satisfied.<br /><br />Perhaps I should move it farther away from airflow to make it more stable, then again it's fairly close to my computer chair, so it should be more representative of air I breathe this way.<br /><h3>What should I do?</h3>I've been definitely opening windows more now, especially when cooking, but that's not too great - I like my place real warm (24-26C), and the outside is quite cold, especially in the winter.<br /><br />I don't want to keep windows open too long not just because of higher heating bills, but also because of all the sound coming from outside. I'd have serious trouble falling asleep with bedroom windows open, as I'm extremely sensitive to light and sound when falling asleep. And it's distracting when I'm trying to focus on coding or gaming or just about anything.<br /><br />I could open some other windows, not those in the bedroom, but honestly I don't think air would circulate much - bedroom door is always just slightly ajar for cat's sake, to keep bedroom as dark and quiet as possible. Closing them fully would generate cat scratching on door sound, which also negatively affects sleep.<br /><h3>Plants?</h3>So an obvious idea is to get some houseplants. It's a bit of a hassle, and the cat would probably damage them a bit. But mostly I have no idea how much CO2 would they really remove. I suspect the numbers would be really low for any realistic amount of plants, making it not worth it. Especially at night, when the light is understandably off.<br /><br />Or is there any other trick I'm missing?tawhttp://www.blogger.com/profile/16972845140253292628noreply@blogger.com0tag:blogger.com,1999:blog-27488238.post-39652729252100381042018-11-11T22:27:00.001+01:002018-11-11T22:27:44.259+01:00Webpack boilerplate package for Imba and SCSS<div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-TEzTfQm0_UM/W-ieMYDk36I/AAAAAAAAgwk/DjG0HKFErV0dO37gWUa-Ge1B7F_7lgvTQCLcBGAs/s1600/fluffball_by_rum_bucolic_ape_from_flickr_cc-nd.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" title="Fluffball by Rum Bucolic Ape from flickr (CC-ND)"><img alt="Fluffball by Rum Bucolic Ape from flickr (CC-ND)" border="0" data-original-height="1200" data-original-width="1600" height="478" src="https://4.bp.blogspot.com/-TEzTfQm0_UM/W-ieMYDk36I/AAAAAAAAgwk/DjG0HKFErV0dO37gWUa-Ge1B7F_7lgvTQCLcBGAs/s640/fluffball_by_rum_bucolic_ape_from_flickr_cc-nd.jpg" width="640" /></a></div><br /><a href="http://imba.io/">Imba</a> looks extremely interesting - seriously, just check out the code examples on their website.<br /><br />I wanted to give it a go, there was just one tiny problem - in Javascript world you can't just <code>gem install</code> a few things and run them like that. Nope, painless setup is just a crazy ruby idea that never got much traction anywhere else. In Javascript universe everything always requires painfully complicated setup.<br /><br />I found some boilerplate example for Imba, but it was broken on so many levels, I had to start pretty much from scratch.<br /><br />So here's a working <a href="https://github.com/taw/imba-boilerplate">webpack boilerplate for Imba with SCSS support</a>. Feel free to fork it into your project.<br /><br />What's in it:<br /><ul><li>Latest Webpack</li><li>Imba</li><li>SCSS (as plain old compile to CSS, intentionally no CSS-in-JS shenanigans)</li><li>CSS normalize to avoid cross browser pain</li><li>standard npm commands for development and production builds.</li></ul><div>Everything uses sane 2 space indentation, and tries to avoid doing anything weird.</div><div><br /></div><div>What's obviously missing is some kind of testing framework, so PRs wanted.<br /><br />I haven't used it for anything more complicated than just another TODO app yet, so I don't know if there are any issues. Just report them on github.<br /><br />Thanks to all the brave souls who answered webpack questions on Stack Overflow - somehow I managed to duct tape working boilerplate out of all that.</div>tawhttp://www.blogger.com/profile/16972845140253292628noreply@blogger.com0tag:blogger.com,1999:blog-27488238.post-44488053565390563252018-10-28T22:09:00.001+01:002018-10-28T22:09:10.281+01:00Challenges for October 2018 SecTalks London<div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-uU1uOXgS6kU/W9YkRkfNW4I/AAAAAAAAgik/CtlB4Lcr8FwxLpB_gqsPtkxwXR9whyd-gCLcBGAs/s1600/she_loves_the_computer_by_glennwilliamspdx_from_flickr_cc-by.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" title="She loves the computer by glennwilliamspdx from flickr (CC-BY)"><img alt="She loves the computer by glennwilliamspdx from flickr (CC-BY)" border="0" data-original-height="1200" data-original-width="1600" height="480" src="https://2.bp.blogspot.com/-uU1uOXgS6kU/W9YkRkfNW4I/AAAAAAAAgik/CtlB4Lcr8FwxLpB_gqsPtkxwXR9whyd-gCLcBGAs/s640/she_loves_the_computer_by_glennwilliamspdx_from_flickr_cc-by.jpg" width="640" /></a></div><br />Last month I ran another round of <a href="https://www.meetup.com/SecTalks-London/">London SecTalks CTF</a>.<br /><br />There were 10 challenges, and the winner got 9/10 of them during the event (and last one on the following weekend), so difficulty level was about right.<br /><br />Challenge files and code used to generate them <a href="https://github.com/taw/sectalks-october-2018">available on github</a>.<br /><br />There are no answers below, but some serious hints which might make it too easy.<br /><br />For previous rounds, see posts about <a href="http://t-a-w.blogspot.com/2017/10/challenges-for-september-2017-sectalks.html">September 2017</a>, <a href="http://t-a-w.blogspot.com/2017/12/challenges-for-november-2017-sectalks.html">November 2017</a>, <a href="http://t-a-w.blogspot.com/2018/06/challenges-for-may-2018-sectalks-london.html">May 2018</a>, and <a href="http://t-a-w.blogspot.com/2018/08/challenges-for-july-2018-sectalks-london.html">July 2018</a>&nbsp;CTFs.<br /><h3>Archive (5 points)</h3>A small variant of the 16-level 16-way nested archive, to test for basic Unix scripting skills. This time using RAR.<br /><h3>MonoRSA (10 points)</h3>It's RSA-encrypted message, but it uses only one prime, not two. This is extremely insecure, and can be trivially broken, but you still need to do some math.<br /><h3>BCRYPT (15 points)</h3>Each letter of the flag was encrypted with <a href="https://en.wikipedia.org/wiki/Bcrypt">bcrypt</a>. It's easy to break, as long as you know how bcrypt works, which isn't quite the same as plain hashes, so it was causing a bit of confusion.<br /><h3>RSA RNG (20 points)</h3><a href="https://wiki.debian.org/SSLkeys">It's Debian weak RSA key attack all over</a>. We have target's public key and encrypted message. Also a lot of other people's public keys, all generated using same bad RNG. If two keys share a prime it's easy to break them, even if direct factoring isn't viable.<br /><h3>Python (25 points)</h3>Small bit of reverse engineering - small Python password validator obfuscated with one of online tools for it.<br /><h3>MultiRSA (30 points)</h3>A little known fact about RSA is that it works just fine with more than two primes. So this challenge uses 16 - which is fine, except key size was not adjusted appropriately, so each of those primes is small enough to break it.<br /><h3>Binary (35 points)</h3>Binary password validator, provided in two versions (Linux and OSX) for convenience. It was compiled with <code>-O3</code> which made its encrypting loops unroll, and what was very trivial code turned into hard to understand vectorized mess. Then again, actually running the program might reveal something interesting.<br /><h3>SVG XOR (40 points)</h3>The flag is written in SVG flag, which was encrypted with a XOR cipherer. This turned out to be quite easy, as SVG files have a lot of structure which can be used to attack this.<br /><h3>FPGA (45 points)</h3>Probably the most original challenge this time. A netlist of NAND gates which can validate the flag and tiny emulator were provided. Can you figure out the inputs necessary to get the validator to accept?<br /><br />This was the only challenge without anyone solving it during the event, but there were some solutions afterwards.<br /><h3>Tweets (50 points)</h3>A flag was hidden in collection of Donald Trump's tweets, encrypted with monoalphabetic cipher. Great exercise for frequency analysis.tawhttp://www.blogger.com/profile/16972845140253292628noreply@blogger.com0tag:blogger.com,1999:blog-27488238.post-35554030712194845272018-10-21T23:28:00.003+02:002018-10-21T23:32:24.665+02:00My current GTD system<div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-23BKMn2URwc/W8zvTZFTbrI/AAAAAAAAgg0/EZ3qoNp_lgMppGXcQiHUGPdv_n8h24RpACLcBGAs/s1600/she_works_hard_for_the_money_by_tamer_aka_from_flickr_cc-nc.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" title="She works hard for the money... by Tamer Akça from flickr (CC-NC)"><img alt="She works hard for the money... by Tamer Akça from flickr (CC-NC)" border="0" data-original-height="720" data-original-width="1280" height="360" src="https://3.bp.blogspot.com/-23BKMn2URwc/W8zvTZFTbrI/AAAAAAAAgg0/EZ3qoNp_lgMppGXcQiHUGPdv_n8h24RpACLcBGAs/s640/she_works_hard_for_the_money_by_tamer_aka_from_flickr_cc-nc.jpg" width="640" /></a></div><br />I don't know if there's any way to do GTD properly. I've been trying so many tools, and it always feels like no setup works properly, but if I don't do some kind of GTD then my life instantly falls apart and I never achieve anything, or even stay on top of everyday responsibilities.<br /><br />In all likelihood if I write this post again in a few years, it will be a fairly different list. Anyway, for other people who try to do GTD, here's my current setup.<br /><h3>Core of the system</h3>The most important part is private git repository <a href="http://t-a-w.blogspot.com/2013/07/distributed-dotfile-management-with.html">which also happens to be mirrored on Dropbox using magic of symlinks</a>.<br /><h3>Inboxes</h3>One recent complication is how often I'm with just a phone, and often offline on a train to make it even worse. The least shitty solution I found is <a href="https://www.google.com/keep/">Google Keep</a>. In the past I carried a tiny pen and a stash of post-it notes with me, but that's a bit less practical. Most other software I tried really doesn't like working with limited connectivity.<br /><br />A big downside of Google Keep is that it's hard to copy a list from the web UI and paste in somewhere, without going through the hassle of exporting to temporary Google Docs document and copy&amp;pasting from there. Someone should seriously write a Chrome extension to improve that part, and well, that someone might end up being me.<br /><br />I probably <a href="https://xkcd.com/1361/">should give Google Keep alternatives another try</a>, since Google products don't have very high half-life.<br /><br />Big section of the core system is <code>inbox</code> folder with anything that hasn't been processed yet.<br /><br />I have a physical wicker basket at home for letter and related physical stuff to check.<br /><br />I think on paper a lot, so I often generate a lot of paper mindmaps and lists. Once I'm done with them, they land in the inbox.<br /><br />Incoming emails which requires some further actions get a star. I never delete any emails, so those stars are the only indication that it's not done. Some people delete or archive stuff and treat their email inbox as a TODO list, and that just feels really weird, but if it works for you.<br /><h3>Usual GTD lists</h3>The core system contains the usual GTD lists like Projects and Next Actions.<br /><br />I don't divide Next Actions by context, since there's no meaningful context for most of them.<br /><h3>Reference System</h3>I have a physical reference system consisting of a bunch of ring binders with contents inside organized alphabetically by tag. That's mostly for things like bank statements, bills, and other boring paperwork which I might refer to every now and then.<br /><br />I also have a <code>ref</code> folder on Dropbox - not related to that git repository - which contains all the digital stuff.<br /><br />Emails stay in Gmail, as they're very easily searchable there.<br /><h3>Calendar</h3>This is a bit awkward, as I use a mix of Google Calendar and old text file based system.<br /><br />Calendars I use are:<br /><ul><li>upcoming events</li><li>saved dates for potential upcoming events</li><li>any periodic actions I want to do every N weeks or months - mostly boring cleanup, backups, reviews etc.</li><li>birthday calendar</li></ul><div>Possibly it would make sense to move to just purely Google Calendar system.</div><h3>Planning</h3>This might be the most interesting part, as I found I need multiple different kinds of planning to make things work:<br /><ul><li>the usual lists of GTD next actions</li><li>ad-hoc planning like at start of the day usually happens on paper - by the end of the day what's left of that list goes into inbox</li><li>weekly goals list to keep me focused - it's typically about 10-15 goals, and I'm aiming at 80%+ Partial Success or better rating. Those lists are not meant to be modified once created. If something fails for a good reason, it fails. Any unachieved goals (including Partial Success) go into inbox.</li><li>rolling goals list for next 12 months - I keep it as Google Docs document and update what's in progress, done, or definitely failed with some color coding. This documents gets updated whenever needed. Every 3 months or so I archive old document, clean up done or failed things, and create a new one.</li></ul><h3>Weekly Goals List</h3>The biggest risk of GTD is that a lot of things will get done (as far as failure modes go, it's not the worst one), but whole areas of life where progress is most difficult get neglected.<br /><br />Because the most important function of those lists is helping to balance different aspects of life, anything where I achieved meaningful progress towards stated goal counts as Partial Success, even if it's still very far from being finished.<br /><br />Of course since Partial Success is still not finished, it still needs to go onto the next list.<br /><br />I'm aiming at 80%+ completion rate because typically a few things will just not work around due to external circumstances.<br /><br />If same thing fails multiple times, then it's a very strong indicator that it needs a lot more planning.<br /><h3>Rolling Annual Goals List</h3>You know how people are best behaving in January after they make their New Year's resolution, but then usually give up by March? People completely miss the point thinking that such resolutions are ineffective - they're extremely effective, you just need to refresh it often.<br /><br />The list is about 4 pages of Google Docs, and lists many highly specific goals, hopefully covering every aspect of life. This includes many more meaningful goals, but also lists movies, games, and books I'd like to enjoy over the next 12 months.<br /><br />Most goals on the list are very specific and measurable, but it's not always possible, so some vague entries, and some refer to ongoing practices. If the goal itself is not specific enough, I try to have some more specific subgoals.<br /><br />12 months feel like about the right perspective for this list. It's really difficult to think in longer term perspective in concrete enough terms, and for shorter perspective it would be guaranteed that many life aspects will go unaddressed.<br /><br />Whenever I update this list, I try to have a chat about it with certain special people.<br /><h3>Cooperation</h3>The system is private and difficult to share even if I wanted. Occasionally I want to discuss some plans with others, and for this I usually use Google Docs and Google Calendar - or talk about that in person, which also works.<br /><h3>Other lists</h3>I keep Waiting For lists, mostly for things I ordered.<br /><br />I keep Someday Maybe lists, for things which are not really actionable, but I might get there someday.<br /><br />I keep Social lists for people I'd like to keep in my life - I check it every now and then, and if I'm at risk of losing contact because everyone is too busy, I try to arrange something.<br /><br />I used to have Shopping list, but since I do overwhelming majority of my shopping in Tesco online and Amazon, I just throw whatever I need into relevant basket, and every now and then order what's in those baskets.<br /><h3>Logs</h3>And they're not really part of the GTD flow, but I keep a lot of different logs, measuring and writing things every day.<br /><h3>And everything else</h3>And I also have beeminder setup, but it only tracks things like exercise, so it's fairly peripheral to the system. I tried to use it more, but most interesting things might be specific, but not necessarily quantifiable in the way beeminder wants, and usually giving something long term goal with weekly commitment is not actually the best idea.<br /><br />That's the <i>rough outline</i> of my system.<br /><h3>Big 5 Bonus</h3>And that's what a person who's a few standard deviation high on <a href="https://en.wikipedia.org/wiki/Conscientiousness">Conscientiousness</a> is like. Also about as high on <a href="https://en.wikipedia.org/wiki/Openness_to_experience">Openness to Experience</a>, extremely low on&nbsp;<a href="https://en.wikipedia.org/wiki/Neuroticism">Neuroticism</a>, and somewhere halfway on <a href="https://en.wikipedia.org/wiki/Extraversion_and_introversion">Extraversion</a> and <a href="https://en.wikipedia.org/wiki/Agreeableness">Agreeableness</a>.tawhttp://www.blogger.com/profile/16972845140253292628noreply@blogger.com1tag:blogger.com,1999:blog-27488238.post-3955114327016112852018-10-21T18:34:00.004+02:002018-10-21T18:34:42.721+02:00Music I like<div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-xBB7o8_SdqA/W8yqdCauHDI/AAAAAAAAggo/5g6NJgJY_40QoC-wDTJIgCV2Pxwm1JaHACLcBGAs/s1600/piano_cat_i_by_nina_a_j_g_from_flickr_cc-nd.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" title="Piano Cat I by Nina A. J. G. from flickr (CC-ND)"><img alt="Piano Cat I by Nina A. J. G. from flickr (CC-ND)" border="0" data-original-height="1200" data-original-width="1600" height="480" src="https://1.bp.blogspot.com/-xBB7o8_SdqA/W8yqdCauHDI/AAAAAAAAggo/5g6NJgJY_40QoC-wDTJIgCV2Pxwm1JaHACLcBGAs/s640/piano_cat_i_by_nina_a_j_g_from_flickr_cc-nd.jpg" width="640" /></a></div><br />I mostly listen to music on youtube - or songs I downloaded from youtube with the glorious <a href="https://youtube-dl.org/">youtube-dl</a>&nbsp;to dumb devices for listening while offline.<br /><h3>140%</h3>I listen to them at 140% speed. I've been watching everything at high speed so much, <b>140% is my neutral speed</b>, that's the lowest I can go without anything seeming to be artificially slow.<br /><br />Nowadays my speeds are:<br /><ul><li>140% - neutral speed - music, movies, some denser TV shows like Game of Thrones</li><li>180% - medium fast - most TV shows like Family Guy</li><li>200% - fast - podcasts, audiobooks, let's plays, conference videos, nearly everything on youtube that's not music</li><li>220% - very fast - some particularly slow sources like Tolarian Community College</li></ul><div>This means I'm really limited to youtube as my only place for music, and to "unofficial" download sites as my only source for shows and movies. I tried Spotify and Amazon Prime, but they have no speed control, and that's insane in this day and age.</div><div><br /></div><div>I guess I can watch things at 100% in cinema or when watching it with someone, but that's an exception, and it still feels artificially slow.</div><div><br /></div><div>By the way, if you know of any source of music or streaming that has speed control, good quality, and good selection (not just in US), I'm definitely interested.</div><div><h3>Youtube for music</h3></div><div>The great things about youtube is that it has basically everything, it's free, and ad blockers work perfectly on it, at least on desktop. I guess they recently added some sort of subscription service for people who feel sad about using ad blockers, and I'm not philosophically opposed to that, but I didn't have any time to investigate that.&nbsp;</div><div><br /></div><div>The worst thing about youtube is total lack of metadata. Also people thanking their Patreons for a minute after each song while I'm trying to listen on shuffle. And it's basically useless on the phone with no or limited connectivity.</div><div><br /></div><div>The so-so thing about youtube is its recommendation algorithm. It's not completely useless, but it keeps suggesting stuff to me a one line python script would know not to (<code>if vocalist.gender == "male": return False</code>).</div><div><br />Their fancy subscription service solves none of the problems I have, just a problem ad blockers already solve.<br /><h3>Metadata</h3>But seriously, what really annoys me is that I youtube never bothered to provide any metadata for its song.<br /><br />There's a plugin which tries to parse song titles with regular expressions, but it's not very good. It's sort of OK for "official" songs, but it's failing for almost every independent artist who mostly do cover songs.<br /><br />So mostly for my own future reference, here's a list of artists I've been recently listening to a lot, in alphabetical order, manually extracted from my youtube watch history. I tried to categorize them into mainstream and independent artists, but it was fairly futile.<br /><h3>The List</h3><ul><li><a href="https://www.youtube.com/channel/UCJrOtniJ0-NWz37R30urifQ">Alan Walker</a></li><li><a href="https://www.youtube.com/channel/UCob5ILNOqa8V2lzX9nl2Z9w">Amy Shark</a></li><li><a href="https://www.youtube.com/channel/UCBL7ZxVX4GvW4CFiES_-0YA">Anne-Marie</a></li><li><a href="https://www.youtube.com/user/aviciideo/videos">Avicii</a></li><li><a href="https://www.youtube.com/channel/UC5-gWZXAQqSGVfPHkA7NRiQ">Bebe Rexha</a></li><li><a href="https://www.youtube.com/channel/UCio_FVgKVgqcHrRiXDpnqbw">Camila Cabello</a></li><li><a href="https://www.youtube.com/channel/UChCWmgEgUXwS5QEZZ-iWN-Q">Cheat Codes</a></li><li><a href="https://www.youtube.com/channel/UC3hhq3Twc_jTYWzfL5BCa1A">Cher Lloyd</a></li><li><a href="https://www.youtube.com/channel/UC2gMECGMn5TVbRN5S5tKb8Q">Christina Perri</a></li><li><a href="https://www.youtube.com/channel/UCvhQPdeTHzIRneScV8MIocg">Clean Bandit</a></li><li><a href="https://www.youtube.com/channel/UCjqaQjDZ16zXwDjIuU-TAkg">Colbie Caillat</a></li><li><a href="https://www.youtube.com/channel/UCZkURf9tDolFOeuw_4RD7XQ">Demi Lovato</a></li><li><a href="https://www.youtube.com/channel/UC-J-KZfRV8c13fOCkhXdLiQ">Dua Lipa</a></li><li><a href="https://www.youtube.com/user/PikaPokeCho">Hanna Cho</a></li><li><a href="https://www.youtube.com/user/hollymaezers">Holly Henry</a></li><li><a href="https://www.youtube.com/channel/UCj95pmTj8-hClQPPc972VOw">Jax Jones</a></li><li><a href="https://www.youtube.com/channel/UCB8K05s1RURRFeFop0hwmNQ">Julia Westin</a></li><li><a href="https://www.youtube.com/channel/UCeZI3rELje_CcLaZmXnsrwg">Katie Melua</a></li><li><a href="https://www.youtube.com/channel/UCYvmuw-JtVrTZQ-7Y4kd63Q">Katy Perry</a></li><li><a href="https://www.youtube.com/channel/UCoRUmyNL8KEYftmxRA2n3SQ">Kelly Clarkson</a></li><li><a href="https://www.youtube.com/user/LadyGameLyric">LadyGameLyric</a></li><li><a href="https://www.youtube.com/channel/UCqk3CdGN_j8IR9z4uBbVPSg">Lana Del Rey</a></li><li><a href="https://www.youtube.com/user/lara6683">Lara</a></li><li><a href="https://www.youtube.com/channel/UCyC_4jvPzLiSkJkLIkA7B8g">Lindsey Stirling</a></li><li><a href="https://www.youtube.com/user/littlemixmusic/videos">Little Mix</a></li><li><a href="https://www.youtube.com/user/tempestinwhite">Luciana Zogbi</a></li><li><a href="https://www.youtube.com/user/malufenix">Malukah</a></li><li><a href="https://www.youtube.com/channel/UCn7dB9UMTBDjKtEKBy_XISw">Miley Cyrus</a></li><li><a href="https://www.youtube.com/user/PorcelainBIack">Porcelain Black</a></li><li><a href="https://www.youtube.com/channel/UCJWpYHbS8IG3juoGs7gvIsw">Rachel Platten</a></li><li><a href="https://www.youtube.com/user/sabrinastar99/videos">Sabrina Carpenter</a></li><li><a href="https://www.youtube.com/user/SabrinaAcousticVEVO">Sabrina</a></li><li><a href="https://www.youtube.com/channel/UCWPzv6y7xDSgL86LAbkdl9w">Sara Bareilles</a></li><li><a href="https://www.youtube.com/user/ScheherazadEify">ScheherazadEify</a></li><li><a href="https://www.youtube.com/channel/UCPNxhDvTcytIdvwXWAm43cA">Selena Gomez</a></li><li><a href="https://www.youtube.com/user/TaylaOfficial">Tayla Mae</a></li><li><a href="https://www.youtube.com/user/ViolinTay">Taylor Davis</a></li><li><a href="https://www.youtube.com/channel/UCqECaJ8Gagnn7YCbPEzWH6g">Taylor Swift</a></li><li><a href="https://www.youtube.com/user/meekakitty">Tessa Violet</a></li><li><a href="https://www.youtube.com/channel/UCfkUg750Sdm5pmjrayPjfLA">The Pierces</a></li><li><a href="https://www.youtube.com/user/ThEvErOnIcAs/videos">The Veronicas</a></li><li><a href="https://www.youtube.com/user/TiffanyAlvord">Tiffany Alvord</a></li><li><a href="https://www.youtube.com/channel/UCF9OEAVzWHxBY6AQcdrXnYg/videos">Vanessa Carlton</a></li><li><a href="https://www.youtube.com/user/WhitneyAvalon">Whitney Avalon</a></li></ul>If by any chance you're enjoying similar music, and you have any fun recommendation, send me the links.</div>tawhttp://www.blogger.com/profile/16972845140253292628noreply@blogger.com2tag:blogger.com,1999:blog-27488238.post-5741015621576442922018-09-22T21:48:00.001+02:002018-09-22T21:48:11.095+02:00Fun and Balance mod for EU4 1.26.1<div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/--tbzjwupQ9A/W6abwjMu7mI/AAAAAAAAgds/RWVUJmfUd0kz9iSlT-9rYTErDYjboTFFACLcBGAs/s1600/midori_by_marco_mosti_from_flickr_cc-nd.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" title="MIDORI by Marco Mosti from flickr (CC-ND)"><img alt="MIDORI by Marco Mosti from flickr (CC-ND)" border="0" data-original-height="1067" data-original-width="1600" height="426" src="https://4.bp.blogspot.com/--tbzjwupQ9A/W6abwjMu7mI/AAAAAAAAgds/RWVUJmfUd0kz9iSlT-9rYTErDYjboTFFACLcBGAs/s640/midori_by_marco_mosti_from_flickr_cc-nd.jpg" width="640" /></a></div><br />Fun and Balance is a mod which tries to make Europa Universalis IV a better version of itself. The mod has very limited goals:<br /><ul><li>fix any issues where poor balancing makes gameplay worse - making more options viable, and occasionally toning down anything that's overpowered enough to make alternatives irrelevant</li><li>let people have fun in any way they choose, removing arbitrary prohibitions penalties</li><li>reduce AI cheating, as game is more fun when everyone plays by the same rules</li><li>reduce forced historical railroading via events or restrictions on player actions</li></ul>These goals mean that every patch the right thing to do changes, and I need to go through list of fixed I've made and decide if they're still applicable. Many of previous changes I've made become obsolete because most problematic areas are likely to be addressed by future patches.<br /><br />Playing with this mod shouldn't feel like you're playing a mod, it should feel like you're playing vanilla which finally patched silly things right.<br /><br />It doesn't try to significantly affect game difficulty - it might increase it slightly by reducing cheesy tactics, or maybe slightly reduce it if you're trying to play naturally.<br /><br />So here's the full list of changes, ordered roughly by impact, with reasoning behind them explained in detail.<br /><h3>Download links</h3><ul><li>Fun and Balance for EU4 1.26 - <a href="https://www.dropbox.com/s/e5ds9vrsk64v159/fun_and_balance_0.40_for_eu4_1.26.1.7z">Download</a>. <a href="https://steamcommunity.com/sharedfiles/filedetails/?id=444759856">Steam Workshop</a></li><li>Fun and Balance for EU4 1.26 and <a href="https://steamcommunity.com/sharedfiles/filedetails/?id=217416366">Extended Timeline</a> (<a href="http://www.mediafire.com/file/n55a3nlt733n858/ExtendedTimeline+1.8.2.zip">1.8.2 version</a>) - <a href="https://www.dropbox.com/s/fcw5cloqqbd4a5q/fun_and_balance_0.40_for_eu4_1.26.1_and_extended_timeline_1.8.2.7z">Download</a> | <a href="https://steamcommunity.com/sharedfiles/filedetails/?id=444759732">Steam Workshop</a></li><li>(there's also version of 1356 mod, I'll publish it when they update to 1.26)</li></ul><h3>Base diplomatic relations increased from 4 to 8</h3>In vanilla diplomatic slots are always exhausted by every nation. You absolutely need a few strong allies, a few vassals to expand, and that prevents you from having any diplomacy beyond that. All options such as royal marriages, guarantees, marches, local alliances, supporting independence of others etc. tend to get mostly unused as they take precious slots you don't have.<br /><br />So the mod just doubles base limit, and this opens a new world of diplomacy.<br /><br />This bumps up difficulty, as allies are much more useful defensively than offensively. It leads to much denser alliance networks, and it's much less likely to be able to get a free attack on unprotected minor. At least as long as you play with Cossacks DLC enabled.<br /><h3>Mercenary limit reduced to half</h3>Both players and AI have access to infinite manpower pool of mercenaries, and close to unlimited very cheap loans.<br /><br />This means defeats have minor consequences. It doesn't matter than you just killed every military age man in a country, they'll just spam loans and mercs next day. Attrition, manpower buildings, manpower bonuses, all of that matters a lot less when you can just loan and merc.<br /><br />Unfortunately it's a bad idea to do any drastic mercenary or loan nerfs, as AI often loses all its manpower to self-inflicted stupidity such as parking a doomstack in a low supply province during peace time.<br /><br />With some testing I found out that the best balance can be achieved by halving merc limit (both base and increase from force limit), which is unreasonably high.<br /><br />This doesn't affect reasonable use mercs to supplement your manpower. You can even go vanilla style merc spam if you stack available mercenaries (administrative, quantity, aristocratic) and force limit (quantity, offensive) bonuses. AI can handle it reasonably well.<br /><br />Small AI countries are mostly unaffected as mercenary limit was already higher than their force limit, but for big ones like Ottomans or Ming you can now actually defeat their army and not have army just as big show up next day.<br /><h3>Fort upkeep reduced to half</h3>Forts are unreasonably expensive. Most good players just delete all or nearly all of their forts, and AIs tend to suffer from having far too many crappy forts in wrong places breaking their economy.<br /><br />Reducing upkeep to half of vanilla values makes keeping or even building forts more reasonable option for the player, and helps AI economies.<br /><br />Unfortunately there's no way to mod in more understandable zone of control system.<br /><h3>AI cheats reduction</h3>Call for Peace and naval attrition are removed, as they're mechanics which are exclusively applied against the player. AI no longer gets extra free leader.<br /><br />It doesn't make a huge difference in terms of difficulty, it's just better if everyone plays fair.<br /><h3>Tweaked subject settings to match wider diplomacy</h3>Vassal annexation minimum year increased to 20 years.<br /><br />Vassal annexation is just half the vanilla cost - it's unreasonably expensive considering you have to pay full core cost for something which will likely be just a territorial core.<br /><br />Liberty desire from development a bit lower, and vassals don't count your marches strength in their calculations.<br /><br />Colonies actually care about relative power of themselves and their supporters, but have negative base LD to balance that out.<br /><br />Diplovassalization max cap increased, but penalty from their development is still quadratic.<br /><br />Big tributaries care a bit more rebellious.<br /><br />There's now -100 cap from annexed vassal opinion, so you're not going to accidentally stack it too high by poor annexation timing.<br /><br />Liberty desire from historical friend or rival toned down.<br /><br />All of this generally works well for player and AI, and doesn't require unnatural play.<br /><h3>More building slots</h3>Building slots in vanilla are very restrictive, so many building see zero play, and especially AI wastes its slots on useless buildings a lot. The mod increases extra slot from +1 every 10 development to +1 every 5 development.<br /><h3>Improve awful idea groups</h3>Some idea groups are better than others, and it's totally reasonable but two are so ridiculously useless people only ever take them as a joke.<br /><br />So mod gives maritime ideas +50% light ship trade power and +1 merchant - so you can actually do some trading - so you can actually get some trading; and it gives naval ideas +1 free leader - so you can hire that admiral without taking a general slot from your armies.<br /><br />This should hopefully move them from joke tier to situational tier.<br /><h3>You can convert in territories</h3>This is controversial change in 1.26 patch. It's not a completely bad idea, as conversion was really fast and really easy - but until some outs are added (like religious ideas giving you ability to convert in territories, or replacement of outright ban with just slower speed), it needs to go.<br /><h3>Everybody can claim states</h3><h3></h3>This feature is locked to Russian Tsardom government in vanilla, but there's no good reason for it, so I just made it available to everyone.<br /><br />I thought about letting any empire-tier government do it, but game didn't like this idea (without creating a lot of government types), and there's really little downside to just giving everyone this feature.<br /><h3>Rival and Power Projection changes</h3>I'd love to be able to restore rival system from early patches where everyone could rival everyone else - or at least for every great power to be able to rival every other great power.<br /><br />Unfortunately that's not moddable, and it's very common that you get nobody to rival late game (and therefore very little power projection), or extremely limited choice of countries to rival early game.<br /><br />The mod therefore increases power projection for great power status, for eclipsing rival, and slows down decay from actions against rivals. It also increases max rival range slightly, so early game you have more choices.<br /><h3>Religious Shift Decision</h3>You can now freely switch religion to one of your capital at cost of some stability. It's disabled for Papal States, as that messes up with the game.<br /><h3>Disable End Game Tag checks for player</h3>End game tag checks are an egregious case of stopping people from playing the way they want for no good reason.<br /><br />I left these checks in place for AI to avoid checking them one by one if they make sense, but they're disabled completely for the player.<br /><h3>More formable countries</h3>It's fairly arbitrary which countries are formable and which aren't. If you want to become Norway or Portugal and managed to shift the culture (which is admittedly very easy), why shouldn't that be possible?<br /><br />Right now it keeps your original missions. It probably should ask if you want old or new missions with popup similar to one for ideas.<br /><br />All those decision follow similar pattern - you need to have fully unified that culture, be big enough, and have admin tech 10. Excluded from this is anyone with existing form nation decision. Also excluded are Japanese, Russian, and Chinese culture groups, as they already have different mechanic for tag progression (forming Japan, Russia, and becoming emperor of China).<br /><h3>Coalition CB changes</h3>Games sometimes need "invisible wall" style mechanics - fairly brutal means to limit where player can go. They don't have to be fun, but they should be very difficult to trigger accidentally. Normal in game mechanic, even negative ones, should be enjoyable.<br /><br />Coalition system in EU4 fails this completely. It's really easy to trigger - so easy that AI minors in the HRE often have coalitions against them by 1450s - and it's completely miserable.<br /><br />Most experienced players learn to play around coalition system by juggling truces, or attacking any country which joins coalition day one, or by using cheesy tactics like offering ally land as soon as possible once coalition war triggers (or in previous patches, offering 10000 gold).<br /><br />If you actually try to fight and win coalition war, game makes it miserable. You can't separate white peace anyone even if you 100% them, so you'll have to keep going back then to swat their rebels. If you had any allies, they'll peace out leaving you with -40% warscore from battles and -25% ticking warscore - which somehow still counts against you even after they leave the war (that should seriously be fixed regardless of coalition issues). After a few tries everyone learns to never even attempt this unfun fight as just cheese it.<br /><br />Not to mention just how ahistorical and immersion breaking it all is.<br /><br />We have somewhat limited possibilities to mod our way around it. We could try to rebalance AE and tone it down a bit so you're less likely to hit the invisible wall. Or we could make fighting coalition more enjoyable.<br /><br />A small modification of changing coalition CB from superiority in battles to defending capital goes very far towards making it a regular challenging war. That's how it used to be in early patches.<br /><h3>Burgundy event chain removed</h3>EU4 is a sandbox game, and it's more fun when different outcomes happen in different campaigns. It's unfortunately been leaning towards very heavy railroading - Ottomans become second GP after player in nearly every campaign, England forms Great Britain, Muscovy forms Russia, Castile forms Spain, all almost every time unless player stops that, Ming never collapses or expands much etc.<br /><br />It would be nice if we could make things more dynamic, so sometimes Aq Qoyunlu grows into the Middle Eastern menace, or Scotland sometimes won the British struggle, or some German minor seriously attempted unification. Unfortunately there's no straightforward system for modding in this kind of unpredictability without huge gameplay changes.<br /><br />One piece of such historical railroading is going way too far - partition of Bugundy event chain. It's a totally nonsensical system where major European country gets divided completely disregarding its situation. The mod just kills it with fire.<br /><br />I'm open to suggestions how to create higher diversity of outcomes.<br /><h3>Defender Aggressive Expansion discount increased</h3>Being defender in EU4 sucks, as you can't use any of your CBs (during the war, or for duration of truce afterwards), can't declare anyone cobeligerent, and don't get CK2-style reparation for winning.<br /><br />To make this slightly less miserable, mod increases defender AE discount from 25% to 50%. Remember that extra AE for non-cobeligerent attackers still applies.<br /><h3>Rebalanced Religious Conversion Rates</h3>It's really silly that it's easier to turn a Catholic into a Sikh than turn an Sunni into a Shia.<br /><br />The mod rebalances completely arbitrary conversion penalties (+4 against pagans, +2 normally, +1 or +0 sometimes) into consistent +4 against pagans, +2 against heretics, +1 against heathens.<br /><h3>Trade Map Tweaks</h3>EU4 doesn't support dynamic trade map, and doesn't allow cycles, so any trade map will require compromises.<br /><br />The mod adds Panama to Mexico and Patagonia to Lima link, and (to prevent cycles) removes Philippines to Panama and Mexico to Panama links.<br /><br />This lets Asian powers enjoy New World trade from at least Pacific parts of the New World. The tiny downside is that Spain can't transfar trade from Philippines through Mexico into Europe, which historically happened, but that never happens in game anyway.<br /><br />I'm considering much more aggressive changes, something like <a href="https://steamcommunity.com/sharedfiles/filedetails/?id=1360931026">Better Tradenodes and Tradeflows mod</a>, but it would require a bit more testing first.<br /><h3>You can use subject's religious CBs</h3>You can declare religious war on your enemies which you only neighbour through subject.<br /><br />For this both you and your subject need to have religious, and you must have same religious group as your subject (for holy war), or same religion (for cleansing of heresy).<br /><br />This is mostly to reduce bordergore required to maintain CBs.<br /><h3>Doubled tradition gain from battles</h3>EU4 made a strange change at some point that nerfed tradition gain from actual fighting to very low values, and it became based more on idea group choice than actual fighting. With numbers (land and naval) both doubled, it's a bit less silly, and if you're constantly fighting you should now have decent tradition level.<br /><h3>Religious Leagues as any Christian religion</h3>In unlikely event that HRE will be split between some other denominations than Catholic / Protestant, a league war can happen in a different way. So you could have Reformed, Orthodox, Coptic, or Anglican challengers.<br /><br />First victory by the challengers will just flip the dominant religion, you need second victory to lock the new religion.<br /><h3>No war exhaustion reduction while still at war</h3>This button is only available for countries at peace, so you can actually make other countries suffer, or be forced to suffer yourself. It's no longer just diplomatic monarch point cost.<br /><br />To match this, AI willingness to peace out based on War Exhaustion doubled.<br /><h3>Corruption Slider goes twice as far</h3>If you're interested in rooting out twice as much corruption, at twice the cost, you can move the slider all the way to root out -2 a year. This is a necessary change to deal with corruption from too many territories.<br /><br />It's obviously very expensive to go that far.<br /><h3>China nerf</h3>Rebels in EU4 are too weak, and we all love seeing a Mingsplosion every now and then. So unrest from zero mandate doubled from 5 to 10.<br /><h3>Custom Nations Improvements</h3>Most custom ideas get levels all the way up to 10 at higher cost. There's no penalty for taking too many of same kind of ideas - there's no power level reason for it.<br /><br />Base monarch stats changed from weird 2/2/2 to 3/3/3 which actually matches average in-game monarch. Limit on distance between provinces of your nation increased to more reasonable values (so you can recreate something like in-game Genoa).<br /><h3>Merchant republics 20 statified province limit removed</h3>It's a pointless nerf to a weak and unique government type.<br /><br />Also for people without Dharma, Adopt Plutocratic Administration decision has province limit lifted. It's only useful for roleplaying anyway.<br /><h3>Longer CB on Backstabbers</h3>EU4 has CB against allies who betrayed you which last 3 years, so you can only use it if you're willing to truce break. It's as pointless as things get, a relic from times when breaking alliance didn't create truce. The mod increases it to 10 years, but it's a very weak CB, so it's probably just there for roleplaying.<br /><h3>Some arbitrary decisions limits removed</h3>A few decisions like moving capital to Constantinople and recreating Byzantium have a bit less strict limits, so you can use them even if you're doing something unusual like Serbian culture Coptic Ottomans.<br /><h3>Imperial Ban CB</h3>The game has CB to take provinces from non-HRE owners, but it takes 100% AE with HRE penalty, so it's basically useless. Changed it to just 25% AE penalty, for affected provinces only.<br /><h3>Faster peace out</h3>AI willingness to fight a losing war just because it's not been going long enough reduced slightly.<br /><h3>Some overly expensive action cost reduced</h3>Moving capital, moving trade port, and culture conversion are mostly useful for doing weird things, and are quite overcosted, so all of their costs halved.<br /><div><h3>Everything is optional</h3>As much as possible I tried to make every change optional, and keep it in separate files, unfortunately it's not always possible. It should be fairly compatible with most minor mods. For some popular total big mods (Extended Timeline, 1356) I can just offer separate builds.<br /><br />There even used to be in-game menu for some of that, but people had performance complaints, so I got rid of it just to be sure.<br /><br />I'm quite ruthless at killing off any feature which is no longer necessary. If there's balancing issue with relatively simple fix, I'm happy to include it in future versions.<br /><br />If you think some of the changes cause more problems than they solve, definitely tell me about it too.<br /><br />I don't always publish this kind of long explanatory blog post, but it's usually updated week or two after new major patch codes out.</div>tawhttp://www.blogger.com/profile/16972845140253292628noreply@blogger.com0tag:blogger.com,1999:blog-27488238.post-84402009704000317462018-08-01T19:41:00.001+02:002018-08-01T19:41:39.777+02:00Challenges for July 2018 SecTalks London<div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-H3ODCDgRmTU/W2HwkGKouYI/AAAAAAAAgIM/HkHkq3yfdY4_4vL7SqYT_YdltTCaMHFjwCLcBGAs/s1600/cat_sitting_on_a_desk_by_freestocksorg_from_flickr_public-domain.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" title="Cat sitting on a desk by freestocks.org from flickr (PD)"><img alt="Cat sitting on a desk by freestocks.org from flickr (PD)" border="0" data-original-height="1067" data-original-width="1600" height="426" src="https://2.bp.blogspot.com/-H3ODCDgRmTU/W2HwkGKouYI/AAAAAAAAgIM/HkHkq3yfdY4_4vL7SqYT_YdltTCaMHFjwCLcBGAs/s640/cat_sitting_on_a_desk_by_freestocksorg_from_flickr_public-domain.jpg" width="640" /></a></div><br />Last month I ran another round of <a href="https://www.meetup.com/SecTalks-London/">London SecTalks CTF</a>.<br /><br />I only created 6/9 challenges this time, 3 Android challenges were created by imhotep.<br /><br />Challenge files and code used to generate them <a href="https://github.com/taw/sectalks-july-2018">available on github</a>.<br /><br />There are no answers below, but some serious hints which might make it too easy.<br /><br />For previous rounds, see posts about <a href="http://t-a-w.blogspot.com/2017/10/challenges-for-september-2017-sectalks.html">September 2017</a>, <a href="http://t-a-w.blogspot.com/2017/12/challenges-for-november-2017-sectalks.html">November 2017</a> CTFs, and <a href="http://t-a-w.blogspot.com/2018/06/challenges-for-may-2018-sectalks-london.html">May 2018</a>.<br /><h3>Hidden treasure (5 points)</h3>As per tradition, there was a bonus challenge with a zip bomb. This time at the end of 16-deep archive with 16 branches each there were pictures with a treasure, with EXIF tags containing either the flag or information that you failed.<br /><h3>Android 1 (10 points)</h3>The simplest Android challenge wasn't even all that Android specific - as the flag was hidden directly inside the .apk.<br /><h3>RE1 (15 points)</h3>Easy reverse engineering challenge was just a 32-bit Linux binary, which verified passed flag character by character, in random order.<br /><br />Disassembling it, you'd get instructions like:<br /><br /><pre><code>cmpb&nbsp; &nbsp;$0x74,0x10(%ebx)<br />jne&nbsp; &nbsp; 80484b7</code></pre><br />If you arranged them correctly, you'd see the flag. Or you could just grep for all characters, and use anagram solver - apparently that was an option too.<br /><h3>Android 2 (20 points)</h3>This one required actually running the app, or fairly complex static analysis. The app saved a file with the flag to device storage. If you can find the file, the flag is yours.<br /><h3>RSA (25 points)</h3>This challenge was actually quite realistic.<br /><blockquote><i>Bob sent a message we need to decrypt.</i><br /><i><br /></i><i>Probably due to bad RNG, it looks like Bob and Alice picked same N for their keys, and we managed to steal Alice's private key as well.</i><br /><i><br /></i><i>Perhaps there's a way to take advantage of this.</i></blockquote>And there is a way. Having private key (n, e, d) there's algorithm to factor n into p, q. It's not completely obvious, but it's fairly short to implement. With p, q (shared between both), and Bob's e, you can trivially get Bob's d. Then you can decrypt the message.<br /><h3>RE2 (30 points)</h3>It was a slightly harder version of reverse engineering challenge. The only difference was that flag was encoded into Base64 before checking, which could throw people off, but binary wasn't stripped so b64_encode method was a massive hint.<br /><h3>Android 3 (35 points)</h3>The challenge app is making HTTP request, which needs to be intercepted and modified to get the flag from the server.<br /><br />Once you get the request it's obvious what to do, and there were hints provided how to setup proxy on Android to get them.<br /><h3>CTR (40 points)</h3>Another somewhat realistic challenge. A collection of <a href="https://twitter.com/elonmusk">Elon Musk's tweets</a> and a flag was encrypted using AES-128 in CTR mode. Reusing same IV for all of them.<br /><br />This turns CTR mode into XOR with random keystream, and breaking XOR cipher is fairly basic. It turns out nobody remembered mode names, so I had to give people some hints before they tried CBC or CFB attacks on it.<br /><h3>Croatian Monoalphabetic (50 points)</h3>This challenge was worth the most points, but in principle it was very easy, just a bit time-consuming - and I ended up giving people hints how to approach that.<br /><br />It's just statistical analysis of another Latin script language. So you can start by assuming space is the most common character, then use character frequency tables for Croatian, or lists of most common words, or take advantage of the fact that flag (very long word) is embedded inside.<br /><div><br /></div>tawhttp://www.blogger.com/profile/16972845140253292628noreply@blogger.com0tag:blogger.com,1999:blog-27488238.post-15012645588195426792018-07-29T22:19:00.001+02:002018-07-29T22:19:41.012+02:00Which MCU movies are worth watching?<div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-6445Am7HWCY/W14fB9IAWkI/AAAAAAAAgG4/tLPCAHLj4lM96714SZNmXNeHihmJMK0WACLcBGAs/s1600/the_worlds_laziest_superhero_by_wwwmetaphoricalplatypuscom_from_flickr_cc-by.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" title="The World's Laziest Superhero by www.metaphoricalplatypus.com from flickr (CC-BY)"><img alt="The World's Laziest Superhero by www.metaphoricalplatypus.com from flickr (CC-BY)" border="0" data-original-height="1493" data-original-width="1600" height="596" src="https://4.bp.blogspot.com/-6445Am7HWCY/W14fB9IAWkI/AAAAAAAAgG4/tLPCAHLj4lM96714SZNmXNeHihmJMK0WACLcBGAs/s640/the_worlds_laziest_superhero_by_wwwmetaphoricalplatypuscom_from_flickr_cc-by.jpg" width="640" /></a></div><br />Not a day goes by that I'm not disappointed by what Wikipedia turned into. It went all the way from trying to be "<a href="https://en.wikiquote.org/wiki/Jimmy_Wales">sum of all human knowledge</a>" under "<a href="https://en.wikipedia.org/wiki/Wikipedia:Neutral_point_of_view">neutral point of view</a>" to <a href="https://en.wikipedia.org/wiki/Wikipedia:Notability">cutting everything not "notable" enough</a> and just <a href="https://en.wikipedia.org/wiki/Wikipedia:Verifiability#Reliable_sources">mindlessly parroting establishment view</a>.<br /><br />That's tolerable when the establishment knows what they're saying, like in science articles. <a href="https://en.wikipedia.org/wiki/Replication_crisis">Well, mostly</a>. Unfortunately this policy gets extended to domains without anything resembling genuine experts, and nowhere is it more ridiculous than with "film critics".<br /><br />It's one thing to mindlessly parrot some social scientist who fudges statistics and uses questionable methodology, but is at least pretending to do science. Treating someone speaking out of their ass as a "reliable source" just because someone gave them a newspaper column to publish at is a mockery of what Wikipedia used to stand for in its early days.<br /><br />There is an objective measure of film quality - enjoyment by the audience. And we have pretty good metrics of that - like IMDB and Rotten Tomatoes audience score. Such metrics occasionally suffer from issues like vote stuffing, demographic imbalance of voters compared with movie watching audience, less representative sampling for very old or foreign movies, and occasional overrating of most recent movies before it regresses to the mean, but it's insanity not to take these aggregates as starting points.<br /><br />Even these issues are mostly overstated. IMDB filters handle vote spam quite well, voter demographics while imperfect tends to be far more representable than film critic demographics, and as for questionable early ratings due to hype,&nbsp;<a href="https://en.wikipedia.org/wiki/Academy_Award_for_Best_Picture">just check out how many completely forgettable movies managed to win an Oscars somehow</a>. That reminds me, what was the Oscar list for <a href="https://en.wikipedia.org/wiki/The_Empire_Strikes_Back">the year of The Empire Strikes Back</a>? It's hilarious in hindsight.<br /><br />So what Wikipedia's doing? <a href="https://en.wikipedia.org/wiki/List_of_Marvel_Cinematic_Universe_films#Reception">Ignoring all real data, and just parroting establishment</a> of course!<br /><h3>MCU Movie Ratings</h3>So here are the objective ratings, in chronological order:<br /><ul><li><a href="https://www.imdb.com/title/tt0371746/">Iron Man</a> - 7.9</li><li><a href="https://www.imdb.com/title/tt0800080/">The Incredible Hulk</a> - 6.8</li><li><a href="https://www.imdb.com/title/tt1228705/">Iron Man 2</a> - 7.0</li><li><a href="https://www.imdb.com/title/tt0800369/">Thor</a> - 7.0</li><li><a href="https://www.imdb.com/title/tt0458339/">Captain America: The First Avenger</a> - 6.9</li><li><a href="https://www.imdb.com/title/tt0848228/">Marvel's The Avengers</a> - 8.1</li><li><a href="https://www.imdb.com/title/tt1300854/">Iron Man 3</a> - 7.2</li><li><a href="https://www.imdb.com/title/tt1981115/">Thor: The Dark World</a> - 7.0</li><li><a href="https://www.imdb.com/title/tt1843866/">Captain America: The Winter Soldier</a> - 7.8</li><li><a href="https://www.imdb.com/title/tt2015381/">Guardians of the Galaxy</a> - 8.1</li><li><a href="https://www.imdb.com/title/tt2395427/">Avengers: Age of Ultron</a> - 7.4</li><li><a href="https://www.imdb.com/title/tt0478970/">Ant-Man</a> - 7.3</li><li><a href="https://www.imdb.com/title/tt3498820/">Captain America: Civil War</a> - 7.8</li><li><a href="https://www.imdb.com/title/tt1211837/">Doctor Strange</a> - 7.5</li><li><a href="https://www.imdb.com/title/tt3896198/">Guardians of the Galaxy Vol. 2</a> - 7.7</li><li><a href="https://www.imdb.com/title/tt2250912/">Spider-Man: Homecoming</a> - 7.5</li><li><a href="https://www.imdb.com/title/tt3501632/">Thor: Ragnarok</a> - 7.9</li><li><a href="https://www.imdb.com/title/tt1825683/">Black Panther</a> - 7.5</li><li><a href="https://www.imdb.com/title/tt4154756/">Avengers: Infinity War</a> - 8.7</li><li><a href="https://www.imdb.com/title/tt5095030/">Ant-Man and the Wasp</a> - 7.6</li></ul>I don't always agree with all them - for example I tend to enjoy superhero movies which don't take themselves too seriously more, so personally I find Doctor Strange overrated, and Iron Man 2-3 underrated.<br /><br />But don't mind me, statistically speaking you're far more likely to enjoy what other people&nbsp;enjoy than what some cat blogger or film critic likes. All I can do is provide a bit of context for those numbers.<br /><h3>The best one</h3><ul><li><a href="https://www.imdb.com/title/tt4154756/">Avengers: Infinity War</a>&nbsp;- 8.7</li></ul>Pretty much everyone agrees that the best movie of them all is&nbsp;<a href="https://www.imdb.com/title/tt4154756/">Avengers: Infinity War</a>&nbsp;and it's not even close. If you plan to watch a lot of MCU movies, definitely include this one somewhere.<br /><br />However, it might not be the best movie to start with. It's really good if you're invested in the story, and know at least half the characters. Otherwise, it will probably be too confusing.<br /><h3>Really good movies</h3><ul><li><a href="https://www.imdb.com/title/tt0371746/">Iron Man</a>&nbsp;- 7.9</li><li><a href="https://www.imdb.com/title/tt0848228/">Marvel's The Avengers</a>&nbsp;- 8.1</li><li><a href="https://www.imdb.com/title/tt1843866/">Captain America: The Winter Soldier</a>&nbsp;- 7.8</li><li><a href="https://www.imdb.com/title/tt2015381/">Guardians of the Galaxy</a>&nbsp;- 8.1</li><li><a href="https://www.imdb.com/title/tt3498820/">Captain America: Civil War</a>&nbsp;- 7.8</li><li><a href="https://www.imdb.com/title/tt3896198/">Guardians of the Galaxy Vol. 2</a>&nbsp;- 7.7</li><li><a href="https://www.imdb.com/title/tt3501632/">Thor: Ragnarok</a>&nbsp;- 7.9</li></ul>There's a lot of options where to start. Movies establishing new characters like&nbsp;<a href="https://www.imdb.com/title/tt0371746/">Iron Man</a>&nbsp;and&nbsp;<a href="https://www.imdb.com/title/tt2015381/">Guardians of the Galaxy</a>,&nbsp;which are also really good on their own, are probably the best place. If you're completely new to MCU, these are just the two I'd recommend starting with. If you don't like them, I doubt you'd like the rest anyway.<br /><br />Thor and Captain America have some good movies, unfortunately their first movies are rather mediocre. So you can either start with their first weak movie because it gets better eventually, or just read its plot summary and get straight to the better ones. Nobody will blame you for skipping early Thors, honest.<br /><h3>Watchable movies</h3><ul><li><a href="https://www.imdb.com/title/tt2395427/">Avengers: Age of Ultron</a>&nbsp;- 7.4</li><li><a href="https://www.imdb.com/title/tt0478970/">Ant-Man</a>&nbsp;- 7.3</li><li><a href="https://www.imdb.com/title/tt1211837/">Doctor Strange</a>&nbsp;- 7.5</li><li><a href="https://www.imdb.com/title/tt2250912/">Spider-Man: Homecoming</a>&nbsp;- 7.5</li><li><a href="https://www.imdb.com/title/tt1825683/">Black Panther</a>&nbsp;- 7.5</li><li><a href="https://www.imdb.com/title/tt5095030/">Ant-Man and the Wasp</a>&nbsp;- 7.6</li></ul>These movies are still pretty good, and they mostly don't require watching anything before.<br /><br />Notable here is Black Panther, which due to the nearly all-black cast became inevitable battleground of culture wars. It's decent movie, but it's massively overrated by the overwhelmingly liberal film critics, and this generates a bit of audience backlash. It's definitely far better than <a href="http://t-a-w.blogspot.com/2018/05/wonder-woman-review.html">the trainwreck Wonder Woman was</a>, but every single MCU movie is far better than Wonder Woman, even Thor 1.<br /><h3>Forgettable movies</h3><ul><li><a href="https://www.imdb.com/title/tt0800080/">The Incredible Hulk</a>&nbsp;- 6.8</li><li><a href="https://www.imdb.com/title/tt1228705/">Iron Man 2</a>&nbsp;- 7.0</li><li><a href="https://www.imdb.com/title/tt0800369/">Thor</a>&nbsp;- 7.0</li><li><a href="https://www.imdb.com/title/tt0458339/">Captain America: The First Avenger</a>&nbsp;- 6.9</li><li><a href="https://www.imdb.com/title/tt1300854/">Iron Man 3</a>&nbsp;- 7.2</li><li><a href="https://www.imdb.com/title/tt1981115/">Thor: The Dark World</a>&nbsp;- 7.0</li></ul><div>Unless you're really invested in the MCU, it's probably best to skip them. Personally I quite enjoyed Iron Man 2-3 movies, but I definitely have preference for sillier movies that most people don't share, and I can totally see why they did not get universal aclaim.<br /><br />None of them are key to anything, and a huge added benefit of skipping them all is avoiding Natalie Portman, who according to some is the most annoying actress in Hollywood <sup>[<b>citation needed</b>]</sup>.<br /><br />So that's it for today. If you know of anyone who's working on an encyclopedia which follows Neutral Point of View, please let me know.</div>tawhttp://www.blogger.com/profile/16972845140253292628noreply@blogger.com0tag:blogger.com,1999:blog-27488238.post-2728318154225676022018-07-29T19:17:00.002+02:002018-07-29T19:17:25.360+02:00Hearts of Iron IV Online Division Designer<div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-K6VJI0mvoaM/W13j9T9-JuI/AAAAAAAAgGs/XX6mE58hEnEn8peS6z0wxVoCJSsuNbwJwCLcBGAs/s1600/okay_i_posed_now_wheres_my_treat_by_lisa_zins_from_flickr_cc-by.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" title="Okay, I posed... now where's my treat?? by Lisa Zins from flickr (CC-BY)"><img alt="Okay, I posed... now where's my treat?? by Lisa Zins from flickr (CC-BY)" border="0" data-original-height="1600" data-original-width="1355" height="640" src="https://3.bp.blogspot.com/-K6VJI0mvoaM/W13j9T9-JuI/AAAAAAAAgGs/XX6mE58hEnEn8peS6z0wxVoCJSsuNbwJwCLcBGAs/s640/okay_i_posed_now_wheres_my_treat_by_lisa_zins_from_flickr_cc-by.jpg" width="542" /></a></div><br />There's division designer in the game, but it takes 10 minutes of console commands to ask basic questions such as "would this division be better with Superior Firepower or Mobile Warfare".<br /><br />I've seen a few spreadsheet style division designers online, but they're not really able to answer such questions easily, and I don't have much confidence in their calculations.<br /><br />So <a href="https://github.com/taw/paradox-tools/tree/master/hoi4_division_designer">I wrote a command line tool to run such calculations based on game files</a>. And then since I was halfway to something useful for other players, I added React.js frontend, then support for two most popular mods (<a href="http://kaiserreich.wikia.com/wiki/The_Kaiserreich_Wiki">Kaiserreich</a> and <a href="https://steamcommunity.com/sharedfiles/filedetails/?id=719416488">Millennium Dawn</a>).<br /><br /><a href="https://taw.github.io/hoi4/">Here it is</a>.<br /><br />It's first public release, so bugs are definitely possible, and UI could definitely use more polish.<br /><br />Calculation engine got amount of decent testing to make sure it matches game data (disregarding Paradox rounding), but I could have missed something, especially if it's something only mods use.<br /><br />It has extra features which are not exposed in the UI right now, like selecting any combinations of techs not just year + doctrine, and forcing old equipment, and I'd like to expose that somehow perhaps. I'd also like to make calculations more transparent with some extra tooltips explaining how those values got derived.<br /><br />It doesn't even try to run in old browsers like IE11.<br /><br />Best place for bug reports and feature requests is <a href="https://github.com/taw/hoi4/issues">its github page</a>, but I'm on all social media, so you can contact me whichever way you'd like to. Pull Requests welcome of course.<br /><br />Over the years I wrote a huge number of various command line analysis scripts and modding tools for CK2, EU4, and HoI4. This is the first one that's available online, but I guess I could setup frontends for more of them. If you have any requests, send them over.tawhttp://www.blogger.com/profile/16972845140253292628noreply@blogger.com0tag:blogger.com,1999:blog-27488238.post-46529086286238028642018-06-30T12:31:00.002+02:002018-06-30T12:31:50.992+02:00UK was never much of a democracy<div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-0QFp2I6U5nM/Wzdbq-LCGbI/AAAAAAAAfrU/la8x4Dlf4GAZN4afJQrTcogJDgCB8seiACLcBGAs/s1600/your_queen_by_garykemble_from_flickr_cc-nc.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" title="Your Queen by garykemble from flickr (CC-NC)"><img alt="Your Queen by garykemble from flickr (CC-NC)" border="0" data-original-height="1063" data-original-width="1600" height="424" src="https://4.bp.blogspot.com/-0QFp2I6U5nM/Wzdbq-LCGbI/AAAAAAAAfrU/la8x4Dlf4GAZN4afJQrTcogJDgCB8seiACLcBGAs/s640/your_queen_by_garykemble_from_flickr_cc-nc.jpg" width="640" /></a></div><br />The concept of "democracy" is very loaded, but let's focus on its most basic part - people vote, and whoever gets majority of votes gets to run the government for the next few years. UK fails this standard miserably.<br /><br />Here's percentage of votes in Parliamentary elections received by whoever got to run the government over last hundred years. And it wasn't any better before:<br /><ul><li><a href="https://en.wikipedia.org/wiki/United_Kingdom_general_election,_1918">1918</a> - 38.4%</li><li><a href="https://en.wikipedia.org/wiki/United_Kingdom_general_election,_1922">1922</a> - 38.5%</li><li><a href="https://en.wikipedia.org/wiki/United_Kingdom_general_election,_1923">1923</a> - 38.0% (minority government)</li><li><a href="https://en.wikipedia.org/wiki/United_Kingdom_general_election,_1924">1924</a> - 46.8%</li><li><a href="https://en.wikipedia.org/wiki/United_Kingdom_general_election,_1929">1929</a> - 37.1% (party which "won" didn't even get plurality)</li><li><a href="https://en.wikipedia.org/wiki/United_Kingdom_general_election,_1931">1931</a> - <b>55.0%</b></li><li><a href="https://en.wikipedia.org/wiki/United_Kingdom_general_election,_1935">1935</a> - 47.8%</li><li>most countries continued having regular elections during wartime, but UK didn't even bother</li><li><a href="https://en.wikipedia.org/wiki/United_Kingdom_general_election,_1945">1945</a> - 47.7%</li><li><a href="https://en.wikipedia.org/wiki/United_Kingdom_general_election,_1950">1950</a> - 46.1%</li><li><a href="https://en.wikipedia.org/wiki/United_Kingdom_general_election,_1951">1951</a> - 48.0% (party which "won" didn't even get plurality)</li><li><a href="https://en.wikipedia.org/wiki/United_Kingdom_general_election,_1955">1955</a> - 49.7%</li><li><a href="https://en.wikipedia.org/wiki/United_Kingdom_general_election,_1959">1959</a> - 49.4%</li><li><a href="https://en.wikipedia.org/wiki/United_Kingdom_general_election,_1964">1964</a> - 44.1%</li><li><a href="https://en.wikipedia.org/wiki/United_Kingdom_general_election,_1966">1966</a> - 48.0%</li><li><a href="https://en.wikipedia.org/wiki/United_Kingdom_general_election,_1970">1970</a> - 46.4%</li><li><a href="https://en.wikipedia.org/wiki/United_Kingdom_general_election,_February_1974">Feb 1974</a> - 37.2% (party which "won" didn't even get plurality)</li><li><a href="https://en.wikipedia.org/wiki/United_Kingdom_general_election,_October_1974">Oct 1974</a> - 39.2%</li><li><a href="https://en.wikipedia.org/wiki/United_Kingdom_general_election,_1997">1979</a> - 43.9%</li><li><a href="https://en.wikipedia.org/wiki/United_Kingdom_general_election,_1983">1983</a> - 42.4%</li><li><a href="https://en.wikipedia.org/wiki/United_Kingdom_general_election,_1987">1987</a> - 42.2%</li><li><a href="https://en.wikipedia.org/wiki/United_Kingdom_general_election,_1992">1992</a> - 41.9%</li><li><a href="https://en.wikipedia.org/wiki/United_Kingdom_general_election,_1997">1997</a> - 43.2%</li><li><a href="https://en.wikipedia.org/wiki/United_Kingdom_general_election,_2001">2001</a> - 40.7%</li><li><a href="https://en.wikipedia.org/wiki/United_Kingdom_general_election,_2005">2005</a> - 35.2%</li><li><a href="https://en.wikipedia.org/wiki/United_Kingdom_general_election,_2010">2010</a> - <b>59.1%</b> (coalition)</li><li><a href="https://en.wikipedia.org/wiki/United_Kingdom_general_election,_2015">2015</a> - 36.9%</li><li><a href="https://en.wikipedia.org/wiki/United_Kingdom_general_election,_2017">2017</a> - 42.4% (minority government)</li></ul>So in 27 elections, there were only 2 cases where government was actually backed by majority of the votes. And usually these weren't narrow margins just a bit under 50% (like George Bush in 2000 or Donald Trump in 2016) - it's routine for parties to govern with just 35%-40% support.<br /><br />In fact it's more common for a party to "win" without even getting plurality than for someone to actually get genuine democratic mandate.<br /><br />There's a lot of concern about democracy fading worldwide. When you look closer, maybe there wasn't that much of it in the first place.tawhttp://www.blogger.com/profile/16972845140253292628noreply@blogger.com1tag:blogger.com,1999:blog-27488238.post-39756509077261203502018-06-13T01:39:00.001+02:002018-06-13T01:39:13.405+02:00Challenges for May 2018 SecTalks London<div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-c3UYMJn9WrY/WyBYaEaZv3I/AAAAAAAAfno/4hYy6Q3k8-IeOj8xkKIhcTomO9Je0NjOQCLcBGAs/s1600/_by_amika_san_from_flickr_cc-nd.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" title="そんな目で見ちゃダメだねぇ by amika_san from flickr (CC-ND)"><img alt="そんな目で見ちゃダメだねぇ by amika_san from flickr (CC-ND)" border="0" data-original-height="1200" data-original-width="1600" height="480" src="https://1.bp.blogspot.com/-c3UYMJn9WrY/WyBYaEaZv3I/AAAAAAAAfno/4hYy6Q3k8-IeOj8xkKIhcTomO9Je0NjOQCLcBGAs/s640/_by_amika_san_from_flickr_cc-nd.jpg" width="640" /></a></div><br />Last month I ran another round of <a href="https://www.meetup.com/SecTalks-London/">London SecTalks CTF</a>.<br /><br />There were 8 challenges as before. And again, the winner only did 7 of 8 on time, the last one (Monoalphabetic) only after the event.<br /><br />Challenge files and code used to generate them&nbsp;<a href="https://github.com/taw/sectalks-may-2018">available on github</a>.<br /><br />There are no answers below, but some serious hints which might make it too easy.<br /><br />For previous rounds, see posts about&nbsp;<a href="http://t-a-w.blogspot.com/2017/10/challenges-for-september-2017-sectalks.html">September 2017</a> and&nbsp;<a href="http://t-a-w.blogspot.com/2017/12/challenges-for-november-2017-sectalks.html">November 2017</a>&nbsp;CTFs.<br /><h3>Invisible Flag (5 points)</h3>It's a third iteration of the zip challenge.<br /><br />There's a zip file containing 16 zip files inside. And each contains 16 more zip files. And so on for 16 levels, until you get to the flag.<br /><br />For a small additional complication, the flag is completely invisible, and made out of different types of Unicode spaces. Replacing special spaces with different characters will reveal it.<br /><h3>Perl (10 points)</h3>It's a very simple password validator written in very straightforward Perl.<br /><br />The validator is mostly a sequence of commands like<br /><br /><pre><code>s/^(.{7})i(.*)$/\2\1/;</code></pre><br />Which removes character "i" from 8th position, and swaps everything before and after it. If the answer is empty, the validation is successful.<br /><br />The easy way to solve it is to work backwards from an empty answer.<br /><h3>Almost Invisible Flag (15 points)</h3>The challenge is an image with 1s and 0s written onto it in a very faint color. Once you figure that out, and transcribe the numbers into a binary file, it's a zip. Unpacking it reveals the flag.<br /><h3>React.js (20 points)</h3>It's a react.js based validator. Validator is build of component layers, first layer checks length of the password, then each layer checks one character and passes the data to next layer with some transformations applied.<br /><br />React Developer Tools for Chrome can be quite helpful for this.<br /><br />This can be solved in many ways. You could brute force each layer with a simple script, or turn React code into a recursive function, and solve in an old fashioned way.<br /><h3>RSA (25 points)</h3>For this challenge p and q are very close to each other. In fact they differ by just 2. There's a very simple attack for such case.<br /><h3>Monoalphabetic Cipher (30 points)</h3>This challenge is a bit of text with flag embedded in it, encrypted by monoalphabetic cipher - all lower case letters, upper case letters, digits, spaces, punctuation each getting separate character.<br /><br />The trick is that symbols used by the cipher are all emoji, which doesn't make the challenge any harder, just more fun.<br /><br />The slight difficulty is that the text is not actually in English, so statistical methods can suffer a small detour. It's actually in German.<br /><br />This was the only challenge that wasn't solved in time, but I don't think it's really that hard or time consuming.<br /><br />I really like challenges about classical ciphers, but I don't want the solution to be simply copypasting it on <a href="https://quipqiup.com/">quipquip</a>.<br /><h3>PDF (35 points)</h3>The challenge is a PDF file encrypted by a XOR key. The content is just a result of Chrome's print to PDF function. For extra challenge the flag is censored with a black bar over it, but that's very easy to workaround.<br /><br />PDFs have a lot of plaintext inside, so there's a ton to work with, however it's somewhat unpredictable where that plaintext is located.<br /><br />The key is three lower case English words without spaces.<br /><br />A surprise extra challenge is that I accidentally left newline character at end of the key, which I only noticed during the challenge and told the contestants.<br /><h3>Javascript (40 points)</h3>It's a very simple Javascript validator, obfuscated with <a href="http://www.jsfuck.com/">jsfuck</a> to only use 6 charecters.<br /><br />I expected that people would need to write a simple JSFuck decoder, and that's why it's worth so many points, but most people just used Chrome debugger instead to solve this challenge really quickly.tawhttp://www.blogger.com/profile/16972845140253292628noreply@blogger.com0