Fun with IConfiguration

2021-01-19 14:00:00Z

These days a .NET application is typically configured at startup using an extensible API known as the configuration builder API. This allows the use of arbitrary sources of configuration - typically, out of the box, that means environment variables, command line args and JSON files (e.g. appsettings.json) but can also mean more “exotic” sources; anything from INI files to a SQL database to a secure secret store. How it works When defining an application’s configuration sources the individual providers are added using a fluent syntax.

Read more…

Developing Stack Overflow on MacOS

2020-05-26 18:30:00Z

After a whole lot of months in the making we finally finished porting Stack Overflow to .NET Core 3.1 🎉! When you hit any part of Stack Overflow or the wider Stack Exchange network you’re now hitting our main application running on .NET Core behind IIS using the in-process execution model. We plan to have a whole series of blog posts about the port - the good, the bad & the ugly, but today I’m going to focus on how the move to .

Read more…

Authenticating to Google using PowerShell and OAuth

2020-01-14 13:00:00Z

At Stack we’ve written and maintain a set of scripts named “Dev-Local-Setup” that our developers and designers can use to quickly provision their local environments. They assist in installing pre-requisites (things like Chocolatey, SQL Server, VS 2019, .NET Core SDKs), pulling down repos and provisioning databases and websites used by specific teams. They’re packaged as a PowerShell module and used by a menu-driven CLI interface that makes it easy to perform those tasks quickly and efficiently.

Read more…

Building Stack Overflow Job Search - Transforming Queries

2019-12-03 00:00:00Z

Last time we talked about how we built a parser that can take a string input (written in Jobs Query Language or JQL) and parse it into an abstract syntax tree (AST) representing the query. This episode explores the reasons why we would do this and what we can do with the tree once we have it. Syntax Tree Uses We could take an input string representing JQL and directly translate into a query against our data store (in our case Elasticsearch) but we choose to represent it as an abstract syntax tree instead.

Read more…

Building Stack Overflow Job Search - Parsing Queries

2019-05-10 17:40:00Z

In Part 1 we talked about some of the shortcomings of Stack Overflow’s job search and how we planned to address them. In this episode we’ll dive into how our parser is written. Some Background Most people seem to get scared the moment the words lexer or parser get mentioned. I’d highly recommend watching Rob Pike’s talk on the Go lexer and parser; it clears up a lot of misconceptions and provides a solid basis for writing a hand-rolled parser.

Read more…

Building Stack Overflow Job Search

2019-05-10 00:00:00Z

Stack Overflow Jobs has always had the ability to perform searches across jobs on the site and, until a couple of years ago, used a simplistic implementation that served us well for a long time. It did have its quirks, however, and solicited a fair amount of feedback on our meta sites (Meta Stack Exchange and Stack Overflow Meta) from developers feeling that they were unable to really filter things the way they want to… And that didn’t really sit too well with us!

Read more…

Integrating NFig with .NET Core

2019-01-18 00:00:00Z

Over the past few weeks we’ve been busy laying the groundwork needed to support migrating Stack Overflow to ASP.NET Core.

Our roadmap for the migration extends out to later this year, but we’ve been tackling a lot of pre-requisites:

Read more…