Mourning Steve, now Dennis is dead
14/10/11 18:38
While still mourning Steve Jobs... now Dennis Ritchie is dead, he passed away on Oct 12th, see:
You may have known Steve better than Dennis, but if you’re a programmer you might have heard of Dennis first since he was co-author of the famous K&R book on the C programming langauge, co-inventor of the C language itself and the Unix operating system, which was written in C.
Steve and Dennis both had a profound impact on my professional life because of the technology that came out of Bell Labs in the early 1970s. What Dennis invented, Steve packaged in beautiful, simple, and highly usable packages and brought it to the masses. We would not have heard of Steve, at least not the fullness of Steve and Apple as we know it today if it wasn’t for Dennis. Dennis maybe never thought of it that way, but they complemented each other and to the extent that our modern use of technology is a good thing, they made a great team even though they never worked together. It goes to show you that we all depend on each other. For me Woz and Steve, and even Bill Gates I have to admit, created not just products but a whole economy that has put food on my table and a roof over my head for the last umpty-ump years. Me and a few million others have had a good ride on the wave they created.
The author of the Wired article is right, we should know who Dennis is and appreciate him. Ken Thompson, Dennis Ritchie, and Brian Kernighan and their cohorts at Bell Labs launched a revolution in computer software. Beginning about a decade later Steve Jobs and his team at NeXT which he later brought back to Apple, and Linus Torvalds and a 10,000 Linux programmers brought this revolution to the masses.
In the industry the fruit of that revolution is known as Mac OS X and Linux, and the development tools based on C, C++ and Objective-C. And yes the hardware is important too, the Mac, the iPhone and iPad are incredible hardware platforms for Apple products. Day to day, i’m happy to take it for granted (except when a batter goes dead).
The everyday user just calls it my Mac, or my iPhone, iPad, or Droid, or the internet. Well, I know Gore invented the internet, but Linux runs the internet (at least 60% of web servers run Linux, http://en.wikipedia.org/wiki/Linux), and Linux is the operating system under the covers on Android phones. Let’s not forget Java, the application language for Android -- not exactly a descendant but a close relative of C and C++.
A more complete computer technology heroes list would include other software inventors, which I put ahead of hardware inventors, but we all depend on each other, in addition to Ken, Dennis, Brian, and Linus, add P.J. Plaugher, Niklaus Wirth, Bjarne Stroustrup, and James Gosling to name a few. Most of these guys are still around I think and some of them are still advancing the state of the art.
In the early 1970s Ritchie, Thompson, and Kernighan were inventing and developing the beginnings of what we now know as Mac OS X and Linux, although mice and graphical user interfaces were probably not even a gleam in their eyes. The first real working version of Unix was finished around 1973 written in C and they were still developing the language as they were using it. C, not surprisingly was based on B. Maybe there was an A? There was a first cut at Unix before the C version that was developing in Assembly Language (ah, maybe this is A? I’m just making it up).
See: http://www.livinginternet.com/i/iw_unix_c.htm and an article by Ritchie on the history of C, http://cm.bell-labs.com/who/dmr/chist.html
OK adding to that list I'd have to include Bill Gates super entrepreneur without him we wouldn’t have the greatest copy of the Mac ever invented, and maybe we’d all still be using Macs (thanks to the corporate weenies who line Bill’s pockets). Plenty of others had a more direct impact on technology: inventors, designers and architects of major achievements in hardware and software, like Steve Wozniak, Dan Bricklin, Robert Kahn, Vinton Cerf, Van Jacobson, Tim Berners-Lee, John Warnock, Douglas Englebart, Gary Gordon, Robert Dennard, Robert Noyce, Gordon Moore, Andrew Grove, George E. Smith, Edson de Castro, and another George E. Smith. Ever heard of Konrad Zuse, Walter Brattain, William Shockley, John Bardeen, Mataré, Welker, Gordon Teal, or Walter Schottky?
This list is a little arbitrary, based on my memory of what’s notable in computer technology and had some impact on me, and from some web stumbling. No, I’m totally not in danger of rambling, I’ve gone over the edge!
** Note: The iPhone and iPad operating system, known as iOS is a stripped down version of Mac OS X. Mac OS X is based on BSD Unix, which is a derivative of Bell Labs Unix (which evolved on its own to be known as Version 7 Unix and Unix System V)
Dennis Ritchie: The Shoulders Steve Jobs Stood On | Wired Enterprise | Wired.comwww.wired.com The tributes to Dennis Ritchie won’t match the river of praise that spilled out over the web after the death of Steve Jobs... more |
Steve and Dennis both had a profound impact on my professional life because of the technology that came out of Bell Labs in the early 1970s. What Dennis invented, Steve packaged in beautiful, simple, and highly usable packages and brought it to the masses. We would not have heard of Steve, at least not the fullness of Steve and Apple as we know it today if it wasn’t for Dennis. Dennis maybe never thought of it that way, but they complemented each other and to the extent that our modern use of technology is a good thing, they made a great team even though they never worked together. It goes to show you that we all depend on each other. For me Woz and Steve, and even Bill Gates I have to admit, created not just products but a whole economy that has put food on my table and a roof over my head for the last umpty-ump years. Me and a few million others have had a good ride on the wave they created.
The author of the Wired article is right, we should know who Dennis is and appreciate him. Ken Thompson, Dennis Ritchie, and Brian Kernighan and their cohorts at Bell Labs launched a revolution in computer software. Beginning about a decade later Steve Jobs and his team at NeXT which he later brought back to Apple, and Linus Torvalds and a 10,000 Linux programmers brought this revolution to the masses.
In the industry the fruit of that revolution is known as Mac OS X and Linux, and the development tools based on C, C++ and Objective-C. And yes the hardware is important too, the Mac, the iPhone and iPad are incredible hardware platforms for Apple products. Day to day, i’m happy to take it for granted (except when a batter goes dead).
The everyday user just calls it my Mac, or my iPhone, iPad, or Droid, or the internet. Well, I know Gore invented the internet, but Linux runs the internet (at least 60% of web servers run Linux, http://en.wikipedia.org/wiki/Linux), and Linux is the operating system under the covers on Android phones. Let’s not forget Java, the application language for Android -- not exactly a descendant but a close relative of C and C++.
A more complete computer technology heroes list would include other software inventors, which I put ahead of hardware inventors, but we all depend on each other, in addition to Ken, Dennis, Brian, and Linus, add P.J. Plaugher, Niklaus Wirth, Bjarne Stroustrup, and James Gosling to name a few. Most of these guys are still around I think and some of them are still advancing the state of the art.
In the early 1970s Ritchie, Thompson, and Kernighan were inventing and developing the beginnings of what we now know as Mac OS X and Linux, although mice and graphical user interfaces were probably not even a gleam in their eyes. The first real working version of Unix was finished around 1973 written in C and they were still developing the language as they were using it. C, not surprisingly was based on B. Maybe there was an A? There was a first cut at Unix before the C version that was developing in Assembly Language (ah, maybe this is A? I’m just making it up).See: http://www.livinginternet.com/i/iw_unix_c.htm and an article by Ritchie on the history of C, http://cm.bell-labs.com/who/dmr/chist.html
OK adding to that list I'd have to include Bill Gates super entrepreneur without him we wouldn’t have the greatest copy of the Mac ever invented, and maybe we’d all still be using Macs (thanks to the corporate weenies who line Bill’s pockets). Plenty of others had a more direct impact on technology: inventors, designers and architects of major achievements in hardware and software, like Steve Wozniak, Dan Bricklin, Robert Kahn, Vinton Cerf, Van Jacobson, Tim Berners-Lee, John Warnock, Douglas Englebart, Gary Gordon, Robert Dennard, Robert Noyce, Gordon Moore, Andrew Grove, George E. Smith, Edson de Castro, and another George E. Smith. Ever heard of Konrad Zuse, Walter Brattain, William Shockley, John Bardeen, Mataré, Welker, Gordon Teal, or Walter Schottky?
This list is a little arbitrary, based on my memory of what’s notable in computer technology and had some impact on me, and from some web stumbling. No, I’m totally not in danger of rambling, I’ve gone over the edge!
** Note: The iPhone and iPad operating system, known as iOS is a stripped down version of Mac OS X. Mac OS X is based on BSD Unix, which is a derivative of Bell Labs Unix (which evolved on its own to be known as Version 7 Unix and Unix System V)
Amazon S3 Issues
10/10/11 12:13
No philosophical ramblings here. Just a few nuts and bolts...
Amazon S3: Signing Requests
We are using Amazon S3 for storage in the cloud using the multipart API to upload sometimes very large video files for sharing and processing by our backend servers (EC2 systems). Since the source files are so large, this is useful because it is very easy to resume an upload that might be interrupted by a connection loss on cellular networks, or even wifi over cable or fiber can suffer congestion or short outages.Problem 1: The credentials for our Amazon account would normally have to be embedded in our app, given that is the way the Amazon Java S3 API works. A user or anyone with access to the user’s phone could hack the credentials and compromise the security of all the uploaded data. So this is obviously not a good idea, not secure. In fact it is an inherent weakness in the S3 APIs, but as it turns out, it is easy to overcome.
Solution: Subclass the AbstractAWSSigner class and have it send the signing request to the backend server where we safely store the credentials and send back a signed string.
Problem 2: Some cellular service providers don’t set the time correctly. We encountered a case where the provider set the time, off by 1 hour. It was not the local offset that was wrong, it was the UTC base time... so this phone truly did not know the correct time.
Solution: Let the back end server add the time to the signature string. Since the server is using NTP to keep the time set correctly, then no matter where our customers are or how wrong the device time might be, it will work.
Unsolved Problem: The solutions above require modifying the Amazon S3 Java library since the need to substitute your own signing mechanism was not anticipated by the original developers. You can subclass, which we did, but this is not dynamically instantiated, nor can the calling class be subclassed without modifying the library. Unfortunately (but we’ll live with it), that means we will have to do this again someday when we update our code to the latest open source version of the S3 lib.
Potential solution: Submit a fix that makes the library more extensible or convince the core team to do so.
Same problems and solutions on iOS, except its not Java but Objective-C. Objective-C allows duck-typing but we didn’t take that approach, and if I recall it was for a similar reason: the instantiation of the signing object is embedded within the implementation so we couldn’t get at it to subclass it or duck-type it (essentially just another kind of subclassing).
