You are right about the relatively limited number of JVMs. However, the lowest common denominator isn't actually very low unless you're trying to develop an operating system.
Thanks! I just took a quick look and it seems pretty "groovy":-) I love closures since I did a bunch of work with functional programming languages like Miranda in school.
but'cept that
1) It runs too slow to compete with a C/C++/Objective C application.
2) It looks different on different systems.
3) It takes forever to start up.
4) The GUI feels icky and looks creepy and is slow and non-native.
5) Sun holds Java hostage
1) Performance is now basically the same as C/C++/Objective-C apps.
2) Only if it is programmed that way... a developer can force a specific Look and Feel.
3) If by forever you mean
4) Again, only if it is programmed that way.
5) From a purist perspective, I'll grant you this one. But from a practical perspective, it's just not a big deal. Lots of JVM's out there, source code is available (although it's not Free).
I've written production code in C, C++, Objective-C, Lisp, Pascal, many different scripting languages, and Java. Bar none, if you want to write something portable, Java is the language to use. It has the incredibly complete and mature libraries, performance is excellent, tool support with IDE's and app servers and source repositories is fabulous, and it is designed to be cross platform! Games, huge transactional systems, office apps, and utilities are all appropriate types of applications to build on Java. I've started to do scripting on FreeBSD with Java. I'll admit, it's hard to write a useful bit of Java that is less than about 10 lines of code, particularly for text processing. But that is probably the only place it is lacking. The one other place one might consider using something else is in Dynamic Client-Side Web Apps (AJAX stuff). Other than that, I always groan when people talk about using other languages for cross-platform development.
I beg to differ. I have seen major software efforts shipped bug-free by the use of simple, good engineering practices including Acceptance Test Driven Development and Test Driven Development. I have not been personally involved with commercial software development like this, but my experience with enterprise software bears this out. I have released a few major software systems which had zero bugs found after development (e.g. QA, pre-production, production) until years later. When you refer to the "software development life cycle", I believe you are referring to the severely broken waterfall lifecycle that has been proven over and over and over again to be a failure. Take some time to check out agile software development lifecycles to see what kinds of incredible differences can be made with simple changes to how work is done.
Sounds like a serious problem! Staff turnover can cripple an organization due to all the tacit knowledge that is lost. This is a problem that is often unexpectedly experienced when an organization outsources work as well. No matter how much documentation you create, it can never replace the knowledge stored inside people's heads and _habits_. Finding a way to retain people is critical.
This sort of organizational change has simple solutions, but they all take a long time to do effectively. The organic nature of the organization's growth means that an organic approach to change is required. If change is imposed or mandated from above, then people are going to be very resistant to it regardless of the change. There are some very basic principles and practices that can be used to manage this sort of change.
At it's root, this is organizational culture change. The way that people are compensated and rewarded, their sphere of responsibility and influence, the methods of making decisions, the expectations of the business side of the organization, and the basic beliefs about what constitutes fulfilling work are all interrelated. Any organizational change plan has to account for all this.
From what little you have told us, the organic growth of the company sounds like it is embedded in the culture. Don't fight that, you'll lose. Instead, use the organic growth to change the culture organically. Some specific techniques: use small frequent adjustments to gradually steer towards a solution rather than a few large adjustments that might shock the organization, also as mentioned elsewhere, get people involved in coming up with solutions... and then _experiment_ with them.
Most organizations attempting to do this require outside help. This is due to the difficulty of being objective about the corporate culture that you are embedded within. This outside help does not need to be full time, but it does need to be long-term.
FWIW, I have some experience with this. My expertise is in organizational adoption of agile methods both for software development and management. Agile methods provide a simple framework of disciplines and practices that can be used to radically change the effectiveness of an organization. However, despite their simplicity, agile methods are difficult to implement. They require substantial corporate cultural change. I have several years experience as a coach in this field and I would be interested in helping you out. Feel free to contact me at mishkin at berteigconsulting dot com.
I strongly disagree with "C) Realize that this is going to take a long time." In my experience high quality and speed go hand-in-hand. Several times I have produces bug-free enterprise use code in complex environments (multi-threaded distributed messaging, high-volume data processing). The way to do fast and high quality: Test Driven Development. Do your tests before you write your code and you always know you have perfect code. You can go damn fast if you do that. Use both unit tests (e.g. JUnit) and acceptance tests (e.g. Fitnesse). Do continuous integration with something like Cruise Control. Don't settle for a single bug and you will go faster than you ever thought possible.
It seems that there is a grim inevitability about taxes. I think what is going on is probably the best possible scenario... and should actually be extended outside of just the United States. The recent article about the UN wanting to control the ICANN stuff is actually related to this. There are basically two possible end states for the Internet: either global administration and governance or complete anarchy. I'm not personally sure which would be better, but I think I lean slightly to the side of global administration. If taxes are to be levied on Internet sales, then to me it seems like a single point of administration for _all_ global internet sales would be the simplest: it would allow small businesses to rely on a single point of contact for tax administration. On the other hand, a hugely diverse tax system where every region may tax internet sales on different criteria and based on different rates would only benefit the largest corporations with the resources to deal with that sort of complexity.
I have three "good" passwords upon which I create variants. The three basic passwords all have a pseudo random combination of caps, lowercase, numbers, and punctuation. Then, when I have to change a password due to corporate policy, I simply change a single character so that my password gradually evolves... and stays very memorable. Admittedly, remembering the base passwords in the first place was a bit painful. But so far that I know of in over ten years of use, I have never had a password compromised, including passwords on servers that are publicly accessible.
In my own experience, most tech users who are not technically inclined do indeed have very poor passwords: sometimes just their names even. I try to educate people on it but it is hard going. Most people just don't feel that it is worth the bother... and probably from their own perspective, a risk analysis would show they are correct.
I've been investigating solar and wind power generation for my home. I'm on an acre and a half, with well and septic. I run some web and mail servers. It would be really nice to be able to have a water supply and electricity supply independent of the grid. If this sort of grid system gets implemented, it may be incentive for me and others to go ahead with local power generation systems so that we can share. I've been reading about in-home control systems that can regulate when and how power is used so that you can immediately get a 15-30% power savings. If this is also done with these micro-grids, a cumulative savings of 50% might be possible. That would be a substantial factor in reducing entropy buildup (emmissions, heat, etc.). Cool stuff!!!
It's surprising where "odd" hardware/software combo's show up. I would never have suspected Linux/PPC in the Navy. How did it get there? Who knew about Linux, and PPC and had the influence to get it used there? Was it a really good sales job (and the connections that make it possible)? Or was it an insider who went looking for a platform from a clean slate?
The answers to these questions are extremely important to the further expansion of the use of Linux (or any other product/platform/system).
I've been reading slashdot articles about this for years, and it's always claimed to be just a short time away. I know that probably at some point it will actually be just a short time away... but is there any better reason to believe that this is it?
One of the common anti-patterns is over-relying on tools and frameworks instead of inventing new programming models.
Actually, he missed the anti-pattern. It's really: One of the common anti-patterns is over-relying on tools and frameworks and programming paradigms and processes instead of improving the skills and knowledge of the people doing the programming.
I've been programming for a long time too, and I don't think that new programming models do all that much for productivity compared to finding good people or investing in improving the people you have. The recent Joel on Software article discusses this at length. This is one of the big reasons I'm so interested in agile methods and principles.
Will this have liability ramifications for music copying using the iPod? I don't know very much about the law behind the levy here in Canada, but I do know that it is meant to compensate the middlemen^H^H^H^H^H^H^H^H^H artists for fair-use copying that does not provide revenue. So if the iPod is in some way not covered by this levy, does that somehow expose iPod users?
First, I invested in some of those dot coms at ridiculous prices. I'm young, so it's not like I blew my life savings or anything, but still... lesson definitely learned.
Second, I worked in one of those never-quite-successful dot coms. A small company that started just late enough to miss the VC gold rush (or at least that's what we told ourselves). I had to exercise my options before I could tell if it was going to be bust. Regrettably it did bust. Oh well.
I'm feeling the heebie-jeebies about the housing market right now. Seems pretty similar: lots of institutional investment, lots of trendy discussion, lots of people moving around a lot... we'll see, but I'm not too hopeful about real estate right now.
Well, in the previous article about IBM, I mentioned that technology is forcing us in a direction of less technology. David Brin wrote an essay called Transparent Society. Very interesting stuff.
I'm starting to feel like the right to privacy might be a red herring. The benefits of technology and a truely collaborative and just society might only be fully realized if we completely give up privacy... and that that might actually be a good thing. I know that I've read an essay or something about this before, but I can't find a link - anyone know who wrote about this or where I can find some references? (Actually, Robert J. Sawyer wrote a series of books where one of the societies is like this... but it's not what I'm thinking of.)
Most businesses suppress the creativity of their employees. Part of this is through poor management practices, part of it is through poor strategic decisions that demoralize people, part of it is through decisions about the office environment, and part of it is legislation.
I'm working on a "manifesto" about this: http://www.agileaxioms.com - I'd love people to take a look and tell me what you think. There's a comments link.
My wife and I were discussing the purchase of a 37" 1080p lcd monitor and mounting it in our bedroom mainly for watching dvd's. I thought that it would be cool to mount a Mac Mini in the wall in order to hide all the wires, and use the bluetooth keyboard and mouse to control it from across the room (in the bed, specifically).
It surely deserves this award. However, after 15 years doing software development, I now consider two other books even more important even thought they are not quite as information-full as the design patterns book. They are: "Agile Software Development" by Alistair Cockburn and "Software Craftsmanship" by Pete McBreen. I have a full list of books, web sites and tools that I recommend at my Software Resources page.
You are right about the relatively limited number of JVMs. However, the lowest common denominator isn't actually very low unless you're trying to develop an operating system.
Thanks! I just took a quick look and it seems pretty "groovy" :-) I love closures since I did a bunch of work with functional programming languages like Miranda in school.
2) Only if it is programmed that way... a developer can force a specific Look and Feel.
3) If by forever you mean 4) Again, only if it is programmed that way.
5) From a purist perspective, I'll grant you this one. But from a practical perspective, it's just not a big deal. Lots of JVM's out there, source code is available (although it's not Free).
I've written production code in C, C++, Objective-C, Lisp, Pascal, many different scripting languages, and Java. Bar none, if you want to write something portable, Java is the language to use. It has the incredibly complete and mature libraries, performance is excellent, tool support with IDE's and app servers and source repositories is fabulous, and it is designed to be cross platform! Games, huge transactional systems, office apps, and utilities are all appropriate types of applications to build on Java. I've started to do scripting on FreeBSD with Java. I'll admit, it's hard to write a useful bit of Java that is less than about 10 lines of code, particularly for text processing. But that is probably the only place it is lacking. The one other place one might consider using something else is in Dynamic Client-Side Web Apps (AJAX stuff). Other than that, I always groan when people talk about using other languages for cross-platform development.
I beg to differ. I have seen major software efforts shipped bug-free by the use of simple, good engineering practices including Acceptance Test Driven Development and Test Driven Development. I have not been personally involved with commercial software development like this, but my experience with enterprise software bears this out. I have released a few major software systems which had zero bugs found after development (e.g. QA, pre-production, production) until years later. When you refer to the "software development life cycle", I believe you are referring to the severely broken waterfall lifecycle that has been proven over and over and over again to be a failure. Take some time to check out agile software development lifecycles to see what kinds of incredible differences can be made with simple changes to how work is done.
Sounds like a serious problem! Staff turnover can cripple an organization due to all the tacit knowledge that is lost. This is a problem that is often unexpectedly experienced when an organization outsources work as well. No matter how much documentation you create, it can never replace the knowledge stored inside people's heads and _habits_. Finding a way to retain people is critical.
This sort of organizational change has simple solutions, but they all take a long time to do effectively. The organic nature of the organization's growth means that an organic approach to change is required. If change is imposed or mandated from above, then people are going to be very resistant to it regardless of the change. There are some very basic principles and practices that can be used to manage this sort of change.
At it's root, this is organizational culture change. The way that people are compensated and rewarded, their sphere of responsibility and influence, the methods of making decisions, the expectations of the business side of the organization, and the basic beliefs about what constitutes fulfilling work are all interrelated. Any organizational change plan has to account for all this.
From what little you have told us, the organic growth of the company sounds like it is embedded in the culture. Don't fight that, you'll lose. Instead, use the organic growth to change the culture organically. Some specific techniques: use small frequent adjustments to gradually steer towards a solution rather than a few large adjustments that might shock the organization, also as mentioned elsewhere, get people involved in coming up with solutions... and then _experiment_ with them.
Most organizations attempting to do this require outside help. This is due to the difficulty of being objective about the corporate culture that you are embedded within. This outside help does not need to be full time, but it does need to be long-term.
FWIW, I have some experience with this. My expertise is in organizational adoption of agile methods both for software development and management. Agile methods provide a simple framework of disciplines and practices that can be used to radically change the effectiveness of an organization. However, despite their simplicity, agile methods are difficult to implement. They require substantial corporate cultural change. I have several years experience as a coach in this field and I would be interested in helping you out. Feel free to contact me at mishkin at berteigconsulting dot com.
I strongly disagree with "C) Realize that this is going to take a long time." In my experience high quality and speed go hand-in-hand. Several times I have produces bug-free enterprise use code in complex environments (multi-threaded distributed messaging, high-volume data processing). The way to do fast and high quality: Test Driven Development. Do your tests before you write your code and you always know you have perfect code. You can go damn fast if you do that. Use both unit tests (e.g. JUnit) and acceptance tests (e.g. Fitnesse). Do continuous integration with something like Cruise Control. Don't settle for a single bug and you will go faster than you ever thought possible.
It seems that there is a grim inevitability about taxes. I think what is going on is probably the best possible scenario... and should actually be extended outside of just the United States. The recent article about the UN wanting to control the ICANN stuff is actually related to this. There are basically two possible end states for the Internet: either global administration and governance or complete anarchy. I'm not personally sure which would be better, but I think I lean slightly to the side of global administration. If taxes are to be levied on Internet sales, then to me it seems like a single point of administration for _all_ global internet sales would be the simplest: it would allow small businesses to rely on a single point of contact for tax administration. On the other hand, a hugely diverse tax system where every region may tax internet sales on different criteria and based on different rates would only benefit the largest corporations with the resources to deal with that sort of complexity.
I have three "good" passwords upon which I create variants. The three basic passwords all have a pseudo random combination of caps, lowercase, numbers, and punctuation. Then, when I have to change a password due to corporate policy, I simply change a single character so that my password gradually evolves... and stays very memorable. Admittedly, remembering the base passwords in the first place was a bit painful. But so far that I know of in over ten years of use, I have never had a password compromised, including passwords on servers that are publicly accessible. In my own experience, most tech users who are not technically inclined do indeed have very poor passwords: sometimes just their names even. I try to educate people on it but it is hard going. Most people just don't feel that it is worth the bother... and probably from their own perspective, a risk analysis would show they are correct.
I've been investigating solar and wind power generation for my home. I'm on an acre and a half, with well and septic. I run some web and mail servers. It would be really nice to be able to have a water supply and electricity supply independent of the grid. If this sort of grid system gets implemented, it may be incentive for me and others to go ahead with local power generation systems so that we can share. I've been reading about in-home control systems that can regulate when and how power is used so that you can immediately get a 15-30% power savings. If this is also done with these micro-grids, a cumulative savings of 50% might be possible. That would be a substantial factor in reducing entropy buildup (emmissions, heat, etc.). Cool stuff!!!
So a person can still get on even if they aren't in the US.
It's surprising where "odd" hardware/software combo's show up. I would never have suspected Linux/PPC in the Navy. How did it get there? Who knew about Linux, and PPC and had the influence to get it used there? Was it a really good sales job (and the connections that make it possible)? Or was it an insider who went looking for a platform from a clean slate?
The answers to these questions are extremely important to the further expansion of the use of Linux (or any other product/platform/system).
I've been reading slashdot articles about this for years, and it's always claimed to be just a short time away. I know that probably at some point it will actually be just a short time away... but is there any better reason to believe that this is it?
Actually, he missed the anti-pattern. It's really: One of the common anti-patterns is over-relying on tools and frameworks and programming paradigms and processes instead of improving the skills and knowledge of the people doing the programming.
I've been programming for a long time too, and I don't think that new programming models do all that much for productivity compared to finding good people or investing in improving the people you have. The recent Joel on Software article discusses this at length. This is one of the big reasons I'm so interested in agile methods and principles.
Will this have liability ramifications for music copying using the iPod? I don't know very much about the law behind the levy here in Canada, but I do know that it is meant to compensate the middlemen^H^H^H^H^H^H^H^H^H artists for fair-use copying that does not provide revenue. So if the iPod is in some way not covered by this levy, does that somehow expose iPod users?
Good point, and I appreciate you mentioning it because I hadn't thought of it (not a lot of economics in my background).
First, I invested in some of those dot coms at ridiculous prices. I'm young, so it's not like I blew my life savings or anything, but still... lesson definitely learned.
Second, I worked in one of those never-quite-successful dot coms. A small company that started just late enough to miss the VC gold rush (or at least that's what we told ourselves). I had to exercise my options before I could tell if it was going to be bust. Regrettably it did bust. Oh well.
I'm feeling the heebie-jeebies about the housing market right now. Seems pretty similar: lots of institutional investment, lots of trendy discussion, lots of people moving around a lot... we'll see, but I'm not too hopeful about real estate right now.
By turning the light on and off and using the afterglow would it be possible to get a lower overall energy usage?
Well, in the previous article about IBM, I mentioned that technology is forcing us in a direction of less technology. David Brin wrote an essay called Transparent Society. Very interesting stuff.
Thanks! This is the one I was thinking of. Mod parent up - it's an important essay that should be made more commonly known.
I'm starting to feel like the right to privacy might be a red herring. The benefits of technology and a truely collaborative and just society might only be fully realized if we completely give up privacy... and that that might actually be a good thing. I know that I've read an essay or something about this before, but I can't find a link - anyone know who wrote about this or where I can find some references? (Actually, Robert J. Sawyer wrote a series of books where one of the societies is like this... but it's not what I'm thinking of.)
Most businesses suppress the creativity of their employees. Part of this is through poor management practices, part of it is through poor strategic decisions that demoralize people, part of it is through decisions about the office environment, and part of it is legislation. I'm working on a "manifesto" about this: http://www.agileaxioms.com - I'd love people to take a look and tell me what you think. There's a comments link.
My wife and I were discussing the purchase of a 37" 1080p lcd monitor and mounting it in our bedroom mainly for watching dvd's. I thought that it would be cool to mount a Mac Mini in the wall in order to hide all the wires, and use the bluetooth keyboard and mouse to control it from across the room (in the bed, specifically).
Cool - thanks for what I'll take as recommended reading! Always looking for new books to consume, internalize and act upon.
It surely deserves this award. However, after 15 years doing software development, I now consider two other books even more important even thought they are not quite as information-full as the design patterns book. They are: "Agile Software Development" by Alistair Cockburn and "Software Craftsmanship" by Pete McBreen. I have a full list of books, web sites and tools that I recommend at my Software Resources page.