Hey, I can even put the address of my current location in the url, and maybe you'll see me: http://map.search.ch/morges/lausanne-45/ Sorry guys, this is a Swiss-only feature:)
In case it dies under slashdotting, the site offers a choice between satellite photos and street plans, interactive zooming, etc.
(NB: if you know any equivalent for other regions of the world, I'm interested!)
If C# (even v2) is mentioned, the C++/CLI extension to C++, which makes all of C#'s features available in C++, definitely should be included. [C++ 200x is in progress, ok to omit].
Having been a mac user last century, I think the Object Pascal compilers it supported in the eighteies (MacApp anyone?) should be included -- I believe it was a precursor to Borland's Delphi. Hypercard, AppleScript, and (to a lesser extent) Dylan would also be worth mentioning.
The previous does choose a best-case format for XML, relying on attributes instead of elements whenever possible. To be honest, what would be the actual SOAP encoding for the equivalent JavaScript data structure?
Now what would you think of (dropping quotes and spaces when unnecessary for parsing):
Now what if built-in filter allowed you to generate either this compact blurb, or a neatly auto-formatted and indented form?
The JSON format (which I just discovered) is nearly identical to a format I have been using for 10+ years - with which this sample is compatible. The i/o implementation I use internally is in C++, and supports a binary, compressed, and encrypted formats as well. An incomplete rewrite of it in C is available at http://ivan.vecerina.com/code/datatree/.
I like JSON more than XML - because it offers a natural representation of hierarchical data structures seen most languages: a tree of records(/objects), arrays(/collections), and leaf values(/simple data fields).
XML has many qualities, but it is not the natural solution/format for such data structures. When should text data be used in XML? When should you use an element rather than an attribute in XML? XML forces you to either select a standardized mapping that introduces redundant clutter (SOAP), or accept the complexity of an application-specific mapping.
Do you know of the first virus to ever strike an ASCII README.txt file?
Yes. Please read about the following linux compromise attempt to see what I mean: http://lwn.net/Articles/57135/.
The origial./ article mentions that the extensible system would have special modules to manage the display/compilation of source code. Like ActiveX controls, this will make the compiler extensible, but fragile.
My point was: what if, instead of infecting your machine directly, the attack hidden in the source would generate unexpected viral or backdoor code. Upon review the source code would look ok. But during compilation the attack (e.g. a buffer overflow connected to some meta-information) would lead to the generation of different code - which will then be embedded in the produced executable.
The first example above uses a syntax detail of the standard C language. But with an extensible compiler, opportunities to sneak unexpected behavior into the generated code may proliferate...
I find that the author underestimates the importance of low-level ASCII manipulation tools in programming. Is there a CVS-like tool that is XML-friendly? or even a diff tool that facilitates the merging of concurrent changes to an XML document?
As a programmer, I currently can't even handle HTML generators, and prefer to code (most of) my web pages by hand.
I wonder what becomes of Big Ball of Mud spaghetti code when translated into XML. How much worse can it become?
Another key issue may remain efficiency: compile and link times have remained issues for large projects, as program complexity keeps up with performance increases.
I'd bet on pure text source code for serious programming in the next 10+ years. Which doesn't mean that the Visual Basics and Mathematicas of tomorrow won't choose and XML-based storage format.
From Widipedia's article about KVM switch (http://en.wikipedia.org/wiki/KVM_switch):
Popularity of KVM switches has increased with the use of Microsoft server operating systems such as Windows 2000 and Windows Server 2003, as these operating systems cannot be easily administered without access to a keyboard, mouse and monitor.
It took little more effort than to run through a simple "how to set-up PHP with Apache" guide.
For windows, see: www.thesitewizard.com/archive/php4install.shtml
Doing a file include is extremely easy to start with. And from there, you can make your web page smarter by, for example, disabling (index) links that go to the page itself, generating TOCs from a single description, etc.
I found that Running Apache+PHP locally was totally non-intrusive. I just use http://localhost/... for previewing.
When my hosting service did not support PHP, I used 'wget' to get a pure HTML version of my web page.
I casually maintain a personal and a company website (ivan.vecerina.com and www.xitact.com). I find this basic PHP solution to be easily maintainable.
The fact is that patents themselves aren't "exportable" - they have to be submitted and accepted by each country to which they apply.
"Software" patents in particular are (still) invalid in most areas of the world. And have you heard recently of the Viagra patent being invalidated in China, allowing the local industry to manufacture cheaper knock-off? (NB: the US themselves did not introduce a patent/copyright system until it they actually could benefit from it)
I would think that the US people will primarily be harmed by its patent and copyright system except for a few large companies.
Ever considered that the development of this kind of material could have been outsourced? or that the sound effects may have been purchased from an external collection?
In the bit array version, the following simple change would most likely improve performance by a consequent factor:
The bit shift and bit mask values should be compile-time constants, e.g.: enum {
bytesPerInt = sizeof(unsigned)*8,
bpiShift =(bytesPerInt==16 ? 4:
bytesPerInt==32 ? 5:
bytesPerInt==64 ? 6:
bytesPerInt==128 ? 7:
0/*->error*/ ),
bpiMask = (1<<bpiShift)-1 }; This will allow the compiler to generate more efficient/hardcoded masking & shifting instructions.
Next, it is pointless to store/test even numbers inside the array - you could nearly double speed here, and simply shift down the array indices by one extra bit.
Similarly, it is easy enough to avoid testing multiples of 3, by alternating between increments of 2 and 4 times the prime number being tested.
Of course, much more can be done (even while maintaining the current level of code portability), but these are the obvious steps I would take to speed-up the presented bit-array method (paged or not).
Well, DiscMan devices were getting as compact as they could around a CD, but they gave way to the iPod.
Now what about wearable computers, head-mounted displays, new input devices? What about integrating a camera, and supporting interpersonnal communications?
I'm not worried about the lack of room to grow...
BTW: having all applications designed around a 1-button mouse may ease the transition to a new input device...
Say a plane crashes today in the Atlantic, and you know that many bodies may never be recovered.
How many families will want to know for sure if a relative was on board or not? How many individuals may want to claim they, or a given relative, where on board to get a hefty life insurance payment?
Even if bodies are found and recovered, it really helps for any kind of forensics to have the IDs of all passengers.
I do not think that having to show an ID is such a problem. The issue I'd have is with the storage and centralization of ID information.
Non-religious fundamentalism is part of the problem as well. Fundamentalism ("strict adherence to a system of beliefs") is often given a spriritual justification. But promises of wealth, racial supremacy theories, FUD etc, can be leveraged as well to rally the masses behind one true way to think.
Could it be that "The War on Terror", which according to the article can be seen as a success of Bin Laden's plan, is used to promote another form of Fundamentalism?
The articles provides food for thought, and shows how issues are more complex than usually depicted in the media -- because mass media seems to skip to conclusions, as rightful and correct as they can be, polarizing and strengthening the opinion. Because you need to be strong to face an opponent.
In a conflict, no party has the monopoly of terror and brute force - or there would be no conflict. While we want to be strong, keeping an understanding the motives of "the other" helps find more creative and pacific ways to *undermine* terror -- if and when a compromise is possible. Because war can only fight terrorists, not Terror. War is Terror, war feeds Terror, and war can only bring ephemeral and bitter victories.
Are compromises possible with fundamental islamists? Even though I oppose their acts and beliefs, can I sympathize with some of the motives they use to justify their action? Like the fact that some UN resolutions are more enforceable than others? Like the building of walls, reminicent of past ghettoes, across occupied territories? Like discriminations based on religion being perpetrated? Like Human Rights and the laws we established being decreted, by our own leaders and without open debate, as "not applicable" in some areas and circumstances?
While it is important to stand united against an agression, we need to keep some room for debate. We need to keep widely accessible forums where all perspectives are confronted and debated publicly. If not, we are paving the road to a revival of fundamentalisms.
Agreed: password complexity does not need to scale with CPU power.
If attackers have no access to the stored hashed password, CPU speed is irrelevant: what is needed is a system-enforced limit on the number of login attempts per second/minute.
CPU power is relevant for attacks that restore the password from a compromised hash. Here again, the vulnerability to these attacks can be avoided by: (1) increasing the complexity/cost of the hashing mechanism (2) making sure that a kind of system-specific 'salt' is used (and eventually changed periodically) to avoid the use of pre-computed plaintext/hash tables.
- Decoding a RLE data buffer is short of impressive as a benchmark. RLE was designed as a simple and specific (generally inefficient) compression approach for age-old hardware (i.e. 8MHz, not 333MHz as the base system used here).
How about JPEG or PNG ?
- The author actually spent several iterations optimizing this Erlang code. And these optimizations required handling special cases. (So performance eventually did matter to the author?) Now, would a 'first throw' implementation in C/C++ have been written faster while immediately performing better than the Erlang version? (simpler code)
- I agree that the compiled/interpreted code performance matters less and less, because processors are so much more powerful. For instance, the processing for RLE decompression should in any case be negligible wrt the memory or disk i/o involved.
What is becoming increasingly important, however, is the data structures and algorithms that are used. In this perspective, C++ still shines, thanks to the flexibility that its algorithms and containers library provides.
C++ offers both a high level of abstraction (working with containers), and provides the ability to convert to a different implementation strategy with ease - if and when profiling demonstrates a need.
For large system and library development, the strong static typing of C++ is also a real plus (it doesn't matter to me it is faster than dynamic typing or not).
I totally agree that performance should not be a concern during program implementation (other than avoiding 'unnecessary pessimization', which involves the KISS principle and knowledge of language idioms). Optimization should only be performed where the need for a speed-up has been demonstrated.
Other than saying "wow this interpreted language runs damn fast on current hardware", this article does a poor job at making any relevant point.
radix omnia malorum prematurae optimisatia est
-- Donald Knuth
Qt is probably the best C++ GUI toolkit out there.
Except that it is not C++. Last I checked, there was this unfortunate special preprocessor ("meta object compiler"?) that has to translate some files first.
This is just unfortunate, because a signals and slots can be supported with only a slightly different syntax using C++ templates.
Another sin (shared with wxWindows) is the lack of leveraging C++ standard libraries (std::string, standard collections and algorithms).
Too bad... better could be made, on the GUI front, of this complex but powerful language.
I have been employed and working from home for 3 years, living 3.5 hours away (200miles) from the small European headquarters of a large company.
It has been nice: First working from the living room of our appartment. It was fun, because my wife was great (enjoying freshly cooked food), and our first son was just born. She would leave me with him to go shopping while he was asleep, saw him grow up, etc. I have been traveling 10-20% of the time, which helped it be more bareable. Also, you need a strong ability to focus and disconnect from your surroundings. But it's amazing how quickly a small baby learns to find the reset button.
Then I managed to get a small office in the same building, and hired a Co-op to do a small project. I was also working on a project with a team located 3.5 hours away (in the opposite direction). That was even better, and I enjoyed it... but I ended up leaving the job -- and joined a local start-up.
What I missed the most wasn't space or going out. It was daily team interaction, and having some fun with coworkers. I felt lonely in a way, during the day. Plus in terms of company integration (peers or bosses), it doesn't help to be away.
It was a great experience, but I am happy that it ended.
If I was to work independently or telecommute again, I would want to have a team to interact with, or at least an associate. It does bring a lot of synergy and interaction.
So maybe finding another consultant to work with would help. Then choosing an office location is just a secondary thing.
Or look for opportunities to work on your customer's site.
Those interested should definitely check SwissMetro ( http://www.swissmetro.com/sito/default_eng.htm ).
An actual implementation has been proposed back in 1997 and discussed at the political. A 40 miles pilot track is being planned between Geneva and Lausanne.
The main obstacles are cost and, as for all big constructions in Switzerland, the need to address any and all concerns about degradation of the environment.
Imagine if I had a medical emergency. I'm going to die. Someone needs to make a life or death decision fast. It could save me or kill me. What to do, what to do, what to do? But if I had my DNA on file somewhere, just look it up, and the decision is made.
Now imagine next time you need to contract health insurance, or get a job. How convenient is it for the other party to check up on your genetic risks and deficiencies ! Its so helpful for them to know !
If you find you need more than Qt offers for network i/o, treading and stuff like that, consider the ACE libraries:
http://www.cs.wustl.edu/~schmidt/ACE.html
They are free, proven to be extremely portable, and can come with a full-featured Corba implementation.
See also POSA2 book for background info:
http://www.cs.wustl.edu/~schmidt/POSA/
Of course, check out boost for another well-tested + well-maintained cross-platform C++ library:
http://www.boost.org/
This is better/more modern C++, but there may not be much space for it between Qt and ACE.
Now for the serial port... dunno, but shouldn't be too difficult to encapsulate that. You may find useful info at:
http://www.lvr.com/
Just a few words from a Swiss citizen back home after spending a couple years in North America:
Getting a job Many conpanies are also desperately seeking competent IT people.
Example sites:
France: http://www.cadresemploi.fr/
Switzerland: http://www.success-and-career.ch
NB: CH is in the middle of Europe, but not actually in the EC yet.
Work permits This can be complicated, but note that each European country has its own immigration laws and policies. A few of them (Germany, CH...) have started to facilitate the immigration of IT personnel.
Taxes First, tax policies also vary from country to country. Here in Switzerland I am paying much less than I did in Canada.
Lifestyle Reasons I moved back here in Switzerland:
- in 5h by car, train or motorcycle: get to Paris, Venice, Rome, StTropez, etc... Or drive 1h to mountains and ski at 10000ft, 15min to any peaceful place in the country, 15min to the biggest lake of Europe (lake Geneva).
Everything is close, rich in history, you can spend each week-end in a completely different culture at will.
- more holidays and free time overall, less criminality concerns and such, better infrastructures.
- more care for nature: less waste, less car driving (smaller distances for job too), people enjoy walking more often (because they can).
- less fast-foods and coach potatoes. Restaurants are more expensive, but you take the time to eat fine things rather than junk.
Public school system (my wife was from Toronto and had a 9 year old when we moved): just great !
Individual French classes (the official language in this part of CH) were offered to our daughter until she was fully assimilated (took less than a year). She enjoys walking to school through a small wood (5min), while she had to be driven there in NA. She can take the bus and go downtown on her own (no concern here).
Having kids, moving to CH was just a bliss.
Also by the way, Universities are basically free here (~600 USD/year).
I actually kept working for the same company (asked to be relocated with no particular benefit for that), and I must say that we all really enjoy it much more here (although I am the only one who was born here).
For a nice interface, you really should try:
:)
http://map.search.ch/
Hey, I can even put the address of my current location in the url, and maybe you'll see me:
http://map.search.ch/morges/lausanne-45/
Sorry guys, this is a Swiss-only feature
In case it dies under slashdotting, the site offers a choice between satellite photos and street plans, interactive zooming, etc.
(NB: if you know any equivalent for other regions of the world, I'm interested!)
If C# (even v2) is mentioned, the C++/CLI extension to C++, which makes all of C#'s features available in C++, definitely should be included.
[C++ 200x is in progress, ok to omit].
Having been a mac user last century, I think the Object Pascal compilers it supported in the eighteies (MacApp anyone?) should be included -- I believe it was a precursor to Borland's Delphi.
Hypercard, AppleScript, and (to a lesser extent) Dylan would also be worth mentioning.
Now what would you think of (dropping quotes and spaces when unnecessary for parsing):Now what if built-in filter allowed you to generate either this compact blurb, or a neatly auto-formatted and indented form?
The JSON format (which I just discovered) is nearly identical to a format I have been using for 10+ years - with which this sample is compatible. The i/o implementation I use internally is in C++, and supports a binary, compressed, and encrypted formats as well. An incomplete rewrite of it in C is available at http://ivan.vecerina.com/code/datatree/.
I like JSON more than XML - because it offers a natural representation of hierarchical data structures seen most languages: a tree of records(/objects), arrays(/collections), and leaf values(/simple data fields).
XML has many qualities, but it is not the natural solution/format for such data structures. When should text data be used in XML? When should you use an element rather than an attribute in XML?
XML forces you to either select a standardized mapping that introduces redundant clutter (SOAP), or accept the complexity of an application-specific mapping.
Here's another Debian-related example: http://searchenterpriselinux.techtarget.com/origin alContent/0,289142,sid39_gci938279,00.html
The origial ./ article mentions that the extensible system would have special modules to manage the display/compilation of source code. Like ActiveX controls, this will make the compiler extensible, but fragile.
My point was: what if, instead of infecting your machine directly, the attack hidden in the source would generate unexpected viral or backdoor code. Upon review the source code would look ok. But during compilation the attack (e.g. a buffer overflow connected to some meta-information) would lead to the generation of different code - which will then be embedded in the produced executable.
The first example above uses a syntax detail of the standard C language. But with an extensible compiler, opportunities to sneak unexpected behavior into the generated code may proliferate...
I look forward to the first virus hidden in the meta-information of a program's source code.
As a programmer, I currently can't even handle HTML generators, and prefer to code (most of) my web pages by hand.
I wonder what becomes of Big Ball of Mud spaghetti code when translated into XML. How much worse can it become?
Another key issue may remain efficiency: compile and link times have remained issues for large projects, as program complexity keeps up with performance increases.
I'd bet on pure text source code for serious programming in the next 10+ years. Which doesn't mean that the Visual Basics and Mathematicas of tomorrow won't choose and XML-based storage format.
That's what happens when you don't run the validation after every edit!
Thank you, validation errors are now corrected on my personal site.
It took little more effort than to run through a simple "how to set-up PHP with Apache" guide. For windows, see: www.thesitewizard.com/archive/php4install.shtml
Doing a file include is extremely easy to start with. And from there, you can make your web page smarter by, for example, disabling (index) links that go to the page itself, generating TOCs from a single description, etc.
I found that Running Apache+PHP locally was totally non-intrusive. I just use http://localhost/... for previewing.
When my hosting service did not support PHP, I used 'wget' to get a pure HTML version of my web page.
I casually maintain a personal and a company website (ivan.vecerina.com and www.xitact.com). I find this basic PHP solution to be easily maintainable.
"Software" patents in particular are (still) invalid in most areas of the world. And have you heard recently of the Viagra patent being invalidated in China, allowing the local industry to manufacture cheaper knock-off?
(NB: the US themselves did not introduce a patent/copyright system until it they actually could benefit from it)
I would think that the US people will primarily be harmed by its patent and copyright system except for a few large companies.
or that the sound effects may have been purchased from an external collection?
I see no smoking gun here.
The bit shift and bit mask values should be compile-time constants, e.g.: , : : : :
enum {
bytesPerInt = sizeof(unsigned)*8
bpiShift =(bytesPerInt==16 ? 4
bytesPerInt==32 ? 5
bytesPerInt==64 ? 6
bytesPerInt==128 ? 7
0/*->error*/ ),
bpiMask = (1<<bpiShift)-1
};
This will allow the compiler to generate more efficient/hardcoded masking & shifting instructions.
Next, it is pointless to store/test even numbers inside the array - you could nearly double speed here, and simply shift down the array indices by one extra bit.
Similarly, it is easy enough to avoid testing multiples of 3, by alternating between increments of 2 and 4 times the prime number being tested.
Of course, much more can be done (even while maintaining the current level of code portability), but these are the obvious steps I would take to speed-up the presented bit-array method (paged or not).
Well, DiscMan devices were getting as compact as they could around a CD, but they gave way to the iPod.
Now what about wearable computers, head-mounted displays, new input devices?
What about integrating a camera, and supporting interpersonnal communications?
I'm not worried about the lack of room to grow...
BTW: having all applications designed around a 1-button mouse may ease the transition to a new input device...
Say a plane crashes today in the Atlantic, and you know that many bodies may never be recovered.
How many families will want to know for sure if a relative was on board or not? How many individuals may want to claim they, or a given relative, where on board to get a hefty life insurance payment?
Even if bodies are found and recovered, it really helps for any kind of forensics to have the IDs of all passengers.
I do not think that having to show an ID is such a problem. The issue I'd have is with the storage and centralization of ID information.
Non-religious fundamentalism is part of the problem as well. Fundamentalism ("strict adherence to a system of beliefs") is often given a spriritual justification. But promises of wealth, racial supremacy theories, FUD etc, can be leveraged as well to rally the masses behind one true way to think.
Could it be that "The War on Terror", which according to the article can be seen as a success of Bin Laden's plan, is used to promote another form of Fundamentalism?
The articles provides food for thought, and shows how issues are more complex than usually depicted in the media -- because mass media seems to skip to conclusions, as rightful and correct as they can be, polarizing and strengthening the opinion. Because you need to be strong to face an opponent.
In a conflict, no party has the monopoly of terror and brute force - or there would be no conflict. While we want to be strong, keeping an understanding the motives of "the other" helps find more creative and pacific ways to *undermine* terror -- if and when a compromise is possible. Because war can only fight terrorists, not Terror. War is Terror, war feeds Terror, and war can only bring ephemeral and bitter victories.
Are compromises possible with fundamental islamists? Even though I oppose their acts and beliefs, can I sympathize with some of the motives they use to justify their action?
Like the fact that some UN resolutions are more enforceable than others? Like the building of walls, reminicent of past ghettoes, across occupied territories? Like discriminations based on religion being perpetrated? Like Human Rights and the laws we established being decreted, by our own leaders and without open debate, as "not applicable" in some areas and circumstances?
While it is important to stand united against an agression, we need to keep some room for debate. We need to keep widely accessible forums where all perspectives are confronted and debated publicly. If not, we are paving the road to a revival of fundamentalisms.
Agreed: password complexity does not need to scale with CPU power.
If attackers have no access to the stored hashed password, CPU speed is irrelevant: what is needed is a system-enforced limit on the number of login attempts per second/minute.
CPU power is relevant for attacks that restore the password from a compromised hash. Here again, the vulnerability to these attacks can be avoided by: (1) increasing the complexity/cost of the hashing mechanism (2) making sure that a kind of system-specific 'salt' is used (and eventually changed periodically) to avoid the use of pre-computed plaintext/hash tables.
As does Borland (Delphi & C++ IIRC) for 3 years already, at least.
- Decoding a RLE data buffer is short of impressive as a benchmark. RLE was designed as a simple and specific (generally inefficient) compression approach for age-old hardware (i.e. 8MHz, not 333MHz as the base system used here).
How about JPEG or PNG ?
- The author actually spent several iterations optimizing this Erlang code. And these optimizations required handling special cases. (So performance eventually did matter to the author?) Now, would a 'first throw' implementation in C/C++ have been written faster while immediately performing better than the Erlang version? (simpler code)
- I agree that the compiled/interpreted code performance matters less and less, because processors are so much more powerful. For instance, the processing for RLE decompression should in any case be negligible wrt the memory or disk i/o involved.
What is becoming increasingly important, however, is the data structures and algorithms that are used. In this perspective, C++ still shines, thanks to the flexibility that its algorithms and containers library provides.
C++ offers both a high level of abstraction (working with containers), and provides the ability to convert to a different implementation strategy with ease - if and when profiling demonstrates a need.
For large system and library development, the strong static typing of C++ is also a real plus (it doesn't matter to me it is faster than dynamic typing or not).
I totally agree that performance should not be a concern during program implementation (other than avoiding 'unnecessary pessimization', which involves the KISS principle and knowledge of language idioms). Optimization should only be performed where the need for a speed-up has been demonstrated.
Other than saying "wow this interpreted language runs damn fast on current hardware", this article does a poor job at making any relevant point.
radix omnia malorum prematurae optimisatia est -- Donald Knuth
the status codes I display using the single led output it has.
;)
The think is pretty much I/O bound with several external components, so no chip simulator does the job.
Consider yourself lucky
Except that it is not C++. Last I checked, there was this unfortunate special preprocessor ("meta object compiler"?) that has to translate some files first.
This is just unfortunate, because a signals and slots can be supported with only a slightly different syntax using C++ templates.
Another sin (shared with wxWindows) is the lack of leveraging C++ standard libraries (std::string, standard collections and algorithms).
Too bad... better could be made, on the GUI front, of this complex but powerful language.
It has been nice: First working from the living room of our appartment. It was fun, because my wife was great (enjoying freshly cooked food), and our first son was just born. She would leave me with him to go shopping while he was asleep, saw him grow up, etc. I have been traveling 10-20% of the time, which helped it be more bareable. Also, you need a strong ability to focus and disconnect from your surroundings.
But it's amazing how quickly a small baby learns to find the reset button.
Then I managed to get a small office in the same building, and hired a Co-op to do a small project.
I was also working on a project with a team located 3.5 hours away (in the opposite direction). That was even better, and I enjoyed it... but I ended up leaving the job -- and joined a local start-up.
What I missed the most wasn't space or going out. It was daily team interaction, and having some fun with coworkers. I felt lonely in a way, during the day. Plus in terms of company integration (peers or bosses), it doesn't help to be away.
It was a great experience, but I am happy that it ended.
If I was to work independently or telecommute again, I would want to have a team to interact with, or at least an associate. It does bring a lot of synergy and interaction.
So maybe finding another consultant to work with would help. Then choosing an office location is just a secondary thing.
Or look for opportunities to work on your customer's site.
An actual implementation has been proposed back in 1997 and discussed at the political. A 40 miles pilot track is being planned between Geneva and Lausanne.
The main obstacles are cost and, as for all big constructions in Switzerland, the need to address any and all concerns about degradation of the environment.
Check it out!
Imagine if I had a medical emergency. I'm going to die. Someone needs to make a life or death decision fast. It could save me or kill me. What to do, what to do, what to do? But if I had my DNA on file somewhere, just look it up, and the decision is made.
Now imagine next time you need to contract health insurance, or get a job. How convenient is it for the other party to check up on your genetic risks and deficiencies !
Its so helpful for them to know !
If you find you need more than Qt offers for network i/o, treading and stuff like that, consider the ACE libraries:
http://www.cs.wustl.edu/~schmidt/ACE.html
They are free, proven to be extremely portable, and can come with a full-featured Corba implementation.
See also POSA2 book for background info:
http://www.cs.wustl.edu/~schmidt/POSA/
Of course, check out boost for another well-tested + well-maintained cross-platform C++ library:
http://www.boost.org/
This is better/more modern C++, but there may not be much space for it between Qt and ACE.
Now for the serial port... dunno, but shouldn't be too difficult to encapsulate that. You may find useful info at:
http://www.lvr.com/
Good Luck - Ivan
Just a few words from a Swiss citizen back home after spending a couple years in North America:
Getting a job
Many conpanies are also desperately seeking competent IT people.
Example sites:
France: http://www.cadresemploi.fr/
Switzerland: http://www.success-and-career.ch
NB: CH is in the middle of Europe, but not actually in the EC yet.
Work permits
This can be complicated, but note that each European country has its own immigration laws and policies. A few of them (Germany, CH...) have started to facilitate the immigration of IT personnel.
Taxes
First, tax policies also vary from country to country. Here in Switzerland I am paying much less than I did in Canada.
Lifestyle
Reasons I moved back here in Switzerland:
- in 5h by car, train or motorcycle: get to Paris, Venice, Rome, StTropez, etc... Or drive 1h to mountains and ski at 10000ft, 15min to any peaceful place in the country, 15min to the biggest lake of Europe (lake Geneva).
Everything is close, rich in history, you can spend each week-end in a completely different culture at will.
- more holidays and free time overall, less criminality concerns and such, better infrastructures.
- more care for nature: less waste, less car driving (smaller distances for job too), people enjoy walking more often (because they can).
- less fast-foods and coach potatoes. Restaurants are more expensive, but you take the time to eat fine things rather than junk.
Public school system (my wife was from Toronto and had a 9 year old when we moved): just great !
Individual French classes (the official language in this part of CH) were offered to our daughter until she was fully assimilated (took less than a year). She enjoys walking to school through a small wood (5min), while she had to be driven there in NA. She can take the bus and go downtown on her own (no concern here).
Having kids, moving to CH was just a bliss.
Also by the way, Universities are basically free here (~600 USD/year).
I actually kept working for the same company (asked to be relocated with no particular benefit for that), and I must say that we all really enjoy it much more here (although I am the only one who was born here).
That's just an personal perspective...