I've been trying to figure this out for years, and what I've failed to find a solution for is fast, full-text search of my mail archives. I have several gigabytes of mail, so an indexed search is needed. I'd appreciate recommendations for potential solutions to this.
"I'm increasingly convinced this asynchronous callback style of programming is too difficult for most developers to manage," Robinson said. "Without extreme discipline it can easily lead to 'callback hell,' with deeply nested callbacks and complex code to implement logic that would be simple on a synchronous platform."
What's next for him? He sees the older framework being rethought and reworked using the best ideas from Node.js. In place of callbacks, he sees ideas like "promises," "co-routines," "actors," and other objects that hang on to the information in the variables for use later. These objects may be easier to juggle than the callbacks.
Callbacks and promises are not mutually exclusive. In particular, a promise API can be built on top of callbacks. This has been well-understood for a long time in both the Ajax world (e.g. dojo.Deferred), and in Node.js development (e.g. node-promise module by Kris Zyp). So, I think this critique is a bit unwarranted.
So, what are currently the best SIP free (as in beer) SIP clients for Windows, Linux, and Mac OS X?
It's been a long time since I looked into this. On Linux, these projects look promising:
http://icanblink.com/http://sflphone.org/
I haven't done a stable release yet, due to some process overhead with Apache Commons, but the project itself is pretty stable, is becoming more widely known, and I'm continuing to develop it as part of my Master thesis.
This was a project I had thought of several years ago, and the funding from GSoC finally enabled me to properly implement it. So, I think that's a success story.
What I'm wondering is, would it now be possible to develop apps for the iPhone from your GNU/Linux desktop, using a free software stack? What I have in mind is something like this: you write the application in C (a strict subset of Objective C), compile it using GCC (targeting ARM architecture?), using headers obtained from the Apple SDK (I suppose GNUStep wouldn't do), and then use libimobiledevice to deploy it to your phone. I suppose this still lacks some important parts, such as a device emulator which can hook back into a debugger, but still I think it's interesting to think about.
I'm going to be heading to Belgium soon on exchange, and so I've been looking into buying an auxiliary device that I can take with me traveling so that I don't have to bring my 7.5 lbs. beast of a laptop. The things that were most important to me were to have decent hardware and overall user experience (touchscreen responsiveness, etc.), the ability to make VoIP calls using Skype or SIP, and to have a decent terminal emulator and Unix-like subsystem (bash, ssh, vi, and GNU screen are most important for me). Ideally, it would also cost around $200 (I'm a student, after all).
What I found was that in order to install a Unix subsystem on an iOS or Android device, you need root access. And, rather than just giving you root access, for some reason all devices, including the Android ones, require you to jailbreak the device via some exploit in the OS. I was expecting this of Apple devices (and I'm still waiting for the jailbreak for iOS 4.1, which should be any day now), but somehow I thought that Android devices would be more "open" or something because they are running Linux. But in fact, they are often, in effect, even more locked down than the Apple devices, as there is not a dedicated team of hackers searching for exploits, and so jailbreak techniques may not exist. For example, this is the case for the new Archos internet tablets, which at this moment may not be jailbroken.
It dawned on me that this was the difference between old-school PDAs (remember those?), and these new handheld iOS and Android devices. With PDAs, I think it was unquestionable that you would have administrator rights on your device. Why? Because they were seen as personal computers that incidentally could also fit in your pocket. Somehow, the expectation of these new devices is not the same - they are seen as phones or media players instead - and for that reason, it is seen as acceptable to lock them down, restricting what the user can do with them. This shift in the expectation of the manufacturer regarding what the user may do with their device seems to have happened very quickly and quietly, perhaps commencing with the release of the iPhone, and it's something that I'm only beginning to grasp now. This is not something that anyone seems to be talking about, however.
Unfortunately, this is a complete deal-breaker for me. I won't be able to buy an Android device until it comes with root access out of the box.
I took notes on my laptop extensively all through my undergraduate degree in Computer Science, and I always used OpenOffice.org Writer's equation editor. It has a nice, concise syntax, and it was, in fact, possible to enter even very complex mathematical expressions in real time, faster than my prof was able to write them on the board. This was true even for matrixes.
My linear algebra notes would be more impressive, because they often involved fairly large and complex matrix equations, but I never made those notes available online.
I had a colleague who also took notes in class who had quite a nice method - he wrote all of his notes in wiki markup, with latex for the mathematical expressions. He didn't have a laptop, but instead used a PDA and small, foldable keyboard.
I'm very interested in this kind of a product. As a student, and do copious note-taking. Rather than print all my notes and be gouged by the ink companies, I prefer to use software like Foxit (which runs great under Wine) to annotate my PDFs. A tiny little computer with a resistive touchscreen like this one would be just great. Now if only I could get it without Windows. In many ways, it's a lot like the 2gopc, which I thought would be the ideal product for me, except for the fact that they haven't rolled out Linux support like they were planning.
Also, I'm not sure where I'll find the machine in Canada. I find that's one thing I don't like about Asus as opposed to Dell, I have no idea how to buy their machines.
No more compound documents?
on
XHTML 2 Cancelled
·
· Score: 2, Interesting
What I liked about XHTML was the conceptual clarity regarding the creation of compound documents. Like XML, XHTML is modular, precise and fully extensible via XML namespaces. This allowed one to augment XHTML without needing to fully revise the XHTML spec: one simply needed to use an alternate XHTML namespace inside of the XHTML document. So, for example, this made it very easy to use XHTML in conjunction with SVG, another XML application. I know that HTML5 defines ways in which it may be used in conjunction with SVG, but I'm not sure if it's extensible in the same way. What happens if we want to mix in another format, like XForms? Will we have to go back and revise the complete HTML5 spec?
I posted a very similar idea to Ubuntu brainstorm a few weeks ago, as a proposed solution to the problem of paying developers of free (libre) software. I feel it's highly relevant to the dialog taking place here about this article, so I've copy-pasted some of it here:
Despite its closed nature, Apple's App Store has proven to be a tremendous success. The App Store model involves a central organization that approves and distributes commercial applications directly to users. The central organization takes a small percentage of the revenue generated on each app sold; the rest of the revenue goes directly in the pocket of the developer. The overall goal is to make it as easy as possible to connect users who want to pay for high-quality free software, to developers who want to produce that software.
It is very easy to imagine Canonical acting as the the central distributor in this model, as it currently performs this role already with software that is free-as-in-beer (much of it is free-as-in-speech as well). Additionally, much of the core technologies required for such an app store to exist are already in place: distribution, packaging and installation is all provided by apt; Synaptic provides a convenient graphical front-end for installation and package management. Perhaps, with small extensions to these existing systems, it would be possible to create an infrastructure to allow for individual payments to application developers.
It is also important to note that while Apple's app store primarily hosts non-free software (free as in beer, and free as in speech), and uses DRM to ensure that users do not make copies of this software, I believe that neither of these features are essential to the success of an Ubuntu App Store. It is possible to imagine individual users swapping.deb's of contribution-based software via filesharing networks, or visiting the authors' websites to compile "contribution-based" software from source and package it by hand; and, according to the terms of the GPL, and most other free software licenses, they would be completely within their rights to do so. However, such methods are much less convenient than simply clicking through a graphical interface, and obtaining your packages directly from Canonical, especially with respect to the demographic of non-technical users that Canonical would like to target. Just so long as value is added to the software in some way, be it by way of convenience or by some other means, then a "contribution-based" repository will be used over other methods of obtaining and installing the software. Additionally, I feel that many Ubuntu users would like to see developers get paid, and thus would be more inclined to use such a service.
In conclusion, while putting a price on software that has otherwise been free-as-in-cost might at first seem a bit unusual, we must consider that providing a convenient, direct mechanism for developers to be paid for their software will help, not harm, the Ubuntu GNU/Linux distribution, the ecosystem of free-as-in-speech software, and the Free Software Movement in general. It will attract more users and more developers to the Ubuntu GNU/Linux platform, especially as such a mechanism does not exist on Microsoft Windows. One need only look to the success of the Apple App Store, and Sun's soon-to-be-launched Java app store, to see that there is a demand for such a distribution model.
If you like this idea, please feel free to vote the it up on Ubuntu Brainstorm. Thanks,
If you're talking about viPlugin, which, last time I checked (about 8 months ago) was commercial and cost $10, it wasn't complete enough to be generally useful to me.
There's a vi emulation mode for Netbeans called jvi which is quite good.
The other option which I'm currently investigating for Eclipse is eclim, which looks great and is actively developed, but was not very stable when I tried it.
But the more I use linux (Ubuntu in case you are interested), the more unhappy I am. It's the little things, like, keyboard not processing input on dual screen when there's no window open on that desktop. And configuring / changing (external) display configuration is simply broken. And high IO really brings system on the knees (even surfing is not possible while writing to a CD). Firefox is sloooooowwww. No exchange client. No out of the box AD integration. And so on and on and on.
Many of the complaints you list here I think are valid, because I'm using Ubuntu Linux as well and I have found myself thinking the exact same thing. Specifically, all of the trouble with X.org and dual-head, the high IO, and the slow firefox all resonate with me. None of these are enough to make me go back to Windows though; overall, Ubuntu offers a much better experience for me than Windows.
Mac OS, on the other hand, is very intriguing. Unix-based (FreeBSD, specifically), and yet has 110% hardware support. A thriving ecosystem of free software available (much [most?] of it ported from GNU/Linux). Overall, it seems like a pretty attractive target. There are just two things that really really prevent me from using it: the UI, and the culture. The UI I find to be bloated and ineffecient, and the culture feels quite closed. Until Apple opens up their OS and allows me to install it on non-Apple hardware, and stops bricking jailbroken iPhones, I just don't see Apple products as something I want to use. Better to target Ubuntu, which is technically very close, and properly philosophically aligned.
Oh, and as far as getting MS Office working on Ubuntu, apparently you can get it to work under Wine:
I haven't tried it myself, though, so your mileage may vary.
Not a Good Year for Open Hardware Projects
on
No More OpenMoko Phone
·
· Score: 4, Informative
This has not been such a good year for open hardware projects. First OLPC, and now OpenMoko. I would say that both projects may have been overly ambitious, and were certainly poorly managed. I wonder, what will be next? OpenPandora?
Can anyone list any successful open hardware projects?
Finally, Lisp (at least in its lean Scheme incarnation) is amenable to a very compact self-definition. Seeing a complete Lisp interpreter written in Lisp is an intellectual revelation that all computer scientists should experience. I just finished my undergrad, and I have not yet had this pleasure. I've studied formal languages, though, so I think I could learn this myself if I had a good resource. I was wondering if anyone could recommend a resource (a book or open courseware) that could teach me the basics of compilers and self-defining languages?
Developers love pixels. Apple is driving this, but even PC vendors are jumping on this bandwagon. For example, see the upcoming Asus Zenbook UX31. 13.3" screen, Full HD resolution: http://ultrabooknews.com/database/ASUS/Zenbook%20Prime%20UX31A/
I want all the pixels.
SVG + SMIL
I've been trying to figure this out for years, and what I've failed to find a solution for is fast, full-text search of my mail archives. I have several gigabytes of mail, so an indexed search is needed. I'd appreciate recommendations for potential solutions to this.
"I'm increasingly convinced this asynchronous callback style of programming is too difficult for most developers to manage," Robinson said. "Without extreme discipline it can easily lead to 'callback hell,' with deeply nested callbacks and complex code to implement logic that would be simple on a synchronous platform." What's next for him? He sees the older framework being rethought and reworked using the best ideas from Node.js. In place of callbacks, he sees ideas like "promises," "co-routines," "actors," and other objects that hang on to the information in the variables for use later. These objects may be easier to juggle than the callbacks.
Callbacks and promises are not mutually exclusive. In particular, a promise API can be built on top of callbacks. This has been well-understood for a long time in both the Ajax world (e.g. dojo.Deferred), and in Node.js development (e.g. node-promise module by Kris Zyp). So, I think this critique is a bit unwarranted.
This is also a useful resource: http://en.wikipedia.org/wiki/List_of_SIP_software#SIP_clients
So, what are currently the best SIP free (as in beer) SIP clients for Windows, Linux, and Mac OS X? It's been a long time since I looked into this. On Linux, these projects look promising: http://icanblink.com/ http://sflphone.org/
Here's the project I worked on for GSoC 2010:
http://commons.apache.org/sandbox/gsoc/2010/scxml-js/
I haven't done a stable release yet, due to some process overhead with Apache Commons, but the project itself is pretty stable, is becoming more widely known, and I'm continuing to develop it as part of my Master thesis.
This was a project I had thought of several years ago, and the funding from GSoC finally enabled me to properly implement it. So, I think that's a success story.
For many benchmarks, v8 is pretty fast compared to CPython: http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=v8&lang2=python
I saw that with libimobiledevice, it's possible to control your iOS device with your Ubuntu desktop, including doing things like installing apps: https://help.ubuntu.com/community/PortableDevices/iPhone
What I'm wondering is, would it now be possible to develop apps for the iPhone from your GNU/Linux desktop, using a free software stack? What I have in mind is something like this: you write the application in C (a strict subset of Objective C), compile it using GCC (targeting ARM architecture?), using headers obtained from the Apple SDK (I suppose GNUStep wouldn't do), and then use libimobiledevice to deploy it to your phone. I suppose this still lacks some important parts, such as a device emulator which can hook back into a debugger, but still I think it's interesting to think about.
Is anyone currently pursuing this kind of work?
I'm going to be heading to Belgium soon on exchange, and so I've been looking into buying an auxiliary device that I can take with me traveling so that I don't have to bring my 7.5 lbs. beast of a laptop. The things that were most important to me were to have decent hardware and overall user experience (touchscreen responsiveness, etc.), the ability to make VoIP calls using Skype or SIP, and to have a decent terminal emulator and Unix-like subsystem (bash, ssh, vi, and GNU screen are most important for me). Ideally, it would also cost around $200 (I'm a student, after all).
What I found was that in order to install a Unix subsystem on an iOS or Android device, you need root access. And, rather than just giving you root access, for some reason all devices, including the Android ones, require you to jailbreak the device via some exploit in the OS. I was expecting this of Apple devices (and I'm still waiting for the jailbreak for iOS 4.1, which should be any day now), but somehow I thought that Android devices would be more "open" or something because they are running Linux. But in fact, they are often, in effect, even more locked down than the Apple devices, as there is not a dedicated team of hackers searching for exploits, and so jailbreak techniques may not exist. For example, this is the case for the new Archos internet tablets, which at this moment may not be jailbroken.
It dawned on me that this was the difference between old-school PDAs (remember those?), and these new handheld iOS and Android devices. With PDAs, I think it was unquestionable that you would have administrator rights on your device. Why? Because they were seen as personal computers that incidentally could also fit in your pocket. Somehow, the expectation of these new devices is not the same - they are seen as phones or media players instead - and for that reason, it is seen as acceptable to lock them down, restricting what the user can do with them. This shift in the expectation of the manufacturer regarding what the user may do with their device seems to have happened very quickly and quietly, perhaps commencing with the release of the iPhone, and it's something that I'm only beginning to grasp now. This is not something that anyone seems to be talking about, however.
Unfortunately, this is a complete deal-breaker for me. I won't be able to buy an Android device until it comes with root access out of the box.
This is not showing up on my account.
I, for one, welcome our new feline robot overlords.
I took notes on my laptop extensively all through my undergraduate degree in Computer Science, and I always used OpenOffice.org Writer's equation editor. It has a nice, concise syntax, and it was, in fact, possible to enter even very complex mathematical expressions in real time, faster than my prof was able to write them on the board. This was true even for matrixes.
Here's an example of some of my notes made with OO.o: http://csus.cs.mcgill.ca/wiki/COMP-330_(Panangaden%2C_Fall_06)_Lectures
My linear algebra notes would be more impressive, because they often involved fairly large and complex matrix equations, but I never made those notes available online.
I had a colleague who also took notes in class who had quite a nice method - he wrote all of his notes in wiki markup, with latex for the mathematical expressions. He didn't have a laptop, but instead used a PDA and small, foldable keyboard.
An example of his notes are here: http://csus.cs.mcgill.ca/wiki/COMP-302_(Panangaden%2C_Pientka%2C_Winter_06)_Lectures
I think it's quite a nice result.
The option to turn down the EULA is not exposed through the UI at all. The only way to avoid agreeing to the EULA is to turn off the computer.
I'm very interested in this kind of a product. As a student, and do copious note-taking. Rather than print all my notes and be gouged by the ink companies, I prefer to use software like Foxit (which runs great under Wine) to annotate my PDFs. A tiny little computer with a resistive touchscreen like this one would be just great. Now if only I could get it without Windows. In many ways, it's a lot like the 2gopc, which I thought would be the ideal product for me, except for the fact that they haven't rolled out Linux support like they were planning. Also, I'm not sure where I'll find the machine in Canada. I find that's one thing I don't like about Asus as opposed to Dell, I have no idea how to buy their machines.
What I liked about XHTML was the conceptual clarity regarding the creation of compound documents. Like XML, XHTML is modular, precise and fully extensible via XML namespaces. This allowed one to augment XHTML without needing to fully revise the XHTML spec: one simply needed to use an alternate XHTML namespace inside of the XHTML document. So, for example, this made it very easy to use XHTML in conjunction with SVG, another XML application. I know that HTML5 defines ways in which it may be used in conjunction with SVG, but I'm not sure if it's extensible in the same way. What happens if we want to mix in another format, like XForms? Will we have to go back and revise the complete HTML5 spec?
I posted a very similar idea to Ubuntu brainstorm a few weeks ago, as a proposed solution to the problem of paying developers of free (libre) software. I feel it's highly relevant to the dialog taking place here about this article, so I've copy-pasted some of it here:
.deb's of contribution-based software via filesharing networks, or visiting the authors' websites to compile "contribution-based" software from source and package it by hand; and, according to the terms of the GPL, and most other free software licenses, they would be completely within their rights to do so. However, such methods are much less convenient than simply clicking through a graphical interface, and obtaining your packages directly from Canonical, especially with respect to the demographic of non-technical users that Canonical would like to target. Just so long as value is added to the software in some way, be it by way of convenience or by some other means, then a "contribution-based" repository will be used over other methods of obtaining and installing the software. Additionally, I feel that many Ubuntu users would like to see developers get paid, and thus would be more inclined to use such a service.
Despite its closed nature, Apple's App Store has proven to be a tremendous success. The App Store model involves a central organization that approves and distributes commercial applications directly to users. The central organization takes a small percentage of the revenue generated on each app sold; the rest of the revenue goes directly in the pocket of the developer. The overall goal is to make it as easy as possible to connect users who want to pay for high-quality free software, to developers who want to produce that software.
It is very easy to imagine Canonical acting as the the central distributor in this model, as it currently performs this role already with software that is free-as-in-beer (much of it is free-as-in-speech as well). Additionally, much of the core technologies required for such an app store to exist are already in place: distribution, packaging and installation is all provided by apt; Synaptic provides a convenient graphical front-end for installation and package management. Perhaps, with small extensions to these existing systems, it would be possible to create an infrastructure to allow for individual payments to application developers.
It is also important to note that while Apple's app store primarily hosts non-free software (free as in beer, and free as in speech), and uses DRM to ensure that users do not make copies of this software, I believe that neither of these features are essential to the success of an Ubuntu App Store. It is possible to imagine individual users swapping
In conclusion, while putting a price on software that has otherwise been free-as-in-cost might at first seem a bit unusual, we must consider that providing a convenient, direct mechanism for developers to be paid for their software will help, not harm, the Ubuntu GNU/Linux distribution, the ecosystem of free-as-in-speech software, and the Free Software Movement in general. It will attract more users and more developers to the Ubuntu GNU/Linux platform, especially as such a mechanism does not exist on Microsoft Windows. One need only look to the success of the Apple App Store, and Sun's soon-to-be-launched Java app store, to see that there is a demand for such a distribution model.
If you like this idea, please feel free to vote the it up on Ubuntu Brainstorm. Thanks,
Jake
If you're talking about viPlugin, which, last time I checked (about 8 months ago) was commercial and cost $10, it wasn't complete enough to be generally useful to me. There's a vi emulation mode for Netbeans called jvi which is quite good. The other option which I'm currently investigating for Eclipse is eclim, which looks great and is actively developed, but was not very stable when I tried it.
what's not to like? :-)
No plugin that implements vi keybindings :(
But the more I use linux (Ubuntu in case you are interested), the more unhappy I am. It's the little things, like, keyboard not processing input on dual screen when there's no window open on that desktop. And configuring / changing (external) display configuration is simply broken. And high IO really brings system on the knees (even surfing is not possible while writing to a CD). Firefox is sloooooowwww. No exchange client. No out of the box AD integration. And so on and on and on.
Many of the complaints you list here I think are valid, because I'm using Ubuntu Linux as well and I have found myself thinking the exact same thing. Specifically, all of the trouble with X.org and dual-head, the high IO, and the slow firefox all resonate with me. None of these are enough to make me go back to Windows though; overall, Ubuntu offers a much better experience for me than Windows.
Mac OS, on the other hand, is very intriguing. Unix-based (FreeBSD, specifically), and yet has 110% hardware support. A thriving ecosystem of free software available (much [most?] of it ported from GNU/Linux). Overall, it seems like a pretty attractive target. There are just two things that really really prevent me from using it: the UI, and the culture. The UI I find to be bloated and ineffecient, and the culture feels quite closed. Until Apple opens up their OS and allows me to install it on non-Apple hardware, and stops bricking jailbroken iPhones, I just don't see Apple products as something I want to use. Better to target Ubuntu, which is technically very close, and properly philosophically aligned.
Oh, and as far as getting MS Office working on Ubuntu, apparently you can get it to work under Wine:
http://www.programmerfish.com/roffice-2007-in-linux/
I haven't tried it myself, though, so your mileage may vary.
This has not been such a good year for open hardware projects. First OLPC, and now OpenMoko. I would say that both projects may have been overly ambitious, and were certainly poorly managed. I wonder, what will be next? OpenPandora? Can anyone list any successful open hardware projects?
I'm pretty sure Adobe has produced absolutely no Free Software (Free as in Freedom, not free as in purchase price).
Free (as in speech) software produced by Adobe: http://opensource.adobe.com/wiki/display/site/Home
This puts another nail in the coffin for SVG.
What are you planning to use Scheme for? Do you have a project in mind?