One thing to keep in mind with modern web development:
Learning the server side language is only a small fraction of the total learning curve.
You will need to eventually learn databases, a smattering of basic sysadmin skills, Javascript, HTML, CSS, a bit of HTTP, and not least the web frameworks or associated libraries and APIs themselves.
With most frameworks sorta looking like MVC (whatever that ends up meaning these days) and the basic problems being the same, part of the learning curve of one system will help with learning another. Most web developers worth their salt will end up knowing multiple frameworks and server side languages anyway.
You should actually try out both Django and something like Symphony2 (PHP) yourself to see which you prefer. Spend a week or so on each running through tutorials and creating demo sites. You'll soon get a feel for whatever you prefer.
Career wise, language popularity isn't necessarily the most important thing really. Niches can still be profitable depending on where you are and supply/demand etc. eg there are plenty of PHP jobs, but standing out from the hordes of barely capable PHP developers can also be difficult for the less experienced.
If you have to just start with one thing though, Django is a good choice. It's the most popular Python framework, and Python is a much better language for learning good coding habits than PHP. And if you later decide you prefer PHP (or the PHP job market), Symphony is still pretty similar from an architectural / functional point of view and having another language behind you gives a better idea of what not to do in PHP. Or if you end up really liking Python, you have lots of other options later for other frameworks if Django ends up being a bit limited or not quite to your taste.
Just stay flexible and open minded, and know that web development will require ongoing learning no matter what.
Now, ideally, I'd like something a bit more like Apple's display server, where PDF-like commands are streamed directly to the display server, which can then do the 2D rendering and compositing.
Sounds a bit (to my uneducated ears) like that failed Berlin / Fresco project from about 10 yrs ago or so. They were probably ahead of their time and too ambitious, but it was an interesting project.
Just like every other operating system - has there ever been an instance where changing screen resolution didn't effect the other running GUI applications?
In the context of starting full screen apps (ie the context of this thread), the Amiga could do that comfortably 25 yrs ago.
You could even drag down the full screen app running at one resolution to see the GUI desktop running at another resolution behind it.
Of course with todays display hardware and composited desktops etc, that is probably a much harder thing to do with no real benefit. A lot of what the Amiga did was direct hardware hacks.
Yeah, I can't see them dropping.NET either. But I am a little unsure why there seems to be so much FUD (and by that I mean their own fears uncertainties and doubts) expressed from.NET developers themselves this time around.
I haven't heard that kind of stuff since VB6 was hung out to dry. But nothing is really being dropped this time around.
It seems like developers can put up with lots of new frameworks and libraries to learn as long as you don't suggest any new languages. Or maybe developers put up with a lot of change when their chosen platform is growing and still competing against an incumbent (eg Java in this case), but become much more conservative or sensitive once things are successful and plateau/mature a bit. Maybe.NET has become Java:)
I dunno - from the outside, I just hadn't noticed dissatisfaction like this coming from within the.NET ranks before.
.NET is a great platform, and C# is a great language. All of this.NET hate from anti-Microsoft types with no knowledge of the platform is just about as useful as all of the patent fear-mongering associated with Mono. Anything Microsoft invents, these people are going to try to tear down, whether it's a good innovation or a bad one.
Yeah.NET and MS strategy has always had a bunch of hate from non MS types. But the last few months has seen a change where a lot of the criticism is coming from people inside the.NET world rather than outside it.
Previously the.NET world seemed to be one of the most contented development communities that were happy to lap up whatever new framework MS dropped on them without much complaint.
MS needs to be careful in how it addresses the growing threat of the mobile world (ie iOS and Andriod) without alienating its core developers.
If they screw it up, they could be the next Oracle. ie still a massive profitable business, but a legacy one unlikely to attract new generations of devoted developers and passionate supporters any more.
Yeah. Also I think the older a machine is the more likely it is to go through a period of 'neglect' where it isn't looked after as diligently after it has depreciated in value to the owner.
i suspect most Windows 7 machines are still in that period where the owner remembers how much they recently paid for the computer, and installing updates hasn't turned into a seemingly unnecessary chore they won't bother to do any more.
And now for the obligatory slashdot car analogy - I'm much more diligent about keeping a near new car fully serviced than a 15+ yr old dunger.
And it just amazes me that fanbois can cheer the exact same behavior
They are completely different situations. Suns dispute with MS was contractual not patent and copyright related.
MS signed a contract with Sun so they could distribute their own officially certified Java implementation and use the Java trademarks so they could call it Java etc. MS then broke the terms of that contract/license by making parts of its implementation Windows only in the hope that they could break the promise of Javas cross platform support.
Google doesn't intend to use Java trademarks or have an officially certified Java implementation. Google hasn't signed up to anything like MS did. They don't try to call their implementation Java, and it operates in a completely different way.
Oracle is suing Google over VM patents and some copyright claims. They aren't being sued over Java contracts like MS was.
You don't need to be a fanboi to see the difference here. About the only thing in common is both cases involve Java - nothing else is remotely similar.
After all, the Linux kernel doesn't wait for anyone, but that doesn't seem to be a huge problem for corporations
Not really, there are occasional long term support versions of the kernel - eg 2.6.32 is still getting fixes applied upstream. I think the previous long term support version (2.6.27?) is still being supported too.
This is where the Firefox situation is different, they (currently) won't provide any fixes at all for their previous release which might only be six weeks old these days.
Heh, the company I worked at only got their 10base2 LAN installed in 1994. It was just sneaker net before that.
And a few years later I was trying to solve some strange intermittent hard to pin down network problems for another company. After some crawling around in the ceiling, it turned out that their 10base2 network segment was actually a T shape rather than one single line. I was very surprised that it worked at all.
I suppose if I carried my phone around with me all the time, and used it constantly, or if it was a lot easier to dig out of my jeans pocket (especially when sitting on the bus), or if I had a man bag or wanky jacket pockets to keep it in, or if I never wanted to check the time while commuting on my bike (eg if I'm running late and need to pick up the pace), or if I never went mountain biking or windsurfing or hiking, or if my phone was anywhere near as convenient to check as a watch, or if my watch was bulky and annoying enough that I couldn't forget I'm wearing it - then I might consider not wearing a watch.
They've had a MAPI plugin for years. It was the only way to connect to Exchange 2007 - the old OWA plugin only worked with 2003 and earlier.
And their is yet another plugin being developed to support Exchange Web Services now that MS is deprecating/dropping MAPI.
Personally I think the reason Ubuntu is dropping Evolution is that they can't be bothered fixing bugs that can't be pushed upstream because Ubuntu introduced them.
Pfft! Big deal - that's already been done. I saw those at a gym in 1995 back when virtual reality was all the rage.
They weren't installed yet though - there were dozens of them all lined up outside. But they were all unwrapped and looked like they were ready to go. I wasn't quite sure how they were going to fit them all inside though.
Screw that - I want to be able to simulate being in a room when I'm riding my bike to/from work.
eg comfy temperature and humidity, no head winds or rain, and no treacherous oil slicks left by badly maintained buses. Oh and it should simulate watching TV and not having to pedal.
That is in a nutshell why I'm a little annoyed at where the net is heading.
In the good old days (I never thought I'd say that), services on the internet were about protocols and standards - it didn't matter what implementations of those standards you used or which providers you used. The network was decentralised and we liked it like that - after all that was the original point of its development. Damage (which could just be stuff you didn't like) could be routed around.
Now everything is gathering around a small number of massive monopolistic sites that require you use their implementation and sign up to their service to participate. There are no interoperable communication standards in use by these big sites. If you don't like the way they work you are stuck on a continuum between sucking it up or stopping using it - there is no way of switching to an alternative implementation or provider that you like better while still participating.
It's almost like going back to the bad old days of services like AOL or Compuserve where they controlled what you were able to do and how you did it.
C'mon guys, are we going to meekly let this happen around us? Are we going to surrender to just being consumers of the 21st century Compuserves?
Do we want to let the internet eventually become just some sort of hidden background transport medium for Google, Facebook and Twitter?
That was my hope for Google Wave succeeding - not because it was a good implementation (it never got to that stage), but because it was based around an open protocol and had a decentralised architecture with the potential to not be reliant on any one specific implementation or any one service provider.
Not that I've read it, but I was under the impression that Dive into Python was aimed at experienced programmers wanting to learn Python quickly without all the extra fluff around learning to program getting in the way.
And I thought that Python the Hard Way was instead aimed at teaching people to program and Zed only used Python because it was a reasonably good choice for a first language.
If there's anything wrong, it's probably that beginner programmers are being sent to the wrong material.
That was my point - a newcomer to programming will never see or use the explicit self. It's only later once they move on to OO that it will become something they need to know about.
And Python lets you go a long way before you even need to learn how to create classes.
Yes I have taught people how to program. Learning to program involves an awful lot of stuff that has to just be accepted at first as the way things are - this is with all languages. After all the syntax of any language boils down to a set of arbitrary rules that the language designer decided on. There is no point questioning everything.
You also forget that a newcomer to prgramming doesn't have any baggage from other languages - they are surrounded by seemingly arbitrary rules and they have no inkling for which rules are language specific or which rules are just the way programming is.
And as the student progresses they can gradually start being taught the "whys" as required. You need to get newbies productive and accomplishing something first to build their confidence rather than bombarding them with background theory.
If someone was progressing on to OO and wanted to know why methods had an explicit self, I'd tell them that methods are just like functions attached to an object and self supplies the method the object it is attached to. A newcomer to programming wouldn't even know that other languages don't require it.
If you'd stuck to your other point that Python can trip up programmers from other languages (eg Java and C++), then yes I would've agreed with you. But that is a problem with previous expectations which is not something a newcomer to programming would have.
This is just my fragmented understanding, so might not actually be correct...
There came a point (after Sarge?) where Debian recommended apititude over apt because it better handled tracking if those automatically installed packages were still needed when you removed the packages that installed them. And they recommended not using both tools on the same system to not screw up that tracking.
Ubuntu was a bit slower to recommend aptitude and all their docs still referred to apt. But they slowly started to mention aptitude in places.
Then sometime after Lenny was released, apt gained the missing functionality aptitude had and Debian started saying that apt was all good again. Their docs still refer to aptitude in lots of places. But I don't think mixing and matching is the same problem it used to be, so they I don't think they are saying you shouldn't use aptitude any more even if apt is now recommended again.
I think with the release of Lucid, Ubuntu was back to recommending apt over aptitude.
Confused?
Personally the main reason I prefer aptitude over apt-get is "-R" instead of "--no-install-recommends" and it has some minor package searching advantages. I mostly use apt-get again now though.
What could also be cool for extra paranoia is a parity RAID like version where you could use different hosting providers for each 'disk' in your volume. That way any particular host only has a subset of the data chunks, and your data would survive losing a subset of hosts (the number depends on your chosen parity scheme).
One thing to keep in mind with modern web development:
Learning the server side language is only a small fraction of the total learning curve.
You will need to eventually learn databases, a smattering of basic sysadmin skills, Javascript, HTML, CSS, a bit of HTTP, and not least the web frameworks or associated libraries and APIs themselves.
With most frameworks sorta looking like MVC (whatever that ends up meaning these days) and the basic problems being the same, part of the learning curve of one system will help with learning another. Most web developers worth their salt will end up knowing multiple frameworks and server side languages anyway.
You should actually try out both Django and something like Symphony2 (PHP) yourself to see which you prefer. Spend a week or so on each running through tutorials and creating demo sites. You'll soon get a feel for whatever you prefer.
Career wise, language popularity isn't necessarily the most important thing really. Niches can still be profitable depending on where you are and supply/demand etc. eg there are plenty of PHP jobs, but standing out from the hordes of barely capable PHP developers can also be difficult for the less experienced.
If you have to just start with one thing though, Django is a good choice. It's the most popular Python framework, and Python is a much better language for learning good coding habits than PHP. And if you later decide you prefer PHP (or the PHP job market), Symphony is still pretty similar from an architectural / functional point of view and having another language behind you gives a better idea of what not to do in PHP. Or if you end up really liking Python, you have lots of other options later for other frameworks if Django ends up being a bit limited or not quite to your taste.
Just stay flexible and open minded, and know that web development will require ongoing learning no matter what.
Yeah, I think calling that article a superficial once over would probably be overstating its depth.
Sounds a bit (to my uneducated ears) like that failed Berlin / Fresco project from about 10 yrs ago or so. They were probably ahead of their time and too ambitious, but it was an interesting project.
In the context of starting full screen apps (ie the context of this thread), the Amiga could do that comfortably 25 yrs ago.
You could even drag down the full screen app running at one resolution to see the GUI desktop running at another resolution behind it.
Of course with todays display hardware and composited desktops etc, that is probably a much harder thing to do with no real benefit. A lot of what the Amiga did was direct hardware hacks.
Yeah, I can't see them dropping .NET either. But I am a little unsure why there seems to be so much FUD (and by that I mean their own fears uncertainties and doubts) expressed from .NET developers themselves this time around.
I haven't heard that kind of stuff since VB6 was hung out to dry. But nothing is really being dropped this time around.
It seems like developers can put up with lots of new frameworks and libraries to learn as long as you don't suggest any new languages. Or maybe developers put up with a lot of change when their chosen platform is growing and still competing against an incumbent (eg Java in this case), but become much more conservative or sensitive once things are successful and plateau/mature a bit. Maybe .NET has become Java :)
I dunno - from the outside, I just hadn't noticed dissatisfaction like this coming from within the .NET ranks before.
Yeah .NET and MS strategy has always had a bunch of hate from non MS types. But the last few months has seen a change where a lot of the criticism is coming from people inside the .NET world rather than outside it.
Previously the .NET world seemed to be one of the most contented development communities that were happy to lap up whatever new framework MS dropped on them without much complaint.
MS needs to be careful in how it addresses the growing threat of the mobile world (ie iOS and Andriod) without alienating its core developers.
If they screw it up, they could be the next Oracle. ie still a massive profitable business, but a legacy one unlikely to attract new generations of devoted developers and passionate supporters any more.
It's also one of the most misunderstood languages too :)
Yeah. Also I think the older a machine is the more likely it is to go through a period of 'neglect' where it isn't looked after as diligently after it has depreciated in value to the owner.
i suspect most Windows 7 machines are still in that period where the owner remembers how much they recently paid for the computer, and installing updates hasn't turned into a seemingly unnecessary chore they won't bother to do any more.
And now for the obligatory slashdot car analogy - I'm much more diligent about keeping a near new car fully serviced than a 15+ yr old dunger.
They are completely different situations. Suns dispute with MS was contractual not patent and copyright related.
MS signed a contract with Sun so they could distribute their own officially certified Java implementation and use the Java trademarks so they could call it Java etc. MS then broke the terms of that contract/license by making parts of its implementation Windows only in the hope that they could break the promise of Javas cross platform support.
Google doesn't intend to use Java trademarks or have an officially certified Java implementation. Google hasn't signed up to anything like MS did. They don't try to call their implementation Java, and it operates in a completely different way.
Oracle is suing Google over VM patents and some copyright claims. They aren't being sued over Java contracts like MS was.
You don't need to be a fanboi to see the difference here. About the only thing in common is both cases involve Java - nothing else is remotely similar.
Not really, there are occasional long term support versions of the kernel - eg 2.6.32 is still getting fixes applied upstream. I think the previous long term support version (2.6.27?) is still being supported too.
This is where the Firefox situation is different, they (currently) won't provide any fixes at all for their previous release which might only be six weeks old these days.
Heh, the company I worked at only got their 10base2 LAN installed in 1994. It was just sneaker net before that.
And a few years later I was trying to solve some strange intermittent hard to pin down network problems for another company. After some crawling around in the ceiling, it turned out that their 10base2 network segment was actually a T shape rather than one single line. I was very surprised that it worked at all.
Yeah.
I suppose if I carried my phone around with me all the time, and used it constantly, or if it was a lot easier to dig out of my jeans pocket (especially when sitting on the bus), or if I had a man bag or wanky jacket pockets to keep it in, or if I never wanted to check the time while commuting on my bike (eg if I'm running late and need to pick up the pace), or if I never went mountain biking or windsurfing or hiking, or if my phone was anywhere near as convenient to check as a watch, or if my watch was bulky and annoying enough that I couldn't forget I'm wearing it - then I might consider not wearing a watch.
They've had a MAPI plugin for years. It was the only way to connect to Exchange 2007 - the old OWA plugin only worked with 2003 and earlier.
And their is yet another plugin being developed to support Exchange Web Services now that MS is deprecating/dropping MAPI.
Personally I think the reason Ubuntu is dropping Evolution is that they can't be bothered fixing bugs that can't be pushed upstream because Ubuntu introduced them.
I wonder if Google Wave's code or ideas set this off - eg real time stuff over XMPP.
Pfft! Big deal - that's already been done. I saw those at a gym in 1995 back when virtual reality was all the rage.
They weren't installed yet though - there were dozens of them all lined up outside. But they were all unwrapped and looked like they were ready to go. I wasn't quite sure how they were going to fit them all inside though.
Screw that - I want to be able to simulate being in a room when I'm riding my bike to/from work.
eg comfy temperature and humidity, no head winds or rain, and no treacherous oil slicks left by badly maintained buses. Oh and it should simulate watching TV and not having to pedal.
It could be like an outdoor couch trainer.
I'll say, Starbucks is more like Methadone.
That is in a nutshell why I'm a little annoyed at where the net is heading.
In the good old days (I never thought I'd say that), services on the internet were about protocols and standards - it didn't matter what implementations of those standards you used or which providers you used. The network was decentralised and we liked it like that - after all that was the original point of its development. Damage (which could just be stuff you didn't like) could be routed around.
Now everything is gathering around a small number of massive monopolistic sites that require you use their implementation and sign up to their service to participate. There are no interoperable communication standards in use by these big sites. If you don't like the way they work you are stuck on a continuum between sucking it up or stopping using it - there is no way of switching to an alternative implementation or provider that you like better while still participating.
It's almost like going back to the bad old days of services like AOL or Compuserve where they controlled what you were able to do and how you did it.
C'mon guys, are we going to meekly let this happen around us? Are we going to surrender to just being consumers of the 21st century Compuserves?
Do we want to let the internet eventually become just some sort of hidden background transport medium for Google, Facebook and Twitter?
That was my hope for Google Wave succeeding - not because it was a good implementation (it never got to that stage), but because it was based around an open protocol and had a decentralised architecture with the potential to not be reliant on any one specific implementation or any one service provider.
Yeah but nobody expects to learn it that way.
Not that I've read it, but I was under the impression that Dive into Python was aimed at experienced programmers wanting to learn Python quickly without all the extra fluff around learning to program getting in the way.
And I thought that Python the Hard Way was instead aimed at teaching people to program and Zed only used Python because it was a reasonably good choice for a first language.
If there's anything wrong, it's probably that beginner programmers are being sent to the wrong material.
That was my point - a newcomer to programming will never see or use the explicit self. It's only later once they move on to OO that it will become something they need to know about.
And Python lets you go a long way before you even need to learn how to create classes.
Yes I have taught people how to program. Learning to program involves an awful lot of stuff that has to just be accepted at first as the way things are - this is with all languages. After all the syntax of any language boils down to a set of arbitrary rules that the language designer decided on. There is no point questioning everything.
You also forget that a newcomer to prgramming doesn't have any baggage from other languages - they are surrounded by seemingly arbitrary rules and they have no inkling for which rules are language specific or which rules are just the way programming is.
And as the student progresses they can gradually start being taught the "whys" as required. You need to get newbies productive and accomplishing something first to build their confidence rather than bombarding them with background theory.
If someone was progressing on to OO and wanted to know why methods had an explicit self, I'd tell them that methods are just like functions attached to an object and self supplies the method the object it is attached to. A newcomer to programming wouldn't even know that other languages don't require it.
If you'd stuck to your other point that Python can trip up programmers from other languages (eg Java and C++), then yes I would've agreed with you. But that is a problem with previous expectations which is not something a newcomer to programming would have.
You'd dump your new programmer straight into OO concepts and writing their own classes?
I'd argue that requiring self in methods wouldn't be much of problem to someone who had mastered functions and stuff and was actually ready for OO.
This is just my fragmented understanding, so might not actually be correct...
There came a point (after Sarge?) where Debian recommended apititude over apt because it better handled tracking if those automatically installed packages were still needed when you removed the packages that installed them. And they recommended not using both tools on the same system to not screw up that tracking.
Ubuntu was a bit slower to recommend aptitude and all their docs still referred to apt. But they slowly started to mention aptitude in places.
Then sometime after Lenny was released, apt gained the missing functionality aptitude had and Debian started saying that apt was all good again. Their docs still refer to aptitude in lots of places. But I don't think mixing and matching is the same problem it used to be, so they I don't think they are saying you shouldn't use aptitude any more even if apt is now recommended again.
I think with the release of Lucid, Ubuntu was back to recommending apt over aptitude.
Confused?
Personally the main reason I prefer aptitude over apt-get is "-R" instead of "--no-install-recommends" and it has some minor package searching advantages. I mostly use apt-get again now though.
How about duplicity?
What could also be cool for extra paranoia is a parity RAID like version where you could use different hosting providers for each 'disk' in your volume. That way any particular host only has a subset of the data chunks, and your data would survive losing a subset of hosts (the number depends on your chosen parity scheme).
No doubt someone has already tried that idea :)
Jon Katz imagines beowulf clusters of old memes!