Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
epswing
Nov 4, 2003

Soiled Meat
I have a somewhat weird question. We have a client/server app. The client is WPF. The server is a WCF-equipped windows service. Currently, to get an object, we have some code that looks roughly like

C# code:
public PersonDto GetPerson(int id)
{
    using (var client = GetWcfClient(...))
    {
        try
        {
            return client.GetPerson(id);
        }
        catch (EndpointNotFoundException) { ... }
        catch (Exception e) { ... }
    }
}
and somewhere in WPF we fetch a person using GetPerson(42) and set the result on some ViewModel, which is then displayed etc etc. This does freeze the WPF UI (there's no async code here), but since the client and server are (so far) running on the same machine, freezing the UI for a couple hundred milliseconds at a time when we talk to the server has been acceptable (sometimes even imperceptible) for the last few years.

We want to move the server into IIS, and talk to it via ASP.NET WebAPI. The application is too big to do this all at once, so we're considering doing this in stages, so over time we can phase out WCF entirely, and eventually retire the windows service. The code to fetch a Person then becomes roughly

C# code:
public async Task<PersonDto> GetPerson(int id)
{
    using (var client = GetWebApiClient(...))
    {
        try
        {
            HttpResponseMessage response = await client.GetAsync("api/people/" + id);
            return await response.Content.ReadAsAsync<PersonDto>();
        }
        catch (Exception e) { ... }
    }
}
So the problem here is the method signature has changed from public PersonDto GetPerson(int id) to public async Task<PersonDto> GetPerson(int id). To support this change, we need to burrow all the way down the call stack planting await and async keywords as necessary. Basically the "problem" is that, to use WebAPI means to use async/await, and async/await has a way of "infecting" your entire codebase.

I want to make clear that I eventually want to use async/await, and I want to make calls to the server without freezing the UI. Just not quite yet.

I've run in circles trying to keep the original method signature, so I can slowly lower myself into the async/await pool without having to cannonball in. Even if it means turning all the functions that talk to the server into 1-liners that block and return what async/await (eventually) returns.

tldr: how can I use ASP.NET WebAPI with a WPF (or any C#) client without going whole-hog on async/await just yet?

Ugh, I hope this makes sense.

epswing fucked around with this message at 22:04 on Jul 6, 2016

Adbot
ADBOT LOVES YOU

Bognar
Aug 4, 2011

I am the queen of France
Hot Rope Guy
Ultimately if the change is going to happen regardless, I would just start converting the method signatures now. You don't have to actually change the code that executes, just start making your API calls async Task<T> and add await at the call-sites, letting that bubble out as necessary. The compiler will be very helpful here. This is a very safe process that can be done separately from writing actually asynchronous code.

You won't immediately gain the benefits of async/await, but it will be much easier to replace your API calls later on when you choose to do so.

New Yorp New Yorp
Jul 18, 2003

Only in Kenya.
Pillbug
^^^ Yeah, Task.FromResult is your friend here.

You really can't mix the two, which is why async has to "infect" your code. You're setting yourself up for a world of deadlock pain by trying to force async methods to block.

epswing
Nov 4, 2003

Soiled Meat

Bognar posted:

Ultimately if the change is going to happen regardless, I would just start converting the method signatures now. You don't have to actually change the code that executes, just start making your API calls async Task<T> and add await at the call-sites, letting that bubble out as necessary. The compiler will be very helpful here. This is a very safe process that can be done separately from writing actually asynchronous code.

You won't immediately gain the benefits of async/await, but it will be much easier to replace your API calls later on when you choose to do so.

Something I didn't mention is there's a ton of generics and inheritance, so a change to a method in a super class which deals with "T" will basically make me have to change everything at once, instead of bit by bit.

Ithaqua posted:

^^^ Yeah, Task.FromResult is your friend here.

You really can't mix the two, which is why async has to "infect" your code. You're setting yourself up for a world of deadlock pain by trying to force async methods to block.

The docs just say "Creates a Task<TResult> that's completed successfully with the specified result" about Task.FromResult. How does FromResult help me in my particular situation?

Sorry I'm such an async/await newb :3

Anyways, point taken, I admit what I'm asking is basically "how do I swim against the current" and the real answer is "don't". But I also don't want to be stuck doing this big migration all at once.

New Yorp New Yorp
Jul 18, 2003

Only in Kenya.
Pillbug

epalm posted:


The docs just say "Creates a Task<TResult> that's completed successfully with the specified result" about Task.FromResult. How does FromResult help me in my particular situation?


Because you can make a method with a signature of async Task<Foo> but still have it do everything synchronously, then return a completed task. Things can await it, but when they call it the task that pops out is already done.

No Safe Word
Feb 26, 2005

epalm posted:

Something I didn't mention is there's a ton of generics and inheritance, so a change to a method in a super class which deals with "T" will basically make me have to change everything at once, instead of bit by bit.


The docs just say "Creates a Task<TResult> that's completed successfully with the specified result" about Task.FromResult. How does FromResult help me in my particular situation?

Sorry I'm such an async/await newb :3

Anyways, point taken, I admit what I'm asking is basically "how do I swim against the current" and the real answer is "don't". But I also don't want to be stuck doing this big migration all at once.
Because when you have to convert

code:
Foo SomeMethod(...)
{
    Foo foo = ...;
    ...
    return foo;
}
and there's nothing in SomeMethod that is actually await-able, you can just do this:


code:
Task<Foo> SomeMethod(...)
{
    Foo foo = ...;
    ...
    return Task.FromResult(foo);
}
Note that if you actually do have stuff you can await it just becomes:

code:
async Task<Foo> SomeMethod(...)
{
    Foo foo = ...;
    // do awaitable stuff
    return foo;
}
So you can't have async if you don't have await, but once you do have it, you can just return the thing itself and it being async will do all the Task stuff for you.

New Yorp New Yorp
Jul 18, 2003

Only in Kenya.
Pillbug

No Safe Word posted:

So you can't have async if you don't have await, but once you do have it, you can just return the thing itself and it being async will do all the Task stuff for you.

You can have an async method with no awaits. The compiler will warn you that it will run synchronously, but that's okay.

No Safe Word
Feb 26, 2005

Ithaqua posted:

You can have an async method with no awaits. The compiler will warn you that it will run synchronously, but that's okay.

Oh I always build with warnings as errors so that would be why I thought the compiler enforced it :haw:

Inverness
Feb 4, 2009

Fully configurable personal assistant.
Have any examples been made of what the new features for .csproj files will make it look like?

A lot of people complained about project.json being abandoned in favor of csproj, but I don't mind it.

I do wonder if that will include the NuGet side of things too.

Gul Banana
Nov 28, 2003

the developers of the new project system have posted some ideas and examples at https://github.com/dotnet/roslyn-project-system/issues/40

one hypothetical look (not all presently implemented) is
code:
<?xml version="1.0" encoding="utf-8"?>
<Project>

  <PropertyGroup>
    <OutputType>Library</OutputType>
    <RootNamespace>ClassLibrary22</RootNamespace>
    <AssemblyName>ClassLibrary22</AssemblyName>
    <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
  </PropertyGroup>

  <ItemGroup>
    <Reference Include="System"/>
    <Reference Include="System.Core"/>
    <Reference Include="System.Xml.Linq"/>
    <Reference Include="System.Net.Http"/>
    <Reference Include="System.Xml"/>
  </ItemGroup>

  <ItemGroup>
    <Compile Include="**\*.cs" />
  </ItemGroup>

  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

</Project>

mortarr
Apr 28, 2005

frozen meat at high speed
I've got an application at a bunch of customer sites, and one of them wants a feature that's specific to their site that the rest are unlikely to want. I was looking at some kind of plugin system like MEF as a way to keep custom work out of the main solution, but it feels like I could be going down a rabbit hole here... Is there a common approach to this kind of requirement?

gariig
Dec 31, 2004
Beaten into submission by my fiance
Pillbug

mortarr posted:

I've got an application at a bunch of customer sites, and one of them wants a feature that's specific to their site that the rest are unlikely to want. I was looking at some kind of plugin system like MEF as a way to keep custom work out of the main solution, but it feels like I could be going down a rabbit hole here... Is there a common approach to this kind of requirement?

This sounds like a rabbit hole to me. I'd only go with the plug-in solution if you have lots of different customer-specific features that need to be implemented, xcopy deployment while running, or the customer can write their own plug-ins. I would just use an interface and pass in either AllCustomersModule or SpecificCustomerModule based on a feature flag or detect the customer, just some good old IoC/DI work.

Mr Shiny Pants
Nov 12, 2012

mortarr posted:

I've got an application at a bunch of customer sites, and one of them wants a feature that's specific to their site that the rest are unlikely to want. I was looking at some kind of plugin system like MEF as a way to keep custom work out of the main solution, but it feels like I could be going down a rabbit hole here... Is there a common approach to this kind of requirement?

If you are certain this will be the only one ( I know, I know ) I would just build a version for them and document the hell out of it.

mortarr
Apr 28, 2005

frozen meat at high speed
I think mef / plugins arent for me this time... I did a wee proof of concept, and while it worked, it showed some bits that might make development take a while, eg logging, loading/unloading plugins, and generally keeping the logic that belongs in the plugin inside the plugin.

I already have a basic kind of feature detection, so i'll probably go that way instead. Not sure i like it architecture wise, but i can get it done that way pretty quickly.

If it was for my own stuff, I would go mef all the way :-)

BirdOfPlay
Feb 19, 2012

THUNDERDOME LOSER
I'm trying to be a good, little developer and insulate my app from requiring "elevation", simply because I don't want to provide security vulnerabilities from a crappy game-editing app. I figure that allowing this app to write in protected spaces would mean open the door to malicious code, so why risk it?

Design-wise, I'm going to do this by checking if the file being opened requires elevation (i.e. the file is still in Program Files) and directing the user to create a new, local directory for the edited files. I'm running into a hitch with getting that implemented because I don't know how to test for that.

Does FileInfo.Attributes tell me only if the file is flagged as Read Only or will it be flagged as ReadOnly if the file directory is write-protected as well? If I uncheck "Read Only" for the file in Program Files, it's still write protected. I know this because I've tried using an unelevated hex editor on the file and cannot save changes because of lowered permissions.

I know I could ignore this and force the program to automatically have separate read and write files, but that would create a host of other, awkward problems. The biggest one being that these files sometimes end up in AppData and, thus, are not write-protected.

Plorkyeran
Mar 22, 2007

To Escape The Shackles Of The Old Forums, We Must Reject The Tribal Negativity He Endorsed
Just try to open it in write mode and handle the access denied error when you can't.

mystes
May 31, 2006

BirdOfPlay posted:

Does FileInfo.Attributes tell me only if the file is flagged as Read Only or will it be flagged as ReadOnly if the file directory is write-protected as well? If I uncheck "Read Only" for the file in Program Files, it's still write protected. I know this because I've tried using an unelevated hex editor on the file and cannot save changes because of lowered permissions..
The read only attribute is just something that can be set as a gentle request that a program not write to a file. It's different than actual permissions. To actually determine whether you had the permissions to write to a file without trying to open it for writing would probably require messing around with the ACLs in a complicated way [Edit: actually it looks like it's not too crazy, but still more complicated than necessary]. Do what Plorkyeran said, or reconsider the way you're going about this entirely (e.g. provide a separate interface to show a list of premade files that are present in program files, rather than a file picker).

mystes fucked around with this message at 02:13 on Jul 13, 2016

raminasi
Jan 25, 2005

a last drink with no ice
You always have to handle all possible file access exceptions anyway, because the disk state could change between whatever check you do and your actual attempt to access the file.

Ochowie
Nov 9, 2007

I'm playing around with .NET on Linux and I'm wondering how to import a locally built class library into another project. I'm trying to import a dependency that can be built with .NET core but the nuget package hasn't been updated to support core yet.

Gul Banana
Nov 28, 2003

there's an imports: key available in project.json which lets you override what a package claims to support. use with care though, bc if it really isn't compatible you're in for a runtime crash

Ochowie
Nov 9, 2007

Gul Banana posted:

there's an imports: key available in project.json which lets you override what a package claims to support. use with care though, bc if it really isn't compatible you're in for a runtime crash

Yeah, that's part of the problem. I don't think the version that's on NuGet will work with core. However, the version that I built from Github does. I just don't know how to integrate that version.

Gul Banana
Nov 28, 2003

oh! right. if you built it in the same solution, you can reference it as a dependency with {"target": "project"} instead of a version number (in visual studio the gui will let you do this via 'add reference'). otherwise, dotnet pack/nuget pack it into a nupkg and put that in a local folder package source or on myget or something.

Gul Banana
Nov 28, 2003

here's a test solution i made recently that just has a bunch of project files of various flavours referencing each other in different ways
https://github.com/gulbanana/StructureMock

Chamook
Nov 17, 2006

wheeeeeeeeeeeeee

Ochowie posted:

Yeah, that's part of the problem. I don't think the version that's on NuGet will work with core. However, the version that I built from Github does. I just don't know how to integrate that version.


Paket can reference git dependencies, and I think it works with core now.

Ochowie
Nov 9, 2007

Gul Banana posted:

oh! right. if you built it in the same solution, you can reference it as a dependency with {"target": "project"} instead of a version number (in visual studio the gui will let you do this via 'add reference'). otherwise, dotnet pack/nuget pack it into a nupkg and put that in a local folder package source or on myget or something.

Thanks for this. So I ran dotnet pack on the repo, but I can find the nupkg anywhere. Do you know where it outputs to? I'm thinking part of the problem is that this library technically compiles for .net standard instead of .net core so I wonder if that's what is tripping me up?

Edit: Also, what is the connection between applications targeting the .NET Standard and .NET Core? Can I use a .NET Standard library from a .NET Core app? Also, I can't seem to make a .NET Standard console application (maybe that's because I'm running a version of Linux, Ubuntu 15.10 that's not supported by .NET Standard?).

Ochowie fucked around with this message at 22:36 on Jul 14, 2016

Gul Banana
Nov 28, 2003

netstandard is for libraries only, not apps. it's like an interface which is implemented by actual platforms, of which .net core (netcoreapp) is one.
for example, netcoreapp1.0 implements netstandard1.6; .net 4.6.1 (net461) and UWP both implement netstandard 1.4. so a library built for netstandard1.4 would support all three, but one built for netstandard1.6 would only support .net core.

docs: https://github.com/dotnet/core-docs/blob/master/docs/core/tutorials/libraries.md

Mr Shiny Pants
Nov 12, 2012
Ain't two frameworks wonderful?

This is what I am afraid of. I hope it doesn't get any worse in the future.

Ochowie
Nov 9, 2007

Gul Banana posted:

netstandard is for libraries only, not apps. it's like an interface which is implemented by actual platforms, of which .net core (netcoreapp) is one.
for example, netcoreapp1.0 implements netstandard1.6; .net 4.6.1 (net461) and UWP both implement netstandard 1.4. so a library built for netstandard1.4 would support all three, but one built for netstandard1.6 would only support .net core.

docs: https://github.com/dotnet/core-docs/blob/master/docs/core/tutorials/libraries.md

Thanks for this. Am I correct in assuming that libraries anything that can build to netstandard <= 1.6 can be used by a netcoreapp1.0 console application? I've run into something strange where the library I'm trying to build from source targets netstandard1.5 but depends on a library that isn't supported by netcoreapp1.0 (IX-Async) and I'm not sure how that's possible?

Gul Banana
Nov 28, 2003

your understanding of netstandard is correct. it's possible the author of the library used imports.. do you have source somewhere?

Gul Banana
Nov 28, 2003

actually, ix-async is open source. looking here
https://github.com/Reactive-Extensions/Rx.NET/blob/master/Ix.NET/Source/System.Interactive.Async/project.json
it appears that it DOES build for netstandard (with extra features if you have 1.3+). netstandard1.0 support is also listed at https://www.nuget.org/packages/System.Interactive.Async/

Ochowie
Nov 9, 2007

Gul Banana posted:

your understanding of netstandard is correct. it's possible the author of the library used imports.. do you have source somewhere?

You mean in the Frameworks section? If so, then yes, it imports portable-net45.

twig1919
Nov 1, 2011
I am an inconsiderate moron whose only method of discourse is idiotic personal attacks.
Incoming question that has probably been asked 1 million times before...

So I have recently started learning .NET ASP MVC as a framework for software as a service applications. I have a background in Laravel MVC framework which I understand very well, but I am having a problem finding good documentation for learning ASP MVC.
Most of the stuff that I am finding are "beginner tutorials" which are really just boring, slow, and generally unhelpful code-along type things. I am looking for something more along the lines of Laravel's documentation style or something that is at least not-targeted at straight coding beginners, but isn't to the point of just reading straight API docs right off the bat.
The only decent looking documentation I have found along those lines is here: https://docs.asp.net/en/latest/index.html. However, it is woefully incomplete and doesn't have a section on MVC 4, which I need to use. The rest of it is mainly tutorials designed for "beginners" that are code-by-copy-paste. These aren't very helpful nor informative because they show you how to do a basic task, but don't give you any information on customization nor explain the greater API at all. Lastly, its a waste of time to re-read through long tutorials in search of information on a specific task.
None of the google searching I have done has lead me to any sort of .NET MVC reference document. Even Microsoft's documentation page for MVC 4 https://msdn.microsoft.com/en-us/library/gg416514(v=vs.108).aspx is linking forums posts as opposed to Microsoft written documentation, and its still missing entire sections. So my question, is the documentation for the .NET framework really this lacking that Microsoft just links forums posts? Or is there a resource out there that google search is reluctant to link to?

I am hugely disappointed so far since when I was learning Laravel it was super easy to just go to the site and get a feature list with code snippets to remind oneself of a specific part of the Frameworks functionality without having to dig through mountains of unrelated stuff. Learning .Net has just been frustration annoyance since it seems like there isn't so much as a single list of API features. Even if it had to go digging for how to use it, I would still know its there if someone took the time to write down the different stuff it could do in one place.

Maybe I need to not search for .NET MVC, but rather there are specific modules that I need to be looking up?

twig1919 fucked around with this message at 02:14 on Jul 16, 2016

wide stance
Jan 28, 2011

If there's more than one way to do a job, and one of those ways will result in disaster, then he will do it that way.

twig1919 posted:

Incoming question that has probably been asked 1 million times before...

So I have recently started learning .NET ASP MVC as a framework for software as a service applications. I have a background in Laravel MVC framework which I understand very well, but I am having a problem finding good documentation for learning ASP MVC.
Most of the stuff that I am finding are "beginner tutorials" which are really just boring, slow, and generally unhelpful code-along type things. I am looking for something more along the lines of Laravel's documentation style or something that is at least not-targeted at straight coding beginners, but isn't to the point of just reading straight API docs right off the bat.
The only decent looking documentation I have found along those lines is here: https://docs.asp.net/en/latest/index.html. However, it is woefully incomplete and doesn't have a section on MVC 4, which I need to use. The rest of it is mainly tutorials designed for "beginners" that are code-by-copy-paste. These aren't very helpful nor informative because they show you how to do a basic task, but don't give you any information on customization nor explain the greater API at all. Lastly, its a waste of time to re-read through long tutorials in search of information on a specific task.
None of the google searching I have done has lead me to any sort of .NET MVC reference document. Even Microsoft's documentation page for MVC 4 https://msdn.microsoft.com/en-us/library/gg416514(v=vs.108).aspx is linking forums posts as opposed to Microsoft written documentation, and its still missing entire sections. So my question, is the documentation for the .NET framework really this lacking that Microsoft just links forums posts? Or is there a resource out there that google search is reluctant to link to?

I am hugely disappointed so far since when I was learning Laravel it was super easy to just go to the site and get a feature list with code snippets to remind oneself of a specific part of the Frameworks functionality without having to dig through mountains of unrelated stuff. Learning .Net has just been frustration annoyance since it seems like there isn't so much as a single list of API features. Even if it had to go digging for how to use it, I would still know its there if someone took the time to write down the different stuff it could do in one place.

Maybe I need to not search for .NET MVC, but rather there are specific modules that I need to be looking up?

Search for the specific version, like ASP.NET MVC 6 or .NET Core:

This is prettty good:
https://docs.asp.net/en/latest/mvc/index.html

e: Whoops, looks you already had that link.

Cuntpunch
Oct 3, 2003

A monkey in a long line of kings

twig1919 posted:

Incoming question that has probably been asked 1 million times before...

So I have recently started learning .NET ASP MVC as a framework for software as a service applications. I have a background in Laravel MVC framework which I understand very well, but I am having a problem finding good documentation for learning ASP MVC.
Most of the stuff that I am finding are "beginner tutorials" which are really just boring, slow, and generally unhelpful code-along type things. I am looking for something more along the lines of Laravel's documentation style or something that is at least not-targeted at straight coding beginners, but isn't to the point of just reading straight API docs right off the bat.
The only decent looking documentation I have found along those lines is here: https://docs.asp.net/en/latest/index.html. However, it is woefully incomplete and doesn't have a section on MVC 4, which I need to use. The rest of it is mainly tutorials designed for "beginners" that are code-by-copy-paste. These aren't very helpful nor informative because they show you how to do a basic task, but don't give you any information on customization nor explain the greater API at all. Lastly, its a waste of time to re-read through long tutorials in search of information on a specific task.
None of the google searching I have done has lead me to any sort of .NET MVC reference document. Even Microsoft's documentation page for MVC 4 https://msdn.microsoft.com/en-us/library/gg416514(v=vs.108).aspx is linking forums posts as opposed to Microsoft written documentation, and its still missing entire sections. So my question, is the documentation for the .NET framework really this lacking that Microsoft just links forums posts? Or is there a resource out there that google search is reluctant to link to?

I am hugely disappointed so far since when I was learning Laravel it was super easy to just go to the site and get a feature list with code snippets to remind oneself of a specific part of the Frameworks functionality without having to dig through mountains of unrelated stuff. Learning .Net has just been frustration annoyance since it seems like there isn't so much as a single list of API features. Even if it had to go digging for how to use it, I would still know its there if someone took the time to write down the different stuff it could do in one place.

Maybe I need to not search for .NET MVC, but rather there are specific modules that I need to be looking up?

I definitely feel the frustration, but the usual ASP/MVC pipeline doesn't tend to be *too* complicated. I guess the question is "what are you trying to do?"

With some use cases of where you're feeling burnt, we can likely provide solutions. But otherwise it seems like it could be anything from just trying to figure out Razor syntax all the way out to something like complex routing issues.

EssOEss
Oct 23, 2006
128-bit approved
We have a few MS people in this thread - I wonder if you can comment on how accurate this thread is with regard to MS internal workings. Us in the software development industry are likely to have better insight than random reddit commenters, so I would be quite interested in hearing another viewpoint here, especially as Microsoft is one of my top "If I ever want a career change" employers.

Red Mike
Jul 11, 2011
I'm not an MS person, but most of those read like they were written by terrible coders who couldn't understand a system, refused to follow a team's guidelines (however silly they might be), or refused to learn how stuff worked. It doesn't take a Ph.D to figure out what ASP.NET needs to run and how to get it to run. I'm sure some part of those are true or have some kernel of truth to them, though. Technical debt, skipping full QA coverage for certain features in favour of limited opt-in deployment, developers not knowing how to work with databases are all par for the course for software development no matter where you work.

rarbatrol
Apr 17, 2011

Hurt//maim//kill.
Yeah those all hit home with my job too. We tried dogfooding our software for agile project management AND for our HR system (lots of custom plugins) and it was a 3-year-long nightmare.

Drastic Actions
Apr 7, 2009

FUCK YOU!
GET PUMPED!
Nap Ghost

EssOEss posted:

We have a few MS people in this thread - I wonder if you can comment on how accurate this thread is with regard to MS internal workings. Us in the software development industry are likely to have better insight than random reddit commenters, so I would be quite interested in hearing another viewpoint here, especially as Microsoft is one of my top "If I ever want a career change" employers.




Red Mike posted:

...all par for the course for software development no matter where you work.

That, right there.

I've technically been for a few months, but we're pretty separate from everyone else at the moment. All I could say reading that is that a lot of it is "Welcome to Software development!" Stuff. Like, no poo poo, software as complex as Windows does have weird crap going on in it. And internal infighting between teams at MS is pretty well known (hence the whole "One Microsoft" push to get people working together and not against each other). But most of what was said could be said for a lot of software projects or companies.

kitten emergency
Jan 13, 2008

get meow this wack-ass crystal prison
I think there's some very talented engineers at MS based off of talking to people who work there, but the management culture they have seems rather unpleasant based on my experiences with some former MS management types.

Adbot
ADBOT LOVES YOU

raminasi
Jan 25, 2005

a last drink with no ice
When someone complains that they got chewed out for spending two weeks refactoring something merely because it was ugly I find it hard to sympathize with them.

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply