I assume from the description that this is referring to XAML, which is a format for expressing an arbitrary heirarchy of objects usually GUI controls in XML. This was introduced in.NET Framework 3 as part of the new Windows Presentation Foundation. The Olive project over at Mono is aiming to implement this new stuff, and reportedly does have a XAML implementation, but they don't yet have any completed implementations of the GUI widgets XAML is usually used for.
I refuse to use it because I shouldn't have to use a completely different player UI just to decode a different stream format. I already have a media player app: give me a splitter and codec!
The CSS specification describes (or at least, it should describe) exactly one correct visual rendering of any given input on a given output device. With everything else equal (including canvas size, available fonts, configured default text sizes, etc), any two fully-compliant screen-media CSS implementations should produce identical output, with some allowance for different antialiasing algorithms and so forth. Certainly the box model is very clear on the resulting sizes for any configuration of its associated properties.
A good design will of course allow for the fact that different users have different-sized rendering canvases, different fonts available and so on. However, developers can still reasonably expect that the behavior in all conditions will be predictable and consistent with what the specification requires.
I'd say it's pretty simple. If my bog-standard Windows box will automatically associate with your wireless access point without my intervention, it's an open AP and therefore fair game. If you change anything that prevents this from occuring, such as disabling the SSID broadcast or enabling any kind of encryption, you're clearly not inviting anyone in.
My mother's wireless access point came with WEP enabled and the default key on a piece of paper in the packaging and some instructions for how to configure Windows to use it. While WEP has been proven insecure, if you've got WEP enabled it's difficult to argue that the access point was "inviting you in" as you can with an Open AP, so you wouldn't have a leg to stand on in the sort of situation we're discussing. It's the access point manufacturers that are at fault here for not either informing users of how to configure the equipment securely or, ideally, doing it for them.
Open access points generally send out beacon signal periodically saying "I'm here", which I'd construe as an advertisement. My laptop has several times connected to my neighbours access points rather than my own without any intent on my part because my laptop looks for open APs and my neighbours are advertising themselves as such.
It took me a little while myself to see that this was happening. I'm not sure that most non-technical users would be able to determine which AP they're connected to. If the law says that this is illegal, then the law is unreasonable: the technology is designed to work this way, and client devices can and do connect to any open access point they find in the vacinity without descrimination unless the user intervenes and selects a particular one. Most users wouldn't know which one they should pick even if they were asked to choose.
Like most things, it depends on your context and point of view. If you're into geology, it probably makes most sense to divide the world up into major bodies of land separated by water, because geology doesn't care much about political boundaries. However, if you're coming at it more from a political point of view, the administrative boundaries are more useful.
This sort of distinction exists throughout the heirarchy of subdivisions. England, for example, has a few different kinds of county depending on what context you are discussing them. There's little point in getting caught up on who is "most correct", because these lines are drawn in a place that makes them most convenient for a particular discussion.
I think Microsoft saw the binary compatibility break between 1.1 and 2.0 as a necessary evil, and I agree with them. The.NET Framework was something very new for Microsoft, and they didn't get it quite right first time. 2.0 is a marked improvement that fixed almost all of the limitations of the platform, and opened the door to easier support of a wider variety of languages such as Python and F# in addition to enabling features like generics.
However, now that 2.0 is out there, I don't think Microsoft is eager to break binary compatibility again. The 3.0 "Framework" is really just a set of new class libraries on top of 2.0, which makes the install footprint for 3.0 a lot smaller amongst other things. The CLI is pretty mature as of 2.0, so I expect that only the CLR (the class libraries) will change for the forseeable future.
Presumably an amd64 build of Wine would only be capable of running Windows apps compiled for amd64, and there aren't really that many of those yet. I can see why there's little demand for it right now.
That's not strict non-top-posting, that's bad non-top-posting. The key feature of "non-top-posting" is that you only quote enough context for your reply to make sense. In situations like your example, the correct approach would be to quote the single sentence that you're agreeing with that then put "I agree" (or, if you must, "Me too!") under it. There may be other points that you wish to comment on too, but they should be addressed in a separate quoted segment with a separate response beneath it.
The idea isn't to quote the entire original message in one lump and then put your reply beneath it, the key is to address very specific points on an individual basis and use the quotes to provide only the context of what specific point you are replying to.
I like to use thick clients not because I like desktop apps per se, but because by necessity it means I have access via a standard protocol that actually gives me access to the data. Most of the time I'm happy with what my app of choice provides, but occasionally I just need to get at that raw data rather than the pretty UI, and most web-apps won't offer that.
I'll grant that this doesn't come up often with email, but for other services like a calendar being able to access them with a variety of tools is useful to me. No matter how many nifty features these web apps have, I like the fact that if I need to I can get at that raw data and do whatever I like with it, either with tools written by others or with tools/scripts I write myself.
With all that said, I do access my email via webmail when I'm away from my own PC: there's no reason why webmail can't be offered in addition to IMAP access, and I wish more providers would do so. My webmail software actually uses IMAP to view my email, even.
I agree wholeheartedly with your first point about the GUI control set. It took several years to reach a point where there were nice GUI control libraries and a good component architecture to make it easy to put together a big GUI application without creating a big heap of spaghetti.
I think that where the web is right now is like where the Amiga's GUI API was in the pre-2.0 days: it had support for windows and the ability to configure regions within those windows to be "gadgets" that can recieve click events, etc, but aside from those rudimentary facilities if you were writing a GUI you were mostly on your own. GadTools came along with system release 2.0 and gave support for proper buttons, text fields, scrolly lists and so forth. Fast-forward to today and we have MVC-based GUI libraries that make it easy to tie your front-end UI logic to your backend data model without the two muddling together into an unmaintainable mess.
Where is the web? You can make a few rudimentary controls and attach events to them. There's no decent component model, and everything on a page runs in the same namespace. It takes a special effort to make a "widget" that can be re-used across different sites, or used multiple times on the same page. The UI code and the backend code are intimately tied together and yet there's no real integration between what happens on the client and what happens on the server unless you make a special effort to do so.
So while I'm a web developer day-to-day, I do find desktop app development a lot less frustrating. There's loads of cool tech waiting in the wings that should improve the situation, but the browser developers aren't interested. XBL is my main want right now: I want to be able to write a web-based UI component in a separate file and be able to embed it into a page without it interfering with the rest of the page. Web Forms 2.0 is coming along, and already partially implemented in Opera, but it's quite simplistic. Web Applications 2 (or HTML5) over at the WHATWG is standardizing a bunch of neat extensions that are already present in some browsers but not others. The main thing that's still missing is a standard mechanism for MVC-shaped development, but that can be built from a decent component model.
On the whole, this sudden shift to web app development frustrates me because it just throws away at least two decades worth of UI library development experience and takes us back to the dark ages of every app rolling its own "GUI" widgets and creating messy, unmaintainable code due to a lack of support for modularity.
All of my personal timepieces are on UTC, but I'm cheating a bit since I'm in the UK. It's easy to handle the one hour time difference during daylight savings!
The problem is that changing the working hours for one business has knock-on effects. If I start work an hour earlier, I may find that now I start work before my kids go to school in the morning. I may find that the shop where I buy my morning milk and newspaper hasn't opened yet. I may be unable to do any work for the first hour of the day because my suppliers/customers haven't started work yet.
While I'll readily agree that daylight savings time is a hack, it is quite effective in getting most of the population to operate an hour earlier at the same time, thus giving people that extra hour of daylight after work while ensuring that everyone else is operating on the same relative schedule.
I'd be happy though if we just did away with timezones completely. The numbering of the hours of the day is completely arbitrary anyway, so why can't people in LA just get up at 14:00 and start work at 16:00? Even if this was done exclusively in the US it'd avoid the need for multi-timezone TV networks to advertise their show start times as "8/10c".
I may be remembering wrong, but if I recall correctly Opera 5 was the first version to allow you to have both multiple windows and multiple "tabs" (which were of course really MDI child windows) at the same time. Opera 4 allowed you to choose either an MDI or an SDI interface. Opera 3 and earlier were MDI-only.
Of course, more recent versions introduced the ability to turn off the MDI altogether and have "real" tabs. I think I'm one of the few remaining stop-outs using an Opera 3-style MDI interface with the "tabs" and address bar at the bottom above the status bar.
I want a Dell computer that I know will run Linux, but I can install a distribution myself. I'd be much happier if Dell would just sell me a computer with a blank hard disk.
(but at least this means that Dell will sell some hardware that is known to have Linux driver support, so if this is the only way to get what I want then I'm happy.)
I've found that if you do your dev on Mono, sticking to the core framework functionality and avoiding Mono's extensions, it's very easy to get the resulting apps to run under Microsoft's implementation. It's quite handy that all of the Mono-specific stuff is in other namespaces so you can avoid it easily.
You don't get to use all the fancy new stuff like WPF, but most apps have no need for all that stuff anyway. People have been writing apps just fine for years without that tech.
If they were to do that, though, they'd probably have to skip ahead quite a few years. Current Stargate is set on present day Earth, so in order to be believable the Stargate has to remain a secret. If they were to set it maybe 50 years in the future I might buy it, but I think by moving it into the future it'd lose a lot of the charm that SG-1 had. One of the reasons I don't like Atlantis as much is that it's not set on Earth and so you don't get the interesting mix of alien and Earth settings.
As someone who is working at home right this second -- albeit not as a regular arrangement, but just because I can't get into the office this week -- I have to second the loss of productivity. I feel like I'm out in my own little world... things go on without me, and I don't get informed of things like service outages. The only reason I know there are other co-workers out there is because I occasionally get an email asking me to call back a customer that called into the office.
That and I seem to find myself reading slashdot a lot more than I do when I'm in the office..
I think it'd be interesting to create a full POSIX subsystem on top of the ReactOS kernel. Microsoft has already proven that this sort of thing is possible in their architecture with Interix. You could then get the best of both worlds by running a GNU userspace (GNU/ReactOS?) on top of it. Presently the only real options are Windows+SFU (which works okay, but is not a complete solution) or Linux+Wine.
There are some good design decisions in the NT kernel. Lots of the crap MS has piled on top of it is sub-par, but the core kernel design is on the whole very clean and malleable.
I had this problem for a long time... though with PHP5, not PHP4. Things have worked out quite well since I started using the unofficial packages from Dotdeb, which has PHP4, PHP5, MySQL 5 and other useful packages you need for webservers running the latest webapps.
I was wary at first due to it being an unofficial repository, but I've found that they are generally very responsive to new releases of PHP including security updates, and their packages seem to be well-tested and have worked just fine so far.
The.NET guys at MS have been attacking this "do what I mean" problem by providing increasingly more declarative language features. The best example is Language Integrated Query, which allows developers to use SQL-like queries right in C# that can operate on databases, XML DOMs, in-memory collections of objects and potentially other things that implement a particular interface.
This targets the exact use-case you mention in your post: searching. It's the intention of these guys that in future versions they can change the algorithms used to implement the queries against in-memory data structures to exploit better dual-core processors and other advancements without all developers needing to learn how to implement such algorithms.
No doubt we'll see this more and more as technology gets more complex: the engineers will be pushed down to the platform level and the common programmer will work on top of a mountain of abstractions provided by the platform. We're already part-way there, but commonly-used languages are still very imperative. More and more features are being borrowed from the functional programming world to make algorithms more composable and adaptable. For now, though, we've got enough abstractions for less-skilled programmers to write code but not enough abstractions for the plaform to fix it for them.
I bought my most recent PC pre-assembled from a smaller vendor here in the UK. I elected not to buy any operating system, and they got around this testing issue by shipping me the box with Windows XP installed but with no licence key to activate it with. They used the Windows XP install to run their hardware tests and then "re-sealed" it the same way as they would if they were selling me a copy of Windows, but simply failed to supply a licence key.
Fortunately, the quality of web browser support matters little when we're talking about word processor implementations.
Word processors would presumably end up supporting a different subset of HTML/CSS to browsers, because their needs are different. For example, "display:none" doesn't make a great deal of sense in a wordprocessor, since if it were honored you wouldn't be able to see nor edit the content inside.
I assume from the description that this is referring to XAML, which is a format for expressing an arbitrary heirarchy of objects usually GUI controls in XML. This was introduced in .NET Framework 3 as part of the new Windows Presentation Foundation. The Olive project over at Mono is aiming to implement this new stuff, and reportedly does have a XAML implementation, but they don't yet have any completed implementations of the GUI widgets XAML is usually used for.
So I guess the answer is "maybe". :)
I refuse to use it because I shouldn't have to use a completely different player UI just to decode a different stream format. I already have a media player app: give me a splitter and codec!
The CSS specification describes (or at least, it should describe) exactly one correct visual rendering of any given input on a given output device. With everything else equal (including canvas size, available fonts, configured default text sizes, etc), any two fully-compliant screen-media CSS implementations should produce identical output, with some allowance for different antialiasing algorithms and so forth. Certainly the box model is very clear on the resulting sizes for any configuration of its associated properties.
A good design will of course allow for the fact that different users have different-sized rendering canvases, different fonts available and so on. However, developers can still reasonably expect that the behavior in all conditions will be predictable and consistent with what the specification requires.
I'd say it's pretty simple. If my bog-standard Windows box will automatically associate with your wireless access point without my intervention, it's an open AP and therefore fair game. If you change anything that prevents this from occuring, such as disabling the SSID broadcast or enabling any kind of encryption, you're clearly not inviting anyone in.
My mother's wireless access point came with WEP enabled and the default key on a piece of paper in the packaging and some instructions for how to configure Windows to use it. While WEP has been proven insecure, if you've got WEP enabled it's difficult to argue that the access point was "inviting you in" as you can with an Open AP, so you wouldn't have a leg to stand on in the sort of situation we're discussing. It's the access point manufacturers that are at fault here for not either informing users of how to configure the equipment securely or, ideally, doing it for them.
Open access points generally send out beacon signal periodically saying "I'm here", which I'd construe as an advertisement. My laptop has several times connected to my neighbours access points rather than my own without any intent on my part because my laptop looks for open APs and my neighbours are advertising themselves as such.
It took me a little while myself to see that this was happening. I'm not sure that most non-technical users would be able to determine which AP they're connected to. If the law says that this is illegal, then the law is unreasonable: the technology is designed to work this way, and client devices can and do connect to any open access point they find in the vacinity without descrimination unless the user intervenes and selects a particular one. Most users wouldn't know which one they should pick even if they were asked to choose.
Like most things, it depends on your context and point of view. If you're into geology, it probably makes most sense to divide the world up into major bodies of land separated by water, because geology doesn't care much about political boundaries. However, if you're coming at it more from a political point of view, the administrative boundaries are more useful.
This sort of distinction exists throughout the heirarchy of subdivisions. England, for example, has a few different kinds of county depending on what context you are discussing them. There's little point in getting caught up on who is "most correct", because these lines are drawn in a place that makes them most convenient for a particular discussion.
I think Microsoft saw the binary compatibility break between 1.1 and 2.0 as a necessary evil, and I agree with them. The .NET Framework was something very new for Microsoft, and they didn't get it quite right first time. 2.0 is a marked improvement that fixed almost all of the limitations of the platform, and opened the door to easier support of a wider variety of languages such as Python and F# in addition to enabling features like generics.
However, now that 2.0 is out there, I don't think Microsoft is eager to break binary compatibility again. The 3.0 "Framework" is really just a set of new class libraries on top of 2.0, which makes the install footprint for 3.0 a lot smaller amongst other things. The CLI is pretty mature as of 2.0, so I expect that only the CLR (the class libraries) will change for the forseeable future.
Presumably an amd64 build of Wine would only be capable of running Windows apps compiled for amd64, and there aren't really that many of those yet. I can see why there's little demand for it right now.
That's not strict non-top-posting, that's bad non-top-posting. The key feature of "non-top-posting" is that you only quote enough context for your reply to make sense. In situations like your example, the correct approach would be to quote the single sentence that you're agreeing with that then put "I agree" (or, if you must, "Me too!") under it. There may be other points that you wish to comment on too, but they should be addressed in a separate quoted segment with a separate response beneath it.
The idea isn't to quote the entire original message in one lump and then put your reply beneath it, the key is to address very specific points on an individual basis and use the quotes to provide only the context of what specific point you are replying to.
I like to use thick clients not because I like desktop apps per se, but because by necessity it means I have access via a standard protocol that actually gives me access to the data. Most of the time I'm happy with what my app of choice provides, but occasionally I just need to get at that raw data rather than the pretty UI, and most web-apps won't offer that.
I'll grant that this doesn't come up often with email, but for other services like a calendar being able to access them with a variety of tools is useful to me. No matter how many nifty features these web apps have, I like the fact that if I need to I can get at that raw data and do whatever I like with it, either with tools written by others or with tools/scripts I write myself.
With all that said, I do access my email via webmail when I'm away from my own PC: there's no reason why webmail can't be offered in addition to IMAP access, and I wish more providers would do so. My webmail software actually uses IMAP to view my email, even.
I agree wholeheartedly with your first point about the GUI control set. It took several years to reach a point where there were nice GUI control libraries and a good component architecture to make it easy to put together a big GUI application without creating a big heap of spaghetti.
I think that where the web is right now is like where the Amiga's GUI API was in the pre-2.0 days: it had support for windows and the ability to configure regions within those windows to be "gadgets" that can recieve click events, etc, but aside from those rudimentary facilities if you were writing a GUI you were mostly on your own. GadTools came along with system release 2.0 and gave support for proper buttons, text fields, scrolly lists and so forth. Fast-forward to today and we have MVC-based GUI libraries that make it easy to tie your front-end UI logic to your backend data model without the two muddling together into an unmaintainable mess.
Where is the web? You can make a few rudimentary controls and attach events to them. There's no decent component model, and everything on a page runs in the same namespace. It takes a special effort to make a "widget" that can be re-used across different sites, or used multiple times on the same page. The UI code and the backend code are intimately tied together and yet there's no real integration between what happens on the client and what happens on the server unless you make a special effort to do so.
So while I'm a web developer day-to-day, I do find desktop app development a lot less frustrating. There's loads of cool tech waiting in the wings that should improve the situation, but the browser developers aren't interested. XBL is my main want right now: I want to be able to write a web-based UI component in a separate file and be able to embed it into a page without it interfering with the rest of the page. Web Forms 2.0 is coming along, and already partially implemented in Opera, but it's quite simplistic. Web Applications 2 (or HTML5) over at the WHATWG is standardizing a bunch of neat extensions that are already present in some browsers but not others. The main thing that's still missing is a standard mechanism for MVC-shaped development, but that can be built from a decent component model.
On the whole, this sudden shift to web app development frustrates me because it just throws away at least two decades worth of UI library development experience and takes us back to the dark ages of every app rolling its own "GUI" widgets and creating messy, unmaintainable code due to a lack of support for modularity.
All of my personal timepieces are on UTC, but I'm cheating a bit since I'm in the UK. It's easy to handle the one hour time difference during daylight savings!
The problem is that changing the working hours for one business has knock-on effects. If I start work an hour earlier, I may find that now I start work before my kids go to school in the morning. I may find that the shop where I buy my morning milk and newspaper hasn't opened yet. I may be unable to do any work for the first hour of the day because my suppliers/customers haven't started work yet.
While I'll readily agree that daylight savings time is a hack, it is quite effective in getting most of the population to operate an hour earlier at the same time, thus giving people that extra hour of daylight after work while ensuring that everyone else is operating on the same relative schedule.
I'd be happy though if we just did away with timezones completely. The numbering of the hours of the day is completely arbitrary anyway, so why can't people in LA just get up at 14:00 and start work at 16:00? Even if this was done exclusively in the US it'd avoid the need for multi-timezone TV networks to advertise their show start times as "8/10c".
I may be remembering wrong, but if I recall correctly Opera 5 was the first version to allow you to have both multiple windows and multiple "tabs" (which were of course really MDI child windows) at the same time. Opera 4 allowed you to choose either an MDI or an SDI interface. Opera 3 and earlier were MDI-only.
Of course, more recent versions introduced the ability to turn off the MDI altogether and have "real" tabs. I think I'm one of the few remaining stop-outs using an Opera 3-style MDI interface with the "tabs" and address bar at the bottom above the status bar.
(but at least this means that Dell will sell some hardware that is known to have Linux driver support, so if this is the only way to get what I want then I'm happy.)
I've found that if you do your dev on Mono, sticking to the core framework functionality and avoiding Mono's extensions, it's very easy to get the resulting apps to run under Microsoft's implementation. It's quite handy that all of the Mono-specific stuff is in other namespaces so you can avoid it easily.
You don't get to use all the fancy new stuff like WPF, but most apps have no need for all that stuff anyway. People have been writing apps just fine for years without that tech.
If they were to do that, though, they'd probably have to skip ahead quite a few years. Current Stargate is set on present day Earth, so in order to be believable the Stargate has to remain a secret. If they were to set it maybe 50 years in the future I might buy it, but I think by moving it into the future it'd lose a lot of the charm that SG-1 had. One of the reasons I don't like Atlantis as much is that it's not set on Earth and so you don't get the interesting mix of alien and Earth settings.
As someone who is working at home right this second -- albeit not as a regular arrangement, but just because I can't get into the office this week -- I have to second the loss of productivity. I feel like I'm out in my own little world... things go on without me, and I don't get informed of things like service outages. The only reason I know there are other co-workers out there is because I occasionally get an email asking me to call back a customer that called into the office.
That and I seem to find myself reading slashdot a lot more than I do when I'm in the office..
I think it'd be interesting to create a full POSIX subsystem on top of the ReactOS kernel. Microsoft has already proven that this sort of thing is possible in their architecture with Interix. You could then get the best of both worlds by running a GNU userspace (GNU/ReactOS?) on top of it. Presently the only real options are Windows+SFU (which works okay, but is not a complete solution) or Linux+Wine.
There are some good design decisions in the NT kernel. Lots of the crap MS has piled on top of it is sub-par, but the core kernel design is on the whole very clean and malleable.
I had this problem for a long time... though with PHP5, not PHP4. Things have worked out quite well since I started using the unofficial packages from Dotdeb, which has PHP4, PHP5, MySQL 5 and other useful packages you need for webservers running the latest webapps.
I was wary at first due to it being an unofficial repository, but I've found that they are generally very responsive to new releases of PHP including security updates, and their packages seem to be well-tested and have worked just fine so far.
The .NET guys at MS have been attacking this "do what I mean" problem by providing increasingly more declarative language features. The best example is Language Integrated Query, which allows developers to use SQL-like queries right in C# that can operate on databases, XML DOMs, in-memory collections of objects and potentially other things that implement a particular interface.
This targets the exact use-case you mention in your post: searching. It's the intention of these guys that in future versions they can change the algorithms used to implement the queries against in-memory data structures to exploit better dual-core processors and other advancements without all developers needing to learn how to implement such algorithms.
No doubt we'll see this more and more as technology gets more complex: the engineers will be pushed down to the platform level and the common programmer will work on top of a mountain of abstractions provided by the platform. We're already part-way there, but commonly-used languages are still very imperative. More and more features are being borrowed from the functional programming world to make algorithms more composable and adaptable. For now, though, we've got enough abstractions for less-skilled programmers to write code but not enough abstractions for the plaform to fix it for them.
I bought my most recent PC pre-assembled from a smaller vendor here in the UK. I elected not to buy any operating system, and they got around this testing issue by shipping me the box with Windows XP installed but with no licence key to activate it with. They used the Windows XP install to run their hardware tests and then "re-sealed" it the same way as they would if they were selling me a copy of Windows, but simply failed to supply a licence key.
I just formatted the disk and installed Ubuntu.
Fortunately, the quality of web browser support matters little when we're talking about word processor implementations.
Word processors would presumably end up supporting a different subset of HTML/CSS to browsers, because their needs are different. For example, "display:none" doesn't make a great deal of sense in a wordprocessor, since if it were honored you wouldn't be able to see nor edit the content inside.
Can you use one duplication machine to duplicate a second duplication machine? Can a duplication machine duplicate itself?