Vsevolod Profile
Vsevolod

@qwwdfsad

Followers
615
Following
1K
Media
97
Statuses
1K

Kotlin Project Lead. Previously: coroutines, serialization, standard library, tooling, concurrency, performance @ JetBrains

Amsterdam
Joined August 2011
Don't wanna be here? Send us removal request.
@qwwdfsad
Vsevolod
3 days
Random quote of the day: income taxes 'required an element of understanding as to why they were needed on the part of the individuals subject to said taxes and this understanding was usually widely lacking'.
0
0
0
@qwwdfsad
Vsevolod
14 days
My *by far* the most favourite talk this year. @Sellmair did an amazing job -- explaining dynamic classloading, DCEVM, continuous builds, Compose internals, anonymous classes naming policy, and more in a deeply technical yet engaging manner.
@Sellmair
Sebastian Sellmair
15 days
The Kotlin Conf talks are available online ๐ŸŽ‰. Checkout how Compose Hot Reload is implemented: .
1
0
7
@qwwdfsad
Vsevolod
1 month
Such things rarely can happen individually, often they cannot even happen within a single team or a product. I am eternally grateful for having @AlekseyStukalov on my side. Congrats! That's your achievement as much as it's Kotlin's๐Ÿ’œ.
1
0
9
@qwwdfsad
Vsevolod
1 month
We poured the real effort, broke really thick walls, had heated debates and pitches, stretched IntelliJ limits (sometimes as far as using test infra to make it work in the LSP), and damn we did it! And there is still more to come :).
1
0
5
@qwwdfsad
Vsevolod
1 month
Not only was that a hell of a team effort, pushing the IJ codebase to its limits, but it is also a great step forward for Kotlin and a huge shift within JetBrains that we made happen.
1
0
4
@qwwdfsad
Vsevolod
1 month
There is plenty of amazing stuff announced at KotlinConf. But the thing I am most proud of is our release of Kotlin LSP along with VSC support: .Damn that was some action!.
2
6
63
@qwwdfsad
Vsevolod
4 months
Futurama was definitely released ahead of its time
Tweet media one
0
0
2
@qwwdfsad
Vsevolod
4 months
If you want to participate in a naming battle, here's your chance!. I'd even say it might have an effect similar to deprecating String.capitalize(), but this time with a (hopefully) properly-named replacement.
@sebi_io
Sebastian Aigner ๐Ÿ“ซ
4 months
We're reworking one of the sharp edges of kotlinx.coroutines, the `withTimeout` function, which is useful, but has a few funky cancellation corners. ๐Ÿ‘‰๐Ÿผ We need a name for the improved replacement function! What would you suggest as a name? (e.g. I'm a fan of `withTimeLimit`!).
0
1
3
@qwwdfsad
Vsevolod
6 months
Unfortunately, I did not time it. Would guess it's somewhere in 30-70 minutes, with some Christmassy distractions. @relizarov how long did it take to draft a recursive search? :).
1
0
1
@qwwdfsad
Vsevolod
6 months
The whole solution is a for-loop (a nested one to find an origin), a few if's, and it fits in a laptop screen. Most of the time was spent in the text editor commenting on the wires.
1
0
1
@qwwdfsad
Vsevolod
6 months
Taking there are only 8 incorrect wires and erroneous outputs cannot be swapped more than once, in addition to no trickery in the input, checks modulo z0/z45 boundaries and it finds the answer.
1
0
0
@qwwdfsad
Vsevolod
6 months
Then we can toss a few more: OR operands can only be originated by AND operators from the previous step, the similar thing for XOR.
1
0
0
@qwwdfsad
Vsevolod
6 months
So the very first pattern we can check:. The group is XORed **either** to compute a sum (then its operands are x_i and y_i) **or** its output is z_i (and its operands **are not** x or y). These check immediately shows wires that are definitely part of the answer.
1
0
0
@qwwdfsad
Vsevolod
6 months
An example of a deduction: having X and Y as input bits, there always should be "x XOR y -> i" wire to compute the resulting bit (before carry-over), the "AND" for current sum carry-over and so on. Output is always a XOR of sum and carry-over.
1
0
0
@qwwdfsad
Vsevolod
6 months
For a starter, I grouped wires by hand, and it already was enough. The structure of the "gate" (half-adder?) was clear, and invariants were easily deducible; I was adding notes as I went
Tweet media one
1
0
0
@qwwdfsad
Vsevolod
6 months
. but I never studied electronics, so it's unlikely helpful for me to look for a specific one. Any general form would do, and then our inner pattern matcher might actually yield something.
1
0
0
@qwwdfsad
Vsevolod
6 months
Now, let's define "suspicious". We can probably draft some graph visualization or group the wires in some intricate way. It for sure will boil down to some well-known adder. .
1
0
0
@qwwdfsad
Vsevolod
6 months
The really neat observation is that the answer is not constructive! You don't have to provide a valid permutation; only the instances of wires that have to be swapped. It means we can search for "suspicious" wires/groups and it should be enough to provide an answer.
1
0
0
@qwwdfsad
Vsevolod
6 months
Genuinely surprised by how different some approaches are. Not feeling confident with a decent branch and bound bruteforce implementation that I can draft reasonably quickly, I went in a completely different direction. See the thread for the problem statement and let's dive in.
@relizarov
Roman Elizarov
6 months
Apparently, the art of writing code to efficiently search large problem domains is rarely taught nowadays, so lot of people struggle on problems like AdventOfCode Day 24 part 2. Let me try to explain how you should approach a programming task like this one ๐Ÿงต.
1
0
2
@qwwdfsad
Vsevolod
7 months
. and today is one of these days. Thank you, Seva from the past, I guess.
0
0
0