Use the best tool for the best job, it really comes down to what is the language that easily support the feature you may need.
If you use perl, then force everyone to "use strict; use vars qw{GLOBAL_VARS}; sub main {... } main; exit; 1;" and document code with POD, divide things into modules and document any non-trivial regexp, like you would do in a sensible language. Then when the project is done do a code review, if people say: "I don't wanna do or care about a code review", they probably wrote some crappy code. You may want to use mod_perl for speed, just wrap your thing into modules and call the "main" loop. Don't forget to free up any resource. You may also want to use the Perl Template Toolkit, see the books by O'reilly.
"Use PHP for the front end",
PHP or Perl both are good and simple to maintain, *if* written properly. Any source code is hard to maintain especially if temp() and V was supposed to be called getInventoryStock() and StockEntryVector, respectively, but were not because the 'incompetent programmer' decided to use these since that part never worked and once it worked *by magic*, he didn't clean up the code...by fear that it will break again. [True story]
For one project we used both, since it was easier to create 3D pie chart on-the-fly in PHP then it was in Perl. So, Perl called PHP with a generated DB array... [Another true story] There is a sample 3D pie chart tutorial here: http://www.peters1.dk/webtools/php/lagkage.php?spr og=en
"Perl for input parsing," => Yes.
"Euphoria for the graphics," => Probably better off with Flash... or with Perl/GD, PHP/GD... depending how simple/complicated it is. Next bet would be SVG, but it's not widespread enough yet.
"JavaScript on the client-side," => Yes, that was straight-forward, unless you think about IE-specific VBScript... which is a big no-no unless you work for Microsoft.
"Moo for the database" => PHP/PEAR or Perl/DBI or or Perl/Class-DBI or similar please. [Did you really ever use that?! or you simply search google for a weird technology to look cool?!]
"and Python for the glue to hold things together." Perl is the mother of all glue language... for more than a decade, check CPAN. [Personally, I find Perl more readable then Python, even cryptic Perl]
As for if you want true speed and write a GUI front-end for a locked-down kiosk machine, you may need to interact with device drivers and therefore C mod_apache modules may come to the rescue... [Another true story, was better than X11, since they planned to move it to Windows CE in the future!]
mod_apache modules are also much more faster then mod_perl, but unless you're dealing with millions of queries per day, it should not be needed.
I never saw a 'huge' commercial project done in Python, Ruby, Moo or Euphoria, in the last 10 years...
Also, there is JSP and J2EE, they seems also to be good technology, even though I never used them personally. But maybe for secure e-commerce website, I heard some good comments about it...
In general, I have seen tons of website done in: Perl, PHP, ColdFusion, Flash, legacy C/C++, JSP, and more recently tons of.NET, ASP, ASP.NET, C# and similar IIS crapt... thanks to MSCE and MSDN Universal licenses...
As a side note, the 5 companies which were using.NET were "over budget, over 12 months late on their release date. At least one of them changed often their 'incompetent' MSCE employees... while the other seems to have perpetual MSCE job offers.
The word 'incompetent' came from the mouth of a.NET manager, who fired the 5 out of 6 "Junior MSCE" and who was still looking for some "Senior MSCE"... [Another true story]
What is funny is that 2 weeks later, the "average MSCE" decided to quit for a better
Blocking every port from 1024-65555 is unrealistic...
In fact, if you use passive FTP to download anything from the internet, if you use MSN Messenger to transfer files or view webcams, if you transfer files by DCC via an IRC client... or use any other application which is not port range specific.
It's a "design problem" that such application are not port range locked. It would be easier to lock the other ports.
This means that anytime you need to do such thing you have to manually open wide 1024-65535 ports and go back to normal mode after.
It would be easier if EVERY apps where somehow port range specific, just not few frequent application.
"It is a per-developer license. The license is assigned to an individual. It may be transferred, but only every six months and within the same organization. To transfer a license, or if you need a more flexible licensing agreement, please contact sales@trolltech.com. "
The problem with Qt is that you cannot buy floating license. Rational Rose for instead you can buy 1 or 2 floating license for 50 software engineers.
One of the problem in the current market is called: "Free" MSDN Universal DVD license
Hire a developper or a MSCE, is the same thing, except you get free licenses per MCSE.
Maybe we need a QTCE group license?!
Ask your boss to buy more Rational Rose license... please use Visio XP. Ask your boss to buy some Qt license... please use Microsoft Visual Studio.NET
Why? Boss: "Stop wasting public funds will ya!"
Seriously 6600$ is lots of money, just multiply this by 50-100 employees and you get a whopping 330,000-660,000$ US!
That's like asking your boss, please buy half M$ of Qt license. There's no "cheap company wide" licensing.
A volume price of 660$ per seat would be more reasonable.
As far as the RAD part of Qt, anyone who used VCL/C++ Builder or Visual Basic will tell you how much it sucks.
RAD Programming in Qt is as hard and tedious as Java, if not more.
One problem with Qt is that automatic code generation is insufficient. Want to design right-click menu... please write C++ code. Want to design a KApp... please write a.rc with C++ code. Want a standard menu... the default one is incompatible with KDE and no default KAction.
Qt and KDE needs to work closer together, because currently the integration just sucks.
The other problem with Qt is that you buy a library without a built-in IDE and multi-platform debugger. At least, if it provided a Visual Studio debugger equivalent. Don't get me started on extremely painful gdb or ddd.
Qt Designer is NOT an IDE. KDevelop sucks -> not user-friendly and no debugger.
It might be less painful than GTK or WxWindows, but it still far from useable than VCL.
They should really try to froze features, at least subsystem by subsystem, for a couple of months and perform a deep code review (ala OpenBSD) for bug hunting and security analysis.
I can understand that some part of the kernel still needs heavy development (ReiserFS, VM, some specific broken drivers), but other parts should be revised and certified gold bug free.
At least that would give us a roadmap, on what is to be fixed before they jump to 2.7.x series.
I mean what's the point to break stuff at every.x release in a stable series, that doesn't make any sense to me.
How are 3rd party drivers people, applications are supposed to "trust" a 2.6 kernel, if it break stuff continuously.
"You're Nvidia or ATI card works in 2.6.x but not in 2.6.x+2, and VMware doesn't work in 2.6.y but only in 2.6.y+1"
As long as they keep breaking stuff, I'm keeping my "stable" linux servers on the 2.4.x series.
"Newer versions of cars add satellite radio, GPS, and MP3 capability, but I don't see any car companies provided these features on older models."
There's some Car shop who will put inside your old 60's 70's 80's 90's car, all this stuff and what not.
Oh, but the fact is with cars you can mess with the metal, oil, motor, breaks and blue prints...
The problem with software is that "old software" that are EOL (End of lifecycle/not supported) are not released into public domain or sold to 3rd party company WHO WILL SUPPORT YOU.
That's the current problem with software.
Customer: "The breaks on my Ford 98, doesn't work... can you fix it!" Ford: "Nope, we don't repair Ford 98 anymore... it's a too old model. But you can buy our new Ford 2000!" Customer: "But with Ford 2000, the car has more probability of falling apart into pieces if I run it on the freeway." Ford: "Well, buy yourself some Car Insurance!" Ford: "Don't worry this will be fixed with the new Ford 2003 model!" Customer: "But you're 2003 model still have the problem." Ford: "But... it comes with a DVD player and a brand new PS2!!!" Customer: "Can you just build a car that works!" Ford: "Well, that's what we do! We put a lot of money and effort on security features!" Customer: "Why don't you give me the blueprints for my Ford 98, so I can repair the breaks myself." Ford: "If you ever try to fix it, we will sue you and put you in jail for 3 years for attempting to reverse engineer under the DMCA."
If car industry would be like that... lots of congressman would do something about it.
Guess what software industry is like that and nobody does anything about it.
Does the fact that I try to retrofit GM brakes on my Ford 98, because that's what I want... should be breaking any DMCA, patriot act, software patents or whatever idiocies?!
In most big cities in Canada, 150$ CAN pays roughly: - 15 hours for an HTML beginner (10$/h - 20K$), - 10 hours for a junior programmer (15$/h - 30K$), - 7.5 hours for an average programmer (20$/h - 40K$), - 6.0 hours for an expert programmer (25$/h - 50K$), - 3.0 hours for a Photoshop expert (50$/h - 100K$) and - 1.5 hour for an Oracle consultant (100$/h - 200K$).
Multiply by 2000h/year for 40h/week shift, for a salary, knowing you have to deduce the income tax rate of roughly 50%, while the cost of life is much lower than San Francisco or Silicon Valley.
If you don't believe me, try Monster or Jobboom.
If you go to other countries, like middle east, eastern europe, india or china, it might be even more.
Moreover, it also depends on the exchange rate. 150$ US might not be a lot for you, but it is 185$ CAN (1.23x). Likewise 150 euro is 239$ CAN (1.59x).
In the end, everything is relative.
So, while it may not be appealing for you, it is for some of us and you shouldn't deny that.
GCC4 + Qt4 + KDE libs4 + KDE4 + Linux 2.4 +...
on
GCC 4.0.0 Released
·
· Score: 0
For sometime I was wondering what all this fuss was all for...
On the 4th week of April, which is the 4th month after 2004, Qt4, KDE4, GCC4 were announced one after the other.
Soon, after I was able to download GCC4, in less than 4 hours at a nice speed of 4 KB/s connected at 44.4 kbps!
Which only took another 4 hours to compile it using my Pentium 4 running at 2.4 GHz, using only 44.4% of my CPU.
That's really nice, since in 4 months I will be able to get the final version of Qt 4. Unfortunately, like the beta2 of Qt 4, that will also take another 4 hours to compile using my Pentium 4.
Nevertheless, 4 months after the release of Qt 4, we should see the beginning beta of KDE libs 4, which will essentially lead 4 months after that to a shinny new KDE 4, around April 4th that will be able to run on the new stable Linux 2.4.34, which will replace my current Linux 2.4.24 that has an uptime of nearly 4 months.
Isn't that great ?
Now, can someone tell me what this comment was all for ?
The only clue, I can give is all those 'not in the club' buddy, which are using Gnome 2.6 on Linux 2.6.6 using gcc 2.96 right here in 2006, waiting for the next beta release of Perl 6. Thinking that there all cool and sexy!
If someone could explain me why they had to redesign the beautiful UI interface of Netscape4 or Firefox into something ugly like Netscape6, Netscape7 and now Netscape8!
Please, if you want to add features that's fine, but please use the default OS-centric GUI widgets.
"Each must know they compliment the other and make the whole of the Linux kernel better - even if they have the odd disagreement - or the kernel would have been truly forked (no pun intended) a long time ago. "
If you care to read the BitKeeper homepage and technical documentation. BitKeeper and similar tools such as Arch, makes it possible to work on diferent forked tree while allowing those forks to synchronize/merge more easily via change sets.
Therefore, the linux kernel is already forked. However, BitKeeper makes it easy to merge/share any of the forked tree.
For instance, at the current moment few Linux forked tree exists in parallel:
-mm -ac -bk -ck -pre etc.
The reasons why they are really forked is that they uses different change sets, while some of these change sets are truly incompatible.
It also explains why some patches "mature" in some non-Linus tree and if found "mature enough", Linus can merge them back into his tree.
The fact is when you say you use Linux 2.6, you actually have to specify which tree branch? Vanilla or one of the -mm -ac -pre... patches ? Samething when you submit a bug report.
The only real difference between Linux and *BSD, is that people try to make the number of incompatible change sets as low as possible, since the SCM technology used allows this to be done easily.
So maybe it's not as forked as *BSD, still *BSD still share device drivers and similar. But they are still many different trees that exist in parallel.
The major problem are RedHat, SuSe and similar, who apply various patches to their kernel, but doesn't make it back to the Vanilla tree. They are lost in the nature... unless people try to track them, validate them and apply them.
So, yes, they could fork dramatically; however, if they reconciliate 6 months later, it would still be possible to merge them...
Well, I had a more obscure version, but just for that script it took everything to get it pass the Slashdot lame filter, saying it had "too many junk characters"!!!
Well, everyone knows that Perl5 has lots of punctuation, not mentioning Perl6 "nightmare" Unicode punctuation!!!
'reason' => [ 'Spammers can easily use it to harvest email addresses', 'Mailing lists and other legitimate email uses would be affected', 'No one will be able to find the guy or collect the money', 'It is defenseless against brute force attacks', 'It will stop spam for two weeks and then we\'ll be stuck with it', 'Users of email will not put up with it', 'Microsoft will not put up with it', 'The police will not put up with it', 'Requires too much cooperation from spammers', 'Requires immediate total cooperation from everybody at once', 'Many email users cannot afford to lose business or alienate potential employers', 'Spammers don\'t care about invalid addresses in their lists', 'Anyone could anonymously destroy anyone else\'s career or business', ],
'fail' => [ 'Laws expressly prohibiting it', 'Lack of centrally controlling authority for email', 'Open relays in foreign countries', 'Ease of searching tiny alphanumeric address space of all email addresses', 'Asshats', 'Jurisdictional problems', 'Unpopularity of weird new taxes', 'Public reluctance to accept weird new forms of money', 'Huge existing software investment in SMTP', 'Susceptibility of protocols other than SMTP to attack', 'Willingness of users to install OS patches received by email', 'Armies of worm riddled broadband-connected Windows boxes', 'Eternal arms race involved in all filtering approaches', 'Extreme profitability of spam', 'Joe jobs and/or identity theft', 'Technically illiterate politicians', 'Extreme stupidity on the part of people who do business with spammers', 'Dishonesty on the part of spammers themselves', 'Bandwidth costs that are unaffected by client filtering', 'Outlook', ],
'objections' => [ 'Ideas similar to yours are easy to come up with, yet none have ever been shown practical', 'Any scheme based on opt-out is unacceptable', 'SMTP headers should not be the subject of legislation', 'Blacklists suck', 'Whitelists suck', 'We should be able to talk about Viagra without being censored', 'Countermeasures should not involve wire fraud or credit card fraud', 'Countermeasures should not involve sabotage of public networks', 'Countermeasures must work if phased in gradually', 'Sending email should be free', 'Why should we have to trust you and your servers?', 'Incompatiblity with open source or open source licenses', 'Feel-good measures do nothing to solve the problem', 'Temporary/one-time email addresses are cumbersome', 'I don\'t want the government reading my email', 'Killing them that way is not slow and painful enough', ],
'about' => [ 'Sorry dude, but I don\'t think it would work.', 'This is a stupid idea, and you\'re a stupid person for suggesting it.', 'Nice try, assh0le! I\'m going to find out where you live and burn your house down!' ]);
$post = "Your post advocates a" .$choice{'type' }[ getIndex($#{$choice{'type'}}) ] ." approach to fighting spam.\nYour idea will not work. Here is why it won't work.\n" .$choice{'reason' }[ getIndex($#{$choice{'reason'}}) ]."\n\n" ."Specifically, your plan fails to account for " .lcfirst $choice{'fail' }[ getIndex($#{$choice{'fail'}}) ] ."\nand moreover I have the following philosophical objection, \nmainly " .lcfirst $choice{'objections' }[ getIndex($#{$choice{'objections' }}) ]."\n\n" .$choice{'about' }[ getIndex($#{$choice{'about'}}) ] ."\n\nSincerely yours,\nSlashdot anonymous random perl bot\n\n";
You might learn by yourself, dozen of languages. But that do not mean that you are proficient at writing "good code" or "good design" or "proprer and COMPLETE documentation".
One thing you might want to look at are some books on software engineering, requirement and specifications, formal specification and design.
You might want to look at RUP: Rational Unified Process
Gamma Design Pattern book Anti-Pattern book Z, Object-Z, Larch, PVS specification language.
Anyone can learn how to program, and code lots of stuff, [I learned myself most of the things], but that doesn't mean that the code doesn't sux somehow...;-)
Also, are you proficient in data structure? You might also want to get few books on how to design proper database table.
3-tier design layers, MVC design and similar.
Unit testing, component testing, integration testing?
Another thing is that a degree will give you, some proper background in math and other stuff.
Younger, I was very proficient in programming and I "taught" I could programming anything.
The fact is you learn a thing or two at university. I got a bit stronger in Data structure and proper architectural design, component design and class design and testing.
Of course, you might say that you are already better than most people, but that doesn't mean that you are done "learning", in fact, no one is never done learning ever, the field is just way too large to be covered entirely. =P
But it might give you a better clue on how to solve more complicated problems that you might encounter in the field.
To conclude, let say worst case, you gonna get very good grades at university and it's just gonna be an easy thing for you compared to others. Also, you might also get few grants, once you get good grades, so it shouldn't be that much of an issue.
It's in the MSDN Universal all-you-can eat buffet DVD license.
My boss which has 2 MSCE; therefore, we had 10 free licenses of Virtual PC, but since running VM Ware was like much faster and we could hook up USB devices, serial/parallel ports, CDROM ISO files, floppy, any hardware, any partition, into the VMware layer, we bought VMware licenses.
Thanks to few hand twistings and VMWare excellent product.
"As many as possible" => Not really.
... } main; exit; 1;" and document code with POD, divide things into modules and document any non-trivial regexp, like you would do in a sensible language. Then when the project is done do a code review, if people say:
.NET, ASP, ASP.NET, C# and similar IIS crapt... thanks to MSCE and MSDN Universal licenses...
.NET were "over budget, over 12 months late on their release date. At least one of them changed often their 'incompetent' MSCE employees... while the other seems to have perpetual MSCE job offers.
.NET manager, who fired the 5 out of 6 "Junior MSCE" and who was still looking for some "Senior MSCE"... [Another true story]
Use the best tool for the best job, it really comes down to what is the language that easily support the feature you may need.
If you use perl, then force everyone to
"use strict; use vars qw{GLOBAL_VARS}; sub main {
"I don't wanna do or care about a code review", they probably wrote some crappy code. You may want to use mod_perl for speed, just wrap your thing into modules and call the "main" loop.
Don't forget to free up any resource.
You may also want to use the Perl Template Toolkit, see the books by O'reilly.
"Use PHP for the front end",
PHP or Perl both are good and simple to maintain, *if* written properly. Any source code is hard to maintain especially if temp() and V was supposed to be called getInventoryStock() and StockEntryVector, respectively, but were not because the 'incompetent programmer' decided to use these since that part never worked and once it worked *by magic*, he didn't clean up the code...by fear that it will break again. [True story]
For one project we used both, since it was easier to create 3D pie chart on-the-fly in PHP then it was in Perl. So, Perl called PHP with a generated DB array... [Another true story]
There is a sample 3D pie chart tutorial here:
http://www.peters1.dk/webtools/php/lagkage.php?spr og=en
"Perl for input parsing," => Yes.
"Euphoria for the graphics," => Probably better off with Flash... or with Perl/GD, PHP/GD... depending how simple/complicated it is.
Next bet would be SVG, but it's not widespread enough yet.
"JavaScript on the client-side," => Yes, that was straight-forward, unless you think about IE-specific VBScript... which is a big no-no unless you work for Microsoft.
"Moo for the database" => PHP/PEAR or Perl/DBI or or Perl/Class-DBI or similar please. [Did you really ever use that?! or you simply search google for a weird technology to look cool?!]
"and Python for the glue to hold things together."
Perl is the mother of all glue language... for more than a decade, check CPAN.
[Personally, I find Perl more readable then Python, even cryptic Perl]
As for if you want true speed and write a GUI front-end for a locked-down kiosk machine, you may need to interact with device drivers
and therefore C mod_apache modules may come to the rescue... [Another true story, was better than X11, since they planned to move it to Windows CE in the future!]
mod_apache modules are also much more faster then
mod_perl, but unless you're dealing with millions of queries per day, it should not be needed.
I never saw a 'huge' commercial project done in Python, Ruby, Moo or Euphoria, in the last 10 years...
Also, there is JSP and J2EE, they seems also to be good technology, even though I never used them
personally. But maybe for secure e-commerce website, I heard some good comments about it...
In general, I have seen tons of website done in:
Perl, PHP, ColdFusion, Flash, legacy C/C++, JSP,
and more recently tons of
As a side note, the 5 companies which were using
The word 'incompetent' came from the mouth of a
What is funny is that 2 weeks later, the "average MSCE" decided to quit for a better
Blocking every port from 1024-65555 is unrealistic...
In fact, if you use passive FTP to download anything from the internet,
if you use MSN Messenger to transfer files or view webcams, if you transfer files by DCC via an IRC client...
or use any other application which is not port range specific.
It's a "design problem" that such application are not port range locked. It would be easier to lock the other ports.
This means that anytime you need to do such thing you have to manually open wide 1024-65535 ports and go back to normal mode after.
It would be easier if EVERY apps where somehow port range specific, just not few frequent application.
You didn't read the license correctly.
m l
You MAY NOT SWAP license in and out.
You buy an individual license PER DEVELOPPER.
"It is a per-developer license.
The license is assigned to an individual. It may be transferred,
but only every six months and within the same organization.
To transfer a license, or if you need a more flexible licensing agreement, please contact sales@trolltech.com. "
http://www.trolltech.com/products/qt/licensing.ht
Not a bunch floating licenses for the entire company.
It's not like you are getting:
5 windows floating license
5 linux floating license
5 mac floating license
1 cross platform floating license
"My gut reaction is this would be suicide if they did that, so I find it very unlikely they did."
That's what they do and that's why I'm complaining.
They are saying that floating licenses
do not make sense for a library.
So, unless your organization builds software on a single platform, then you need 6600$ multiplatform license.
The problem with Qt is that you cannot buy floating license.
.rc with C++ code.
Rational Rose for instead you can buy 1 or 2 floating license for 50 software engineers.
One of the problem in the current market is called:
"Free" MSDN Universal DVD license
Hire a developper or a MSCE, is the same thing,
except you get free licenses per MCSE.
Maybe we need a QTCE group license?!
Ask your boss to buy more Rational Rose license... please use Visio XP.
Ask your boss to buy some Qt license... please use Microsoft Visual Studio.NET
Why?
Boss: "Stop wasting public funds will ya!"
Seriously 6600$ is lots of money,
just multiply this by 50-100 employees
and you get a whopping 330,000-660,000$ US!
That's like asking your boss, please buy half M$ of Qt license.
There's no "cheap company wide" licensing.
A volume price of 660$ per seat would be more reasonable.
As far as the RAD part of Qt, anyone who used VCL/C++ Builder or Visual Basic will tell you
how much it sucks.
RAD Programming in Qt is as hard and tedious as Java, if not more.
One problem with Qt is that automatic code generation is insufficient.
Want to design right-click menu... please write C++ code.
Want to design a KApp... please write a
Want a standard menu... the default one is incompatible with KDE and no default KAction.
Qt and KDE needs to work closer together, because currently the integration just sucks.
The other problem with Qt is that you buy a library without a built-in IDE and multi-platform debugger.
At least, if it provided a Visual Studio debugger equivalent. Don't get me started on extremely painful gdb or ddd.
Qt Designer is NOT an IDE.
KDevelop sucks -> not user-friendly and no debugger.
It might be less painful than GTK or WxWindows, but it still far from useable than VCL.
They should really try to froze features,
.x release in a stable series,
at least subsystem by subsystem,
for a couple of months and perform
a deep code review (ala OpenBSD)
for bug hunting and security analysis.
I can understand that some part of the kernel
still needs heavy development
(ReiserFS, VM, some specific broken drivers),
but other parts should be revised
and certified gold bug free.
At least that would give us a roadmap,
on what is to be fixed before
they jump to 2.7.x series.
I mean what's the point to break stuff
at every
that doesn't make any sense to me.
How are 3rd party drivers people, applications
are supposed to "trust" a 2.6 kernel,
if it break stuff continuously.
"You're Nvidia or ATI card works in 2.6.x but not in 2.6.x+2,
and VMware doesn't work in 2.6.y but only in 2.6.y+1"
As long as they keep breaking stuff,
I'm keeping my "stable" linux servers
on the 2.4.x series.
"Newer versions of cars add satellite radio, GPS, and MP3 capability, but I don't see any car companies provided these features on older models."
There's some Car shop who will put inside your old 60's 70's 80's 90's car, all this stuff and what not.
Oh, but the fact is with cars you can mess with the metal, oil, motor, breaks and blue prints...
The problem with software is that "old software"
that are EOL (End of lifecycle/not supported)
are not released into public domain or sold to
3rd party company WHO WILL SUPPORT YOU.
That's the current problem with software.
Customer: "The breaks on my Ford 98, doesn't work... can you fix it!"
Ford: "Nope, we don't repair Ford 98 anymore... it's a too old model. But you can buy our new Ford 2000!"
Customer: "But with Ford 2000, the car has more probability of falling apart into pieces if I run it on the freeway."
Ford: "Well, buy yourself some Car Insurance!"
Ford: "Don't worry this will be fixed with the new Ford 2003 model!"
Customer: "But you're 2003 model still have the problem."
Ford: "But... it comes with a DVD player and a brand new PS2!!!"
Customer: "Can you just build a car that works!"
Ford: "Well, that's what we do! We put a lot of money and effort on security features!"
Customer: "Why don't you give me the blueprints for my Ford 98, so I can repair the breaks myself."
Ford: "If you ever try to fix it, we will sue you and put you in jail for 3 years for attempting to reverse engineer under the DMCA."
If car industry would be like that...
lots of congressman would do something about it.
Guess what software industry is like that
and nobody does anything about it.
Does the fact that I try to retrofit GM brakes
on my Ford 98, because that's what I want...
should be breaking any DMCA, patriot act, software patents or whatever idiocies?!
No! So, why software should be different!?
Think about it!
It mostly depends where you work.
In most big cities in Canada, 150$ CAN pays roughly:
- 15 hours for an HTML beginner (10$/h - 20K$),
- 10 hours for a junior programmer (15$/h - 30K$),
- 7.5 hours for an average programmer (20$/h - 40K$),
- 6.0 hours for an expert programmer (25$/h - 50K$),
- 3.0 hours for a Photoshop expert (50$/h - 100K$) and
- 1.5 hour for an Oracle consultant (100$/h - 200K$).
Multiply by 2000h/year for 40h/week shift,
for a salary, knowing you have to deduce the income tax rate of roughly 50%,
while the cost of life is much lower than San Francisco or Silicon Valley.
If you don't believe me, try Monster or Jobboom.
If you go to other countries, like middle east,
eastern europe, india or china, it might be even more.
Moreover, it also depends on the exchange rate.
150$ US might not be a lot for you, but it is
185$ CAN (1.23x).
Likewise 150 euro is 239$ CAN (1.59x).
In the end, everything is relative.
So, while it may not be appealing for you, it is for some of us and you shouldn't deny that.
For sometime I was wondering what all this fuss was all for...
On the 4th week of April, which is the 4th month after 2004, Qt4, KDE4, GCC4 were announced
one after the other.
Soon, after I was able to download GCC4, in less than 4 hours at a nice speed of 4 KB/s connected at 44.4 kbps!
Which only took another 4 hours to compile it using my Pentium 4 running at 2.4 GHz, using only 44.4% of my CPU.
That's really nice, since in 4 months I will be able to get the final version of Qt 4.
Unfortunately, like the beta2 of Qt 4, that will also take another 4 hours to compile using my Pentium 4.
Nevertheless, 4 months after the release of Qt 4, we should see the beginning beta of KDE libs 4,
which will essentially lead 4 months after that to a shinny new KDE 4,
around April 4th that will be able to run on the new stable Linux 2.4.34,
which will replace my current Linux 2.4.24 that has an uptime of nearly 4 months.
Isn't that great ?
Now, can someone tell me what this comment was all for ?
The only clue, I can give is all those 'not in the club' buddy,
which are using Gnome 2.6 on Linux 2.6.6 using gcc 2.96 right here in 2006,
waiting for the next beta release of Perl 6.
Thinking that there all cool and sexy!
If someone could explain me why they had to redesign the beautiful UI interface of
Netscape4 or Firefox into something ugly like Netscape6, Netscape7 and now Netscape8!
Please, if you want to add features that's fine,
but please use the default OS-centric GUI widgets.
"Each must know they compliment the other and make the whole of the Linux kernel better
... patches ?
- even if they have the odd disagreement -
or the kernel would have been truly forked (no pun intended) a long time ago. "
If you care to read the BitKeeper homepage and technical documentation.
BitKeeper and similar tools such as Arch, makes it possible to work on diferent forked tree
while allowing those forks to synchronize/merge more easily via change sets.
Therefore, the linux kernel is already forked.
However, BitKeeper makes it easy to merge/share any of the forked tree.
For instance, at the current moment few Linux forked tree exists in parallel:
-mm
-ac
-bk
-ck
-pre
etc.
The reasons why they are really forked is that
they uses different change sets, while some of these change sets are truly incompatible.
It also explains why some patches "mature" in some non-Linus tree and if found "mature enough",
Linus can merge them back into his tree.
The fact is when you say you use Linux 2.6,
you actually have to specify which tree branch? Vanilla or one of the -mm -ac -pre
Samething when you submit a bug report.
The only real difference between Linux and *BSD,
is that people try to make the number of incompatible change sets as low as possible,
since the SCM technology used allows this to be done easily.
So maybe it's not as forked as *BSD, still *BSD still share device drivers and similar.
But they are still many different trees that exist in parallel.
The major problem are RedHat, SuSe and similar,
who apply various patches to their kernel, but doesn't make it back to the Vanilla tree.
They are lost in the nature... unless people
try to track them, validate them and apply them.
So, yes, they could fork dramatically;
however, if they reconciliate 6 months later,
it would still be possible to merge them...
Have a nice day!
So, you mean 6 right?
since
3! = 3 x 2 x 1 = 6
Well, you should be careful about Math,
since exclamation mark is factorial operator. =)
Please, get it completely right,
it's a GNU/Interview with GNU/Richard GNU/Stallman,
nothing else nothing more.
Man, you are so wrong, the most biggest advance of 2004 was the release of Duke Nukem Forever!
.... hmmm... sorry! maybe next year! =^P
What else could be as much expecting as this great game!
What? It didn't came out yet!?
Well, I had a more obscure version,
but just for that script it took everything to get it pass the Slashdot lame filter,
saying it had "too many junk characters"!!!
Well, everyone knows that Perl5 has lots of punctuation,
not mentioning Perl6 "nightmare" Unicode punctuation!!!
Enjoy! =)
%choice = (
."\n\n" ."\n\n"
'type' => [ 'technical', 'legislative', 'market-based', 'vigilante' ],
'reason' => [
'Spammers can easily use it to harvest email addresses',
'Mailing lists and other legitimate email uses would be affected',
'No one will be able to find the guy or collect the money',
'It is defenseless against brute force attacks',
'It will stop spam for two weeks and then we\'ll be stuck with it',
'Users of email will not put up with it',
'Microsoft will not put up with it',
'The police will not put up with it',
'Requires too much cooperation from spammers',
'Requires immediate total cooperation from everybody at once',
'Many email users cannot afford to lose business or alienate potential employers',
'Spammers don\'t care about invalid addresses in their lists',
'Anyone could anonymously destroy anyone else\'s career or business', ],
'fail' => [
'Laws expressly prohibiting it',
'Lack of centrally controlling authority for email',
'Open relays in foreign countries',
'Ease of searching tiny alphanumeric address space of all email addresses',
'Asshats',
'Jurisdictional problems',
'Unpopularity of weird new taxes',
'Public reluctance to accept weird new forms of money',
'Huge existing software investment in SMTP',
'Susceptibility of protocols other than SMTP to attack',
'Willingness of users to install OS patches received by email',
'Armies of worm riddled broadband-connected Windows boxes',
'Eternal arms race involved in all filtering approaches',
'Extreme profitability of spam',
'Joe jobs and/or identity theft',
'Technically illiterate politicians',
'Extreme stupidity on the part of people who do business with spammers',
'Dishonesty on the part of spammers themselves',
'Bandwidth costs that are unaffected by client filtering', 'Outlook', ],
'objections' => [
'Ideas similar to yours are easy to come up with, yet none have ever been shown practical',
'Any scheme based on opt-out is unacceptable',
'SMTP headers should not be the subject of legislation',
'Blacklists suck', 'Whitelists suck',
'We should be able to talk about Viagra without being censored',
'Countermeasures should not involve wire fraud or credit card fraud',
'Countermeasures should not involve sabotage of public networks',
'Countermeasures must work if phased in gradually',
'Sending email should be free',
'Why should we have to trust you and your servers?',
'Incompatiblity with open source or open source licenses',
'Feel-good measures do nothing to solve the problem',
'Temporary/one-time email addresses are cumbersome',
'I don\'t want the government reading my email',
'Killing them that way is not slow and painful enough', ],
'about' => [
'Sorry dude, but I don\'t think it would work.',
'This is a stupid idea, and you\'re a stupid person for suggesting it.',
'Nice try, assh0le! I\'m going to find out where you live and burn your house down!' ]);
srand(time);
sub getIndex { return rand( shift() - 1 ); }
$post = "Your post advocates a"
.$choice{'type' }[ getIndex($#{$choice{'type'}}) ]
." approach to fighting spam.\nYour idea will not work. Here is why it won't work.\n"
.$choice{'reason' }[ getIndex($#{$choice{'reason'}}) ]
."Specifically, your plan fails to account for "
.lcfirst $choice{'fail' }[ getIndex($#{$choice{'fail'}}) ]
."\nand moreover I have the following philosophical objection, \nmainly "
.lcfirst $choice{'objections' }[ getIndex($#{$choice{'objections' }}) ]
.$choice{'about' }[ getIndex($#{$choice{'about'}}) ]
."\n\nSincerely yours,\nSlashdot anonymous random perl bot\n\n";
$post =~ s/ *\. */.\n/g;
print $post;
You might learn by yourself, dozen of languages.
l .ox.ac.uk/~mike/zrm/u b/Zforum/zglossary.ps. Zp vs.csl.sri.com// ltrs/dublincore/2 003/cr/NASA-2003-cr212418.html
;-)
But that do not mean that you are proficient
at writing "good code" or "good design"
or "proprer and COMPLETE documentation".
One thing you might want to look at are some books on software engineering,
requirement and specifications, formal specification and design.
You might want to look at RUP:
Rational Unified Process
Gamma Design Pattern book
Anti-Pattern book
Z, Object-Z, Larch, PVS specification language.
http://www.afm.sbu.ac.uk/z/
http://spivey.orie
ftp://ftp.comlab.ox.ac.uk/p
http://research.compaq.com/SRC/larch/
http://
http://techreports.larc.nasa.gov
Anyone can learn how to program, and code lots of stuff, [I learned myself most of the things],
but that doesn't mean that the code doesn't
sux somehow...
Also, are you proficient in data structure?
You might also want to get few books on
how to design proper database table.
3-tier design layers, MVC design and similar.
Unit testing, component testing, integration testing?
Another thing is that a degree will give you,
some proper background in math and other stuff.
Younger, I was very proficient in programming
and I "taught" I could programming anything.
The fact is you learn a thing or two at university. I got a bit stronger in Data structure
and proper architectural design, component design
and class design and testing.
Of course, you might say that you are already better than most people, but that doesn't mean
that you are done "learning", in fact, no one is never done learning ever,
the field is just way too large to be covered entirely. =P
But it might give you a better clue on how to solve more complicated problems that you might encounter in the field.
To conclude, let say worst case,
you gonna get very good grades at university and it's just gonna be an easy thing for you compared to others.
Also, you might also get few grants,
once you get good grades, so it shouldn't be that much of an issue.
Was about time they came up with such specs!
GMap.com there you go.
Gmail.com
Google.com
Gnome.com [oops]
If you want ultimate performance mod_apache is the way to go. mod_apache is 2x faster than mod_perl which is 10x faster than perl/CGI, etc.
Let's assume there is 1 billion computer worldwide,
1% of 1,000,000,000 = 10,000,000 computers.
Of course, it's not anything near Windows.
But don't forget that Google only register
computers that access Google...
Have you seen a web server or database server lately accessing Google just because
it had spare computer cycles to waste? =P
Well, partially it is.
It's in the MSDN Universal all-you-can eat buffet DVD license.
My boss which has 2 MSCE; therefore, we had 10 free licenses of Virtual PC,
but since running VM Ware was like much faster
and we could hook up USB devices, serial/parallel ports, CDROM ISO files, floppy, any hardware,
any partition, into the VMware layer, we bought VMware licenses.
Thanks to few hand twistings and VMWare excellent product.
You made a typo it's 95.98% of Windows crashes on Windows 95 or 98.
The greatest Graphics Software this year, is not "The GIMP", it's KolourPaint! Alias Microsoft Paint KDE clone.
Make XUL/XBL web pages ask for
"security prompt alert",
when visiting such pages.
Such that at least people could know.
Now if someone click "ignore all",
that's another problem.