Forgot your password?

typodupeerror

Comment: Re:phone-call metadata (Score 1) 332

by khchung (#44026035) Attached to: Snowden NSA Claims Partially Confirmed, Says Rep. Jerrold Nadler

The reasoning goes back to old law which is based on the idea that when you mail a letter, you have no expectation of privacy regarding with respect to the outside of the envelope

Which, by itself, is already a crazy idea in a supposedly "civilized" world.

When I mail a letter, I expect only the staff of the post office can read the outside of the envelope for the purpose of delivering the letter, until it reach the mailbox of the recipient. After which only authorized persons (with the mailbox key) will be able to retrieve.

There are LOTS of privacy expectation on the outside of the envelope already, namely:

1. I expect no one but post office staff can read it, and only for the purpose of delivering the mail (i.e. no data mining, no retention of this data, no sending it to FBI/NSA)

2. To spell it out, I don't expect the general public, non-delivery post office staff, the post office manager, nor people touring the post office, etc, to be able to read the outside of the envelope during transit

3. I don't expect people to stand behind the postman while he puts the mail into the target mailbox. Nor do I expect the postman to read the "from" address intentionally unless the "to" address is wrong

4. I don't expect anyone can open and go through the mailbox, even without opening any envelopes.

Comment: Re:Agreed, it's stupid (Score 1) 731

by khchung (#44019019) Attached to: Sexism Still a Problem At E3

How does my purchase reflect *me* as the target audience? It doesn't. To put some context on this: even though I've spent WAY more time playing Civilization V, I only purchased it once, versus the many, many purchases I've spent LESS time playing on my phone. Using your logic this would make me more of a "mobile gamer" than a "PC gamer", but the opposite is actually true.

Look, to a game seller, how much money you spent of his game is way more important than how much time you spent on it.

Classifying you as a "mobile gamer" based on your purchase is the only relevant way from the POV of the industry. No game company cared how much time you spent of a game after you have paid for it.

For a mandatory car analogy - a rich guy bought 20 Ferraris but only drove them once in a while, spent most of his road time in a Benz instead. Another rich guy bought 20 Benz and only 1 Ferrari and drove the Ferrari all the time. Guess which one is more of a "Ferrari driver" and which one is a "Benz driver" for Ferrari and Benz?

Comment: Re:doesn't work (Score 1) 597

by khchung (#43981567) Attached to: Why Your Users Hate Agile

If there is a point in time that is considered as "late in the project", you are doing Waterfall, not Agile.

Eh? After 38[1] 2-week sprints developing an accounting package the bean-counting dunderheads tell you it needs to support multiple currencies. Are you saying that's early?

[1] Including 17 that were about changing the colour to get more RAM.

That is neither "early" nor "late". You estimate the effort required, break down the stories into manageable small chunks, then let the dunderheads priorities the stories, and then off you go to the next sprint.

It may take 10, or 20, or 50 more sprints to have all the multi-currency requirements completed, but does it matter if it was the 3rd sprint, the 38th sprint or the 380th sprint? If it does, you are doing waterfall. For agile projects, it shouldn't matter. If the dunderheads aren't willing to pay for the additional stories, that's another problem entirely.

Yes, if they had included multi-currency at the 1st sprint, then you won't have a stories worth 10/20/50 sprints to do at the 38th sprint, but you just had those same amount of effort spread throughout you other stories, which would result in similar total effort anyway.

Or are you going to say your codebase was already a mess by the 38th sprint, when everyone was hope the project would finish so they don't have to deal with the accumulated technical debt? If you are going to say that, you already spotted the problem, and that is not with doing agile.

Comment: Re:Not Upgradeable? (Score 1) 464

In all the years I've been building computers I can name only twice where I ever had the opportunity to upgrade; once with an old 466 when I went from a DX2-50 to a DX4-100; another time when I upgraded a K6-2 333 to a K6-2 500. Most of the time when it came time to "upgrade" there had been so many changes to the bus types, socket types, memory types, etc... it was just easier to start over from scratch than try to pick an upgrade from a narrow list of parts which often cost a fortune, while often only giving a moderate speed boost, because they were now considered "specialty" equipment for an obsolete architecture.

Granted, there are people who will insist that they've been able to upgrade their systems multiple times - but I'm not talking about those compulsive types who need the newest graphics card every other week. Most people I've talked to will buy a machine and keep it for 2-4 years before thinking its time buy a new one, by then everything has changed and the existing machine is mostly obsolete and so they have to start new.

Same here, and my first PC was an XT. So it is like in some 25+ years of owning and building my own PC, I can count the times I have upgraded one (after initially building it) in one hand.

And the most recent one was like 5 years ago, and that's only because it was a big hassle to re-install everything if I bought a new PC (which is a non-issue with a Mac), so I bought a new video card instead even though I could well afford a new PC with better everything.

Comment: Re:doesn't work (Score 1) 597

by khchung (#43913657) Attached to: Why Your Users Hate Agile

The problem with Agile is that it gives too much freedom to the customer to change their mind late in the project and make the developers do it all over again.

The *point* of Agile is that there should be no time that is "late in the project".

With fixed, short, repeated cycle of iteration/sprint/whatever-you-call-it, such as 2-weeks sprint cycle, *every* cycle should be start with work estimated to fit in the cycle, and ends with deliveries of completed work that delivers value to the customer. It should work the same for the first cycle, just the same as the last cycle.

If there is a point in time that is considered as "late in the project", you are doing Waterfall, not Agile.

Comment: Re:I tell them I feel the same way! (Score 1) 597

by khchung (#43913615) Attached to: Why Your Users Hate Agile

You seem to fail to understand that there is no difference between designing a car and designing a software product.

The "design" part is no difference, but the execution makes all the difference. Running software is like running a car in an alternate universe, which you only get a specification document for the basic laws of physics and the spec for the materials, which may contain errors, and which may change without notice. The strength of the steel, for example, may suddenly weaken, or a steel bar may suddenly shatter if a small but specific pressure is applied to a special point on the bar.

Not only that, the requirements for the car changes at the whim of some group of people, and different requirements sometimes contradict each other. Plus the quantitative requirements (like mileage, capacity, etc) double every 18 months, but your design today have to also handle for the increase in the coming 5-10 years, which means you must use technologies still in experimental stage, and hope it fits your design when it matures.

You can bet a car designed for such alternate reality will have lots of problems. So, yeah, designing a car and designing a software product is not different.

Comment: Re:CS Departments do a poor job at this.... (Score 1) 656

by khchung (#43880879) Attached to: Ask Slashdot: How Important Is Advanced Math In a CS Degree?

Most CS departments don't teach math because they just make the maths a prerequisite. Ie, students just do the prerequisites as a means to get the degree. Afterwords there may be a CS class that uses the math but it doesn't need to explain why you need it because it's just assumed that the math professor explained that, or otherwise it should be obvious why you need it.

Gee... this sounds just like the Waterfall model, guess where the CS departments learned it? :)

Where this is falling down I think are the hordes of students, like the original poster, who are squandering their education and only trying to get basic job training.

And this sounds just like managers who don't understand how things works, and think doing design is a waste of time and push for "just start writing code" before the requirements even finished.

And I would say those hordes don't even want "basic job training", they just want a piece of paper.

Comment: Re:maybe yes maybe no (Score 1) 656

by khchung (#43880845) Attached to: Ask Slashdot: How Important Is Advanced Math In a CS Degree?

I have a masters in math. In class one day our professor mentioned that he consulted for the forestry (or some such) department at the school. They were trying to calculate the area of an arbitrary region so as to estimate the number of trees within that area. Problem is the area may be convex or concave. The CS department at this school was trying to solve the problem by triangling the polygon, but ran into difficulties if the area was concave. My professor suggested using Green's theorem. Moral??? On the one hand advanced math gave a much more elegant solution to this problem, on the other hand **the CS department** at this school wasn't advanced enough to suggest it on their own... so if THEY can't do it... (fill in the blank).

Exactly. This is just the same "if you have hammer, everything looks like a nail" problem that is already so well-known in among programming already, but in a wider setting.

Programmers who don't know much math never knew how many stupid solutions/programs they have written over they career, and thought the math has no use cuz they never need to use it.

Programmers who knew a lot more math take advantage of it everyday and can tell their story how math is useful to their work.

Only those few who knew enough math to know they can benefit more from knowing more can say "more math can help me", but those would went and learn more to be the second group soon enough, so the gap between the two groups will always remain.

Comment: Re:EVs not really for long road trips (Score 4, Interesting) 311

by khchung (#43870723) Attached to: Tesla To Blanket US With Superchargers In Two Years

The easier solution is to shift the paradigm - how we think about and use our vehicles.

This part is right.

If/when you need to take a long road trip, you take a gas-powered car. Either an extra car in your household, a rental, borrowed from someone you know. Whatever.

And this part is totally wrong. The clean solution is to take a page from Europe, make your train network actually useful, and let trains haul you AND your car from one city to another. You drive the station, park your car ONTO the train (as well as charge it if you like), then go sit comfortably in the passenger cart of the same train, let it take you to the destination city, and then get on your car and drive away.

The train ticket may sound expensive, but if you account for the fact you saved fuel/electricity cost for the car, and you can comfortably rest or sleep overnight for the entire trip, it is a bargain.

You have such a big problem with long road trips in the US because your train network sucks.

Comment: Re:Agile doesn't mean that the project won't fail (Score 1) 349

by khchung (#43825121) Attached to: World's Biggest 'Agile' Software Project Close To Failure

I agree but the daily accountability is still something that a lot of hard core developers don't buy into. The "leave me alone" mentality still prevails in big shops.

The ugly truth is, IMO, the mentality is really not as much as "leave me alone" as it is "let me cover up my failure in hope of a miracle". And miracles DO happen quite frequently in large companies, where 80% of their projects fail anyway, so as long as you can cover up your failure until some *other* guy's failure can no longer be covered up and the whole thing failed, you are good.

In some cases, it manifest as the "Schedule Chicken" pattern. But this works on every level. Architects can stall any project by unending questions and arguments on the design, ensuring his design will never face the test of reality, or at least enough CYA when the system fails. Developers can keep pretending they are on-track, while nothing works, until other teams call for a delay, or every components fail spectacularly during integration.

Doing Agile takes away all their excuses and provides great transparency, it usually makes a lot of people who used to work in large shops extremely uncomfortable, to say the least.

Comment: Re:Mandatory requirements and Agile fallacies (Score 4, Insightful) 349

by khchung (#43825093) Attached to: World's Biggest 'Agile' Software Project Close To Failure

Sorry, but you are completely missing my point. My comment wasn't really about tests, it was about the fact that these huge projects are practically all-or-nothing in their success.

Exactly. You cannot use Agile to build a 100-mile canal, as the whole thing would be useless even if you completed 99 miles.

If the system cannot be useful until a large set of functions are in place and working, then it is not suitable for Agile, period.

Comment: Re:like Windows? (Score 2) 397

by khchung (#43818681) Attached to: Ask Slashdot: When Is the User Experience Too Good?

For an example of a user feature that can be damaging to the system as a whole for a read operation: what if your application has an ad-hoc query interface that end users can access, or even just a search interface that allows poorly indexed queries... A user can generate queries that require full table scans or queries that return large result sets (or both). Enough users doing this could consume mass quantities of application memory to hold their result sets or I/O time on the DBMS scanning the tables. This in turn would bring overall system performance down for all users if you run up against physical capacity limits on the DB server or the application server.

In such a case it could be better to eliminate the feature rather than optimize it. If a feature is available, you can bet your users will "abuse" it to the extent that it negatively impacts other users.

An excellent example of this is a search function which assumed wildcard for blank search fields, and initially defaulted to all blank. Double bonus for not setting any limit on the number of results returned. The dev tested it thinks it is great it returned all 3 testing records (sorted) when just hit "Search" without entering anything.

Any user using it for the first time, and experimented with hitting the "Search" button (or even experienced users accidentally hitting "return") will trigger a full table scan, and in the first week after the system was just launched, get a few thousand rows of results. Then a couple weeks later, had their IE crashed when IE can't handle to huge table returned. A few more weeks later, had the whole server hung up for hours as the database tried to sort 20 million records and the sort overflowed to disk.

Unfortunately, I have seen this happen too many times in real life systems.

A minute of thought from the system analyst or architect would have changed the spec to have the current date set as the initial default in the date range search field (or some such similar defaults that would normally give a much smaller and useful results), and forbid search with all blank (probably with an error saying "Please enter your search criteria."). More technically minded analyst would include in the technical spec to limit the result set from the database BEFORE the sort.

Machines that have broken down will work perfectly when the repairman arrives.

Working...