Follow Slashdot stories on Twitter

 



Forgot your password?
typodupeerror
×

Comment Re:I thought CS is being outsourced (Score 1) 120

Because those jobs are not staying overseas. Some of the companies that tried outsourcing their entire IT departments are now feeling the competitive disadvantage of not having the same amount of control they would get by owning custom systems. Sending a bunch of requirements to a contractor and getting a crusty system eight months later just doesn't cut it in today's business world.

Comment Re:Emergency probably has legal meaning (Score 1) 120

Even in a big school in an affluent community in Minnesota (a really good public school with over 2000 students) seems to have had fairly low interest in CSci. When my son went, they had an AP computer science class that had 18 students. The next year, they had 15, and then the next there wasn't enough demand to hold the class. The sole qualified teacher in the school moved out of state about the same time my son graduated, and I don't know if or when they hired a replacement.

That said, it's a few month course for a teacher to become certified to teach AP CSci. If there is a critical shortage, it could be fixed by the start of the next school year if they act now.

Comment Re:After that sweet sweet income tax (Score 1) 120

It's like squeezing blood from a stone. They're not going to get it from business taxes, that's for sure.

You don't think Walmart's lobbyists from Bentonville aren't earning their keep in Little Rock? The Waltons are not about to share a dime they don't have removed from their pockets at gunpoint.

Comment Re:Longer sentences (Score 1) 327

Why blame the kid? Perhaps because he was attempting to murder other people?

There isn't a technical,fix for a sociopath, other than to remove the sociopath from society. The only utility you can get from this idiot is to show other people that SWATting will be met with disastrous, life-ruining consequences in hopes of dissuading them of copying the crime.

Comment Re:Longer sentences (Score 4, Insightful) 327

This is nothing short of attempted murder. He may have intended it as a prank, but putting a dozen adrenaline-fueled heavily armed cops in the house of someone who might not be expecting an armed intrusion, and who might be prepared for one, is throwing gas on a fire. People could die if any tiny little thing goes wrong.

Nope, this is pure cowardly violence. Stuff this idiot in a cell for 20-25 years. Let some non-violent offenders out if you don't have room.

Comment There's a lot - you need a plan (Score 1) 233

I'm assuming you're here because this code is critical to your business, it works well enough today, and it can't be easily replaced. You need to keep it working as you go, but you desperately need to modernize it. There's a lot you can do to set yourself up for success, and it's not just tools.

First, get it building in the most current environment available. Is it Visual Studio? Port it to VS2013. Is it Eclipse? Get it into 4.4. Is it not even in an IDE? Get it into one - they're a great timesaver. Pick a refactoring tool, too, something that will help automate common refactoring activities like "extract method." You're going to do that a lot.

Next, get it checked into your source control system, and building on your team's build server. This would also be a good time to revisit the packaging of the deliverables. If you don't already have a task and bug management system like Jira, Mylyn, TFS, Bugzilla, or whatever, get one that integrates into your workflow and your IDE. You have a lot of work to do, and you don't want to waste it filling out Excel spreadsheets. You really need your tools to be as unobtrusive as possible.

There is no sense starting with sub-optimal tools, or fighting a crappy build or development environment. Your time is best spent on coding, and is wasted on everything else.

Now that you're almost ready to get working, build a small suite of automated integration tests before moving on to addressing the architecture. They'll be ugly tests, but you need to know the code is still working as you begin making changes. Make sure the build machine can launch your tests and tell you when they fail.

Now you can dig into the code base. Identify the underlying architecture. Is it event based? Does it closely model MVC? MVVM? Once you clearly define the architecture, break the solution into individually compilable libraries that represent the layers (controller, business logic, data accessors, etc.) Move the existing modules to the most appropriate library project. (Some won't fit cleanly, so you'll end up splitting those into parts later.) For now, make sure it builds and the tests run successfully.

Pick one of the layers to work on first, perhaps the UI, perhaps the data access layer. Get it compiling clean, with no warnings, and turn on the compiler switch to enforce "treat warnings as errors." Run a static code analysis tool (Coverity, Klocwork, Fortify, /Analyze, lint, or anything, really) and fix whatever warnings it gives you.

Tolerate no bugs. As you go through the code, when you find a bug, fix it then and there. Your QA staff will no doubt be finding plenty of bugs on their own, but you need to keep the project as clean as you can.

Next, start refactoring the chosen layer into appropriate subdivisions, such as a controller, business layer interface, etc. You'll want to do a bunch of other housekeeping work here: get rid of globals and singletons, push stray business logic down into the business layer, pull stray UI interactions from the business layer up to the UI layer, etc. This would be a good time to introduce some automated unit tests to the logic you extract and move around. Unit tests force you to make the code testable; things like dependencies on databases, services, files, etc., cause problems with tests, so you start treating them with dependency injection. The primary outcome is that by making your code testable, you make it modular and readable. Plus, you get a few more tests under your belt.

Run a complexity metric across the layer, and look for the highest complexity modules. Start chipping them down. Again, look to adding some unit tests to prove that the code you're isolating does what you claim, and that you're making your logic stateless.

Decide on an exception handling strategy, and make your exception handling consistent. Pick the one appropriate to your app and technology: SEH, try/catch, C-style return codes, whatever, just apply it consistently as you go. Similarly, this would be a good time to review any logging your app does.

One of the most important refactoring tools you have is "Rename Method." If you can't say what the method does in a couple of words, it's too complex and not very modular - use Extract method, then name the results appropriately. Once you get good at naming the parts you extract, you'll probably start to see duplications more clearly. This is the time to sensibly combine the methods that are true duplicates, and distinguish those that are not.

Let your build server put those idle cycles to good use rerunning your tests with every build. Make sure your users remain happy with the product.

It is important to not compromise on code quality on anything you do from here on out. You are here because your predecessors let it go to hell; do not follow them down that path.

Good luck!

Comment Re:Be careful how you define Troll (Score 1) 467

You could tag the tweets you don't like as "Censored by tacokill". I'll tag the tweets I don't like as "Censored by plover". People who like the way you tag trolls and not dissenters can employ filters that get rid of everything you dislike. People who like the way I tag trolls would filter out anything I think is bad. They could subscribe to both of our sets of tags, or neither. I promise I'd filter out the Westboro idiots, but maybe you think they're dissenters, so you would stop filtering based on my recommendations.

Instead of the retweet system, it's more similar to slashdot's "friends and foes" system, and suppressing all messages from anyone who you or your friends dislike. I would imagine this would spawn the growth of "professional friends" services, who are essentially offering a trustworthy filtering service that gets rid of the worst trolls.

Comment Re:Be careful how you define Troll (Score 1) 467

There's a cure for that. Instead of reading the whole stream, you could subscribe to filters that are tagged by their producers. Got some censors who call normal conversations trolls? Ignore those filters. Once you've built up a list of censors you trust, you no longer get messages from the trolls you disagree with.

This was done over 20 years ago with the cancelmoose. There's no reason it couldn't be resurrected by Twitter.

Comment Re:Be careful how you define Troll (Score 2) 467

That's the ultimate social problem of the web, and something we've lost with the failings of broader outlets such as city newspapers. There are too many completely politicized sites where people are only exposed to their own groupthink. The Democrats gather on democratsRus.com, the Christians gather on christiansRus.com, the Seahawks fans gather on seahawksRus.com, etc. They fuel their own fires, and don't accept news or input that challenges their opinions. Anyone who stops by with a dissenting opinion has virtually no option for rational discourse, so they don't stick around, so the one-sided people remain one-sided.

I believe there was a brief period of time with some city newspapers (before Rupert Murdoch bought and overlaid them with his personal brand of yellow journalism) where they would employ a spectrum of reporters. They may not have had the ability to completely override the editor's politics, but they generally weren't all in lockstep, either. There was at least a chance you could get exposed to a slightly broader spectrum of opinions. But today, you can subscribe to the Huffington Post and close your mind to anyone who might reasonably think taxes should have limits, or you can read only Fox News and ignore anyone who thinks that people in need aren't just lazy. The only place where opposing sides seem to have real debates anymore is in the courtrooms, which have become the battleground instead of the houses of Congress. Besides, we all know how well Congress does at representing people's opinions (at least the opinions of those that were bought and paid for by special interests.)

Comment Re:Be careful how you define Troll (Score 4, Insightful) 467

I'd rather lose those few (allegedly) "good" posts than read any more trolls. If it's too hard tell the difference between an semi-literate rant over "how angles save my sole" and a troll, the world isn't any worse off for not having the rant.

Despite the apparent similarities, Twitter is not a legally protected soap box in the public square. It's a private service, and they can censor anyone they want for any reason. Trolls can run off and join trolltalk.com if they want their own voice.

Comment Re:Snow Slot (Score 1) 170

I've lived my whole life in the Minneapolis area, and with global warming plus all the skyways connecting the downtown buildings, weather is almost a non-factor for most of the time. Snow happens here like it does in most of the country, only we're better prepared so it isn't a big deal to us. I'm tapping this on a warm bus on my way home, and while traffic is bad ...

Oh, my. The bus just passed a wreck where the fire department and state patrol are prying some guy out of an SUV that he wrapped around a snow covered guard rail.

Holy shit, there goes my whole argument about how great this place is to live.

Comment Re:Eating itself? (Score 1) 265

I think the question of long-term stability is only relevant if you're thinking of investing in one of these companies. It in no way impacts me as a rider as I'm not establishing a long-term relationship with any of them. I don't care who picks me up and drives me to the airport. I don't care if the next guy to pick me up at the airport and bring me home works for the same company who drove me to the airport. And from the quotes I've gotten, Uber isn't a bargain, so they're not even differentiating themselves from livery companies on price. All other things being equal, I'll choose a regulated company over an unregulated company (for the same reasons you listed.)

I consider Uber and Lyft to be almost ephemeral: they exist today, they might not exist tomorrow. I know Uber is trying to establish a brand image of a company that is reliable and safe and app-enabled and cool and trendy. But because of the way I use taxis, their stability is unimportant to me.

Slashdot Top Deals

Those who can, do; those who can't, write. Those who can't write work for the Bell Labs Record.

Working...