A great piece by the Amazon CTO
[Link]
Tag: Software
Apple doing to software what Microsoft did to hardware?
Now that Apple has announced that OS X updates will be free going forward, and many of its first party apps like iWork are going to be free with new devices, Microsoft seems to have its task cut out. Many people seem to think that this move by Apple will really hurt Microsoft. In some ways Apple is trying to commoditize software the way Microsoft commoditized hardware over the last 2 decades. However, there are a few key points that not many have mentioned:
- Microsoft has given away major OS updates for free. E.g. Windows XP SP2. In a way, the Apple move was preempted by the free Windows 8.1 update.
- Microsoft is a past master of bundling free software with its OS. Remember Internet Explorer vs Netscape? Or more recently, Office being given away with Windows RT.
- Apple hardware remains luxury items, and free OS upgrades are not going to make budget conscious people switch from Windows to Apple devices. That said, the real threat comes when people realize that a tablet meets their requirements and is probably cheaper than a PC (desktop\laptop) when it is time to get a new device.
- The real threat to Microsoft comes from Android, as OEMs are gradually warming up to Android as an alternative for Windows for laptops. Since the market is undergoing a major shift in the kind of personal devices being used (desktops to laptops to mobiles & tablets), there is a big scope for a free OS. Android has been successful on mobiles while Linux failed on PCs due to this very reason.
- OS development has an associated cost even if you do not pay a third party for it. Apple is just subsidizing the software costs through hardware margins. Even if OEMs decide to opt for Android or Chrome OS, they will need an in house team to customize the OS. Of course, OEMs probably already have an in house team developing software for Windows given the typical bloatware that comes pre-installed on PCs.
The bottom line is that Microsoft has to continue to woo its OEM partners who bring in the OS revenue, while at the same time transform its revenue source to hardware. The Nokia acquisition becomes even more important now.
Algorithm to write stories, read by Essay Grading Software?
First came the software to write stories based on data collected:
Once Narrative Science had mastered the art of telling sports and finance stories, the company realized that it could produce much more than journalism. Indeed, anyone who needed to translate and explain large sets of data could benefit from its services. Requests poured in from people who were buried in spreadsheets and charts. It turned out that those people would pay to convert all that confusing information into a couple of readable paragraphs that hit the key points.
Then came the essay grading software:
The EdX assessment tool requires human teachers, or graders, to first grade 100 essays or essay questions. The system then uses a variety of machine-learning techniques to train itself to be able to grade any number of essays or answers automatically and almost instantaneously.
The software will assign a grade depending on the scoring system created by the teacher, whether it is a letter grade or numerical rank. It will also provide general feedback, like telling a student whether an answer was on topic or not.
Just a prelude to the battle to figure out the loopholes in both with each trying to game the other?
Installing Giveaway of the day & Game Giveaway of the day behind authenticated proxy
Giveaway of the day and Game giveaway of the day are pretty interesting sites wherein they give away a commercial software for free for a period of 24 hours, periodically. The software installers are encapsulated within the giveaway of the day software that connects to their servers to check the validity of the giveaway period. One of the limitations of this software is that it does not work behind authenticated proxies, i.e., proxies wherein you need to enter your userid/password to access the internet (quite common in education institutions).
It seems to use the “Internet Option” settings of Internet Explorer to detect the connection settings. So, the simplest way to use the software behind such a proxy is to use a HTTP tunnel client that creates another proxy layer with the userid/password settings already entered. HTTP-Tunnel Client is a useful software in this regard and can be used to serve the purpose (something I had used earlier to make the State software work behind an authenticated proxy). Just follow the instructions to configure the proxy in the software and change the settings in Internet Options.
Once this is done, the installer should run fine and connect to the server without any errors. It may fail the first time, in which case just try once more.
This is a pretty useful workaround and should work for other software that use the Internet Options connection settings, but do not support an authenticated proxy.
Interning on FOSS 1: Open Source Development
I’ve been interning at Sun Microsystems in Delhi from May 1st and during this period, I’ve had the opportunity to research a variety of open source applications. My initial project was to explore and research various open source applications suitable for use by students and compare them against each other and with the proprietary alternatives. There are indeed a bunch of alternatives available for the software we use during the course of our day to day work.
I managed to submit a paper on “Components of an Open Source Operating System for Sustainable ICT Education in Schools in Developing Countries” to the HICSS conference, and I’m starting off a multi part post with my learnings on open source software and development.
One of the interesting works that I read on open source development was Eric Raymond’s “The Cathedral and The Bazaar”. This is probably one of the definitive works on open source development, and a number of theories stem from it. In fact, quite a few papers that I referred to during the course of my research cited this work. He has postulated the following principles in the essay:
-
Every good work of software starts by scratching a developer’s personal itch.
-
Good programmers know what to write. Great ones know what to rewrite (and reuse).
-
Plan to throw one away; you will, anyhow.
-
If you have the right attitude, interesting problems will find you.
-
When you lose interest in a program, your last duty to it is to hand it off to a competent successor.
-
Treating your users as co-developers is your least-hassle route to rapid code improvement and effective debugging.
-
Release early. Release often. And listen to your customers.
-
Given a large enough beta-tester and co-developer base, almost every problem will be characterized quickly and the fix obvious to someone. (The full version of Linus’s law – Given enough eyeballs, all bugs are shallow)
-
Smart data structures and dumb code works a lot better than the other way around.
-
If you treat your beta-testers as if they’re your most valuable resource, they will respond by becoming your most valuable resource.
-
The next best thing to having good ideas is recognizing good ideas from your users. Sometimes the latter is better.
-
Often, the most striking and innovative solutions come from realizing that your concept of the problem was wrong.
-
Perfection (in design) is achieved not when there is nothing more to add, but rather when there is nothing more to take away.
-
Any tool should be useful in the expected way, but a truly great tool lends itself to uses you never expected.
-
When writing gateway software of any kind, take pains to disturb the data stream as little as possible—and never throw away information unless the recipient forces you to!
-
When your language is nowhere near Turing-complete, syntactic sugar can be your friend.
-
A security system is only as secure as its secret. Beware of pseudo-secrets.
-
To solve an interesting problem, start by finding a problem that is interesting to you.
-
Provided the development coordinator has a communications medium at least as good as the Internet, and knows how to lead without coercion, many heads are inevitably better than one.
Most of his principles are for software development in general, and so also apply to open source development. The key learnings form his essay are two-fold. First is that it is important to have a working prototype of the project before making it open source, or at least trying to find other developers who’d be interested in it. Second is that open source attracts a wide variety of talent that can be put to various uses, ranging from bug finding, to improvement suggestions to actual coding. Thus, it is essential to treat the participants in the right manner as everyone could make an important contribution.
One of the other observations to be made about open source development is the vital role that the internet has played in creating the synergy that exists between the developers, users and other contributors of any open source project. In fact, Eric Raymond has said as much in his essay:
… Another (in hindsight) was that the Internet wasn’t yet good enough.
Before cheap Internet, there were some geographically compact communities where the culture encouraged Weinberg’s “egoless” programming, and a developer could easily attract a lot of skilled kibitzers and co-developers. Bell Labs, the MIT AI and LCS labs, UC Berkeley—these became the home of innovations that are legendary and still potent.
Linux was the first project for which a conscious and successful effort to use the entire world as its talent pool was made. I don’t think it’s a coincidence that the gestation period of Linux coincided with the birth of the World Wide Web, and that Linux left its infancy during the same period in 1993–1994 that saw the takeoff of the ISP industry and the explosion of mainstream interest in the Internet. Linus was the first person who learned how to play by the new rules that pervasive Internet access made possible.
In essence, open source development has a lot of potential when used in the right manner. In fact, many companies use it quite strategically and couple them with interesting licenses (I’ll cover licenses in another part). There are also quite a few organizations championing free (as in freedom) software with the FSF (Free Software Foundation), headed by Richard Stallman being one of the pioneers. There is also a bit of controversy in the Free/Open Source world with some preferring the term free to open source. This has however not deterred organizations from leveraging open source development strategically. Open source development may not be practicable in every situation, particularly for routine software development in enterprises, but it definitely has its merits and I’ll be looking at other aspects of open source software in subsequent parts.
College goer’s freeware toolkit
I’ve been suggesting quite a few software to my classmates over the last few months. So I thought of collating all the recommendations into one post. Here’s the list of different freeware that should be useful for different purposes.
Image editing
GIMP – This is the open source alternative to Photoshop, and the most popular image editor on Linux. It has a variety of features and there are quite a lot of tutorials available on the net for it. It recently underwent an interface overhaul.
Paint.NET – A Windows only image editor that should be powerful enough for most needs while being fairly simple to use.
Picasa – Not a full fledged image editor, but good enough for touching up photos. It serves quite well as a photo organizer, and is the official tool for uploading to Google’s Picasa web album.
Windows Live Gallery – Very similar to Picasa, with slight differences in the interface. It fills the gap for a uploader combined with a photo gallery for Flickr.
Video editing
Virtualdub – A very basic video editor (mainly for AVI files), useful for trimming and clean up.
Windows Live Movie Maker – The Live version of the popular Windows Movie Maker that supports publishing to the MSN online service.
Videospin – A very good alternative to the Windows Movie Maker. It has a host of features, and videos can be created in a variety of formats. I got to know of it from its coverage on the Digital Inspiration blog.
Audio editing
Audacity – One of the best audio editors out there, and a very handy alternative to the paid Sound Forge. Very useful for performing different tasks and processing on audio clips.
Screencast
Camstudio – A decent alternative to the paid Camtasia Studio. It supports the creation of screencast videos, along with the ability to record audio.
Wink – Another screen capture software that records images, but can also be used for making screencasts.
Document creation
OpenOffice – An open source alternative to Microsoft Office – not 100% compatible, but it has some additional features of its own along with support for other formats. The memory usage is on the higher side.
Lotus Symphony – Another alternative to MS Office by IBM. Similar to OpenOffice, but with fewer applications in the suite.
PDF creator – A handy utility to create PDFs from different sources (installs as a PDF printer).
Notepad++ – A must have replacement for notepad. Has a tabbed interface, supports syntax highlighting (useful for editing HTML, XML etc), and recording of macros.
Utilities
7-Zip – Supports most of the commonly used compression formats like zip, rar, cab etc along with its own 7z format which boasts of one of the best compression ratios. A very good alternative to paid software like Winzip and WinRAR. It can also be used to split files which comes in handy when sending large email attachments in batches.
CCleaner – One of the most popular system cleanup utilities. It clears temporary files, browser cache, history etc.
VirtualBox – Useful for creating virtual machines, like say for Linux which can then in turn be used for different purposes. Much more convenient than trying to set up dual boot configurations, especially on laptops.
Fun stuff
ComicRack – Very useful for keeping ones comic/ebook library organized. It supports various formats like pdf, cbr etc. Kind of like a media library for books.
Internet
Pidgin – A popular messaging client that supports most of the major IM networks like MSN, Yahoo!, AIM and GTalk. Definitely more convenient than having a ton of IMs loaded at the same time, granted that none of the advanced features of the networks are being used.
Flock – The social network incarnation of Firefox. It contains built-in tools for posting to blogs, uploading to photo sharing sites like Flickr, checking social networking sites among many other features.
Feed Demon – A powerful feed reader that is integrated with the Newsgator service (similar to Google Reader) to keep feeds in sync across machines.
RSS Bandit – Another feed reader that’s currently under development, but supports integration with Google Reader.
Portable Apps
PortableApps comprises of an entire suite of applications that can be run directly from a removable storage device like USB drives and external hard disks. It contains many of the software mentioned here. Some of them are included by default in the download, while others can be added using the respective installers.
The applications range from browsers and email clients to media players and editors, office applications to virus scanners among many more. Every portable device should include this.