What is the status of Microsoft Media Foundation? - ms-media-foundation

Microsoft Media Foundation (MF) was introduced as the successor of DirectShow in Windows Vista. I have mostly ignored it, but it has some features (such as decoding of WMV AC-1 files) which are hard to implement in DirectShow. Media Foundation is also a more modern API so it would seem logical to make the switch.
However, the online teaching resources and official documentation seem greatly lacking. There is only 1 book covering the topic (published by Microsoft) and it is no longer available for normal prices. (People charge $500,- or more for second hand versions.)
As far as I could find there are no other books. While other techniques from Microsoft are usually covered in multiple books by multiple publishers.
The official Media Foundation blog has not been updated in since 2011. In the two years that it was active only 10 technical articles were written, 5 of which covering error logging/tracing instead of actual functionality.
The StackOverflow tag ms-media-foundation is only used with 328 questions, of which 142 are unanswered. In contrast there are 1641 DirectShow questions of which only 496 are unanswered.
So what happened to Microsoft Media Foundation? Will the new API ever take off and replace DirectShow or has even Microsoft forsaken MF in favour of going back to the old and rusty (trusty?) DirectShow. Or is there maybe another, non Microsoft framework, that has taken over?

Firstly I don't know the answer and am someone who has spent way too long trying to get even basic Media Foundation scenarios working; at times it feels more like a quest in search of some long lost secret scripture than programming.
My suspicion is that Microsoft does want to make MF the standard media API for the Windows platform and perhaps the best indication is the Windows Universal App Samples where there are 7 instances of "mfapi.h" but zero instances of "dshow.h". Also the relatively new WPF MediaCapture and MediaElement controls do hook into the Media Foundation APIs so it seems safe to say that for all new work Microsoft are using MF instead of DirectShow.
Wow I see what you mean about Polinger's MF book! I have the book (which I'll now shortly be selling at that price) and can assure you it's definitely not worth it. I've never really found it much help despite re-reading it numerous times. It's pretty much the same as the online docs in that it sticks to a small number of specific scenarios (in fact a number of chapters in the book just re-print the SDK samples) and as soon as you need to do something outside those you are on your own.
In regards to the official MF blog there was a thread on the MSDN forums griping about thing and to which one of the Microsoft guys responded saying they have switched blogging platforms (it obviously would be nice if they could put a note indicating that). Apparently a number of the Microsoft MF devs are still blogging. This seems to be the most "active" one.
Update: If anyone happens to get drawn here due to the Polinger book reference note that the companion code can be downloaded from here (the original link quoted in the book is http://go.microsoft.com/FWLink/?Linkid=229072 which at the time of writing redirects to the aforementioned page).

For me, Media Foundation is really a very nice API to do multimedia programming.
What I can blame, is that Media Foundation's releases don't apply to Windows 7, currently the most popular OS in the world.
Media Foundation has a lot of competitors (DirectShow, Ffmpeg, Gstreamer, etc...). So, more choice, less developers, less tutorials and so on...
I try to promote this API as i can, so here is my work on Media Foundation : MFNode
I cover a lot of scenarios, and you have to check source code to learn.
You will find :
audio/video player (win32)
custom media session
sequencer source
audio/video capture
screen capture
kinect V1 capture
wave audio mixer
http streaming (winsock)
jpeg encoding (Gdiplus)
dxva2 technology
cuda decoding
directX9 renderer and shader
COM technology
different kind of mediafoundation Source, Sink and Transform (mpeg2, flv, a52, vp6...)
mp3 to wave transcoder
EDIT
More MediaFoundation code here : github mofo7777

I suspect one reason for MediaFoundation not being used as much is that it limits you to encoding in WMV format only, and limits your ability to decode too (you can decode more than just WMV, but even the old VFW from Win 3.1 days allowed you to select a compressor of your choice)
The even rustier and older VFW (video for windows) is simpler than all of them latest and greatest, and allows multiple compressors - so I am wondering if MediaFoundation will ever be updated to allow more compressors and decompressors (or encoders and decoders) than the very limited selection they offer.
MediaFoundation API's, although interfaces, seem pretty low level still, and requires lots of boiler plate code just to get basic things working - powerful for WMV production, as they give you plenty of tools - but, a little bit hard to use for doing basic tasks (best is to download wrappers around the API, which to my surprise, not many exist.. these API's are not so popular as you would think).

Related

Does SCORM really need the flash player to work?

I have to do a college project, where I have to do an LMS, and one of the requirements is to allow the import of SCORM files. However, when I went to research I saw something about SCORM using the flash player, which ended support this year. Can anyone answer the question if SCORM really needs the flash player to work?
No. The only hard technical requirement is a JavaScript environment (or an environment that sufficiently mimics a JavaScript environment) which is why SCORM is very often considered a browser based specification. "Browsers" and therefore JS environments are finding their way into all kinds of places.
To elaborate a bit more on Brian's answer, take a look at the following resources.
SCORM1.2 Golf Examples
https://scorm.com/scorm-explained/technical-scorm/golf-examples/?utm_source=google&utm_medium=natural_search
SCORM Run-Time Reference
https://scorm.com/scorm-explained/technical-scorm/run-time/run-time-reference/
Rapid E-Learning Dev Software
Articulate
Captivate
Lectora
I have experience in all three software's listed above; however, I have standardized all training development in my team to use Lectora because of its flexibility and ability to add JS, jQuery, CSS, etc. to my content. You are really limited by your own skills at that point and if you have the computer programming skills then you can exploit Lectora to it's fullest potential.
Using Lectora, I can use Actions to modify any/all SCORM variables using the run-time reference listed above as my guide.

Is there a tool that picks up where 280 North's "Atlas" left off?

Occasionally I go back and watch this video. And then I cry a little bit because 280 North got swallowed up by Motorola and to this day no one really knows exactly what became of them.
I know that there was something called "Greenhouse" for SproutCore that purportedly did something similar. But what with SproutCore's lead developer getting hired by Facebook and SproutCore itself turning into Ember.js, I'm not really sure if Greenhouse ever made it out alive.
So -- are there any tools that pick up where Atlas left off?
tl;dr: There are two choices: Dashcode or Cappucino, where the GUI solution seems to be building your UI in Xcode (Interface Builder) and exporting it to Cappucino. This solution seems to be supported by the core Cappucino team. Atlas and Greenhouse are dead.
The rest of this response consists of quotes and links supporting the above conclusion.
I've got the same question and have done some research.
There are three possible frameworks where such a tool could be possible. Dashcode, Greenhouse and Atlas. Atlas is dead, Greenhouse never seemed to be more than just an experiment.
Dashcode is still being maintained. It is a really good tool, and the only platform I've found that allows building Mobile apps as well as Web Apps at the same time, from the same code base. (A lot of the mobile app builders, like titanium, phonegap, etc, seem to focus only on mobile, not building for both the desktop browser and the mobile device.)
Dashcode is being revved every time Apple releases a new version of Xcode. Further, apple is doing continuous work in this area-- for instance, the iAds Producer is really a super- souped up dashcode. Further, iBooks Author is also very much like dashcode. Both of which are specific tools for specific limited target products, but both have javascript frameworks and at least some GUI support.
Producer is really slick, though its focused on making "flash" like ads with javascript.
Dashcode has not been majorly updated for quite awhile, so it might be on the way out, but it is still a viable tool.
The 280 North guys don't seem to work for motorola anymore (boucher at least works for stripe now) and all work on Atlas has stopped.
The "officially recommended" solution seems to be XcodeCapp Which, near as I can tell, is built into Cappuciono now. "Best of all, the new XcodeCapp application automatically creates an Xcode project out of your Cappuccino project and lets you place UI components with ease." (from over a year ago, when they could have mentioned Atlas.)
Here's some references to it, including a recent saying it had been fixed for Xcode 4.4 (which was released this summer, with 4.5 being the current release.)
https://groups.google.com/forum/#!topic/objectivej/mRMiLTP2Yh8
Also, this next link is to a site with some great tutorials, and they assume you're using Xcode:
http://www.cappuccino-project.org/learn/tutorials/advanced-hello-world-2/
Here's an older blog post about the situation:
http://cappuccino.org/discuss/2011/11/16/cappuccino-0-9-5/
Which contains this in the comments:
"Only the people who own the Atlas project can make any statements about it, and unfortunately we're just not those people. We're the Cappuccino core developers and we manage the open source project Cappuccino. Atlas was a commercial product created by a company that doesn't exist anymore.
That said, don't worry about it, really. The Interface Builder integration is awesome and a very complete solution. And beyond that, you can write apps perfectly fine without any GUI editor at all. Or you could even write your own editor in Cappuccino. You've got a huge amount of possibilities and power at your disposal, so go out and build a cool app."
And also:
"The new way of converting xibs to cibs automatically is the shiny new XcodeCapp application which you will find in /usr/local/narwhal/packages/cappuccino/support/XcodeCapp.app. That either struck us as an intuitive and easy to find path, or we didn't have time to make an easier one. ;)"
Also, this summary by Antoine Mercadal :
"Atlas is a closed source software. It was originally built by the 280N guys, and you may or may not know the history, but the point is Atlas is more likely dead. We, the Cappuccino community, cannot do anything about it, unfortunately. Complaining about Atlas here is like complaining on the W3C website about IE: it doesn't make sense.
I personally paid for the Atlas beta, and I develop all my interfaces (about 30 big cibs) with it. I was also very disappointed by the bad health of Atlas. That's the price you have to paid for using proprietary beta software: shit happens.I spent a week rebuilding all my UI under IB. It was a pain and I drank a lot of coffee during this week, but it actually really worth it. The result is just awesome.
The support of Cappuccino by IB (with XcodeCapp) is now way beyond Atlas has never been. And the future is now guaranteed because XcodeCapp is a part of Cappuccino, nib2cib is a part of Cappuccino, both of them are Open Source, and nobody will never be able to "shut them down".
Atlas was a young product, Cappuccino was also a young product and like every community-based projects, all the actors/tools/members need to be "calibrated" and need to experiment several things. I think it's now done, and that's why we're approaching the 1.0.
This release is awesome, there are tons of fixes and new features, that is what we should talk about in this thread :)"
Nib2Cib has existed since before Atlas. It lets you build your UI in interface builder, and has recently become much better. The latest version of Capp includes a tool that automatically runs the converter for you when you save a xib/nib.

Flex or Silverlight which one is best?

I am working on a video chat applicaton, i am not sure which one is the best for the current market??
please any suggestions??
I am a Silverlight developer myself, but looking at the adoption rate as of today I would not use it for a public app. If you have the skills, definitely go with Flex.
In this case, Flash 10 has the clear advantage as Adobe includes the necessary functionality to build a working video chat application (including video encoding codecs). Adobe has an in-beta (lab) product code-named Stratus which makes connecting two video clients easy for example. Flash also has built-in support for the various streaming protocols needed to efficiently send video to another location.
Here's a web site with a walk-through for example using Flash technologies. There are plenty of other options though that are available for Flash video chat distribution as well from 3rd parties.
That's not to say that it's not possible to build something like this using Silverlight. However, there really isn't the industry behind it as the video camera support in Silverlight is just emerging and in it's first release in Silverlight version 4.0. For now, there's still a LOT of work that must be done to build out the equivalent of what exists in the Flash community (has existed for years). The web camera support in Silverlight has made it simple enough to capture a snapshot from the camera, but not yet a video.
As the former Product Manager for Silverlight and one of the guys that helped craft Adobe compete strategy for Microsoft let me simply say "it depends on each individual"
RE: Ubiquity.
Flash has around 8-18 million installs every day, so whilst the assumption that Flash is on every single machine world-wide? the reality is that an average person is likely to install Flash at least 7 times per person each year so thus it implies mathematically impossible for Flash to be absolutely 90% ubiquitous
In actuality, I sat next to the office who was one of the architects for that methodology and it took 3 goes to get the right "positive" number. So do what you will with that.
Silverlight has around 400million+ installs and is growing actually quite rapidly. It took Flash approx 6 years to reach that number and the acceleration of Flash to go beyond that was largely due to Windows XP baking the runtime into the OEM installs. The fact Flash is no longer installed on Operating systems by default and relies heavily on Hardware OEM deals (cash for installs) this is where it gets a little murky on "sustaining ubiquity".
I'd say Flash isn't 90% ubiquity on clients, i'd say Flash is 90% ubiquity on the web itself, in that i think Adobe are pushing the wrong agenda - it's saturation they have not install sockets.
RE: Skillset
I'd say most on here are correct with a twist. In that it's not so much always about what you know, but it's more about "who else will know what you know" as you're most likely going to have to work with someone on a project sooner or later?
It's really about what your team and you are comfortable in terms of adopting, it also has to do with budgets and time. If you have time to do some personal development and want to explore into either Flash or Silverlight, choose both - you will learn 10x as much (I know Flash, Flex and Silverlight/WPF quite well - 9+ years at this).
However, if you're a .NET developer then understand you're about to invest in not only a language but a complete foreign entity ranging from tools to community dynamics as well. You will need to simply absorb about 6months to 1 year of being a "junior" developer/designer should you wish to adopt either technology.
I'd highly recommend you adopt both though as i honestly wouldn't declare either one just yet an outfront winner. Adobe is making strong gains in attemps to fix a lot of their lazy tooling and ubiquity issues so they may turn this ship around. Microsoft is getting complacent and still has a long ways to entice the design audience, so it's still quite early days for them as well.
RE: Jobs
Monster stats are a b.s stat to track as it is like watching rain fall outside your house and declare that the world is suffering from an influx of rain today... it doesn't answer how long the Flex jobs have been in market for the said advertising, in that is there a skillset shortage? why? is it because the price per hour for a Flex developer doesn't match the said market rate or working conditions etc..
It's a supply/demand argument and I could create spin on both sides of that isle should I choose to.
The reality is there's about 6million .NET developers world wide today, and most of them are slowly turning their heads towards the future in that they aren't quite ready to abandon Microsoft and its tools for a foreign technology. Furthermore, Visual Studio 2010 is about to unload onto the market, so that will create a new wave of excitment behind WPF/Silverlight given it will be a much easier access point to the technology "File-New-Project" vs "download, follow these steps etc"
Windows Phone 7, despite what others may say about iPhone etc will overtake the market again, that i'm sure of. This will also increase the mindshare around the product and stimulate the supply/demand further.
Right now, if you are a designer with both Flash/Flex and .NET skill set, it's definately your market right now as you are in HIGH demand.
- Scott Barnes
Former Silverlight Product Manager and now UX Specialist for both Adobe/Microsoft technologies.
Depends on your programming experience and user audience. If you're a skilled .Net developer, then Silverlight is the best tool for your. But if you want maximum compatibility for your users, you should choose Flex, because it uses the Flash browser plugin.
the winter olympic games and a lot of other major streaming events chose Silverlight over Flash. take that into account: they wouldn't waste their money neither compromise the results. and for latest adoption rates check www.riastats.com
One great thing about Silverlight is that you can reuse existing .NET-Code.
I've been developing in Flex for a while and I absolutely love it. Unless you're a big MS .net shop (and I doubt you'd be asking the question if you were) then I'd recommend Flex. It's more mature, the plug-in has a huge install base and it runs on more platforms.
One consideration is how marketable will your skills be in the future. Flex jobs currently outnumber Silverlight jobs on Monster at a rate of about 4 to 1. Conversely, if you've got to go out and hire folks for the job, you may want to look at Silverlight because there has been a shortage of Flex programmers for a while.

ASP.NET - Learning .NET Framework 3.0 / 3.5

I would like to learn ASP.NET (Complete .NET Framework 3.0 / 3.5) and not getting time to attend training classes in any training center.
Kindly let me know if you know if there are any other good alternates/options to learn.
Kindly provide the details too.
you can start at http://www.asp.net/get-started/
To really learn any language and supporting platform you need to code, and code a lot. Resources are quite numerous out there, so in this sense I can understand your questions, i.e. what are some recommendations. Below is a list I would consider to get that initial push that will enable you to begin your journey to becoming a solid coder.
1) Microsoft's MSDN, Codeplex, ASP.NET website, and development tools are where I would start. Microsoft offers all the tools needed to build/code in the .NET framework which you can freely download. Their online documentation has really become a solid resource and their examples, along with others, can be found at Codeplex.com. The ASP.NET also has a wealth of resources and a pretty good forum for user discussion and knowledge sharing.
2) SourceForge: Look for Open Source initiatives and become involved in them. At first you will be learning but if dedicated, i.e. you like the project, you will be helping others in short order. An example of a Microsoft ASP.NET Open Source initiative I would recommend is DotNetNuke. The core team members are very nice and the community as a whole very helpful and continually growing. You may even find one day that you are developing and selling your own custom modules for extending DotNetNuke at snowcovered.com - so there is a monetary benefit I've provided for your efforts!
3) Learnvisualstudio.net: I joined this several years back and purchased a life-time membership for very little. This site offers video based training which is not bad. In addition to life-time memberships there are other plans which might suite your needs and all of which are very affordable. BTW, they have had a new series out for a few months on Visual Studio 2010 .NET 4 - "First Impressions Visual Studio 2010 - ASP.NET 4.0". They also offer two video formats; one for desktop programs, i.e. Win Media Player and VLC, and one for mobile devices such as iPhone/iPod Touch.
4) Informit's Books Online or Books24x7.com: As a possible alternative to purchasing books at Borders/Amazon/etc. you might find the option of an electronic bookshelf a valuable resource in which you can load up your own bookshelf with much more technical books that you'll ever need. The all inclusive offerings are about $40/month or $500/yr. They both have a trial period so you can see what each is like since they both have their +/-'s. Consider how much you normally spend on technical books a year for starters and go with a comparable plan (Informit's Books Online has more pricing options, I believe). If you find a book you wish to have in hand, you can purchase it for a reduced member's price. Finally, if you own a mobile device such as a Blackberry, iPhone, etc. you can browse your bookshelf with your device in a format they provide, which is live online and very readable (in contrast with Apple’s safari book bag used to browse downloaded PDF versions of content purchased at Safari’s Books Online - which I find sorta tough to read).
5) Get a nice computer of your own if you can afford it. I like Dell desktops and Lenovo Thinkpad notebooks, and if not sure what manufacturer to go with take a look at reviews by CNET. An investment like this might give you a little added push from behind to learn and you can configure your machine as you wish. Windows 7 is terrific and you can use Virtual PC 2007, which is a free tool you can use to host server and other OS’es if you wish to develop in SharePoint or learn other server based technologies.
My final comment is that not a single one of these resources will mean anything if you believe that just by purchasing something you will learn how to code. This list represents just some random thoughts and it is just a begining. It takes time, dedication, and honesty with yourself about your goals … and expect to be frustrated at times. A good friend who shares similar aspirations as you can make a huge difference when embarking down the path to becoming a good "anything”. It is heavy lifting at times and you’ll want a spotter around when it is so.
Start small and be reasonable with your expectations. Best of luck!
John
I found this publication to be very helpful:
Pro ASP.NET 3.5 in C# (Apress)
I like this author's writing style since it's put in straightfoward, understandable terms. You can download some sample material on the Apress site. Additionally, it looks like used copies can be had for a pretty decent price as well if you check on Amazon.
Hope this helps!
Best way to learn any framework is to write in it.
Best advice I can give is to go the web site start here, and move forward.
Keep writing applications in it and you will learn it.

How can you program if you're blind?

Locked. This question and its answers are locked because the question is off-topic but has historical significance. It is not currently accepting new answers or interactions.
Sight is one of the senses most programmers take for granted. Most programmers would spend hours looking at a computer monitor (especially during times when they are in the zone), but I know there are blind programmers (such as T.V. Raman who currently works for Google).
If you were a blind person (or slowly becoming blind), how would you set up your development environment to assist you in programming?
(One suggestion per answer please. The purpose of this question is to bring the good ideas to the top. In addition, screen readers can read the good ideas earlier.)
I am a totally blind college student who’s had several programming internships so my answer will be based off these. I use windows xp as my operating system and Jaws to read what appears on the screen to me in synthetic speech. For java programming I use eclipse, since it’s a fully featured IDE that is accessible.
In my experience as a general rule java programs that use SWT as the GUI toolkit are more accessible then programs that use Swing which is why I stay away from netbeans. For any .net programming I use visual studio 2005 since it was the standard version used at my internship and is very accessible using Jaws and a set of scripts that were developed to make things such as the form designer more accessible.
For C and C++ programming I use cygwin with gcc as my compiler and emacs or vim as my editor depending on what I need to do. A lot of my internship involved programming for Z/OS. I used an rlogin session through Cygwin to access the USS subsystem on the mainframe and C3270 as my 3270 emulator to access the ISPF portion of the mainframe.
I usually rely on synthetic speech but do have a Braille display. I find I usually work faster with speech but use the Braille display in situations where punctuation matters and gets complicated. Examples of this are if statements with lots of nested parenthesis’s and JCL where punctuation is incredibly important.
Update
I'm playing with Emacspeak under cygwin http://emacspeak.sourceforge.net I'm not sure if this will be usable as a programming editor since it appears to be somewhat unresponsive but I haven't looked at any of the configuration options yet.
I'm blind, and have been programming for about 13 years on Windows, Mac, Linux and DOS, in languages from C/C++, Python, Java, C# and various smaller languages along the way. Though the original question was around configuring the environment, I think it's best answered by looking at how a blind person would use a computer.
Some people use a talking environment, such as T. V. Raman and the Emacspeak environment mentioned in other answers. The more common solution by far is to have a screen reader which runs in the background monitoring OS activity and alerting the user via synthetic speech or a physical braille display (generally showing somewhere from 20 to 80 characters at a time). This then means a blind person can use any accessible application.
So, I personally use Visual Studio 2008 these days, and run it with very few modifications. I turn off certain features like displaying errors as I type since I find this distracting. Prior to joining Microsoft all my development was done in a standard text editor like Notepad, so once again no customisations.
It is possible to configure a screen reader to announce indentation. I personally don't use this, since Visual Studio takes care of this, and C# uses braces. But this would be very important in a language like Python where whitespace matters. Finally, Emacspeak does make use of different voices/pitches to indicate different parts of syntax (keywords, comments, identifiers, etc).
I am blind and have been a programmer for the last 12 years or so. Currently am a senior architect and work with Sapient Corporation (a cambridge-based consulting company creating both Web-based and thick client based enterprise solutions).
I use several screen readers but mostly stick with Jaws for windows and NVDA.
I have mostly worked on the Microsoft platform and visual studio as my environment. I also use tools like the MS Sql enterprise studio and others for DB access, network monitoring etc.
I tried to spend some time with emacspeak but since my work was mostly based on the MS platform, never really spent a lot of time there.
I have also spent a couple of years working on C++ on linux - mostly used notepad or visual studio on windows for all the coding and then samba to share files with the linux environment.
Also used borland C for some experimental stuff. Have recently been playing around with python, which as other people have noted above is particularly unfriendly for a blind user because it is written using indentation as the nesting mechanism. Having said that, NVDA, the most popular open source screen reader is written completely using python and some of the commiters on that project are themself blind.
A particularly interesting question I get frequently asked as an architect is how do I deal with diagrams - UML and visio and rational rose etc. Visio is probably the most accessible diagraming tool out there. I was able to write jaws scripts to read rational rose diagrams for me. I've used a tool called T-dub (technical diagram understanding for the blind) developed by some german university for accessing UML 2.0 diagrams. Have used a java-based ugly tool called magic draw for doing model-driven development and was a commiter on the androMDA project and helped develop the .Net code generator from a UML model.
In general, I find that I thrive most in a team environment where I can work on my strengths. For example, while a diagram is extremely useful to communicate/document a design, the actual design process involves a lot of thinking and brainstorming and when the design has been thought out, one of your team mates can help you quickly put together a neatly drawn picture out of it.
People incorrectly mis-construe the above to be lack of independence or ability while I see this as pure inter-dependence -- as in I am sure that the team mate alone could never have come up with that design on his/her own and in-turn, if I depend on him to document the design, so be it.
Most hurdles I face are tool-based inaccessibility. For example all oracle products have been progressively declining in accessibility over the years (shame on them) and a team environment basically allows me an extra layer of defense against these over and above my screen readers and custom scripts.
I am a blind developer and I work under Windows, GNU Linux and MacOS X. Each of platform has different workflows for blind users. This depends on the screen reader that the blind developer uses.
Development tools are not completely accessible for blind developers. I can type code and use compiling functions in all IDEs but there are many problems if I have to design an interface using designing tools as Interface Builder, XGlade or other. When I was developing with Borland Delphi I could add a control, a Button for example, and I could modify each visual attribute of the control using object inspector window. Many IDEs use object inspector windows to modify visual and non visual attributes but the problem for a blind developer is add new controls because the method to add a new control consists of dragging and dropping a control from the palette to the canvas. Visual studio 200x uses alternative methods to do this but the interface of the IDE changes in each new version and this is a big problem because screen readers for Windows need special support, using scripts, to identify each area of some non standar applications. A blind developer can use Visual studio 2008 with his screen reader but when a new version of this IDE appears he has to wait for a new version of scripts for this version of the IDE.
Xcode with Interface builder has no alternative for dragging and dropping tasks yet. I asked it to Apple many times but they are working in other things. I published 3 apps in the App store (Accessible minesweeper, accessible fruitmachine and Programar a ciegas RSS) and I had to design all the interface by code. It's a hard work but I can manage all features of each control.
Eclipse has an accessible code editor but other development tools as debug console,plugins for designing or documentation area present problems for assistive tools for blind users.
Documentations is a problem for blind developers too. Many samples and demonstrations use images to show the explanation (set the environment settings as you can in the picture)
I think the question is not being blind. The question is the companies and development groups think accessibility affects final software but it doesn't affect development software. They think a blind user should be a client but a blind user can't be a development mate.
Blind associations ask accessibility for products and services but they forgot blind developers. Blind people can work as lawyers, journalists, teachers but a blind developer is a strange concept even for the blind. Many times I feel alone because some blind friends of mine can't understand my work.
You can read my opinion about this issue in this article, in Spanish, in my blog http://www.programaraciegas.net/2010/11/05/la-accesibilidad-en-crisis-para-los-desarrolladores-ciegos/
there is a translation tool in the web page. Sorry but I didn't translate it.
Emacs has a number of extensions to allow blind users to manipulate text files. You'd have to consult an expert on the topic, but emacs has text-to-speech capabilities. And probably more.
In addition, there's BLinux:
http://leb.net/blinux/
Linux for the blind. Been around for a very long time. More than ten years I think, and very mature.
Keep in mind that "blind" is a range of conditions - there are some who are legally blind that could read a really large monitor or with magnification help, and then there are those who have no vision at all. I remember a classmate in college who had a special device to magnify books, and special software she could use to magnify a part of the screen. She was working hard to finish college, because her eyesight was getting worse and was going to go away completely.
Programming also has a spectrum of needs - some people are good at cranking out lots and lots of code, and some people are better at looking at the big picture and architecture. I would imagine that given the difficulty imposed by the screen interface, blindness may enhance your ability to get the big picture...
Hanselman had a really interesting podcast with a blind developer recently.
I worked for the Greater Detroit Society for the Blind for three years running a BBS tailored for blind access and worked with a number of blind users on how to better meet their needs, and with newly blind users to get them acclimated to the available hardware and software offerings that were available at the time. If nothing else, I at least learned to read Braille as a hedge against the case where I ever wound up in the same situation!
The majority of blind computer users and programmers use a screen reader of some sort. Jaws in particular is popular. Fortunately, most major applications these days offer some form of handicapped access. You may have to tune your environment slightly to cut down on the chatter, e.g. consider disabling Intellisense in Visual Studio.
A Braille display is less common and is comparatively much more expensive and can show 40 or 80 columns of text, and can be used when exact positioning/punctuation is important. While a screen reader can be configured to rattle off punctuation, a lot of people find it distracting, and it is easier in many cases to feel your way through it. Jaws can be configured to drive the display, so you're not juggling accessibility applications.
Also, a lot of legally blind users still have some modicum of sight left to them. Using high contrast backgrounds and the magnification functionality can help a lot of these users.
Using ToggleKeys in Windows will let you hear when you accidentally tap one of the modal 'caps lock', 'num lock', 'scroll lock', etc. keys as well.
I know at least one Haskell programmer who uses a screen reader and who explicitly programs without using Haskell's layout rules, and instead opts to use the rather non-idiomatic, but supported {;}'s instead, because it is easier/less distracting for him to get his screen reader to read off punctuation than for him to figure out exact indentation that complies with Haskell's layout rules. On that same note, I've heard some grumbling from a couple of blind programmers about when they have to write Python.
Ultimately, you learn to play on your strengths.
I can't recall the source, but I've heard/read about a form of audible syntax "colouring" - so that instead of a string assignment being read as
foo equals quote this is a string quote
the string part would be read with a different pitch or voice to make the separation of elements clearer.
One place to start is the Blinux project:
http://leb.net/blinux/
That project describes how to get Emacspeak (editor with text-to-speech) and has a lot of other resources.
I worked with one person who's eye sight all but prevented them from using a monitor - they did well with Screen reader software and spent a lot of time using text based applications and the shell.
Wikipedia's list of screen reader packages is another place to start: http://en.wikipedia.org/wiki/List_of_screen_readers
I'm a postgraduate student in Beijing,China. I major in computer science and a lot of my work is programming.
I am born with low sight, I need to use magnifying tools to see fonts on screen clearly. I use microsoft's mgnify tools on windows and use compiz's magnify plug in if on linux. I usally set the tool to magnify as three times many as the original font size.
For me maginify tools is ok, the main problem is the speed,I have to move mouse to keep cursors follow the text I'm looking at, microsoft's magnify provides a option of "auto follow the text edit points",that set me from continuously mouse movement when editting or coding. But it doesn't always works because of the edit software or IDE may not support that.
Magnifying tools on linux are hard to use. The KMag come with KDE has a terrible refresh rate which make my eyes unconfortable, compiz's magnifying plugs which I'm using now is OK,but has no function of auto focus(focus auto following).
iOS provides quite perfect solution for me with full screen magnifying, especially on ipad's 9.7 inches screen. there auto focus is not necessary because I hardly use them to code or do other edit stuff.
Android provides very little accessibility functions, only like shake feedback, which is useless for me.
there is no any kind of good magnifying tools on android , not to mention advance function like full screen magnify on iOS.
I used to study Qt, want to build a useful magnify tools on linux, even on android. But hardly have some progress.
When I was in grad school, we had a member of our research team who was blind. He was a bit older, maybe mid-40s. He told us about how he programmed his first computer (which was well before text-to-speech was common) to output the contents of the screen in Morse Code. To overcome the obvious chicken-and-egg problem, he had to completely rewrite the code each time through from scratch until it was working well enough for him to have it read back to him.
Now he uses text-to-speech, though he plans the code very thoroughly before actually writing any of it, to minimize the debug loop.
He was also pretty good at giving PowerPoint presentations that, despite his lack of sight, were just about as well formatted as any sighted presenter's.
This blog post has some information about how the Visual Studio team is making their product accessible:
Visual Studio Core Team's Accessibility Lab Tour Activity
Many programmers use Emacspeak:
Emacspeak --The Complete Audio Desktop
Back in New Zealand I knew someone who had macular degeneration, so was partially sighted. He's a very talented programmer and wound up using Delphi because he could work by recognizing word shapes This was easier to do with a Pascal-like syntax than a C-ish squiggly bracket one. He has a web site, but doesn't seem to mention macular degeneration at all, so I won't name him.
I'm blind and from some months I'm using VINUX (a linux distro based on Ubuntu) with SODBEANS (a version of netbeans with a plug-in named SAPPY that add a TTS support).
This solution works quite well but sometimes I prefer to launch Win XP and NVDA for launching many pages on FireFox because Vinux doesn't work very well when you try to open more than 3 windows of FireFox...
As many have pointed out, emacspeak has been the enduring solution cross platform for many of the older hackers out there. Since it supports Linux and Mac out of the box, it has become my prefered means of developing Windows egnostic projects.
To the issue of actually getting down syntax through an auditory one as opposed to a visual one, I have found that there exists a variety of techniques to get one close if not on the same playing field.
Auditory icons can stand in place for verbal descriptors for one example. You can, put tones for how far a line is indented. The longer the tone, the further the indent. Since tones can play in parallel with text to speech, the information comes through in the same timeframe and doesn't serialize the communication of something so basic.
Braille can quickly and precisely decode to the user the exact syntax of a line. This is something more useful for people who use braille in daily life; the biggest advantage is random access to the contents of the display. Refreshable units typically have router keys above each character cell which can place the cursor to that cell. No fiddling with arrow keys O(n) op vs O(1) access.
Auditory dimensionality (pitch, rate, volume, inflection, richness, stress, etc) can convey a concept (keyword, class, variable, error, etc). For example, comments can be read in a monotone inflection...suiting, if I might say so :).
Emacs and other editors to lesser extents (Visual Studio) allow a coder to peruse a program symantically (next block, fold block, down defun, jump to def, walk up the parse tree, etc). You can very quickly get the "big" picture of the structure of an entire project doing this; with extensions like Cedet, you can get the goodness of VS/Eclipse/etc cross platform and in a textual editor.
Could probably go on and on, but that in a nutshell, is the basis of why a few of us are out there hacking away in industry, adacdemia, or in our basements :).
A group of students from Southern Illinois University Edwardsville and Washington State University are working on a programming language for the blind:
http://www.youtube.com/watch?v=lC1mOSdmzFc
harald van Breederode is a well-known Dutch Oracle DBA expert, trainer and presenter who is blind. His blog contains some useful tips for visually impaired people.
What in the world would a braille keyboard even be??
There are such things as braille writers but you would never use one as an input device for a computer.
If you're simply talking about a keyboard with the braille symbols on it this would also be a very bad idea. You're going to have a lot more keys to reach while typing and it would still be slower.
Touch typing is NOT a visual skill, a blind person can do it just as well as a sighted person.
I think that this would work well in extreme programming using the pair programming principle. If you're making software for blind people, who better to make it then someone who would literally be in touch with the business requirements, so I don't think it's very far fetched at all.
As for writing code, well unless there was some kind of feedback I think a person may struggle with syntax. Audio feedback may help to a point though.
NVDA is a good open source screen reader for win.
What about inventing some kind of device that you plug in a usb port and that would be basically a "sheet of rubber" that would modify itself to show brail of your code, allowing blind people to read it instead to hear it?
There are a variety of tools to aid blind people or partially sighted including speech feedback and braillie keyboards. http://www.rnib.org.uk/Pages/Home.aspx is a good site for help and advice over these issues.
Once I met Sam Hartman, he is a famous Debian developer since 2000, and blind. On this interview he talks about accessibility for a Linux user. He uses Debian, and gnome-orca as screen reader, it works with Gnome, and "does a relatively good job of speaking Iceweasel/Firefox and Libreoffice".
Specifically speaking about programming he says:
While [gnome-orca] does speak gnome-terminal, it’s not really good enough at
speaking terminal programs that I am comfortable using it. So, I run
Emacs with the Emacspeak package. Within that, I run the Emacs
terminal emulator, and within that, I tend to run Screen. For added
fun, I often run additional instances of Emacs within the inner
screens.

Resources