The Elcomsoft company hired him and manufactured the lockpick. Dmitry is not even programmer, he just developed the algorithms (they are part of his Ph.D thesis).
Computer has the size of a mouse? Big deal.
How about the computer-sized mouse?
About 10+ years ago I worked for the Russian cosmic agency and we had some russian clones of 8086 PC XT, equipped with original russian mouses. Well, it had steel ball about 5 cm in diameter, cable was about 1 cm tick, the mouse size was about 20 cm long and its weight was about 1 kG (or 2 pounds).
Well, probably, it was designed for some special military purposes:)
Because of the size, we called it "rat", not mouse.
A human simply describes what the program needs to do, and it just spits out an application.
The problem is that English is probably not the best language to describe "what the program needs to do". Some programming languages are much better at this.
We call the language "natural" when it servers human needs naturally. In this sense, the programming languages that fit the problem area naturally are "natural languages" too...
1) Text mode is not the same as CLI. Don't mix those concepts.
2) By some reasons, seems like it's much easier to write bad GUI than to write bad text-based UI. But that doesn't mean any GUI is bad just because it's GUI.
3) I don't think it's harder to operate our programs in Win2000 than in Win95, especially in regards to command line.
4) Going with Linux is good choice, indeed. However, CLI is definitely not the factor that drives developers from Windows to Linux. I have the same bash under both Win2000 and Linux and use the same perl one-liners.
5) Bonus trick. How to enable command-line completion in standard Windows 2000 command-line window:
Start regedit, find the word "CompletionChar". By default it's not set. To set <TAB> as a completion character, set the CompletionChar value to 9. That's all!
I remember, some time ago there were some holy wars on the USENET - Win95/NT vs. OS/2. One of the strong arguments for OS/2 camp was "do you know what's inside your typical ATM machine?"
Later, I heard that most of the ATMs now use QNX instead of OS/2. Well, actually I heard it from QNX fan, so I take it with a grain of salt.
So, could someone enlighten me - what's inside those ATM boxes now and why they are so stable and reliable? Hmm... Probably, I should install one at home:)
Prokudin-Gorskii patended his method in England, in 1922. More specifically, he patented the optical system allowing to get 3 negatives simultaneously using 3 colored filters.
I found this information on the "Most important inventions in phorography" page, at http://www.photodome.ru/History/History2.html (unfortunately for the majority of slashdotters, the page is in Russian)
It's not correct. Your word "solved" implies some definitive best-move strategy for every position. There's no such thing. The best backgammon programs use neural networks and play really well, but it doesn't mean their play is optimal.The only part that was "solved" is the ending.
From the beginning of 90-s, the best backgammon programs play at a very high level and almost match the best human players. Currently, two best programs are JellyFish and Snowie. But they are still considered to be a little bit weaker than world champions. I would say, the same situation as with best chess programs and best chess players. They are almost equal, but humans are still better, despite that Kasparov-Deep Blue match:)
The/Zc:forscope option tells the Visual C++ compiler to follow the standard C++ definition for the scope of variables declared in a for loop.
The reason why it's not the default setting is obvious. Think about the code written before the 98 C++ standard. The C++ definition used to say the scope of variable was the scope that surrounded the for loop. If you change this rule, some code will not compile, at best. AFAIR, windows header files require the "old" C++ convention, so VC supports it by default.
-In C, I can be assured of minimal compiler overhead/bloat
What makes you think that C++ is bloated? I used to work on some realtime systems, and don't think the code was bloated. We used assembler inserts in the internal loops and always checked the machine code generated. We didn't use STL, or RTTI or other new stuff, though.
-In C, I can use modules/libraries that were written in assembly language without having to worry about name-mangling or things like that
You can have the same in C++
-With C, I don't have to search through a class-browser to find a function that I need
I don't see a big difference between finding a function and finding a method. If you can leave without code browsers in C, you will not need them in C++.
Function overloading makes life more difficult, though; you're right here.
-I can actually use C to write an operating system
Well, we all know some operating system written in C++, but I would not touch it;)
It's not like I'm advocating C++. I personally see some big problems with C++ and its OOP. But your list of problems is definitely not something I experienced, and I've been working with C++ since the end of 80-s.
The evaluation functions for Go are not so bad, actually. The biggest problem is branching - the huge number of possible moves from any given position in the opening and middlegame. The main strength of chess programs still comes from the depth of tree search + heuristics used to cut the bad variants + heuristics used to find good variants first, that helps a lot in alpha-beta procedure.
Deep Blue, for example, used the specialized chess processors working in parallel, so they were able to build deepest tree. BTW, IMB usually don't advertize this fact, making you believe it's so good because of the central processor, RS 6000.
Back to Go, it's almost impossible to cut the tree and the number of branches quicky exceeds any computer capabilities available today or, say, in 10 years from now.
Fortumately, Go programs currently have very interesting heuristic algoritms, trying to simulate the process of human Go player thinking... They are still weak, but even the fact that they play better than weak human kyu players - it's already amazing to me ( I personally tried to write my own Go player about 10 years ago, without any significant success:)
Hmm... I don't agree. The endgames are really the easiest part for computer, you're right. But, IMHO, they are not completely deterministic. I have 1 dan and couple of my friends have 5 and 6 dan (amateur) and I've seen them losing seemingly even games to high-rank pros in the ending,10 or even 20 points.
From my experience with current Go programs, they are not so bad in the opening. They have huge joseki (standard opening) databases and very elaborated estimation functions.
The midgame is by far their weakest part. The best programs I tried played the openings as strong kyu or even weak dan human player, but the midgame was significantly worse, probably on the level around 5-10 kyu. I heard that one of the programs is officially certified as 5 kyu player, but it might be just marketing, I don't know. For me, it's usually interesting to play with programs giving them the maximum handicap (9 stones). I can easily win if I play tricky, but it's not easy if I play "fair" (not counting on the opponent's error).
Long ago, Mr. Ing offered 40 million Taiwanese dollars (over 1 million USD) to anyone who can write a Go program that can beat any Taiwanese professional. The contest ended in 2000, but I heard his son prolonged it recently till 2010. It's still very unlikely, though.
why would you architecturally want to invocate a JSP?
Mason sees each page as a set of components. For example, header component, then a table, where each row is a table_row component, then footer component. Lets' say, to render each table_row, we need x, y, z arguments. So, in the appropriate point of the table template you put table_row(x,y,z). One should not wrap this thingy as a Java bean (or Perl module), beacuse it belongs to presentation layer, and it has some serious disadvantages to put any style- or presentation-related information in the Java (or Perl) code.
Of course, this component approach is not specific to perl/Mason. We (or any other big site) are doing the same thing with JSP includes too, it's just not as clean and less convenient when working with a team of frontend/backend developers.
Your remark about the number of independent vendors developing for Mason is correct and points to big Java/JSP advantage, indeed. Because of all the hype about Java, it's gained the critical mass and now we have all kinds of great App Servers, development tools, third-party components etc. A lot of good books, too. Also, it's much easier to find Java/servlet/JSP programmers than Perl/mod_perl/Mason programmers.
BTW, all these factors are the reason we're currently porting a huge site
from Perl/Mason to Java/EJB/JSP. I have somewhat mixed feelings about that. For small sites, I think mod_perl/Mason is a very good solution. But for big sites, Java/JSP is probably the way to go, mostly because of ease of language / teamwork organization / good development tools.
Learn to read, my dear anonymous troll. I'm talking about JSP, not about Java classes or EJBs. JSPs are not components and they don't support the concept of JSP invocation/arguments. You can only include one JSP inside another JSP, that's all.
BTW, the getInitParameter() is a very good example that shows the difference. Do you need to call getInitParameter (or whatever) from within your C or Java functions to get the arguments?
JSP is a spec not a product, true. So what? Control over the cache parameters is not the part of that JSP spec. I can control the behaviour of cache using Mason function calls - for example, set cache expiration by time, by condition, by explicit action. In case of JSP, it's all controlled by the app server, and from my experience - current JSP sever implementations (I'm using Tomcat and IBM WebSphere at work) are less flexible than mod_perl/Mason combination.
I will not comment on (1) and (2), but Mason has some advantages over JSP. Just couple of features:
- Mason components are real components, you can invoke them, passing the arguments, unlike awkward JSP include mechanism
- Mason components have the init section, where you can put all the initialization stuff, and the args section, where you define all the arguments expected by the component and their default values
- Page caching mechanism is superior to JSP
I agree about the separation of business logic and presentation logic - it's very important, indeed. However, you are not getting it for free with Java/JSP. In either case, be it Java or Perl, it's responsibility of programmers and not the feature of framework (EJBs provide such a feature, but that's another issue).
Every couple of years the russian press publishes stories like that. Nothing new.
IMHO, Gagarin was the first man in space. An this is why:
Too many people were invloved in the Soviet space program - thousands and thousands of ordinary people, engineers and technicians, so I don't see any possibility to hide such a big event.
Also, some well-known people have been working with Korolev Constructors Bureau since early 50-s and they explicitly state - Gagarin was the first cosmonaut. Apparently, there's no reason for them to lie today. The USSR doesn't exist anymore and the KGB (or whatever they call it now) doesn't have enough money and, more important, not enough reasons to support the old Soviet propaganda.
So, were all those silly conspiracy theories come from? Georgy Grechko, one of the most famous russian cosmonauts, told once, that before Gagarin they often used the "Ivan Ivanovich" dummies for the test launches... Very often, some random witnesses of landing mistook the dummies for dead people. Later, the engineers decided to print the word "DUMMY" on them, to avoid those mistakes:)
Anyway, it might be one of the roots of the pre-Gagarin cosmonaut legend.
There is no reason to have cameras on streets or driveways. There is nothing to steal on the street.
Oh yeah... I work in SF and before moving to the current building our CEO gave us some instructions:
- never leave building after 6pm alone
- always carry pepper-spray for self-defence (company supplied)
- before going out of the building dial 911 on your cell phone and hold your finger over the "Talk" button, so you don't need extra time to dial
In addition, there are free self-defence classes for employees.
It's not a joke, unfortunately. I'm sure most of my co-workers would like the idea of the surveillance cameras on the street.
Street is public place. Therefore, there's no privacy there, by definition.
All the Vostok pilots ejected from the capsules and landed separately by individual parachute. The descent capsule weight was about 3000 kG and the rate of its descent was too high for comfortable landing. According to the plan, Gagarin ejected from the capsule at an attitude of approx. 7000 meters and parachuted safely to Earth.
AFAIK, the Amreicans used water landing from the beginning, utilizing the water cushioning effect, so it was possible for the astronauts to land inside the capsule safely, even at comparatively high descent rate.
The trick here lies in the fact that analog methods inherently support parallel computations.
And what is even more important, analog parallel computations scale easily - their parallelism expands infinitely to meet your needs. Well, almost infinitely:)
The Elcomsoft company hired him and manufactured the lockpick. Dmitry is not even programmer, he just developed the algorithms (they are part of his Ph.D thesis).
We all are sex-addicts. It's a feature, not a bug.
About 10+ years ago I worked for the Russian cosmic agency and we had some russian clones of 8086 PC XT, equipped with original russian mouses. Well, it had steel ball about 5 cm in diameter, cable was about 1 cm tick, the mouse size was about 20 cm long and its weight was about 1 kG (or 2 pounds). Well, probably, it was designed for some special military purposes :)
Because of the size, we called it "rat", not mouse.
The problem is that English is probably not the best language to describe "what the program needs to do". Some programming languages are much better at this.
We call the language "natural" when it servers human needs naturally. In this sense, the programming languages that fit the problem area naturally are "natural languages" too...
The next step is literature.
2) By some reasons, seems like it's much easier to write bad GUI than to write bad text-based UI. But that doesn't mean any GUI is bad just because it's GUI.
3) I don't think it's harder to operate our programs in Win2000 than in Win95, especially in regards to command line.
4) Going with Linux is good choice, indeed. However, CLI is definitely not the factor that drives developers from Windows to Linux. I have the same bash under both Win2000 and Linux and use the same perl one-liners.
5) Bonus trick. How to enable command-line completion in standard Windows 2000 command-line window:
Start regedit, find the word "CompletionChar". By default it's not set. To set <TAB> as a completion character, set the CompletionChar value to 9. That's all!
Later, I heard that most of the ATMs now use QNX instead of OS/2. Well, actually I heard it from QNX fan, so I take it with a grain of salt.
So, could someone enlighten me - what's inside those ATM boxes now and why they are so stable and reliable? Hmm... Probably, I should install one at home :)
Prokudin-Gorskii patended his method in England, in 1922. More specifically, he patented the optical system allowing to get 3 negatives simultaneously using 3 colored filters.
I found this information on the "Most important inventions in phorography" page, at http://www.photodome.ru/History/History2.html (unfortunately for the majority of slashdotters, the page is in Russian)
Oops... Haven't noticed the "one of" part. My bad, sorry.
Close, but not correct. The oldest living language is FORTRAN, dated back to 1954.
I wonder how many of the successful web sites hide the secret FORTRAN power from their competitors :)
Oops... Sorry, I didn't mention that /Zc:forscope option works only in the new VC++ 7.0. See the article in the Visual C++ journal.
From the beginning of 90-s, the best backgammon programs play at a very high level and almost match the best human players. Currently, two best programs are JellyFish and Snowie. But they are still considered to be a little bit weaker than world champions. I would say, the same situation as with best chess programs and best chess players. They are almost equal, but humans are still better, despite that Kasparov-Deep Blue match :)
The reason why it's not the default setting is obvious. Think about the code written before the 98 C++ standard. The C++ definition used to say the scope of variable was the scope that surrounded the for loop. If you change this rule, some code will not compile, at best. AFAIR, windows header files require the "old" C++ convention, so VC supports it by default.
-In C, I can be assured of minimal compiler overhead/bloat
What makes you think that C++ is bloated? I used to work on some realtime systems, and don't think the code was bloated. We used assembler inserts in the internal loops and always checked the machine code generated. We didn't use STL, or RTTI or other new stuff, though.
-In C, I can use modules/libraries that were written in assembly language without having to worry about name-mangling or things like that
You can have the same in C++
-With C, I don't have to search through a class-browser to find a function that I need
I don't see a big difference between finding a function and finding a method. If you can leave without code browsers in C, you will not need them in C++. Function overloading makes life more difficult, though; you're right here.
-I can actually use C to write an operating system
Well, we all know some operating system written in C++, but I would not touch it ;)
It's not like I'm advocating C++. I personally see some big problems with C++ and its OOP. But your list of problems is definitely not something I experienced, and I've been working with C++ since the end of 80-s.
Deep Blue, for example, used the specialized chess processors working in parallel, so they were able to build deepest tree. BTW, IMB usually don't advertize this fact, making you believe it's so good because of the central processor, RS 6000.
Back to Go, it's almost impossible to cut the tree and the number of branches quicky exceeds any computer capabilities available today or, say, in 10 years from now.
Fortumately, Go programs currently have very interesting heuristic algoritms, trying to simulate the process of human Go player thinking... They are still weak, but even the fact that they play better than weak human kyu players - it's already amazing to me ( I personally tried to write my own Go player about 10 years ago, without any significant success :)
From my experience with current Go programs, they are not so bad in the opening. They have huge joseki (standard opening) databases and very elaborated estimation functions.
The midgame is by far their weakest part. The best programs I tried played the openings as strong kyu or even weak dan human player, but the midgame was significantly worse, probably on the level around 5-10 kyu. I heard that one of the programs is officially certified as 5 kyu player, but it might be just marketing, I don't know. For me, it's usually interesting to play with programs giving them the maximum handicap (9 stones). I can easily win if I play tricky, but it's not easy if I play "fair" (not counting on the opponent's error).
Long ago, Mr. Ing offered 40 million Taiwanese dollars (over 1 million USD) to anyone who can write a Go program that can beat any Taiwanese professional. The contest ended in 2000, but I heard his son prolonged it recently till 2010. It's still very unlikely, though.
Mason sees each page as a set of components. For example, header component, then a table, where each row is a table_row component, then footer component. Lets' say, to render each table_row, we need x, y, z arguments. So, in the appropriate point of the table template you put table_row(x,y,z). One should not wrap this thingy as a Java bean (or Perl module), beacuse it belongs to presentation layer, and it has some serious disadvantages to put any style- or presentation-related information in the Java (or Perl) code. Of course, this component approach is not specific to perl/Mason. We (or any other big site) are doing the same thing with JSP includes too, it's just not as clean and less convenient when working with a team of frontend/backend developers.
Your remark about the number of independent vendors developing for Mason is correct and points to big Java/JSP advantage, indeed. Because of all the hype about Java, it's gained the critical mass and now we have all kinds of great App Servers, development tools, third-party components etc. A lot of good books, too. Also, it's much easier to find Java/servlet/JSP programmers than Perl/mod_perl/Mason programmers.
BTW, all these factors are the reason we're currently porting a huge site from Perl/Mason to Java/EJB/JSP. I have somewhat mixed feelings about that. For small sites, I think mod_perl/Mason is a very good solution. But for big sites, Java/JSP is probably the way to go, mostly because of ease of language / teamwork organization / good development tools.
BTW, the getInitParameter() is a very good example that shows the difference. Do you need to call getInitParameter (or whatever) from within your C or Java functions to get the arguments?
JSP is a spec not a product, true. So what? Control over the cache parameters is not the part of that JSP spec. I can control the behaviour of cache using Mason function calls - for example, set cache expiration by time, by condition, by explicit action. In case of JSP, it's all controlled by the app server, and from my experience - current JSP sever implementations (I'm using Tomcat and IBM WebSphere at work) are less flexible than mod_perl/Mason combination.
1) Java - Perl
2) Servlets - mod_perl
3) JSP - Mason
I will not comment on (1) and (2), but Mason has some advantages over JSP. Just couple of features:
- Mason components are real components, you can invoke them, passing the arguments, unlike awkward JSP include mechanism
- Mason components have the init section, where you can put all the initialization stuff, and the args section, where you define all the arguments expected by the component and their default values
- Page caching mechanism is superior to JSP
I agree about the separation of business logic and presentation logic - it's very important, indeed. However, you are not getting it for free with Java/JSP. In either case, be it Java or Perl, it's responsibility of programmers and not the feature of framework (EJBs provide such a feature, but that's another issue).
IMHO, Gagarin was the first man in space. An this is why:
Too many people were invloved in the Soviet space program - thousands and thousands of ordinary people, engineers and technicians, so I don't see any possibility to hide such a big event.
Also, some well-known people have been working with Korolev Constructors Bureau since early 50-s and they explicitly state - Gagarin was the first cosmonaut. Apparently, there's no reason for them to lie today. The USSR doesn't exist anymore and the KGB (or whatever they call it now) doesn't have enough money and, more important, not enough reasons to support the old Soviet propaganda.
So, were all those silly conspiracy theories come from? Georgy Grechko, one of the most famous russian cosmonauts, told once, that before Gagarin they often used the "Ivan Ivanovich" dummies for the test launches... Very often, some random witnesses of landing mistook the dummies for dead people. Later, the engineers decided to print the word "DUMMY" on them, to avoid those mistakes :)
Anyway, it might be one of the roots of the pre-Gagarin cosmonaut legend.
Oh yeah... I work in SF and before moving to the current building our CEO gave us some instructions:
- never leave building after 6pm alone
- always carry pepper-spray for self-defence (company supplied)
- before going out of the building dial 911 on your cell phone and hold your finger over the "Talk" button, so you don't need extra time to dial
In addition, there are free self-defence classes for employees.
It's not a joke, unfortunately.
I'm sure most of my co-workers would like the idea of the surveillance cameras on the street.
Street is public place. Therefore, there's no privacy there, by definition.
What? No cameras at home? ;)
Your scenario is not paranoiac enough to come true
All the Vostok pilots ejected from the capsules and landed separately by individual parachute. The descent capsule weight was about 3000 kG and the rate of its descent was too high for comfortable landing. According to the plan, Gagarin ejected from the capsule at an attitude of approx. 7000 meters and parachuted safely to Earth.
AFAIK, the Amreicans used water landing from the beginning, utilizing the water cushioning effect, so it was possible for the astronauts to land inside the capsule safely, even at comparatively high descent rate.
Speaking of languages, take a look at THE ANALYTICAL LANGUAGE OF JOHN WILKINS, by Jorge Luis Borges
The trick here lies in the fact that analog methods inherently support parallel computations.
And what is even more important, analog parallel computations scale easily - their parallelism expands infinitely to meet your needs. Well, almost infinitely :)