HN user

droz

385 karma
Posts5
Comments125
View on HN

I began writing C# in 2004. I've been writing it since for business and pleasure. Since Microsoft began adopting a more open source approach, it's been, well, amusing to see the open source culture collide with has been historically a closed system.

"Why isn't there a free, open package that solves hard problem X, it's 2015 after all. How preposterous!" The naivety displayed in these kinds of statements is amusing. There are probably many solutions to hard problem X locked away in proprietary "Microsoft Shop" code bases around the world. It's incredibly daft to assume otherwise. Does this approach lead to a lot of duplicated effort- yes; are there a lot of hacked together half working solutions out there- yes; has the .NET community been ok with this- yes. As is the culture of .NET. It's the fine art of not giving a shit because you're going to get paid anyways.

"Oh these poor .NET bastards, they're just sooo clueless of the world around them; they only know Windows." I'm sure this could be said of just about anyone. All tech stacks have their stars and fry cooks. As with many things, it's a matter of how you want to dedicate your time. Could I spend my time focused on file system design, memory issues, and network architectures. Absolutely! It's great that people enjoy this stuff; I personally don't. It's boring to me same reason I don't enjoy futzing around with Linux. I don't care about how it works; just that it does work. When I write for the .NET/C# stack, my focus is on the business problem. How do I impact the end-user (ie Shannon over in accounting, or little Timmy dipshit in Iowa) in a positive way.

"VS also has this really nasty habit of creating "csproj" and "sln" files. I hate those things." this is like bitching about make files. It's beyond silly. Could it be improved- probably, does it need to be- no. I think make files are a horrible way to do things, do I bitch about it- no. I understand that that is the preferred approach of the environment. Learn what I need to do to make it work and get on with my day. And really, these types of complaints are just childish. You're a professional. Deal with it.

As far as IIS is concerned, we can have a ceremonial burning of the source code one day. That product is beyond useless.

The selling point of C#/.NET isn't it's community- it's its productivity. A company can hire a small team of developers and they can crank out a bunch of code in short order to solve some specific problem. The code will be written the ".NET way" not because that's what's best for performance, but because that's what's best for development. Same thing happens in other technology stacks. Code is written to follow a well followed pattern by its community so that new hires and other developers can quickly suss out what's going on without having to stop and think. It's the same song and dance of using third-party libraries. Bit like a royale with cheese instead of a big-mac. Dress it up different, but the same principles are at play.

Fundamentally, there's going to be some cultural exchange between the traditional .NET crowd and the open source crowd. Both parties stand to learn a lot from one another, and have lots of opportunities to discover overlap. Rather than throwing in the towel and saying .NET is bullshit and used by dullards who solve inconsequential problems is short sighted. Find a place for .NET in your stack, look for opportunities to mix it in with your existing open source technologies. If you can't find a spot for it, then move on to whatever works for you. It's not rocket science.

Well written piece, kudos to the author.

If we are uploading cheques and licenses, why not just have a form with the respective upload sections for each document. Sure, people might get the two backward by accident, but is that error rate really any worse than the false positive rate of the proposed solution.

If you are going to go the machine learning route, then it really only makes sense if you go all the way and do some OCR on the documents to pick out the meaningful information to prepopulate some input screen that would likely appear after submitting those documents.

While the actual case study makes for an interesting read -especially for someone who lives in Colorado - the numerous typo's, spelling errors and grammatical mistakes greatly takes away from the message. Did anyone bother to proofread this document at Calleam Consulting before releasing in back 2008?

Older Developers 13 years ago

Author doesn't seem to understand why most people go into software engineering. It's because they are creators not managers.

Employers need to get what motivates their employees and put people in positions that enable those employees to pursue the things that make them happy.

And also recognize that what makes their employee's happy may be completely orthogonal to what makes the employer personally happy.

Passing judgement on those employees that choose to stay in position well into their 40s and 50s is just childish and shows a lack of perspective.

Have your application periodically register with a registration service and monitor for excessive use. If you detect something, call up the customer and ask what's going on and present your data. Tell them they are not licensed to run unlimited number of instances and they need to pay up. If they don't, have a built-in shutdown command that you can issue to the software instances that are unlicensed.

I've been using the product off and on for the past few months and overall have had a very positive experience. However, I think it would benefit from a more mature range of simulation capabilities and component inventory.

It would be great if the product incorporated the real-time parameter variations you get from the falstad simulator [1] in order to get a better intuition for what's going on. It would also help if the simulation computation time was greatly reduced.

It's an annoyance to have to drop a generic component (e.g., NPN transistor) and not see my part of choice in the options and have to manually go dig through my papers and find the datasheet and look up the parameters. It just distracts from what I'm try to do- save myself time.

Overall, I think that the product needs to target the non-professional segment that has long surpassed beginner status. Essentially, experienced hobbyists that are looking for an online alternative to the more expensive professional solutions. For beginners, they can use the Mattel styled product Fritzing [2] on the desktop to mock out breadboards and circuit diagrams.

[1] http://www.falstad.com/circuit/

[2] http://www.fritzing.org/

> "But even as a developer it’s full of headaches." is also just plain not true.

OP's statement is a subjective assessment. It's neither true nor false.

Programming transcends programming languages.

The purpose of examinations are to measure your understanding of programming concepts, not how you would translate those concepts into the programming language of the week.

You don't even need a computer to program, just an imagination and ability to apply those concepts to the problem you are trying to solve to yield a solution.

To share your solution, all you need is a writing instrument and surface, just like you encounter in your examinations.

Agreed. I would have expected to see things like ICA, PCA, SVD, pseudorandom number generators for various discrete and continuous distributions, misc. multiplicative and arithmetic functions, misc. metrics (of the minkowski kind) and so on to label the library as advanced.

Seems somewhat nonsensical to claim the man is the "best computer programmer in the world", (ignoring for a moment the notion that there is such a thing) since only a small percentage of computer programmers in the world even participate in these events and that the "best computer programmer in the world" couldn't care less about such competitions.

[dead] 14 years ago

Number of years ago I joined a company that had previously contracted out all prior development. Most of the development consisted of a lot of poorly designed code and systems.

As a fresh hire I set out to rewrite everything. Some well defined components were easy - native clients, web sites and so on. Other things were more arduous- large systems consisting of several moving parts.

I set out to rewrite one system and went through the most difficult year and a half of my life. Tried to rewrite the old and add new functionality at the same time for a system that didn't have well established boundaries. Non-technical management was rampant and I got a lot of change requests over the course of development.

Massive mistake- should have approached it as enhancing the old system, refactoring out aspects that were roadblocks to delivering my idealized solution and then implementing new features. Ultimately finished the rewrite and delivered the system, but I burned out in the process.

Since then, there are three major factors I consider when thinking about a rewrite:

1) Will rewriting this system improve the business or facilitate new business? If not, then you are really just redoing something for your own personal peace of mind.

2) Is it broken or buggy? If it is, put unit tests around it, patch it, and refactor the code into more manageable components. Then improve those components as needed. If it's not broken or buggy, don't waste your time on it.

3) Choose your battles. Do you really want to spend the next year plus rewriting something or would you rather work on something new?