Assuming Lyx or Scientific word provide adequate editing interfaces, it strikes me that the missing piece is a LaTeX class editor (a la CSSEdit) that helps you modify or create classes to achieve your desired layout.
My experience with LaTeX, Lyx etc is similar to the original poster's and my primary problems are in getting the class right, not in generating the content. For what it's worth, I find the KomaScript classes to be the best basis for modern-looking documents with reasonable fonts.
Perhaps there is also an opportunity here for a service provider to offer LaTeX class design services.
My knowledge of the separation between OS and applications is limited, so my comments reflect the Nokia S60 configuration. These are just a few issues off-the-top-of-my-head:
- It's slow
- Configuration is scattered across screens/applications making it unintuitive to configure
- The address book is particularly slow to use, in part it always jumps to the last address you were on. Most of the time, I want to search again from scratch.
- The calendar lists to-do items and all-day things like birthdays before actual appointments. I haven't found a way to change this behaviour (yet another example of difficult configuration)
- The email client wants to be your only email client, so is a pain if you only check your email occasionally on the device (grabs everything and doesn't seem to notice flags indicating read status)
- The constant need to select from multiple-level menus is really painful
If I sat and thought about it, I could come up with lots more. It's functional, but painful to use. The nicest app on there is one I downloaded: Google maps.
It will take Apple at least one more generation to actually become a threat to Symbians dominance of the marketplace.
While I agree that the RIM vs iPhone thing is US-centric, Symbian on my E65 sucks and I can't wait to switch to an iPhone (when I can buy a supported one). I'd rather use pre-historic Palm OS than Symbian, but Palm don't make a pocketable phone.
I've previously developed a language, execution semantics and implementation of the semantics that provides this. In my case, I was trying to build a language and execution engine that could be easily distributed. The result is a fully asynchronous, distributed, state machine. Works well but it is very much a research prototype. Interesting. Is the implementation available anywhere online? I'd be interested in playing with it. No, it was never polished or stable enough to let loose on the public. The PhD thesis is online, however, at http://whyanbeel.net/phd/phd.pdf. The execution semantics is formally specified in the thesis using axiomatic Z notation (sets, relations, functions).
However, all is not lost, since if you need to represent something that has any real duration, you can model it as a pair of events ("start" and "finish", or something similar). Actually, all you are doing is decomposing the problem. What parts of the decomposed computations can be parallel?
The success of the occam programming language running on networks of transputers would seem to provide a proof-by-example that the interleaving model can work in practice Yes, because Occam actually used messaging for its execution semantics and the execution semantics are actually parallel. This works quite well. The caution was about directly applying the operational semantics defined for CSP and pi Calculus, which does not work so well.
Languages built on models like CSP enforce the interleaving of A and B if they are affecting the same state, Yes, they don't blindly apply the operational semantics of CSP: they use implicit synchronisation to avoid conflicts introduced by parallelism. This works well as long as the cost of the implicit synchronisation is significantly less than the benefits gained through parallelism. The synchronisation cost increases with the distance between processors (round trip time for synchronisation is roughly distance/speed-of-light). Because this synchronisation is implicit rather than explicit, it is difficult for a programmer to control and thus you can have performance issues in non-trivial programs. There is no easy answer, but I believe that asynchronous (event-driven) programming models are better.
Both Petri nets and Winskel's event structures certainly have much to recommend them. However, in both cases, my impression is that they are better suited to use as tools for providing a semantics (much as traces provide a semantics to CSP, or labelled transition systems to the pi-calculus), rather than as something that one would actually want to use as the basis for developing a design or a programming language. Agree and that's what I meant. The model of an execution being a partially ordered set of events is a good one. I've previously developed a language, execution semantics and implementation of the semantics that provides this. In my case, I was trying to build a language and execution engine that could be easily distributed. The result is a fully asynchronous, distributed, state machine. Works well but it is very much a research prototype.
No, the different sorts of paradigms I'm talking about no shared state, message passing concurrency models ala CSP and pi Calculus
You need to be careful with these paradigms. They all use an interleaved concurrency model as the basis for their semantics. This is OK as a way of defining semantics, but not for execution in a truly parallel environment. In essence, the semantic model says that running computation A in parallel with computation B is the same as executing "A" then "B" or "B" then "A". Notice that the parallelism has been removed to make the semantics easier to reason about.
In a truly parallel application, you need to be very sure that executing "A" in parallel with "B" is not actually going to break anything. Often this means some implicit synchronisation, which is what we're trying to remove. There are better models around. Petri nets are truly parallel, but also introduce some synchronisation requirements. Models based on Winskel's event structures are somewhat better, but not that widely known or understood.
The Indian companies can put a massive number of inexpensive people onto a job, but they still need talented and experienced people to lead. Talented people are no more common in India than anywhere else, so this trend indicates a willingness to look outside their country for talent. Smart move in my opinion.
Semantic webs (emphasis on plural) produced by editors such as those at/. or in the consumer-rated style of Digg, Del.icio.us etc might actually work. Trusting authors to do it right is a disaster, as Norvig suggests.
Having spent 5 months working in India, real estate in the hi-tech areas is not cheap. A half-decent apartment in Mumbai (Bombay) costs roughly the same as the equivalent in the larger American cities.
Referring back to the original article, it's not just European language skills required in India. I have been approached to work there again in support of US outsourcing contracts. I have two friends who are heading there shortly as well. Their pay rates are quite competitive with US-based contracts. In our case, it's particular product skills that are in demand. For what it's worth, I'm an Australian, not an American, and we haven't been hit quite as hard by Indian outsourcing.
One key advantage of India is that domestic labour is cheap. If you go, you typically hire a driver (don't drive in India:-) and a maid to maximise your leisure time. Health care is also quite good and inexpensive. Witness the increasing number of people going to India for surgery to avoid waiting lists and costs elsewhere in the world.
Should we just use what is immediately available or take the time to develop tailored solutions? Does anyone know of a Free and open source system for building workflow and collaboration systems? Does JBoss fit these scenarios, or should we start from scratch?
Building a workflow or collaboration system that doesn't zip you into a gimp suit with its rules is very difficult. For assembly-line processes a structured workflow is OK, but as soon as the participants need flexibility and autonomy you effectively need to allow them to modify the process on-the-fly. There are some commercial products that claim to allow this in a structured way, for example, http://www.ultimus.com/ and http://www.actiontechnologies.com/index.cfm but nothing approaching them in open source as far as I know. This is why people use email.
The second part of the following statement bothers me most:
I will formally licence, on terms acceptable to Microsoft, all intellectual property rights in my film and agree to waive all moral rights in relation to my film if requested to do so.
Waiving moral rights means the kids can't even use the video themselves. Sounds to me like the competition organisers are the ones stealing thoughts.
XML is a problem since, fundamentally, it is very flexible formatting, and so doesn't play nice with shell scripts. You can't easily cut/sed/etc. xml files. Until we get a suite of replacement tools that can easily modify XML files from shell scripts, XML won't cut it.
Sounds like you have never heard of stylesheets. These days I often use command-line stylesheet processing utilities to do the equivalent of cut/sed/etc on XML source files. The significant advantage of this is that there is far less chance of errors due to lack of syntactic structure in your source files. It's true the stylesheets are somewhat arcane and painful to write manually, but there are some good tools out there.
If Bob writes a program, releases it under the GPL, and incorporates contributed code into the project, that's another can of worms. I would think if he wanted to "go private" with the code base at that point he would need to get the permission of everyone who contributed any code, much like Mozilla did. If he couldn't get their permission he would have to rewrite those chunks of code.
This is also how I understand it. One of the ideas I have had recently is to create a company to own the copyright for an open source product, license it under the GPL, and give shares to contributors in exchange for rights to their contributions. If a commercial entity wants to embed the product and be free of GPL restrictions, they pay a license fee to the company and this is distributed to the shareholders (contributors) through dividends.
This approach is primarily intended for 'engine' or network protocol software, where commercial entities might want to use the open source version to ensure compatibility with others.
A "standard" exists so that independently developed entities can work together. Nuts and bolts, network protocols, whatever.
Standards succeed when people really need interoperability, and the standard provides this in a convenient manner. X400 (ISO email) didn't succeed because SMTP was sufficient and was more convenient. X500 (ISO directory) didn't succeed because people didn't need it badly enough to spend the money on implementation. LDAP (dumbed-down X500 over TCP/IP) was more successful because it was cheaper and more convenient.
Microsoft Word documents are a standard in the sense that people use them as a way to exchange formatted information that everyone can read (as long as they have the right version of Word...). It works because most people already have compatible versions of Microsoft Word. Convenience again!
the only thing that's really missing on the Mac side is narrow vertical business and hobby apps
Actually, there are business apps that I wouldn't call 'narrow vertical' that don't run on the Mac. I've been working with modelling, BPM and rules software, and quite a few don't support the Mac. I'd hardly call these narrow or vertical.
That said, I always make a point of letting vendors know that I'd prefer a Mac version. I switched a few years ago to get a stable *nix desktop environment. No regrets, but we have two laptops at home now: one Windows laptop for those apps that won't run on the Mac.
It's strange that the Asia/Pacific airlines haven't jumped on it, given the typical length of flights. Coming from Australia, the shortest useful hop is to Singapore (around 7 hours) and the most frequent is to LA (14 hours). Makes US$30 seem quite reasonable, especially compared with the airport hot-spots that typically charge US$8-9/hour.
Assuming Lyx or Scientific word provide adequate editing interfaces, it strikes me that the missing piece is a LaTeX class editor (a la CSSEdit) that helps you modify or create classes to achieve your desired layout.
My experience with LaTeX, Lyx etc is similar to the original poster's and my primary problems are in getting the class right, not in generating the content. For what it's worth, I find the KomaScript classes to be the best basis for modern-looking documents with reasonable fonts.
Perhaps there is also an opportunity here for a service provider to offer LaTeX class design services.
My knowledge of the separation between OS and applications is limited, so my comments reflect the Nokia S60 configuration. These are just a few issues off-the-top-of-my-head:
If I sat and thought about it, I could come up with lots more. It's functional, but painful to use. The nicest app on there is one I downloaded: Google maps.
It will take Apple at least one more generation to actually become a threat to Symbians dominance of the marketplace.
While I agree that the RIM vs iPhone thing is US-centric, Symbian on my E65 sucks and I can't wait to switch to an iPhone (when I can buy a supported one). I'd rather use pre-historic Palm OS than Symbian, but Palm don't make a pocketable phone.Send me email to an address at the domain above. It should get to me. The email address on the thesis has died and gone to heaven, unfortunately.
No, the different sorts of paradigms I'm talking about no shared state, message passing concurrency models ala CSP and pi Calculus
You need to be careful with these paradigms. They all use an interleaved concurrency model as the basis for their semantics. This is OK as a way of defining semantics, but not for execution in a truly parallel environment. In essence, the semantic model says that running computation A in parallel with computation B is the same as executing "A" then "B" or "B" then "A". Notice that the parallelism has been removed to make the semantics easier to reason about.
In a truly parallel application, you need to be very sure that executing "A" in parallel with "B" is not actually going to break anything. Often this means some implicit synchronisation, which is what we're trying to remove. There are better models around. Petri nets are truly parallel, but also introduce some synchronisation requirements. Models based on Winskel's event structures are somewhat better, but not that widely known or understood.
So, there is still some way to go here.
The Indian companies can put a massive number of inexpensive people onto a job, but they still need talented and experienced people to lead. Talented people are no more common in India than anywhere else, so this trend indicates a willingness to look outside their country for talent. Smart move in my opinion.
Semantic webs (emphasis on plural) produced by editors such as those at /. or in the consumer-rated style of Digg, Del.icio.us etc might actually work. Trusting authors to do it right is a disaster, as Norvig suggests.
Having spent 5 months working in India, real estate in the hi-tech areas is not cheap. A half-decent apartment in Mumbai (Bombay) costs roughly the same as the equivalent in the larger American cities.
Referring back to the original article, it's not just European language skills required in India. I have been approached to work there again in support of US outsourcing contracts. I have two friends who are heading there shortly as well. Their pay rates are quite competitive with US-based contracts. In our case, it's particular product skills that are in demand. For what it's worth, I'm an Australian, not an American, and we haven't been hit quite as hard by Indian outsourcing.
One key advantage of India is that domestic labour is cheap. If you go, you typically hire a driver (don't drive in India :-) and a maid to maximise your leisure time. Health care is also quite good and inexpensive. Witness the increasing number of people going to India for surgery to avoid waiting lists and costs elsewhere in the world.
Building a workflow or collaboration system that doesn't zip you into a gimp suit with its rules is very difficult. For assembly-line processes a structured workflow is OK, but as soon as the participants need flexibility and autonomy you effectively need to allow them to modify the process on-the-fly. There are some commercial products that claim to allow this in a structured way, for example, http://www.ultimus.com/ and http://www.actiontechnologies.com/index.cfm but nothing approaching them in open source as far as I know. This is why people use email.
Of course, if you like gimp suits ...
Sounds like you have never heard of stylesheets. These days I often use command-line stylesheet processing utilities to do the equivalent of cut/sed/etc on XML source files. The significant advantage of this is that there is far less chance of errors due to lack of syntactic structure in your source files. It's true the stylesheets are somewhat arcane and painful to write manually, but there are some good tools out there.
This is also how I understand it. One of the ideas I have had recently is to create a company to own the copyright for an open source product, license it under the GPL, and give shares to contributors in exchange for rights to their contributions. If a commercial entity wants to embed the product and be free of GPL restrictions, they pay a license fee to the company and this is distributed to the shareholders (contributors) through dividends.
This approach is primarily intended for 'engine' or network protocol software, where commercial entities might want to use the open source version to ensure compatibility with others.
Thoughts anyone?
A "standard" exists so that independently developed entities can work together. Nuts and bolts, network protocols, whatever. Standards succeed when people really need interoperability, and the standard provides this in a convenient manner. X400 (ISO email) didn't succeed because SMTP was sufficient and was more convenient. X500 (ISO directory) didn't succeed because people didn't need it badly enough to spend the money on implementation. LDAP (dumbed-down X500 over TCP/IP) was more successful because it was cheaper and more convenient. Microsoft Word documents are a standard in the sense that people use them as a way to exchange formatted information that everyone can read (as long as they have the right version of Word ...). It works because most people already have compatible versions of Microsoft Word. Convenience again!
Actually, there are business apps that I wouldn't call 'narrow vertical' that don't run on the Mac. I've been working with modelling, BPM and rules software, and quite a few don't support the Mac. I'd hardly call these narrow or vertical.
That said, I always make a point of letting vendors know that I'd prefer a Mac version. I switched a few years ago to get a stable *nix desktop environment. No regrets, but we have two laptops at home now: one Windows laptop for those apps that won't run on the Mac.
AndyB
It's strange that the Asia/Pacific airlines haven't jumped on it, given the typical length of flights. Coming from Australia, the shortest useful hop is to Singapore (around 7 hours) and the most frequent is to LA (14 hours). Makes US$30 seem quite reasonable, especially compared with the airport hot-spots that typically charge US$8-9/hour.