Jared Parsons Profile Banner
Jared Parsons Profile
Jared Parsons

@jaredpar

Followers
14,988
Following
752
Media
565
Statuses
28,871

Work on compilers and languages. Creator of VsVim. He/Him #BlackLivesMatter

Redmond, WA
Joined December 2008
Don't wanna be here? Send us removal request.
Explore trending content on Musk Viewer
Pinned Tweet
@jaredpar
Jared Parsons
3 years
Full Span<Tee> shirt #span #dotnet
Tweet media one
9
9
125
@jaredpar
Jared Parsons
3 years
I'm the C# compiler lead and at least twice a week I forget whether 'class' must come first or last in a constraint clause.
31
101
2K
@jaredpar
Jared Parsons
6 years
Step 1: buy cake Step 2: send email saying “cake in room ...” Step 3: “now that you’re all here let’s talk about our build files”
38
300
1K
@jaredpar
Jared Parsons
4 years
Confession: I've worked on the C# team for ~10 years now and I still have to look up array creation syntax on a semi-regular basis.
48
110
1K
@jaredpar
Jared Parsons
4 years
Old Hotness: !string.IsNullOrEmpty(x) New Hotness: x is { Length: > 0} C# 9.0 FTW
75
103
643
@jaredpar
Jared Parsons
4 years
.NET exception advice: Q: What should I throw? A: System.Exception Q: What should I catch? A: System.Exception The .NET exception model is a Pokémon based system. Gotta catch them all.
48
89
564
@jaredpar
Jared Parsons
5 years
Levels of software ownership: 1. Actively developed 2. Maintained 3. Servicing only 4. Last one who touched it owns it 5. Last one who looked at it owns it 6. Pray nothing needs fixing
16
166
478
@jaredpar
Jared Parsons
4 years
Today marks 17 years at Microsoft. In that time: - 12 different bosses - ~11 different offices - 4 different product groups - Countless friends made along the way
24
4
446
@jaredpar
Jared Parsons
6 years
family++ Mom and daughter doing great.
Tweet media one
Tweet media two
54
3
398
@jaredpar
Jared Parsons
6 years
Blogged: string vs. String is not a style debate
25
178
398
@jaredpar
Jared Parsons
7 years
My coworkers decided to turn on captions for my Span<T> talk. Turns out they use automated translation for that. The result: Manatee Memory
Tweet media one
18
61
365
@jaredpar
Jared Parsons
8 months
Got my 20 year glass today
Tweet media one
34
5
372
@jaredpar
Jared Parsons
5 years
C# compiler now a pure .NET Core application inside the .NET SDK. Before our DLLs, where all compiler logic lives, were netstandard2.0 with a tiny netcoreapp3.1 exe on top. Now it's netcoreapp3.1 through and through.
6
68
367
@jaredpar
Jared Parsons
7 years
Developer fallacy: we're going to rewrite this established product from scratch and fix all the bugs in the current implementation. It will be awesome!
21
144
343
@jaredpar
Jared Parsons
2 years
The .NET Community Stand up was fun today. Got to show viewers the evolution of code that leads us to the following being legal
Tweet media one
53
31
314
@jaredpar
Jared Parsons
6 years
Think developers should embrace `is object` as the canonical non-null test in C#. It works in every version, won't compile when the expression type is a struct, logical opposite of `is null`, emits efficient IL, ... the only fault you can say is the name isn't obvious.
27
107
302
@jaredpar
Jared Parsons
2 years
Law of Microsoft: never stop a meeting organizer who's trying to end a meeting early
12
18
279
@jaredpar
Jared Parsons
3 years
The most under appreciated part of Visual Studio over the last three major releases is the Installer. I comfortably run and manage 3-5 versions of Visual Studio with different configurations on most of my boxes. Upgrades, installs and uninstalls are so smooth.
19
24
276
@jaredpar
Jared Parsons
3 years
Removed some truly ancient code from roslyn today (code targeting .NET Framework 2.0). The change had no push back, every test passed, test insertions into VS passed ... green all across the board. I could not be more terrified.
10
12
267
@jaredpar
Jared Parsons
4 years
Career advice for younger developers: make sure always spend part of your time becoming a better writer. Code is only going to take you so far. At some point you need to be able to effectively communicate your ideas with other people.
7
55
257
@jaredpar
Jared Parsons
9 months
Just hit my 20 year anniversary at Microsoft. It's pretty daunting to look back at all the products and features I've worked on over the years and where they are now. The good news though is I'm still having fun ;)
Tweet media one
23
7
255
@jaredpar
Jared Parsons
2 years
Me as a junior dev: why don't people trust me more and believe in my designs? Me as a senior dev: why on earth do these people trust me and my designs? Haven't they seen the mistakes I've made before?
5
13
248
@jaredpar
Jared Parsons
4 years
Committing a C# coding sin today: putting more than one type in a single file.
52
6
240
@jaredpar
Jared Parsons
5 years
In case you are feeling evil this is potentially legal C# code public class C { async async await(await async) => await async; }
28
63
241
@jaredpar
Jared Parsons
13 years
"The best thing about UDP jokes is that I don’t care if you get them or not."
31
2K
236
@jaredpar
Jared Parsons
6 years
Every thing you teach your kids will come back to haunt you. Recently got an egg timer so my toddler can visualize what "5 more minutes" looks like. Today I said "5 more min and I'll be done". He said okay, walked over to the egg timer, set it for 5 minutes and said "only 5 min"
3
22
225
@jaredpar
Jared Parsons
5 years
Today's evil creation: class await { async async async(async async) => await async(async(async)); }
25
41
216
@jaredpar
Jared Parsons
7 years
C# language design is 10% exploring cool ideas 75% overload resolution 15% being sad at past decisions we made
8
33
214
@jaredpar
Jared Parsons
5 years
Wanted to share the steps I use when attempting to establish a coding style in a software project. Seen a number of people struggle with this over the years and wanted to share a strategy I've had some success with.
10
58
214
@jaredpar
Jared Parsons
3 years
Interested in working on Go tools and developer experience? DevDiv is starting a team to help support the use of Go across Microsoft. Come help increase the success of Go across the company! #golang
15
83
211
@jaredpar
Jared Parsons
2 years
Hello Darkness, my old friend
Tweet media one
14
11
203
@jaredpar
Jared Parsons
5 years
The design proposal for init properties in C# 9 is up on csharplang now.
14
47
191
@jaredpar
Jared Parsons
2 years
My morning ...
Tweet media one
17
12
188
@jaredpar
Jared Parsons
4 years
After a year of previews and betas, time to get that sweet sweet RTM install of .NET 5
Tweet media one
4
23
185
@jaredpar
Jared Parsons
5 years
Absolutely terrible advice. The proper advice here is stop adding comments about "what" but keep adding comments about "why". Code tells you what it does, the comments tell you why that was necessary
@java
Java
5 years
Stop Writing Code Comments #cleancoder
Tweet media one
202
258
908
10
38
181
@jaredpar
Jared Parsons
6 years
I think developers often lose sight of the fact that the C# type system is not the .NET type system. Instead the C# type system is merely a layer on top of the .NET type system providing both additional capabilities and additional restrictions.
7
66
186
@jaredpar
Jared Parsons
6 years
This aged well
@blockbuster
Blockbuster
13 years
Tweet why you’re leaving Netflix. The top three most creative tweets using #GoodbyeNetflix will win a 1-year subscription to Blockbuster!
2K
28K
37K
4
67
180
@jaredpar
Jared Parsons
4 years
Good: After an hour of debugging finally figured out my tests weren't hanging instead the virus checker was blocking them from running. Bad: Found this out during a meeting when I was unmuted and chose to tell the virus checker how I felt about the wasted time.
9
7
179
@jaredpar
Jared Parsons
4 years
C# pattern matching making for some really nice changes in the compiler if (member is IMethodSymbol { DeclaredAccessibility: Accessibility.Public, IsStatic: false, Parameters: { Length: 0 }, Arity: 0 } method)
13
35
170
@jaredpar
Jared Parsons
4 years
After some consideration decided we should make semicolons optional in C#
13
12
172
@jaredpar
Jared Parsons
3 years
Got a core dump for a .NET 5 process running on Linux today. Opened it in Visual Studio, attached the debugger and it just worked. Zero friction. Basically magic.
6
13
168
@jaredpar
Jared Parsons
5 years
Don’t understand why so many of my coworkers have an uncountable number of tabs open in the browser. How do you find anything useful with that setup? After 10 tabs I just get annoyed and start closing things.
38
14
166
@jaredpar
Jared Parsons
3 years
Blog: why C# 11 is issuing warnings about lower case type names
10
35
169
@jaredpar
Jared Parsons
4 years
When C# local function shipped pretty much immediately got a bug report where a user had a 10,000 line program with only a Main method and ~50 local functions inside it. At the time I thought "okay ... but why???". Now though I must confess: I am that user.
22
14
162
@jaredpar
Jared Parsons
5 months
ref struct can now implement interfaces and participate in generics. Excited to see all of the ways the community finds to use this
9
22
160
@jaredpar
Jared Parsons
5 years
The more I WFH the more I think I need two keyboards: 1. Mechanical keyboard for coding and email 2. Quiet keyboard for stealth typing in Teams meetings
19
8
155
@jaredpar
Jared Parsons
7 years
Span<T> work now merged into the C# master branch. Next stop is the 7.2 release!
8
56
150
@jaredpar
Jared Parsons
5 years
Another developer converted to "x is object" as the canonical null check in C#. If I have to go dev by dev to achieve correctness then so be it.
24
28
152
@jaredpar
Jared Parsons
7 years
Junior Dev: Really excited cause my change passed CI on first try. Senior Dev: Really worried cause my change passed CI on first try.
2
47
154
@jaredpar
Jared Parsons
7 years
Me 5 years ago: Dad you really google facebook to get to ? Me yesterday: google "azure portal", click, login OMG I'M MY FATHER
8
34
145
@jaredpar
Jared Parsons
4 years
Me: tall strawberry refresher Starbucks: with or without lemonade Me: ... i'm just gonna be honest, my wife did not prepare me to answer that question.
6
13
144
@jaredpar
Jared Parsons
4 years
When’s the last time you emailed a junior coworker and told them: hey that was really well written email, nice PR for a weird bug, great issue write up, etc ...? I got a few of these when I was a junior dev. Meant the world to me and my confidence.
10
13
141
@jaredpar
Jared Parsons
3 years
Really excited about what's happening our low level hackathon this year ...
Tweet media one
10
19
137
@jaredpar
Jared Parsons
6 years
This PR is essentially a farewell to Jenkins. It's been our CI system since we originally went OSS on GitHub. This PR though completes the transition of dotnet/roslyn to @AzureDevOps .
2
37
130
@jaredpar
Jared Parsons
5 years
Slide from part of a presentation we're giving today ...
Tweet media one
11
15
137
@jaredpar
Jared Parsons
6 years
These days I start most PR reviews by looking at the tests first. If that doesn't tell me what the change is doing then I've found the first problem.
9
23
135
@jaredpar
Jared Parsons
3 years
Long time coming but in C# 11 method group to delegate conversions will be cached just as lambdas are today
5
20
134
@jaredpar
Jared Parsons
7 years
Just officially moved Roslyn over to .NET Core SDK 2.0.
3
57
129
@jaredpar
Jared Parsons
4 years
Now that C# supports module initializers, the ability to run code when your library is loaded, how do you plan on abusing them ... I mean using them in your apps?
23
10
131
@jaredpar
Jared Parsons
2 years
What type of talks would you like to see from the .NET Compilers / Language design team?
66
24
133
@jaredpar
Jared Parsons
5 years
In dotnet/runtime a test runs on average 50 times in CI. There about 100 CI / PR builds a day. That means a given test runs on about 25,000 times in a work week. At that scale a test passing 99.99% of the time isn't good enough
4
23
134
@jaredpar
Jared Parsons
2 years
The biggest problem with ITestOutputHelper in xUnit is that most developers don't know about it and how much value it can add to tests.
10
26
134
@jaredpar
Jared Parsons
4 years
We're very nearly at the finish line now for C# 9 and earlier this week I was asked essentially: what has surprised you the most with C# 9 so far in terms of how customers have received it?
7
20
124
@jaredpar
Jared Parsons
5 years
Can't remember the last time I defined or used an event in C#.
17
4
125
@jaredpar
Jared Parsons
5 years
Windows Key + Shift + S. This will change your life if you ever do screen captures.
11
24
128
@jaredpar
Jared Parsons
3 years
This is why I start all my C# programs with ManyFiles.cs. That way even though I put all my code in one file I can confidently tell people "All my code is not in a SingleFile, it's in ManyFiles"
@davidfowl
David Fowler
3 years
"If we have minimal APIs, everything will end up in a single file". Me: Don't put everything in a single file......
36
8
267
10
4
125
@jaredpar
Jared Parsons
6 years
The irony of a change for the C# nullable reference types feature introducing a null reference exception into the compiler.
4
25
121
@jaredpar
Jared Parsons
5 years
@bradwilson @maoni0 @jonskeet When @jonskeet sends a "found a bug" email then it's a bug. When he sends a "can you help me understand why this is happening" email then it's a panic attack.
2
17
120
@jaredpar
Jared Parsons
4 years
Wife: about to start a meeting Me: can I eat down here? Wife: yes, just don’t be too loud Me: how loud is too loud Wife: you should leave
1
0
120
@jaredpar
Jared Parsons
8 years
C# feature just merged for preview 4: ability to have arbitrary Task-like returns in async methods. In other words: async ValueTask<T> Go()
7
84
122
@jaredpar
Jared Parsons
4 years
Question: Do u love or hate COM? Answer when thinking about COM: it's a really elegant spec that is so complete and well thought out. Answer when working on a COM bug: this is the devil incarnate
33
7
120
@jaredpar
Jared Parsons
3 years
Remote presenting is just like in person presenting. When I tell jokes I can only hear myself laughing.
3
5
118
@jaredpar
Jared Parsons
3 years
Deleting this ancient type of code must break something. Everything about my experience as a dev tells me this is true. So now I've broken something and I have no idea what it is.
8
2
117
@jaredpar
Jared Parsons
2 years
@kateward Microsoft is a company you can have multiple different careers at. It's a big company, if you feel stale in one area there are lots of opportunities to shift to another very different area but still maintain all the social connections you had before.
1
5
114
@jaredpar
Jared Parsons
2 years
This is one of the best end to end auth tutorials for and GitHub that I've gone through. Highly recommend if you're doing a first time auth project. @buhakmeh
1
11
117
@jaredpar
Jared Parsons
4 years
Initial proposal for allowing ref fields in C# is available for review. This also covers structs returning ref to their fields as well as safe fixed sized buffers
5
18
115
@jaredpar
Jared Parsons
4 years
New first. Texting my wife’s coworker to get her to send my wife a teams message to come unlock the back door so I can get back into the house. Why not text my wife? Cause she left her phone outside next to me.
8
2
116
@jaredpar
Jared Parsons
6 years
C# 8.0 default interface methods now passing on Mono as well as CoreClr.
4
27
112
@jaredpar
Jared Parsons
6 years
Also helps if you take the seat nearest the door to prevent rapid escape attempts
0
3
111
@jaredpar
Jared Parsons
4 years
The dotnet/roslyn repository now has nullability checks on by default. Just merged the PR that flipped the default for us and simultaneously changed ~10,000 files to keep the current semantics the same.
4
4
110
@jaredpar
Jared Parsons
3 years
Just spent an embarrassingly long amount of time searching for the VS 2022 installation on my hard drive before I realized I was searching in "Program Files (x86)" and not "Program Files". Going to take my brain a few years to adjust to this new world :)
6
3
109
@jaredpar
Jared Parsons
6 years
When you pay money to troll your rivals:
6
31
109
@jaredpar
Jared Parsons
6 years
Code review tip: review tests first. If you can't tell from the test changes alone what is being fixed then it's a sign there aren't enough tests.
5
37
112
@jaredpar
Jared Parsons
5 years
It's common for members of the C# compiler team, even those with 10+ years experience, to learn new things about the language. It's a bit rarer when the new thing surprises the entire team room.
2
12
107
@jaredpar
Jared Parsons
11 months
Tell me you're editing yml without telling me you're editing yml #yml
Tweet media one
12
10
109
@jaredpar
Jared Parsons
2 years
@mkristensen This is what the C# compiler team uses to troll the C# IDE team with perf issues.
7
4
108
@jaredpar
Jared Parsons
5 years
Time to sit down and finish my proposal for init only fields and properties for tomorrow's C# LDM. This should make it easier to declare and consume immutable data in C#.
7
10
107
@jaredpar
Jared Parsons
8 years
The answer to "is this thread safe?" is either a) no or b) it's immutable. Any other answer lacks necessary context and is at best a guess
7
62
108
@jaredpar
Jared Parsons
5 years
Today as I return from parental leave I'm reflecting on just how awesome this benefit is at @microsoft . For the last eight weeks I've been at home bonding with my daughter, watching her grow, eat and become aware of her world.
7
1
107
@jaredpar
Jared Parsons
2 years
<jaredpar enters .NET API design /> Should we use SecureString there? <jaredpar was removed from .NET API design />
3
1
103
@jaredpar
Jared Parsons
5 years
Q: who owns this test? A: send a PR to delete the test. The person who blocks the PR is the owner.
4
21
104
@jaredpar
Jared Parsons
6 years
Tweet media one
7
23
103
@jaredpar
Jared Parsons
5 years
Dear @netflix , please release a new season of PJ Masks. Sincerely all parents who have seen the first season for the tenth time already.
14
10
100
@jaredpar
Jared Parsons
3 years
One of my really simple but really satisfying uses of pattern matching
Tweet media one
8
13
103
@jaredpar
Jared Parsons
4 years
"I'm just gonna let my hair grow until this COVID thing is over". That was a really fun thought four months ago but now it's getting problematic.
19
5
102
@jaredpar
Jared Parsons
4 years
Tend to jump around between VS and VS Code and one of the more frustrating gaps is being able to type "code ." but not "devenv ."
13
5
96