When it comes to writing a good design document, use whatever you feel most comfortable. Yes - UML is a highly expressive way of describing the life cycle of a system but if it isn't familiar to you, you'll be better off with a list of things that it is supposed to do. Ideally, the design document should be readable by every one who has some requirement from the design. This does sometimes mean that you need to split your design into externals (what the customer sees) and internals.
One technique that I have found to be particularly effective is "test-driven development". That's another buzz-wordy phrase for your resume. However, this one carries significant benefits.
If at the time you write your design you also write a ready-to-run test suite to test your design, you will write a better, more complete design because you will have been forced to think about the scenarios your design must cope with. Further more, you also have a great way to assess your progress as the design is implemented. If you were thorough in writing your test suite, then you can gauge the functional completeness of your project by simply seeing how many of your tests are running successfully.
Oddly enough, this approach leads to faster development cycles because you always have a clear picture of what is working, what needs to be implemented still and what is not behaving as expected. It is also pretty motivating to write a couple of hundred lines of code and to be able to quickly run some tests to validate its function and see another two tests click through successfully.
Are we talking the initial USD$70 cost for the wireless router? Is there some sort of "I have a wireless Internet connection and therefore pay a larger Internet bill" fee that I don't know about?
Depends on the terms-of-service. For people who pay for every Gb over a specific value or who get reduced throughput after they max out their allocation, having someone freeloading on their wireless is indeed costing them either money or quality of service.
Now you can argue that they should damn well learn to secure their wireless adapter. But I dare say you'd be upset if your neighbour jumped your fence and plugged an extension cable into your outdoor outlet. Why didn't you padlock it up?!
ICC is hands down the best C++ compiler for x86 and x64 from a performance perspective. GCC isnt even in the running on that front. All GCC has going for it is that its "free"
Given that we get a few percent benefit from using ICC over GCC after heavy tuning, I'd say that GCC gets the job done pretty well, given that it is a general purpose, multiplatform compiler. And one thing ICC totally sucks at is compiling speed - ICC takes two to three times longer than GCC to compile and link code. When I need to test a feature today, you can guess which compiler I reach for, especially when GCC can take over an hour to complete some of the code bases here.
"gTweakUI - menus" offers a GUI way to enable GTK apps to rebind keys on the fly. Or you can edit your ~/.gtkrc-2.0 and add
gtk-can-change-accels = true
2. Controlling GUI programs via command-line/script.
qdbus or dbus-send allow this sort of activity and apply to both GNOME and KDE4 apps. Although for your example I'd probably use xclip and invoke firefox directly.
3. File requester dialogues, specific to each program.
Not that I'm aware of. Most GNOME apps seem to remember the last location a file was saved but I think that's it.
4. When I Drag & Drop in KDE, a menu pops up
Right-click drag in GNOME produces a menu (Copy/Move/Link). Left-click drag will move files if you are on the same filesystem, or will copy if you are crossing filesystem boundaries. The latter is useful when copying files to a USB key, for example. The icon changes to indicate that change in behaviour, and can be overriden using Ctrl (for copy), Shift (for move) or Alt (for menu prompt).
5. Equivalent of Norton Commander/Midnight Commander for GNOME?
GNOME Commander is one choice. I seem to remember others but I tend to either use Nautilus, Emacs or the command line for file ops.
That's actually a huge question, not easily answered in a post.
If your needs are HA, then you probably want something chunky, expensive and high-performance like GPFS or other SAN offerings.
If your needs are light, you may find that SSH actually provides everything you could possibly require (via scp/sftp/ssh+rsync) without configuring anything funky.
Somewhere in the middle, dedicated NAS boxes can make life easier (running NFSv3 or v4) for centralised storage and backup. Just make sure that the boxes can take the load and are always available.
The bottom line: trial first, test hard, deploy and monitor. Real usage can reveal problems you missed in test, in which case you had better be prepared to move up to a better solution.
Well for one, the completions sucks! (Or it used to suck at least, haven't tried Gnome for a while)
I can tell...
Completion has to work when you are looking at it or not. So if I type/usr/bin it should show/usr/bin...
That's what it does.
And of course Gnome is supposedly easy to use, so why did I have to look for ages to find the Search function in the file dialog? There was no Search bar...
It's in the Places sidebar on the left of the dialog. Indeed, it's the first option.
Software does occasionally improve. You might be surprised at recent releases of GNOME.
I really want Linux to be my main desktop operating system. It's just the stupid small things that take huge blocks of time to "solve" that prevent me from making the switch. Why would I want to spend tons of hours editing my xorg.conf to get an extended desktop that (a) doesn't work with Compiz because it's really a hack and not a solution, and (b) has to be reconfigured, by me, everytime I dock/undock my laptop? Getting dual-screens of any kind to work with Windows takes five minutes at the most.
More times than not, you can delete xorg.conf and just let Xorg set it up on the fly. I've had three or four systems work perfectly without a xorg.conf file (various laptops and desktops). The only/etc/X11/xorg.conf files I feel the need to edit now are the synaptics mouse pads which have some nice extras that aren't available in the vanilla configuration. You can find out what Xorg has actually done by looking in/var/log/Xorg.0.log - the internal configuration file is near the top and can be copied to/etc/X11/xorg.conf for tweakage.
If you are running an ATi card (and I'm guessing that you are) you might find that a lot more works than you anticipate. Including automatic detection of extra screens (thanks to XRandR). My ATi FireGL v5200 can run compiz and multiple monitors without additional configuration these days.
the different File Open/Save dialogue boxes grate on me
Which is exactly one of the reasons why I prefer KDE. I don't know how you can stand the Gnome requesters! They seem horrible to me.
What's wrong with Ctrl-l (letter L)? Then just type with completion. Or just type - the GNOME dialogues generally are driven comfortably from the keyboard. I rarely use the mouse in GNOME.
Any administrator will tell you that NFS sucks. NFSv4 simply sucks less.
NFS is fine for systems which have static IP addresses, filesystems that have limited writes and do not require high-performance access for reads of many files. If you need better performance, you should look at direct-attach options such as SANFS, Veritas Storage or GPFS.
NFS has a nasty tendancy of tying itself in knots when a server goes offline. Witness the zombie processes that can't unlock themselves. Even if you go down the route of soft mounts and interruptable locks, it can be messy. As the original server comes back up, all the remote systems relying on it can suddenly flood the machine with requests for NFS access and knock it over again, requiring some careful masking of the servers traffic for a while.
Samba isn't perfect but it works better for dynamic IP, has reasonable performance and generally doesn't get into locking hell. You can also access remote services such as printing over Samba.
This isn't an example of evolution in action; this is closer to a simulated annealing because there is a set goal - make a set of transparent polygons look like the target image. Mutate-and-iterate is not enough to make this evolutionary.
Evolution does not have a stringent end-goal - there is no finish line, and no qualification of perfection. Evolutionary algorithms must merely out-compete their peers and survive for the next round.
That doesn't make the article bad - the idea is interesting and the results are impressive. However, whoever titled this Evolution is clearly confused.
I'm a heavy user of GNU Screen - I'm constantly on and off around 20 machines so persistent terminals are a major time saver.
Right now, you can start emacs with the "-nw" flag or you can unset the DISPLAY environment variable to force terminal mode. There is a space between DISPLAY= and the emacs command!
env DISPLAY= emacs
This is convenient in GNU Screen because I can connect right into an existing Emacs session.
Now there are times when I would prefer to forward a display from Emacs over X. With GNU Emacs 22 you can have frames on multiple displays but not ttys and X at the same time. That should change with GNU Emacs 23 - it should be possible to stick an Emacs-terminal process inside a Screen session and ask for frames to opened on a remote display from that Emacs process.
Or hold down Control, type in the number of times you want to repeat the macro, and then type C-x e. Very useful for those "search, replace and do stuff" macros because when the interactive search fails, the macros stop.
Lisp is a language that CompScis see for two months at University before leaving it behind. But if you really want to learn tricks with Emacs, you should learn Emacs Lisp - I have all sorts of specials, such as "move text to marker" and modes for handling internal IBM dump formats, that would be impossible in vi.
But if you want one quick piece of advice, here's one that should make someone smile
M-x hippie-expand RET
The ultimate, expand-this-thing-dammit-from-whatever-you-like completion trick.
Perl has a language implementation which is its own spec. This leads to significant gnarly-ness when it comes to doing subsequent implementation, be they on.NET, the JVM or on a Lisp Machine.
ObCorollary: only Perl can read Perl.
This actually looks like a problem - I went looking to see if there was anything that could read Perl code and do static analysis, etc. I was interested in call-graphs and similar metrics. At first I found some rough stuff but basically the field was empty, at least as far as external tools were concerned.
Then, epiphany. I stumbled on the "only Perl can read Perl" and discovered a whole new world - the Perl compiler and the profiler hooks in Perl allow one to act on pretty much anything you could dream of.
So Perl is quite capable of instrumenting Perl code. But it is alone in that respect - at least until Perl 6.
Cheers,
Toby Haynes
Re:oh goody.
on
C# In-Depth
·
· Score: 4, Insightful
The implementation is about the same in both languages, but using it is much nicer and cleaner in C# than in Java.
That really is a matter of opinion. In Java, it's pretty clear that you are requesting or modifying a property of the object. In C#, you are using assignment to represent that mechanism so you might be accessing a public member variable directly or calling a method to achieve that end. To me, the Java method is more explicit and therefore less prone to error.
Cheers,
Toby Haynes
Re:I really want a copy of this...
on
Clean Code
·
· Score: 3, Interesting
It's interesting you chose this one. I write a lot of Perl (tens of thousands of lines a year) and you might have done this in perl:
sub sum {
my $input = shift;
if ($input =< 0) return 0;
return sum($input - 1) + $input;
}
at which point you would tried it out on some large number and cried about the performance. Now the code is clean (albeit somewhat lacking in type checking) and it would be a shame to lose that cleanliness in the search for performance. This function is deterministic, so if we can cache the result, we can get the performance we want at the expense of memory usage. So we add the following to our code:
use Memoize;
memoize('sum');
and magically, we get caching on the sum subroutine. And our code remains clean and understandable.
Just because anyone can write unreadable, unmaintainable Perl doesn't mean you have to...
If you set the file system permissions correctly and keep all logins in the Users group, it is remarkably difficult to crack these systems.
That does suggest that you are lucky enough that all your Windows apps are happy running as a "normal" user. There is still plenty of Windows software around that insists on an Administrator account.
There's no real reason to expect SSDs to be more reliable today. Bits get flipped in memory in ways they don't get flipped on disk.
Ummm - you what? SSDs are a replacement option for spindle-type drives so they should be seeing the same sort of activity. Maybe the location of each write might vary as the drive controller for SSDs is interested in equalizing access around the memory. But last time I looked, bits are "on" or "off" unless you count the "evil" bit...
And if you get the pirated/cracked version today, you might not get another pirated/cracked version three months down the line because LGP goes out of business. Not exactly a sustainable process... LGP is one of the very few companies out there doing ports of games by other software houses. Every Linux gamer lamented Loki shutting its doors - despite questionable business practices and over-ambitious plans, Loki did manage to raise the profile of Linux-as-a-gaming platform.
LGP seems to be taking a more measured approach to getting games ported to Linux. That they have managed to stay in business this long without folding is no small acheivement. I'm sad that they feel they have to have some sort of activation system but that appears to be a needed reality.
Yet, the thought of wanting to throw one of these games on my system on the day my ISP is hosed and being denied my right to play my legally purchased game because of this pointless rigmarole irks me.
If this was what LGP had done, you would have had some right to be upset. But that isn't what they have implemented - if your network drops out, you can still play. You can play the game for a certain length of time without network access (I'm assuming that's weeks or months) before you have to re-authenticate. You can even re-authenticate via another machine's web browser if your game machine never has network access (surely a rare event these days). That looks as equitable a system as could be envisaged.
Look - read their press release. It actually contains Real Information (TM).
The beta mailing list for Sacred had some discussion on the new key feature but I'd hardly call it an "enraged" exchanged. No chair throwing was observed. Any protection system is a thorny issue.
Pretty much every commercial game I've bought for Linux has some sort of activation system, key lookup or similar. Most of them have some system for authenticating once online and then going offline thereafter. DropTeam even offered a way to generate an authorization on one machine and use it on a non-networked machine.
If you really want to understand Electronics, then this book really deserves your attention. Not only does it clearly explain many of the concepts, it also stretches your understanding by showing you examples of circuits that do not work. It is an essential text if you want deep knowledge on this subject.
On the other hand, if you are only interested in making shortwave radios, this book is overkill.
When it comes to writing a good design document, use whatever you feel most comfortable. Yes - UML is a highly expressive way of describing the life cycle of a system but if it isn't familiar to you, you'll be better off with a list of things that it is supposed to do. Ideally, the design document should be readable by every one who has some requirement from the design. This does sometimes mean that you need to split your design into externals (what the customer sees) and internals.
One technique that I have found to be particularly effective is "test-driven development". That's another buzz-wordy phrase for your resume. However, this one carries significant benefits.
If at the time you write your design you also write a ready-to-run test suite to test your design, you will write a better, more complete design because you will have been forced to think about the scenarios your design must cope with. Further more, you also have a great way to assess your progress as the design is implemented. If you were thorough in writing your test suite, then you can gauge the functional completeness of your project by simply seeing how many of your tests are running successfully.
Oddly enough, this approach leads to faster development cycles because you always have a clear picture of what is working, what needs to be implemented still and what is not behaving as expected. It is also pretty motivating to write a couple of hundred lines of code and to be able to quickly run some tests to validate its function and see another two tests click through successfully.
Cheers,
Toby Haynes
Of course you can do this with Emacs. You can do anything you like with Emacs.
C-x M-x M-butterfly RET
Runs and hides...
Are we talking the initial USD$70 cost for the wireless router? Is there some sort of "I have a wireless Internet connection and therefore pay a larger Internet bill" fee that I don't know about?
Depends on the terms-of-service. For people who pay for every Gb over a specific value or who get reduced throughput after they max out their allocation, having someone freeloading on their wireless is indeed costing them either money or quality of service.
Now you can argue that they should damn well learn to secure their wireless adapter. But I dare say you'd be upset if your neighbour jumped your fence and plugged an extension cable into your outdoor outlet. Why didn't you padlock it up?!
Cheers,
Toby Haynes
ICC is hands down the best C++ compiler for x86 and x64 from a performance perspective. GCC isnt even in the running on that front. All GCC has going for it is that its "free"
Given that we get a few percent benefit from using ICC over GCC after heavy tuning, I'd say that GCC gets the job done pretty well, given that it is a general purpose, multiplatform compiler. And one thing ICC totally sucks at is compiling speed - ICC takes two to three times longer than GCC to compile and link code. When I need to test a feature today, you can guess which compiler I reach for, especially when GCC can take over an hour to complete some of the code bases here.
Cheers,
Toby Haynes
The longest words I can find for that lot are only 13 letters long:
and the best score (without bonuses) is for "jollyheads". Ah the wonders of a few lines of perl.
Cheers,
Toby Haynes
1. Customizing keyboard shortcuts in GNOME.
"gTweakUI - menus" offers a GUI way to enable GTK apps to rebind keys on the fly. Or you can edit your ~/.gtkrc-2.0 and add
gtk-can-change-accels = true
2. Controlling GUI programs via command-line/script.
qdbus or dbus-send allow this sort of activity and apply to both GNOME and KDE4 apps. Although for your example I'd probably use xclip and invoke firefox directly.
3. File requester dialogues, specific to each program.
Not that I'm aware of. Most GNOME apps seem to remember the last location a file was saved but I think that's it.
4. When I Drag & Drop in KDE, a menu pops up
Right-click drag in GNOME produces a menu (Copy/Move/Link). Left-click drag will move files if you are on the same filesystem, or will copy if you are crossing filesystem boundaries. The latter is useful when copying files to a USB key, for example. The icon changes to indicate that change in behaviour, and can be overriden using Ctrl (for copy), Shift (for move) or Alt (for menu prompt).
5. Equivalent of Norton Commander/Midnight Commander for GNOME?
GNOME Commander is one choice. I seem to remember others but I tend to either use Nautilus, Emacs or the command line for file ops.
Cheers,
Toby Haynes
That's actually a huge question, not easily answered in a post.
If your needs are HA, then you probably want something chunky, expensive and high-performance like GPFS or other SAN offerings.
If your needs are light, you may find that SSH actually provides everything you could possibly require (via scp/sftp/ssh+rsync) without configuring anything funky.
Somewhere in the middle, dedicated NAS boxes can make life easier (running NFSv3 or v4) for centralised storage and backup. Just make sure that the boxes can take the load and are always available.
The bottom line: trial first, test hard, deploy and monitor. Real usage can reveal problems you missed in test, in which case you had better be prepared to move up to a better solution.
Cheers,
Toby Haynes
Well for one, the completions sucks! (Or it used to suck at least, haven't tried Gnome for a while)
I can tell...
Completion has to work when you are looking at it or not. So if I type /usr/bin it should show /usr/bin...
That's what it does.
And of course Gnome is supposedly easy to use, so why did I have to look for ages to find the Search function in the file dialog? There was no Search bar...
It's in the Places sidebar on the left of the dialog. Indeed, it's the first option.
Software does occasionally improve. You might be surprised at recent releases of GNOME.
Cheers,
Toby Haynes
I really want Linux to be my main desktop operating system. It's just the stupid small things that take huge blocks of time to "solve" that prevent me from making the switch. Why would I want to spend tons of hours editing my xorg.conf to get an extended desktop that (a) doesn't work with Compiz because it's really a hack and not a solution, and (b) has to be reconfigured, by me, everytime I dock/undock my laptop? Getting dual-screens of any kind to work with Windows takes five minutes at the most.
More times than not, you can delete xorg.conf and just let Xorg set it up on the fly. I've had three or four systems work perfectly without a xorg.conf file (various laptops and desktops). The only /etc/X11/xorg.conf files I feel the need to edit now are the synaptics mouse pads which have some nice extras that aren't available in the vanilla configuration. You can find out what Xorg has actually done by looking in /var/log/Xorg.0.log - the internal configuration file is near the top and can be copied to /etc/X11/xorg.conf for tweakage.
If you are running an ATi card (and I'm guessing that you are) you might find that a lot more works than you anticipate. Including automatic detection of extra screens (thanks to XRandR). My ATi FireGL v5200 can run compiz and multiple monitors without additional configuration these days.
Cheers,
Toby Haynes
Last time I tried gnome, it took forever to get to auto-hiding panels, increasing font sizes, and getting colors set so my eyes didn't hurt.
Lets take it from the top.
Autohide in four clicks.
Application Font size in five clicks.
Changing theme colours in 4+3*N clicks.
That last one is a little messier but you could always have chosen a different theme which matched your aesthetics better.
All with GNOME 2.24.
Cheers,
Toby Haynes
the different File Open/Save dialogue boxes grate on me
Which is exactly one of the reasons why I prefer KDE. I don't know how you can stand the Gnome requesters! They seem horrible to me.
What's wrong with Ctrl-l (letter L)? Then just type with completion. Or just type - the GNOME dialogues generally are driven comfortably from the keyboard. I rarely use the mouse in GNOME.
Cheers,
Toby Haynes
Any administrator will tell you that NFS sucks. NFSv4 simply sucks less.
NFS is fine for systems which have static IP addresses, filesystems that have limited writes and do not require high-performance access for reads of many files. If you need better performance, you should look at direct-attach options such as SANFS, Veritas Storage or GPFS.
NFS has a nasty tendancy of tying itself in knots when a server goes offline. Witness the zombie processes that can't unlock themselves. Even if you go down the route of soft mounts and interruptable locks, it can be messy. As the original server comes back up, all the remote systems relying on it can suddenly flood the machine with requests for NFS access and knock it over again, requiring some careful masking of the servers traffic for a while.
Samba isn't perfect but it works better for dynamic IP, has reasonable performance and generally doesn't get into locking hell. You can also access remote services such as printing over Samba.
My 2 cents...
Cheers,
Toby Haynes
This isn't an example of evolution in action; this is closer to a simulated annealing because there is a set goal - make a set of transparent polygons look like the target image. Mutate-and-iterate is not enough to make this evolutionary.
Evolution does not have a stringent end-goal - there is no finish line, and no qualification of perfection. Evolutionary algorithms must merely out-compete their peers and survive for the next round.
That doesn't make the article bad - the idea is interesting and the results are impressive. However, whoever titled this Evolution is clearly confused.
Cheers,
Toby Haynes
I'm a heavy user of GNU Screen - I'm constantly on and off around 20 machines so persistent terminals are a major time saver.
Right now, you can start emacs with the "-nw" flag or you can unset the DISPLAY environment variable to force terminal mode. There is a space between DISPLAY= and the emacs command!
env DISPLAY= emacs
This is convenient in GNU Screen because I can connect right into an existing Emacs session.
Now there are times when I would prefer to forward a display from Emacs over X. With GNU Emacs 22 you can have frames on multiple displays but not ttys and X at the same time. That should change with GNU Emacs 23 - it should be possible to stick an Emacs-terminal process inside a Screen session and ask for frames to opened on a remote display from that Emacs process.
Cheers,
Toby Haynes
Or hold down Control, type in the number of times you want to repeat the macro, and then type C-x e. Very useful for those "search, replace and do stuff" macros because when the interactive search fails, the macros stop.
Lisp is a language that CompScis see for two months at University before leaving it behind. But if you really want to learn tricks with Emacs, you should learn Emacs Lisp - I have all sorts of specials, such as "move text to marker" and modes for handling internal IBM dump formats, that would be impossible in vi.
But if you want one quick piece of advice, here's one that should make someone smile
M-x hippie-expand RET
The ultimate, expand-this-thing-dammit-from-whatever-you-like completion trick.
Cheers,
Toby Haynes
Perl has a language implementation which is its own spec. This leads to significant gnarly-ness when it comes to doing subsequent implementation, be they on .NET, the JVM or on a Lisp Machine.
ObCorollary: only Perl can read Perl.
This actually looks like a problem - I went looking to see if there was anything that could read Perl code and do static analysis, etc. I was interested in call-graphs and similar metrics. At first I found some rough stuff but basically the field was empty, at least as far as external tools were concerned.
Then, epiphany. I stumbled on the "only Perl can read Perl" and discovered a whole new world - the Perl compiler and the profiler hooks in Perl allow one to act on pretty much anything you could dream of.
So Perl is quite capable of instrumenting Perl code. But it is alone in that respect - at least until Perl 6.
Cheers,
Toby Haynes
The implementation is about the same in both languages, but using it is much nicer and cleaner in C# than in Java.
That really is a matter of opinion. In Java, it's pretty clear that you are requesting or modifying a property of the object. In C#, you are using assignment to represent that mechanism so you might be accessing a public member variable directly or calling a method to achieve that end. To me, the Java method is more explicit and therefore less prone to error.
Cheers,
Toby Haynes
Consider the first "clean" sum generator:
int sum(int n) { if(!n) return 0; return sum(n-1) + n; }
It's interesting you chose this one. I write a lot of Perl (tens of thousands of lines a year) and you might have done this in perl:
sub sum {
my $input = shift;
if ($input =< 0) return 0;
return sum($input - 1) + $input;
}
at which point you would tried it out on some large number and cried about the performance. Now the code is clean (albeit somewhat lacking in type checking) and it would be a shame to lose that cleanliness in the search for performance. This function is deterministic, so if we can cache the result, we can get the performance we want at the expense of memory usage. So we add the following to our code:
use Memoize;
memoize('sum');
and magically, we get caching on the sum subroutine. And our code remains clean and understandable.
Just because anyone can write unreadable, unmaintainable Perl doesn't mean you have to...
Cheers,
Toby Haynes
If you set the file system permissions correctly and keep all logins in the Users group, it is remarkably difficult to crack these systems.
That does suggest that you are lucky enough that all your Windows apps are happy running as a "normal" user. There is still plenty of Windows software around that insists on an Administrator account.
Cheers,
Toby Haynes
There's no real reason to expect SSDs to be more reliable today. Bits get flipped in memory in ways they don't get flipped on disk.
Ummm - you what? SSDs are a replacement option for spindle-type drives so they should be seeing the same sort of activity. Maybe the location of each write might vary as the drive controller for SSDs is interested in equalizing access around the memory. But last time I looked, bits are "on" or "off" unless you count the "evil" bit...
Cheers,
Toby Haynes
And if you get the pirated/cracked version today, you might not get another pirated/cracked version three months down the line because LGP goes out of business. Not exactly a sustainable process... LGP is one of the very few companies out there doing ports of games by other software houses. Every Linux gamer lamented Loki shutting its doors - despite questionable business practices and over-ambitious plans, Loki did manage to raise the profile of Linux-as-a-gaming platform.
LGP seems to be taking a more measured approach to getting games ported to Linux. That they have managed to stay in business this long without folding is no small acheivement. I'm sad that they feel they have to have some sort of activation system but that appears to be a needed reality.
Cheers,
Toby Haynes
Yet, the thought of wanting to throw one of these games on my system on the day my ISP is hosed and being denied my right to play my legally purchased game because of this pointless rigmarole irks me.
If this was what LGP had done, you would have had some right to be upset. But that isn't what they have implemented - if your network drops out, you can still play. You can play the game for a certain length of time without network access (I'm assuming that's weeks or months) before you have to re-authenticate. You can even re-authenticate via another machine's web browser if your game machine never has network access (surely a rare event these days). That looks as equitable a system as could be envisaged.
Look - read their press release. It actually contains Real Information (TM).
Cheers,
Toby Haynes
The beta mailing list for Sacred had some discussion on the new key feature but I'd hardly call it an "enraged" exchanged. No chair throwing was observed. Any protection system is a thorny issue.
Pretty much every commercial game I've bought for Linux has some sort of activation system, key lookup or similar. Most of them have some system for authenticating once online and then going offline thereafter. DropTeam even offered a way to generate an authorization on one machine and use it on a non-networked machine.
Storm in a teacup.
Cheers,
Toby Haynes
If you really want to understand Electronics, then this book really deserves your attention. Not only does it clearly explain many of the concepts, it also stretches your understanding by showing you examples of circuits that do not work. It is an essential text if you want deep knowledge on this subject.
On the other hand, if you are only interested in making shortwave radios, this book is overkill.
Cheers,
Toby Haynes