Or maybe not, Qt, Boost seem good choices based on your experience, but it really depends. The best hw emulators (and simulators) I have seen / done / supported were written in LISP, yes, not new nor trendy.
And there is of course Erlang, it has all in language, is natively threaded even between nodes if desired, has very good database(s) natively, and so on - but not new nor trendy. Much less coding, configuration, etc effort than in most languages but maybe needs some time to get used.
Very good point. Actually for example Chicago (middle of everything in US, kind of) has the train stations in city. Handy, except in winter but L and taxis are available and not very expensive. Try to get to Chicago airports (Metra is not bad but not (yet?) perfect) - by car on rush hour it may take hours, traffic is sometimes just too bad. And then, of course, stand on line - sometimes a long, long time.
In Europe the stations are really in city, even for example in London, Frankfurt, Paris, etc the connections to airports are not too bad. One reason I prefer TGVs over plane, nice environment, go get a drink or meal, relax, quiet, roomy, very easy to have your stuff, in some places it is even waiting in hotel before you. I just love trains but busses, trams, other public transportation can be good (or bad) depending of the public attitudes. Still wonder why so many people in San Francisco insists to have a car, a real pain in parking, etc when it really is a walk town and the buss system is, if not perfect, nice?
Anyhow, a TGV through California makes sense (IMHO should run from Vancouver BC to San Diego!), I would use it every time instead of driving 5 which is a long way and can be interestingly challenging sometimes, sudden fog, the smell (bad in some places), boring, etc or, SFO, LAX, SAN are not too bad but if I can just step to the train, sit comfortably, get drinks / meal, read, sleep, etc wins every day.
Wan't to try to get a judge to do that? Just send (by mistake, of course) a bunch of documents as attachments and, because you don't really know who is irs.gov as a person and the "person" might do something wrong with the e-mail you sent, ask the judge to close the e-mail. Good luck! By the way, nothing to do with First Amendment or such, just a technicality.
One of kids born the hottest day in 50 years, one born the coldest day in 80 years, one between - don't see any difference. Now, of course, if I would need research funds I might start seeing the differences - heh! Or maybe it was the size of the car in which they were taken home from hospital (need a car analogy in Slashdot) - have to start the research, just have to get maybe government funding for it.
So, last time I sent a wrong paper to bank I should have asked the judge to close the mail delivery to that bank - have to remember! It should be easy, not even have to ask the post office for owner of the address!
Now, the damage is already done! I wonder who and how covers it to the innocent party (parties?) My e-mail connection is worth a couple of millions, at least, even a short cut would cause huge (future) losses and of course, the trauma - a jury probably would understand that and award me those millions except how to sue a judge / justice system? I might then get the government (tax payer!) relief help (money!) to continue my business - so what I wasn't ready for recession, sorry, I mean for justice(?) - doesn't sound right, didn't have a backup plan for it?
There is today a real need for justice system which would understand technology, at least on basic level. And I wonder how the bank was even able to send to a person who they assumably don't know - if they know who was the receiver, what's the point? Total screwup! No excuses, sorry, there are any amount professional IT people who can make this type of mistakes very difficult, only intentional e-mails (or whatever) can be delivered and then it's another issue totally. Maybe the bank could take the cost of 10 of them out of the CEO salary, he/she wouldn't even realize so small sum!
Google was absolutely right and maybe, just to show how nice they are, they could fight this on behalf of the e-mail owner? Maybe it would even be a good idea, otherwise they may start getting these court orders more in future? If a judge can just order this kind of e-mail (or any!) closing and giving the customer names it definitely will change how the Internet ( or post office or just speaking aloud) works today.
Well, maybe some do. It's not the camera, even with film you might use some very low level cameras as Holga, etc. Or the most simple, a box just with a (pin)hole and get really beautiful pictures which, by the way, sell. Maybe see http://www.irenestauffer.com/blog/ - some of those are cell phone pictures (very crappy camera!) but pictures come right - it's the end result which counts. It's not always the sharpness, the correct colour, balance, whatever which makes a pleasing picture but, of course, tastes vary. I personally love National Geography style, very sharp, correct colours, deep sharpness, etc but can also enjoy pictures made by a pinhole camera with all the weird effects but nothing can't beat that luminosity, not even Photoshop (or Gimp) manipulated. Once you see those blown out to or over 40 inches the right way - they are great ( http://www.irenestauffer.com/ )
Yes, theoretically it is correct as Pascal strings are defined / described. This is an ages old argument but many languages (many "Pascals") have "strings" which have a descriptor or length not limited to 256, the programmer just doesn't have to take care of it. And they have no separate API or whatever for different "strings", mostly they are actually just handled by compiler. The pain of delimiters is bad, have to have another class or whatever to handle strings as continuous memory (the implementation may be whatever as in Haskel, etc.) And especially with Unicode or for example protocol stream it means scanning everything, every time instead of letting hardware to do it's work - great for one (maybe) but when talking thousand and thousands at the same time it eats cpu cycles which, especially in interface controllers, are already used too much.
There are special hardware solutions but they are not very common, computers still (mostly) work on bit level (there are exceptions). The delimiters are bad even other way, what is a delimiter for one class of data is / may not be a delimiter but data in another class of information so transformations can get sometimes tricky if data can not be trusted - most common have been overflows of zero limited strings and/or terminators in protocol strings. Or zero and here and maybe the the non-breaking space in HTML or whatever.
Actually I like C (and assembler) because of the power over code, but it definitely needs more code and more caution to use strings in those languages than in Pascal, PL/I, ADA, and other languages where strings are transparent (not Pascal strings as defined). Many interpreted languages can handle strings without terminator so.. All high level languages should (IMHO) have a class of string which is transparent in compiler, not some ever changing API, proven going from one octet to multiple for Unicode, etc - old (new?) style just doesn't seem to work too well - causes problems as this.
Agreed, it is a shame, the null terminated came in C very late in game when byte counting wasn't too expensive any more. I really don't get the replies of only 256 byte (octet?) max length? Pascal (PL/I, Algol, etc) strings can have up to unlimited length depending on language, computer, etc implementation. Any modern(?), intelligent language should be able to handle a continuous string of bytes (mostly octets but even NLS and other "strings") without any terminator or special API, it's so lame! And it is dangerous - my hair is gray fixing programs where the null was overwritten for some reason or where the scanning, input, whatever was depend on some such terminator instead of hardware termination based on length, signal, memory boundary, memory protection, etc.
Back to the topic, CAs are in business for money, not to make things more secure or so. That's mostly the problem in computing today, you think that security certificates, PCI, even most of other regulations, etc are there to enhance security and I have a bridge to sell. They are there to make money, sell a product, shift the blame, whatever but definitely not for security which is much, much more than just some technology.
These announcements are kind of funny - how do you ever verify whatever they promise? These are "top secret", "for eyes only", "Heimat - oops, homeland security", "against terrorists", blah, blah systems so no public information, control, whatever needed, you can feel safe now - we don't do it!
Seriously, if they want to use all the money to track me, they are more than welcome as long as it isn't my tax money! I might allow the same as for election hold in my taxes but only if I can use the satellite tracker, our neighbor is hiding behind a fence and may be planning something evil?
Performance == money OR at least it used to be that way. Seriously, there is so much wrong in "performance" in IT today that it isn't even funny! I myself miss the days when IT was for profit, a profit center with own budget, autonomy, etc as other business units in any company / corporation. It really changed when "kids" came to this business, all they wanted was eight to five, a paycheck, a managers blessing for their existence, a carrot once or twice a year, you know? Some of them carried grades from economy schools, had degrees in statistics, even had courses in speaking and were able to convince the middle management that instead of positive buddgets the paper metrics were the way to promotions, etc - the top management really didn't and doesn't have time to look details so anything what looks good must be good?
Seen these "performance metrics", "performance reports", "performance evaluations" (by managers who once a year need to know what their subordinates do - very weird?), "performance statistics" (you know, statistics don't lie!), and so on over years - have seen the results, I'd give about (at most) five years to any organization / department which starts that way, then there will be reorganization, termination, whatever - seen that about 20 times in small and large corporations over 40 years in IT.
Amazingly, not so much in IT (excluding very few) but in other organizations which are still profit centers, they still are going strong?
This is funny, even if it would say "can not" would be a false statement because it definitely "can" be used. It they would say something as "is not allowed to create a tethering connection" or so, that might be different (INAL). Now, who would buy it then - tethering means connecting a device, so any other device as bluetooth earphones, etc would be prohibited by contract. IMHO something should be done to these contracts where unlimited is not unlimited, where connection means a connection as long as it makes money for company, where a payment means now if it is you and when ever (next year?) they feel paying if it is the company, etc - not written down anywhere, of course, but interpreted that way in any dispute, even by courts and judges? Where the promise to return equipment seems to mean demounting, taking apart, packing, not breaking delicate equipment, climbing three story houses, etc even it's not said in contract but assumed by a company (a hint, a satellite tv!)
I wonder what would happen if they would write in plain, clear text what and what not is allowed? Would anyone still buy from them?
Ok, enlighten me - is it like Sidekick from Borland a long, long time ago. That combined with Paradox, etc and with some other non-Borland tools / programs (relational databases, statistical tools, mail systems, Brief / some source / configuration control systems, too many to list..) were something I still can't find a replacement. Especially one which would run in a 8-12Mhz (not GHz) system with a couple of kilobytes of memory? In which I can chat, transfer files, etc on any network? Let it run on background, blah, blah,..
Seriously - Tomboy, MONO, whatever, we need those, not the fights. If they are overblown, protected by patents, whatever doesn't matter so much, we can always make another, or?
Yep - an API is an API but still, how can you patent an API, some of my APIs before Microsoft even existed look a lot like some in.NET, Windows, whatever - who cares? Anyway - MONO is just one subsystem, what's the big deal? You don't like it, as I don't, use something else. I find MONO,.NET, etc bloated, full of stupid decisions, mostly slow, made for inexperienced programmers who need someone holding their hand, who (still) live in dreams that technology is more important than thinking and design, etc - or for managers who really don't know better but believe everything the vendors (the larger vendor, the better) feed to them or, a credit for.NET and ilk, for some CS persons who are too lazy to create anything by themselves but need something for next term paper, grad paper, whatever.
Another problems I see here is that MONO,.NET, Java, Python, Windows, Linux, etc are compared as equals - they all are very different things. Yes, I know, even Microsoft hasn't yet made up their mind what.NET (and MONO) really is - it definitely is not a language but it also definitely is not an architecture or even a common framework but neither is Java. And maybe it is something great what we haven't seen yet? I personally love to follow frameworks and architectures but as building blocks for systems to stay in as simple components as possible. This just by long experience, makes life much easier! After reducing the system size and code base always over 50% in command level CICS (who knows what that is?) or Pathway or whatever transaction systems, in big (state/country wide).NET wireless systems and/or Java/web mess, etc with great pain, fixing their "managed" / controlled memory and other performance problems caused by "experienced specialists", etc any simple (not simple by functionality but by design/manageability) gets my vote.
Back to the subject, MONO is not bad by itself, the code actually shows that the developers (mostly) know what they are doing, it may bring more users to Linux (not that anybody cares but..), it actually challenges Microsoft instead of giving them more benefits / control they already have, and so on.
Interesting thread, I have enjoyed reading it and I agree, hardware matters. I haven't done avionics but even in manufacturing and business if you need absolute(?) correctness you have to code for that. Now - I could argue the coding technique, it really depends on hardware / compiler, but you are basically correct that the logical correctness is not enough. I have seen this happen in mainframes with all the hardware checks - ouch, took two weeks to find, a execution sequence caused an error in one of 8 pipelines (which system had 8 pipelines in 70's?) which caused ONE BIT change almost randomly in memory. And so on, more on manufacturing (harsh!) environment and even in NonStop systems - hardware just doesn't always work as it was supposed to so you have to code for all(?) exceptions using checkpoints, parallel execution and comparison, branch backs, partial or full restarts, etc, etc..
Anyway, IMHO Dijkstra was right in many things. We could use more intelligent programming, I'm tired (over 35+ years) "fixing" programs which are overly long and complicated for the task they were (supposed) developed. And try to find (outside of the open source) developers who can code drivers, memory manager routines, communication stacks, decent queuing, etc without some convoluted DDK/SDK - good luck!
I used to work in a company like that before "Scrum" was even a word. 10 minutes, even the sales dropped in, helped a lot. We had several large customer projects going, too few people and still managed it. The difference - not scheduled Scrum meetings but it came a habit - couldn't be scheduled, we were just too busy to have meetings but somehow happened every day!
Now - every and each project started with "brain storming", two days to two weeks depending on size of the project, always far away from office, we preferred a ski resort my previous employer owned. Those were basically 24h/day "meetings" where everything(?) was laid out - who does what, etc. Food, beer, sauna, whatever also available 24h/day - tough but fun and in five years all our projects very successful. And some of them were huge - changing the whole bank infrastructure to another platform - hw/sw, building a country wide ATM, bringing big manufacturing sites to "just in time" with global suppliers and markets, building a new trading center, and so on..
Also, all agile, no titles, no managers, no leaders, etc - everyone was a resource! I miss that, seen that only once after that - another very large and successful OS project!
IMHO - the problem today, be it Scrum, agile, whatever is trying to make it too formal! The execution must be formal for a reason, regulations, compliance, laws, documentation, etc but not how the results are archived! Really a "management" problem - just wondering?
The Six Sigma, etc fail not because they are bad ideas but no CEO, CSO, CIO, Cxx or even a line manager and don't even mention marketing / sales has time in any decent size company for all the meetings, agreeing every small detail and explaining to everyone what they really think (if anything) about this and that - logistics, scheduling and costs go through the roof. Seen that causing huge problems (and lost projects) in too many large companies!
And, please, don't get me started about certificates, are they Scrum or A+ or C**** or MS** or IT** or ISO***** or IEEE**** - I and maybe everyone else have a lot of "book knowledge" but no idea what it really means!
But what I know - it definitely doesn't mean to follow something written down any and all time, all environments are different!
I used to work with hardware designers, mostly just for performance and reliability but also some on controller level en/decryption - part of performance issue simulation and modeling. I don't know the current development but at that time they had controllers talking to each other - mirroring, who had what, what was already on disk or still in buffers, whatever. Coming back from a power failure and resynchronizing, blah, blah. And of course keeping the OS's (on two separate systems!) up to date.
Anyway, at that time if the sectors did go to the same track they were streamed, not written separately - sometimes more than what belonged to one write, controllers optimized / reordered the writes writes and reads. Actually some OSs / I/O subsystems do that already on channel program level. The reason you can sometimes see amazing throughput. If the next sector didn't fit to that track then of course there was a delay even with more than one arm - well, maybe, sometimes!
Back to the topic, you are right - any entropy makes it easier, not easy but easier, to decrypt, interpret, decipher, translate or just to find patterns and/or statistics - it is just math when talking about computers or something else, behavior, chemical bounding, whatever when talking about nature.
Probably never. Look at Motorola, Ericsson and even Nokia (and Siemens) history - it just keeps repeating. These are the phone companies I have been working in/with over years (30+) and it's always the same pattern, again and again. I'm sure that it is about the same with others too, just don't have any experience of those.
300+ developers for phone software? Plus 300+ managers of course, we are talking about a phone company? And their very expensive, VERY slow process, methods and tools as Six Sigma, ClearCase (a Moto inside joke as getting a permission to print your code listing!), and so on? Next mess, next lay offs - I hope not but..
This is interesting. How would we classify the earlier IBM OS source, MVS, VM, etc , they were "open"? They are now used for example on x86 systems. I changed and tested a lot in 70's and 80's - found a couple of bugs. Of course you were on your own if made some changes which didn't get implemented to original. BUT you couldn't sell it, just nothing preventing showing the changes to someone and they adapting the same changes - we did that a lot even between competing companies / corporations.
It was nice as long as it lasted, many ways as good as GPL, BSD, etc (created a lot "synergy") and in some ways even better, better documented, heh!
Yes, it is really nice! I wonder, moving away from mainframes a long time ago, does such systems exist in smaller systems?
In 70's and 80's we had a configuration management / source control system which kept all the requirements, source, test and production documentation synchronized. Every version in design, development, test and production was linked the way you could jump from bug report to source to requirements and look all the tests it had gone through with results, when, etc. Or vice versa, from requirement and to look the test results or any reports on production version including the performance reports, capacity estimates, etc.
Our development, QA and production people loved it, you push the function key (no mouses then!) and spec was there, you changed a database, relevant structures, access statements, screen formats, list of applications, whatever showed up. You assigned the change to test (QA), relevant applications were compiled, databases built, tickets to QA and reports were created and submitted to relevant persons with a comment what and why you changed, was it because of a bug, a new requirement, a response to a QA report, whatever.
Oh yes, and every code change and unit test was recorded to the system requiring an explanation. So a person left to a vacation, was fired, died, whatever - next one could pick up almost immediately, just a little reading.
I created the first one in our company and have missed it a lot after moving mid size and small systems - not small by computing power but how they didn't (don't?) have real CM/SC systems (please, don't mention Clearcase, Testdirector, Remedy and such - not in same class!). Actually with correct authorization you were able to see the business decisions, budgets, timelines, who did what, where and when via application requirements - finding best person to contact when something happened in production was very easy. It cut of a lot management overhead - maybe that's why not all the managers liked it?
Actually it seems that people on this thread are saying the same thing put looking the solution from different directions. And of course there are different issues, not so much "code correctness" but forced by OS, subsystems, interfaces, etc. And also especially in numerical world - small differences which are under level you can catch in unit tests can through the whole system upside down. Seen that and sometimes very difficult to find the culprit. Seen that in some financial applications too - big ones, small are usually easy. Seen that in memory managers, protocol stacks, etc.
Anyway - I agree that any system can be designed to be modular, the "core", be it OS or a subsystem can be tested and every "server". "process", whatever should be easily unit tested. Now - it is not the way people are educated, trained or even required to design today? Today the method is to create millions of APIs, methods, objects, etc instead of few, simple, well tested interfaces so testing requirements have grown exponentially - unit testing something which has one input / one output is easy to automate, try it with a huge number of combinations, objects, methods, etc which may or may not be depend and/or controlled by some other application, subsystem or even other OS in case of virtual systems!
TDD is good but the whole system has to be designed for that and (just!) for example.NET (and other such!) makes it a little more complicated than it has to be. Too many intricacies in "subsystem" and you don't know where they are, how they work, what and how they try to "manage"! Real problem especially for performance and performance is a definitely a quality parameter - often very critical one. And of course, their behavior changes from version to version?
Maybe Mundie found old stories from "Olivetti & Oracle Research Lab (ORL), which was then owned by Olivetti and Oracle Corporation. In 1999 AT&T acquired the lab" - they had interesting environment where everything followed you - music, phones, whatever, and you had your own avatar to show and connect. Some good came out of it as the free VNC, of course until AT&T closed the whole thing, they don't need research?
Now, "virtual" presence is kind of weird, how to define it? Let me explain - in 80's I had a "virtual presence" in several large customers systems I was kind of supporting. So, I was present in those systems, banks, manufacturing, government, academia, etc in real time, all the time(!) - through our monitoring and support system using any office computer, my own home computers (well, home computing is not new now?), our PBX connecting either the national telephone network or the satellite network to my pagers, the "world wide" X.25 network so I could access any of those system even from other side of the globe.
Tells you something of the academia - five years later just for fun connecting to my "avatar" in their system and it still was there !! with all the access rights to all their systems! I had to call them and tell the new operators, sorry admins, how to disable it.
So - it is cool and 3D will be even better but not anything new except the bandwidth needed, the problem is how you manage the avatars once they go roaming around?
It's weird then - just about three years ago I designed and coded the guts to a decent size switch which has been running over an year now in Windows XP and 2003. Many threads have crashed, by bad data, by coding errors, by whatever but the system keeps running and restarting the threads, either automatically or by command, depending on the configuration. The nice thing is that in case of coding errors, because the code is in separate DLLs by function, the DLL can be changed and the threads can be restarted with new code, meanwhile the system just keeps processing other transactions which don't need that specific functionality. I'm missing something?
It was designed based on what I did for Unix 12 years ago (adapted to Linux 3 years ago), up in some places about 5 years now. Both systems use external libraries, mostly Imagemagic, MySQL, Postgres or MSSQL depending on customer and some of our own compression, security, SNMP and communications (mainly for HTTP(S) traffic, pure IP(TCP/UDP) just keeps working) have had some problems but their libraries can be changed in flight and the (thread) code using them can be terminated, changed if needs to and restarted - SQL used for auditing, not processing on switch level so it is queued while fixing the auditing problems or even changing the audit formats, no need to stop the system itself. I'm really missing something?
Of course you have to do your own memory management but you would do that anyway in any fast, secure, 24x7 SMP and multi-node system, not difficult even on the top there are.NET applications? So - I don't like so much Windows but it doesn't mean that you can't build such systems on it, it just takes a little more effort than in Unix / Linux. Give me back the MVS or Tandem - excluding hardware errors it is easy to make recovering systems and even single hardware failures are just a small glitch which can be take care easily.
Or maybe not, Qt, Boost seem good choices based on your experience, but it really depends. The best hw emulators (and simulators) I have seen / done / supported were written in LISP, yes, not new nor trendy.
And there is of course Erlang, it has all in language, is natively threaded even between nodes if desired, has very good database(s) natively, and so on - but not new nor trendy. Much less coding, configuration, etc effort than in most languages but maybe needs some time to get used.
Very good point. Actually for example Chicago (middle of everything in US, kind of) has the train stations in city. Handy, except in winter but L and taxis are available and not very expensive. Try to get to Chicago airports (Metra is not bad but not (yet?) perfect) - by car on rush hour it may take hours, traffic is sometimes just too bad. And then, of course, stand on line - sometimes a long, long time.
In Europe the stations are really in city, even for example in London, Frankfurt, Paris, etc the connections to airports are not too bad. One reason I prefer TGVs over plane, nice environment, go get a drink or meal, relax, quiet, roomy, very easy to have your stuff, in some places it is even waiting in hotel before you. I just love trains but busses, trams, other public transportation can be good (or bad) depending of the public attitudes. Still wonder why so many people in San Francisco insists to have a car, a real pain in parking, etc when it really is a walk town and the buss system is, if not perfect, nice?
Anyhow, a TGV through California makes sense (IMHO should run from Vancouver BC to San Diego!), I would use it every time instead of driving 5 which is a long way and can be interestingly challenging sometimes, sudden fog, the smell (bad in some places), boring, etc or, SFO, LAX, SAN are not too bad but if I can just step to the train, sit comfortably, get drinks / meal, read, sleep, etc wins every day.
Wan't to try to get a judge to do that? Just send (by mistake, of course) a bunch of documents as attachments and, because you don't really know who is irs.gov as a person and the "person" might do something wrong with the e-mail you sent, ask the judge to close the e-mail. Good luck! By the way, nothing to do with First Amendment or such, just a technicality.
One of kids born the hottest day in 50 years, one born the coldest day in 80 years, one between - don't see any difference. Now, of course, if I would need research funds I might start seeing the differences - heh! Or maybe it was the size of the car in which they were taken home from hospital (need a car analogy in Slashdot) - have to start the research, just have to get maybe government funding for it.
So, let's not get carried away. Let's close phishing@irs.gov or any such e-mail addresses, no change? They still can "speak"?
That's good! Mail poisoning is a huge issue today!
So, last time I sent a wrong paper to bank I should have asked the judge to close the mail delivery to that bank - have to remember! It should be easy, not even have to ask the post office for owner of the address!
Now, the damage is already done! I wonder who and how covers it to the innocent party (parties?) My e-mail connection is worth a couple of millions, at least, even a short cut would cause huge (future) losses and of course, the trauma - a jury probably would understand that and award me those millions except how to sue a judge / justice system? I might then get the government (tax payer!) relief help (money!) to continue my business - so what I wasn't ready for recession, sorry, I mean for justice(?) - doesn't sound right, didn't have a backup plan for it?
There is today a real need for justice system which would understand technology, at least on basic level. And I wonder how the bank was even able to send to a person who they assumably don't know - if they know who was the receiver, what's the point? Total screwup! No excuses, sorry, there are any amount professional IT people who can make this type of mistakes very difficult, only intentional e-mails (or whatever) can be delivered and then it's another issue totally. Maybe the bank could take the cost of 10 of them out of the CEO salary, he/she wouldn't even realize so small sum!
Google was absolutely right and maybe, just to show how nice they are, they could fight this on behalf of the e-mail owner? Maybe it would even be a good idea, otherwise they may start getting these court orders more in future? If a judge can just order this kind of e-mail (or any!) closing and giving the customer names it definitely will change how the Internet ( or post office or just speaking aloud) works today.
Well, maybe some do. It's not the camera, even with film you might use some very low level cameras as Holga, etc. Or the most simple, a box just with a (pin)hole and get really beautiful pictures which, by the way, sell. Maybe see http://www.irenestauffer.com/blog/ - some of those are cell phone pictures (very crappy camera!) but pictures come right - it's the end result which counts. It's not always the sharpness, the correct colour, balance, whatever which makes a pleasing picture but, of course, tastes vary. I personally love National Geography style, very sharp, correct colours, deep sharpness, etc but can also enjoy pictures made by a pinhole camera with all the weird effects but nothing can't beat that luminosity, not even Photoshop (or Gimp) manipulated. Once you see those blown out to or over 40 inches the right way - they are great ( http://www.irenestauffer.com/ )
Yes, theoretically it is correct as Pascal strings are defined / described. This is an ages old argument but many languages (many "Pascals") have "strings" which have a descriptor or length not limited to 256, the programmer just doesn't have to take care of it. And they have no separate API or whatever for different "strings", mostly they are actually just handled by compiler. The pain of delimiters is bad, have to have another class or whatever to handle strings as continuous memory (the implementation may be whatever as in Haskel, etc.) And especially with Unicode or for example protocol stream it means scanning everything, every time instead of letting hardware to do it's work - great for one (maybe) but when talking thousand and thousands at the same time it eats cpu cycles which, especially in interface controllers, are already used too much.
There are special hardware solutions but they are not very common, computers still (mostly) work on bit level (there are exceptions). The delimiters are bad even other way, what is a delimiter for one class of data is / may not be a delimiter but data in another class of information so transformations can get sometimes tricky if data can not be trusted - most common have been overflows of zero limited strings and/or terminators in protocol strings. Or zero and here and maybe the the non-breaking space in HTML or whatever.
Actually I like C (and assembler) because of the power over code, but it definitely needs more code and more caution to use strings in those languages than in Pascal, PL/I, ADA, and other languages where strings are transparent (not Pascal strings as defined). Many interpreted languages can handle strings without terminator so.. All high level languages should (IMHO) have a class of string which is transparent in compiler, not some ever changing API, proven going from one octet to multiple for Unicode, etc - old (new?) style just doesn't seem to work too well - causes problems as this.
Agreed, it is a shame, the null terminated came in C very late in game when byte counting wasn't too expensive any more. I really don't get the replies of only 256 byte (octet?) max length? Pascal (PL/I, Algol, etc) strings can have up to unlimited length depending on language, computer, etc implementation. Any modern(?), intelligent language should be able to handle a continuous string of bytes (mostly octets but even NLS and other "strings") without any terminator or special API, it's so lame! And it is dangerous - my hair is gray fixing programs where the null was overwritten for some reason or where the scanning, input, whatever was depend on some such terminator instead of hardware termination based on length, signal, memory boundary, memory protection, etc.
Back to the topic, CAs are in business for money, not to make things more secure or so. That's mostly the problem in computing today, you think that security certificates, PCI, even most of other regulations, etc are there to enhance security and I have a bridge to sell. They are there to make money, sell a product, shift the blame, whatever but definitely not for security which is much, much more than just some technology.
These announcements are kind of funny - how do you ever verify whatever they promise? These are "top secret", "for eyes only", "Heimat - oops, homeland security", "against terrorists", blah, blah systems so no public information, control, whatever needed, you can feel safe now - we don't do it!
Seriously, if they want to use all the money to track me, they are more than welcome as long as it isn't my tax money! I might allow the same as for election hold in my taxes but only if I can use the satellite tracker, our neighbor is hiding behind a fence and may be planning something evil?
Performance == money OR at least it used to be that way. Seriously, there is so much wrong in "performance" in IT today that it isn't even funny! I myself miss the days when IT was for profit, a profit center with own budget, autonomy, etc as other business units in any company / corporation. It really changed when "kids" came to this business, all they wanted was eight to five, a paycheck, a managers blessing for their existence, a carrot once or twice a year, you know? Some of them carried grades from economy schools, had degrees in statistics, even had courses in speaking and were able to convince the middle management that instead of positive buddgets the paper metrics were the way to promotions, etc - the top management really didn't and doesn't have time to look details so anything what looks good must be good?
Seen these "performance metrics", "performance reports", "performance evaluations" (by managers who once a year need to know what their subordinates do - very weird?), "performance statistics" (you know, statistics don't lie!), and so on over years - have seen the results, I'd give about (at most) five years to any organization / department which starts that way, then there will be reorganization, termination, whatever - seen that about 20 times in small and large corporations over 40 years in IT.
Amazingly, not so much in IT (excluding very few) but in other organizations which are still profit centers, they still are going strong?
This is funny, even if it would say "can not" would be a false statement because it definitely "can" be used. It they would say something as "is not allowed to create a tethering connection" or so, that might be different (INAL). Now, who would buy it then - tethering means connecting a device, so any other device as bluetooth earphones, etc would be prohibited by contract. IMHO something should be done to these contracts where unlimited is not unlimited, where connection means a connection as long as it makes money for company, where a payment means now if it is you and when ever (next year?) they feel paying if it is the company, etc - not written down anywhere, of course, but interpreted that way in any dispute, even by courts and judges? Where the promise to return equipment seems to mean demounting, taking apart, packing, not breaking delicate equipment, climbing three story houses, etc even it's not said in contract but assumed by a company (a hint, a satellite tv!)
I wonder what would happen if they would write in plain, clear text what and what not is allowed? Would anyone still buy from them?
Ok, enlighten me - is it like Sidekick from Borland a long, long time ago. That combined with Paradox, etc and with some other non-Borland tools / programs (relational databases, statistical tools, mail systems, Brief / some source / configuration control systems, too many to list..) were something I still can't find a replacement. Especially one which would run in a 8-12Mhz (not GHz) system with a couple of kilobytes of memory? In which I can chat, transfer files, etc on any network? Let it run on background, blah, blah, ..
Seriously - Tomboy, MONO, whatever, we need those, not the fights. If they are overblown, protected by patents, whatever doesn't matter so much, we can always make another, or?
Yep - an API is an API but still, how can you patent an API, some of my APIs before Microsoft even existed look a lot like some in .NET, Windows, whatever - who cares? Anyway - MONO is just one subsystem, what's the big deal? You don't like it, as I don't, use something else. I find MONO, .NET, etc bloated, full of stupid decisions, mostly slow, made for inexperienced programmers who need someone holding their hand, who (still) live in dreams that technology is more important than thinking and design, etc - or for managers who really don't know better but believe everything the vendors (the larger vendor, the better) feed to them or, a credit for .NET and ilk, for some CS persons who are too lazy to create anything by themselves but need something for next term paper, grad paper, whatever.
Another problems I see here is that MONO, .NET, Java, Python, Windows, Linux, etc are compared as equals - they all are very different things. Yes, I know, even Microsoft hasn't yet made up their mind what .NET (and MONO) really is - it definitely is not a language but it also definitely is not an architecture or even a common framework but neither is Java. And maybe it is something great what we haven't seen yet? I personally love to follow frameworks and architectures but as building blocks for systems to stay in as simple components as possible. This just by long experience, makes life much easier! After reducing the system size and code base always over 50% in command level CICS (who knows what that is?) or Pathway or whatever transaction systems, in big (state/country wide) .NET wireless systems and/or Java/web mess, etc with great pain, fixing their "managed" / controlled memory and other performance problems caused by "experienced specialists", etc any simple (not simple by functionality but by design/manageability) gets my vote.
Back to the subject, MONO is not bad by itself, the code actually shows that the developers (mostly) know what they are doing, it may bring more users to Linux (not that anybody cares but..), it actually challenges Microsoft instead of giving them more benefits / control they already have, and so on.
Interesting thread, I have enjoyed reading it and I agree, hardware matters. I haven't done avionics but even in manufacturing and business if you need absolute(?) correctness you have to code for that. Now - I could argue the coding technique, it really depends on hardware / compiler, but you are basically correct that the logical correctness is not enough. I have seen this happen in mainframes with all the hardware checks - ouch, took two weeks to find, a execution sequence caused an error in one of 8 pipelines (which system had 8 pipelines in 70's?) which caused ONE BIT change almost randomly in memory. And so on, more on manufacturing (harsh!) environment and even in NonStop systems - hardware just doesn't always work as it was supposed to so you have to code for all(?) exceptions using checkpoints, parallel execution and comparison, branch backs, partial or full restarts, etc, etc..
Anyway, IMHO Dijkstra was right in many things. We could use more intelligent programming, I'm tired (over 35+ years) "fixing" programs which are overly long and complicated for the task they were (supposed) developed. And try to find (outside of the open source) developers who can code drivers, memory manager routines, communication stacks, decent queuing, etc without some convoluted DDK/SDK - good luck!
I used to work in a company like that before "Scrum" was even a word. 10 minutes, even the sales dropped in, helped a lot. We had several large customer projects going, too few people and still managed it. The difference - not scheduled Scrum meetings but it came a habit - couldn't be scheduled, we were just too busy to have meetings but somehow happened every day!
Now - every and each project started with "brain storming", two days to two weeks depending on size of the project, always far away from office, we preferred a ski resort my previous employer owned. Those were basically 24h/day "meetings" where everything(?) was laid out - who does what, etc. Food, beer, sauna, whatever also available 24h/day - tough but fun and in five years all our projects very successful. And some of them were huge - changing the whole bank infrastructure to another platform - hw/sw, building a country wide ATM, bringing big manufacturing sites to "just in time" with global suppliers and markets, building a new trading center, and so on..
Also, all agile, no titles, no managers, no leaders, etc - everyone was a resource! I miss that, seen that only once after that - another very large and successful OS project!
IMHO - the problem today, be it Scrum, agile, whatever is trying to make it too formal! The execution must be formal for a reason, regulations, compliance, laws, documentation, etc but not how the results are archived! Really a "management" problem - just wondering?
The Six Sigma, etc fail not because they are bad ideas but no CEO, CSO, CIO, Cxx or even a line manager and don't even mention marketing / sales has time in any decent size company for all the meetings, agreeing every small detail and explaining to everyone what they really think (if anything) about this and that - logistics, scheduling and costs go through the roof. Seen that causing huge problems (and lost projects) in too many large companies!
And, please, don't get me started about certificates, are they Scrum or A+ or C**** or MS** or IT** or ISO***** or IEEE**** - I and maybe everyone else have a lot of "book knowledge" but no idea what it really means!
But what I know - it definitely doesn't mean to follow something written down any and all time, all environments are different!
Sorry about that redundant - I forfeit my points by answering, I meant to add insightful but not enough coffee yet so my finger slipped.
Yes - it is insightful!
@kasperd, good replies! I enjoy reading them.
I used to work with hardware designers, mostly just for performance and reliability but also some on controller level en/decryption - part of performance issue simulation and modeling. I don't know the current development but at that time they had controllers talking to each other - mirroring, who had what, what was already on disk or still in buffers, whatever. Coming back from a power failure and resynchronizing, blah, blah. And of course keeping the OS's (on two separate systems!) up to date.
Anyway, at that time if the sectors did go to the same track they were streamed, not written separately - sometimes more than what belonged to one write, controllers optimized / reordered the writes writes and reads. Actually some OSs / I/O subsystems do that already on channel program level. The reason you can sometimes see amazing throughput. If the next sector didn't fit to that track then of course there was a delay even with more than one arm - well, maybe, sometimes!
Back to the topic, you are right - any entropy makes it easier, not easy but easier, to decrypt, interpret, decipher, translate or just to find patterns and/or statistics - it is just math when talking about computers or something else, behavior, chemical bounding, whatever when talking about nature.
Probably never. Look at Motorola, Ericsson and even Nokia (and Siemens) history - it just keeps repeating. These are the phone companies I have been working in/with over years (30+) and it's always the same pattern, again and again. I'm sure that it is about the same with others too, just don't have any experience of those.
300+ developers for phone software? Plus 300+ managers of course, we are talking about a phone company? And their very expensive, VERY slow process, methods and tools as Six Sigma, ClearCase (a Moto inside joke as getting a permission to print your code listing!), and so on? Next mess, next lay offs - I hope not but..
This is interesting. How would we classify the earlier IBM OS source, MVS, VM, etc , they were "open"? They are now used for example on x86 systems. I changed and tested a lot in 70's and 80's - found a couple of bugs. Of course you were on your own if made some changes which didn't get implemented to original. BUT you couldn't sell it, just nothing preventing showing the changes to someone and they adapting the same changes - we did that a lot even between competing companies / corporations.
It was nice as long as it lasted, many ways as good as GPL, BSD, etc (created a lot "synergy") and in some ways even better, better documented, heh!
Yes, it is really nice! I wonder, moving away from mainframes a long time ago, does such systems exist in smaller systems?
In 70's and 80's we had a configuration management / source control system which kept all the requirements, source, test and production documentation synchronized. Every version in design, development, test and production was linked the way you could jump from bug report to source to requirements and look all the tests it had gone through with results, when, etc. Or vice versa, from requirement and to look the test results or any reports on production version including the performance reports, capacity estimates, etc.
Our development, QA and production people loved it, you push the function key (no mouses then!) and spec was there, you changed a database, relevant structures, access statements, screen formats, list of applications, whatever showed up. You assigned the change to test (QA), relevant applications were compiled, databases built, tickets to QA and reports were created and submitted to relevant persons with a comment what and why you changed, was it because of a bug, a new requirement, a response to a QA report, whatever.
Oh yes, and every code change and unit test was recorded to the system requiring an explanation. So a person left to a vacation, was fired, died, whatever - next one could pick up almost immediately, just a little reading.
I created the first one in our company and have missed it a lot after moving mid size and small systems - not small by computing power but how they didn't (don't?) have real CM/SC systems (please, don't mention Clearcase, Testdirector, Remedy and such - not in same class!). Actually with correct authorization you were able to see the business decisions, budgets, timelines, who did what, where and when via application requirements - finding best person to contact when something happened in production was very easy. It cut of a lot management overhead - maybe that's why not all the managers liked it?
Actually it seems that people on this thread are saying the same thing put looking the solution from different directions. And of course there are different issues, not so much "code correctness" but forced by OS, subsystems, interfaces, etc. And also especially in numerical world - small differences which are under level you can catch in unit tests can through the whole system upside down. Seen that and sometimes very difficult to find the culprit. Seen that in some financial applications too - big ones, small are usually easy. Seen that in memory managers, protocol stacks, etc.
Anyway - I agree that any system can be designed to be modular, the "core", be it OS or a subsystem can be tested and every "server". "process", whatever should be easily unit tested. Now - it is not the way people are educated, trained or even required to design today? Today the method is to create millions of APIs, methods, objects, etc instead of few, simple, well tested interfaces so testing requirements have grown exponentially - unit testing something which has one input / one output is easy to automate, try it with a huge number of combinations, objects, methods, etc which may or may not be depend and/or controlled by some other application, subsystem or even other OS in case of virtual systems!
TDD is good but the whole system has to be designed for that and (just!) for example .NET (and other such!) makes it a little more complicated than it has to be. Too many intricacies in "subsystem" and you don't know where they are, how they work, what and how they try to "manage"! Real problem especially for performance and performance is a definitely a quality parameter - often very critical one. And of course, their behavior changes from version to version?
Maybe Mundie found old stories from "Olivetti & Oracle Research Lab (ORL), which was then owned by Olivetti and Oracle Corporation. In 1999 AT&T acquired the lab" - they had interesting environment where everything followed you - music, phones, whatever, and you had your own avatar to show and connect. Some good came out of it as the free VNC, of course until AT&T closed the whole thing, they don't need research?
Now, "virtual" presence is kind of weird, how to define it? Let me explain - in 80's I had a "virtual presence" in several large customers systems I was kind of supporting. So, I was present in those systems, banks, manufacturing, government, academia, etc in real time, all the time(!) - through our monitoring and support system using any office computer, my own home computers (well, home computing is not new now?), our PBX connecting either the national telephone network or the satellite network to my pagers, the "world wide" X.25 network so I could access any of those system even from other side of the globe.
Tells you something of the academia - five years later just for fun connecting to my "avatar" in their system and it still was there !! with all the access rights to all their systems! I had to call them and tell the new operators, sorry admins, how to disable it.
So - it is cool and 3D will be even better but not anything new except the bandwidth needed, the problem is how you manage the avatars once they go roaming around?
It's weird then - just about three years ago I designed and coded the guts to a decent size switch which has been running over an year now in Windows XP and 2003. Many threads have crashed, by bad data, by coding errors, by whatever but the system keeps running and restarting the threads, either automatically or by command, depending on the configuration. The nice thing is that in case of coding errors, because the code is in separate DLLs by function, the DLL can be changed and the threads can be restarted with new code, meanwhile the system just keeps processing other transactions which don't need that specific functionality. I'm missing something?
It was designed based on what I did for Unix 12 years ago (adapted to Linux 3 years ago), up in some places about 5 years now. Both systems use external libraries, mostly Imagemagic, MySQL, Postgres or MSSQL depending on customer and some of our own compression, security, SNMP and communications (mainly for HTTP(S) traffic, pure IP(TCP/UDP) just keeps working) have had some problems but their libraries can be changed in flight and the (thread) code using them can be terminated, changed if needs to and restarted - SQL used for auditing, not processing on switch level so it is queued while fixing the auditing problems or even changing the audit formats, no need to stop the system itself. I'm really missing something?
Of course you have to do your own memory management but you would do that anyway in any fast, secure, 24x7 SMP and multi-node system, not difficult even on the top there are .NET applications? So - I don't like so much Windows but it doesn't mean that you can't build such systems on it, it just takes a little more effort than in Unix / Linux. Give me back the MVS or Tandem - excluding hardware errors it is easy to make recovering systems and even single hardware failures are just a small glitch which can be take care easily.