Phillip's office hours from Slack, 2018-09-04


What follows is a curated transcription (minus noise/friendly banter) of topics discussed during my office hours in the F# Software Foundation slack:

cartermp [9:00 AM]
Hey there, good folks of #fssf. Today, I’ll have an office hour-ish to answer questions. I’ve got my coffee, oatmeal, and laptop at the ready.

cartermp [9:03 AM]
I’ll post a transcript of useful questions/answers and so on

cartermp [9:10 AM]
Well, to kick off a few things, here’s what’s on my mind w.r.t F#:
• Finishing up F# 4.5 documentation:
• Getting the Nullable Reference Types for F# 5.0 RFC merged:
• Getting string concat optimizations in: (this heavily affects IntelliSense performance with Type Providers)
• Looking into this issue:
• One final proofread of Don’s Early History of F# paper for HOPL
• Getting an F# brochure and cheat sheet completed and delivered to the languages booth for MS Ignite, and training up some of the booth people so they know a bit of F# and can direct curious people to the right resources

chethusk [9:13 AM]
Can you elaborate a bit on the intellisense performance note there? is String.Concat a large portion of TP interactions?

cartermp [9:18 AM]
@chethusk here’s a snippet of a recent trace for F# tools. What the full trace showed was that 50% (!!!) of CPU time was on GC, and of that, over 70% of that GC time came from string allocations. Those allocations came from String.Concat calls from a function called in PrettyNaming that “demangles” names coming from provided types. That routine is allocating tons of strings, so we’ll take a look at that, but a different report by @auduchinok revealed that + for strings was horribly inefficient; allocating more strings and making more String.Concat calls than necessary. So we believe that it will make a solid dent in the scenario the trace captures.

k_cieslak [9:20 AM]
PrettyNaming is used not only in TP autocompletion, we use it also in the normal one (if we detect space)
To make sure we get correctly backticked suggestions

cartermp [9:22 AM]
@k_cieslak Correct, PrettyNaming routines are used for all F# IntelliSense in VS as well. But those don’t appear to be hot paths as much as this one is. Still, the String.Concat optimizations should help across the board.

k_cieslak [9:31 AM]
@cartermp what’s your focus as a member of the board (separate from being MSFT PM)

cartermp [9:41 AM]
Not sure if I’ve figured this one out yet, since aside from board meetings and voting, technically anything I do could be done without being a board member. Though I think that’s true of the work just about anyone on the board does.

Some of the things I’ve advocated for/done:

• Filming of talks at OF#
• Closing out issues in member task board (I guess that’s just my aggressive issue-closing behavior manifested elsewhere)
• Started this office hour as a way to try and gather more feedback from members
• Sponsored a senior project at my alma mater to hack on the compiler and add a feature or two (with mentorship coming from me)

Some of the things I’d like to be more involved with:

• Outreach in education, which I believe to be the biggest issue that FP and F# face today
• Advocating for moving larger projects into the .NET Foundation if maintainers would like that (comes with more legal help)
• Doing more positive work in general evangelism, especially in things that aren’t necessarily tied to Microsoft (how to do that without making it about me/my “brand” is an open question IMO)

thuris [9:46 AM]
Regarding that last point of being an evangelist in order to accomplish evangelism, it’s not easy to do that without it becoming a bit murky, but I don’t think most people (including me) would object to it provided they see it being done in good faith (to use more religious language)

Which is a roundabout way of saying go for it

Elliott V. Brown [9:53 AM]
@cartermp Is there any “centralized” location of F# resources, such as those created by members of the community / talks / etc.?
If not, can we look into one? (I have no idea what the best course-of-action for that would be.) (edited)

cartermp [10:00 AM]
@Elliott V. Brown Not that I’m aware of, no. I’ve been hard at work to make the official docs better and more discoverable (SEO work, mostly), so that queries that are about F# from a technical standpoint (distinction: not things you can do with F#, but about F# itself) land somewhere here: I think that this sort of thing was missing for a while, and though not perfect, has gotten a lot better. (edited)

I’d be interested in the FSSF hosting community-oriented, “here’s what you can do with F#” blogs and the like as links

Elliott V. Brown [10:01 AM]
Aye, that’s what I’m thinking. Such as looks to various community member blogs, etc.

cartermp [10:01 AM]
Sergey’s blog does the best job of curating content IMO, but it can be difficult to hunt through his work to find something like, “How to use F# with EF.Core”

Elliott V. Brown [10:01 AM]
Links, friggin auto-correct.
I’d like to see somewhere that someone could say “here’s a video about F# and …”, and aggregate those somewhere so that I (as a user) could find them.
Keep it generic but allow tags or something to say “beginner” or “.NET Core”, etc.

chethusk [10:04 AM] maybe?

cartermp [10:06 AM]
Something I would really like to see (and I need to be a part of this), is more activity on the forums similar to what Rust and Scala do. Slack here is wonderful, but the forums are searchable, and force people to write things carefully so that their posts can be seen as a good and reliable source of information


Thanks for this, seems to be lively over there! :slight_smile:

It’s really a pitty FSSF membership is required to join the community’s apparently most active discussion platform. I’ve been happy with the help I got on the forum, but I feel I could learn a lot more and identify much more with the dev community if I could join these channels (but as stated earlier, I’m not ready to join the FSSF). I’ll start learning Fable, and the Fable chat channel is open for everyone, which I find great as a newcomer (and as a complete newbie I was still able to help out someone, which shows welcoming everyone also has benefits).

Regarding the forum, as you said @cartermp, it also has a important role to play. To improve its usability, there was a request to add categories, but it went unanswered by admins. Do you know if something’s happening behind the curtains?



I would love to see more activity on the forum, if Don Syme and some of Fsharp core contributors post or reply from time to time this is guaranteed to attract more users

I also requested some enhancement to the forum on another post, asking for more categories
there is a lot more that can be done, like for example minimizing the size of the left column showing the categories and adding the number of view for each post on the front page


I think Slack is just IRC in another form. What’s less than wonderful is how it’s moved people into a community based on the platform where, if you want answers to a question, you have to ask in the Slack channel because that’s where people are looking. They’re not looking in stackoverflow, or usenet which was great for this sort of thing back in the day. And the problem is the history of questions and answers asked/received is lost. There’s a serious dearth of q and a regarding F# on Stackoverflow because people go to Slack to get their questions answered.


I think it also doesn’t help that StackOverflow is a pretty hostile place for beginners.