Sweet! Another Javascript!?!

Scoble, the famous self-promoter who many people love-to-hate, did a short post tonight on “ECMAScript“, something of a mashup between C++ and Java that aims to replace (read: fix) Javascript. Is this good (everyone knows Javascript was poorly thought out)? Is this bad (aren’t browsers bad enough as it is)?

The Good

Let’s start with the positives. First, everyone (and I do mean everyone) that has used Javascript knows the following:

  • not well thought out
  • very hard to develop with
  • supported and interpreted different ways (because of the DOM) by different browsers

Given those items, the simple fact that ECMAScript has much better syntax and higher level functionality gives it a major leg up on the competition. A language that is based on both C++ and Java, one would assume, has many more development and debugging tools than Javascript/AJAX currently does. What do you use now? Firebug? And that’s it? Oh right, that’s all there is.

You Will Fail
Just like the entire .NET Platform.

If you actually look at some of the specs, you should be impressed. I would love to have structure, syntax, and functionality comparable with compiled/server-side/”normal” languages like C/C++, PHP, and Java. True DOM OOP? Oh how you tease me…

The Bad

Take a look at any website that isn’t built entirely in flash. Chances are that it involves at least one “hack”… something to make the fancy menu work? Or perhaps some dynamic data flow courtesy of AJAX? Or one of those little-known projects like Google Maps that work so fluidly? Let’s look at some info on the three “main” browsers (and pretend Opera doesn’t exist):

  • Internet Explorer is a total failure, and is currently trying to play “catch up” with the rest of the browser world. This is not news.
  • Mozilla/Firefox has become the poster child for attempting to closely follow the W3 recommendations, and receives praise daily from almost anyone who works with computers.
  • Safari has been known to be better than IE, but worse than Firefox. However, with the new/forthcoming release, many of the problems in rendering items, as well as it’s idiosyncrasies, are fixed or improved. There’s even rumors of it being based on the ‘Gecko’ engine…

Browser Wars
Gates = Sith = Evil. Get it?

My point? The three most widely used browsers are all terribly different. They can’t agree on how to render certain HTML/XHTML and CSS elements… let alone how to handle Javascript and the DOM. What happens when you try and implement a language that is meant to do more while replacing Javascript?

The Ugly

If you’ve been paying attention the last year or two, then you’re aware that very few (if any?) AJAX applications are custom coded from the ground up. More often than not, they use a library like Prototype or jQuery. Even Google doesn’t… they developed a “translator” that moves Java to Javascript, allowing you to code in Java and then implement it as Javascript/AJAX: it’s called the Google Web Toolkit.

Think about all those applications, pages, sites, and “business models” based around using Javascript and a certain library. Think about how long it took them to figure out how to do what they wanted… and then guess at the cost. Once you’ve wrapped your brain around that, think about how long and costly it would be to switch languages.

That would be the web equivalent of recoding your entire program in C++ when it was written in FORTRAN… it would really be that different.

Understand Me
Pretty much the same thing here.

My Stance

Believe it or not, I don’t have one. I’m divided. I really would like to have everything I described as being a benefit of a “real” language to replace Javascript, but I think the outcome of attempting this would be truly disastrous.

Maybe the answer is not to build another language that sits on the browser for DOM usage… why not build that functionality into server-side languages like PHP or Ruby? I realize that sounds impossible, but what if there was a way for the script to recompile itself (or portions of itself) as necessary? Tie in connections to the browser itself, and doesn’t that meet all the requirements without all the hassle?

“Told You So”

I’ve just created a new tag:  “Told You So”.  Why?

“Scientists create a powerful antimatter beam” uses the phrase “amazingly similar to a warp reactor from Star Trek”.

Did I not already mention that most “real” inventions are found in SciFi many (in this case twenty) years earlier? 

Hancock: AT&T’s Language to Spy On You

Wired recently covered “Hancock”, a new programming language developed by AT&T used to spy on telephone customers and “graph” the results. Alot of people are up in arms over this, decrying the end of privacy… but I, at least, think they’re misguided, if not totally wrong.

“Language”?

I think that the use of the word “language” here is not the write way to describe Hancock. If you look at the code sample provided on Wired’s post, it should look familiar. It appears to be a very close cousin of C, with some procedural and syntax changes. At what point does a language change from and “adaptation of” to a new language? The obvious point in C vs. C++ is OOP… Should this be called a “security oriented C adaptation”? Or “C, using different libraries”?

In this case, however, it would appear that “different libraries” is an understatement, and “new language” is an overstatement.

VaderPhone
This is completely unrelated.

Uses

AT&T developed this language with security monitoring and “community of interest” goals in mind, but when you read about how it works, and the end results… does anything else come to mind?

This language has huge potential. Looking for groupings of habits, traits, and connections between items (in this case, “people”) is a programmatical way to describe what Hancock does. Now imagine what search engines do. Or Facebook with their “social graph”. Or statistics’ processing.

If Hancock were to become more widely used, complicated things like searching for data and returning the most relevant results would become very easy… and, in the case of Google, perfect an already near-perfect system.

Maturation

Hancock is more than just an added library or two to a pre-existing language (kind of like C++), or a modification of one (Ruby)…. I believe it is a “maturation” of the language. As I mentioned before, it has many similarities to C, but makes some things much quicker, more efficient, and simpler than C. C++ was supposed to do that for C, but the end result was a more complicated language.

Iteration and data sorting is a huge part of any “real” language (LOLCODE does not count). Take another look at the sample provided by Wired, and then meditate on the code.

I Can Has Programming Language?
i can has SHUT YOUR MOUTH

Evil? Maybe.

Yes, maybe Hancock is currently being used for “evil” deeds like sorting through very private data to find “terrorists” for the American government. But take a step back from your emotions…

Elvis made “devil music” in his time… what’s he considered now? I’m pretty sure he can’t compete with Slayer…

The Continued Mozilla Syndrome

Mozilla recently released an early version of a new project called “Prism”… not at catchy or anthropomorphic as their other projects… What does it do? It’s quite elementary, my dear Watson: it brings the internet home.

Explain, Please…

Until now, using the internet has been restricted to two methods: through a browser, or in a desktop-based widget. The futurists of technology love to say that the browser is the new OS, but here’s a newsflash: you can’t run the browser by itself. It does, and always will, need some sort of operating system to run on top of. Period.

Firefox
Keep it up, Mozilla, and you’ll rule the world…

But with the release of Prism, desktop and web integration come one step closer… web applications that run and appear as if they are desktop applications.

Why Is This Important?

This is huge, not only because it’s ‘cool’, but also because of a certain technological wonder: threading. As Uncov loves to point out, the main problem with using a web browser to run applications (ignoring the obvious programming limitations) is process threading. For the uninitiated, the basic concept is that a computer processor allots memory/time/resources to every program… but if you’re trying to do things that step outside the bounds (say, edit video from within a browser), your video editing lags because it has to go through the browser before it gets to the processor. Long story short, if everything’s locked in a browser (especially if you’ve noticed Firefox’s memory leaks), you get screwed in the end because of memory issues.

Right, But…

You still don’t see it? How about this example…

[example]

Gideon Wanker (”Giddy” for short) users Gmail for all email, Google Calendar for his scheduling, Google Documents for his word processing, and Google Reader for news. Why? Because he likes that he can access all of this from anywhere with an internet connection, and avoid data storage/transfer problems. But the problem is that he has to keep a tab open for all of these if he wants to multitask, which probably creates noticeable lag time after a while.

And then Giddy installs Prism, which allows web applications to run independently. Suddenly each one of his favorite tools become separate entities, each running a different instance… response times are faster, it’s more akin to the “desktop environment” everyone is used to, and most importantly he can now Alt+Tab between the different windows!

[/example]

…Ok, that last one was a joke.

StupidStupid
Yeah, this doesn’t really apply here.

The End Game

Do you see where this leaves the “future of the Internet”? Despite how much I hate the idea of doing stupid things like editing video through some web service, or other such nonsense… it gives the ability for people to actually create products that might have some impact because they can be used in the manner intended.

This is the point where you go “ahhh! I see!” and tell your buddies about how you realize that the OS will never go away, and that a “Web OS” is even more pointless… but you like the idea of using web applications in a desktop environment.

Update (v1): Goodreads Widget

As I mentioned, I’m in the process of creating a Goodreads widget that auto-replaces certain tags with the appropriate links to authors or books…

I’m actually almost done, after about an hour of work so far.  There’s a problem with the AJAX Request for some reason, but everything else is more or less complete.

The only change I’ve had to make (in comparison to my original claims) from a user standpoint is that the tags will look like:

  • [[author:Terry Goodkind]]
  • [[book:Children of Dune]]

Instead of:

  • [author:terry-goodkind]
  • [book:children-of-dune]

The reason is that it makes parsing the page easier with two brackets, and with the correct spelling and capitalization, I don’t have to do any funky string reformatting.

I’ll be back later tonight or tomorrow, hopefully, with the final update…

School != Education

The people/person over here like to argue that, taking a page from ‘Heroes’ on NBC, “change the schools, change the world”… somehow that’s not as catchy as the real version. While I tend to agree that if you change the schools, as far as teaching methods and the like, you directly affect the future… what about those of us that learn better outside of school? Oh, you didn’t know we exist? Sorry, my fault, let me explain:

School != Education

Just because you go to school doesn’t mean you’re intelligent, or will come out of school intelligent. This is most true for college. Think about all those frat guys you know that get a degree in “accounting” or “communications”… the only thing that changes after 4 years is that they’re fatter and start to wear suits during the day. There are exceptions, of course, but something tells me being drunk 5 nights a week, while “bro’ing up”, is not really conducive to increasing your intelligence, awareness, or knowledge base.

Self-learners

And then there are those who learn better on their own (I’ll call them “self-learners”). I am one of these people. For some reason, self-learners find the typical classroom setting very boring and slow, and would rather do the work on their own. This is not a cop out, or an excuse to be lazy, but reality. Speaking from personal experience, self-learners have a hard time absorbing information from the typical classroom setting, but when they are given the chance to learn on their own, especially for a purpose, they exceed all potential of any classroom ever.

Multiple Choice
When has multiple choice really appeared in the real world?

Methodology

I don’t know why this is true, but it is, and I know that my situation is not unique. When you can devour a book in one sitting, quickly learn a programming language by reading a manual, see the end results of an equation or proof before it’s even begun… you find yourself wondering why you bother sitting in a classroom. Then comes the frustration when you don’t do well on a test, because you learned the subject rather than learning for the test. Is not better to understand the overall breadth of the topic, and it’s minutiae, than to learn a few small very specific pieces?

Drops
It’d be a calculus joke if you could read it.

Examples

There are very obvious examples of the school system not being “form fitting” for many: Bill Gates, Steve Jobs, Michael Dell, Einstein… the list goes on. Doesn’t this say something? If some of the most successful, innovative, and intelligent people (in many industries) of this age dropped out of college… that seems to mean that college is not the answer for these types of people. The question then becomes: is it the school system? Or is these pockets of individuals? Where is a solution?

My Solution

I have a very simple solution, although I doubt it would ever be accepted by the college system. Allow full, complete, unmitigated independent study of any size or scope, and assign value to this. For example, someone who knows 4 programming languages, reads many ‘high brain’ books, and tinkers with electronics would be alloted the majority of a Computer Science degree, requiring only a few minor adjustments to an already full plate.

The problem with the modern collegiate system is that it’s too rigid, too structured, too hierarchical. If someone wants a degree in Computer Engineering, it makes sense to take Physics, Chemistry, math, programming classes, and hardware classes… but English? History? Religion? All of these classes have been covered in depth since elementary school, how is one semester of U.S. History going to augment your knowledge from your years of history classes?

The other problem is that the college administrators assume that learning is a ‘track’, traveling from Point A to Point B to Point C. In some senses, yes… you can’t design a computer processor without basic hardware knowledge. However, requiring 10 high level math classes in order to graduate as a Computer Science major? When most of your future will be involved with code? When has anyone used advanced Calculus in their lives, unless you’re involved in the math or advanced science fields?

Broken
Broken: A Story of Wasted Money and Years

Schools are broken, and I want out. I’ve known this from Day 1 of college, and that’s why I’m transferring to attempt to graduate faster… college classes cannot replace real world experience, and they will never be as beneficial as a subject learned by oneself for one’s own purposes.

Goodreads Widget

Something I found would be interesting, and asked Otis of Goodreads if it would be possible…

A widget for blogs (and other sites), using Javascript and the Prototype Library, that searches for authors and books, and attempts to reference them… instead of forcing you to link them yourself.  This would have been useful here.

Otis has created an API method for me to send queries to (will be available later tonight), and I’ll be using Javascript to look for “tags” in the text.  Two examples:

  • [author:terry goodkind]
  • [book:sword of truth]

Which would turn into direct links (or the closest match), spat out by Goodreads, to Goodreads.

I’ll be starting (and hopefully finishing) it this weekend.

Web Startups Done Right

I’ve written before on why some/many tech startups are just doomed to fail, but O’Reilly (the company behind the phrase “Web 2.0″) seems to agree with me on certain points.

The Basics

If you’re a company that wants to have a successful web application/service, you need three things:

  • good programmers
  • scalable server architecture
  • a vision

While the legitimacy of point number 1 is in question, that’s not what I’m getting at. Many companies, regardless of their grand (or not so grand) visions, and potential programming power, forget that your web application/service doesn’t mean anything if no-one can get to it, it’s slow, or it breaks.

Professional Recruiter
Maybe you should recruit for intelligence…

MySpace

MySpace is a perfect example of failing to prepare for the future. First, it’s written in ColdFusion. Second, it’s coded on a very low level. Third, it’s not built to be easily scalable. Have you seen the URL’s (”?fuseaction.item=123455&action=etc.etc.”)? Why do you think the site is so slow, even after it’s received alot of money and attention? Because the core code has not been rewritten and was not built with the future in mind (there’s a link to this statement somewhere on TechCrunch or R/WW, but I can’t find it at the moment).

Sweetness

You know, with all of the money that some of these web applications/services get, you’d think they would do something right. Facebook managed to, MySpace didn’t; Jaiku (and Twitter) did, Pownce hasn’t… the list goes on and on.

My Experience

I’m not claiming to be the best programmer in the world, but in coding my upcoming application “mySHOUToutLOUD (real consumer complaints, for real people), I’ve kept an eye on what I want the future to be. Here’s how…

  • GUI: coding in blocks and segments, and using things like header/footer files so that you can easily implement a graphical redesign
  • Codebase: creating your own function/code library that you re-use across the entire project, with clear and definitive names. Even if you replace 3 lines of code in each page with one function… that increases usability. Imagine that for much larger implementations.
  • Database: optimize database queries to the full extent possible. Enough said.
  • AJAX: do not use AJAX when your server-side language will do. An oveuse of it slows down your site, and may even break it. Ever seen Pownce?
  • Hardware: scalable. Many startups spend alot of money creating their own server clusters, which is fine… if you can afford to continue that in the future. The wrong thing to do is buy a couple of servers, set them up, and ignore them. I personally host with MediaTemple on their “gridserver” plan… even though I get frustrated with the lack of control sometimes, it’s very easy to scale since you just have to tell them to throw more “grid units” at your account… which does not cost $1000 each time you need one.

Server Mess
Wow, impressive. Want to go draw with crayons now?
My Future

I’ll find out in the coming months if my theories, which are supported by many others, are correct, and I implemented them properly… but the one thing I do know is that many many don’t.

This is why many web startups fail, or just break in half when they get any number of users. Stupidity is not an excuse.

Atheist America? Try ‘Generation’

The BBC seems to think that America is experiencing a “phase” of Atheism, and that we are supposedly the “most religious country in the world.” There’s a few things wrong here…

The BBC

Does it seem weird to anyone else that the BBC, a most-definitely non-American news source, is reporting on one of the hardest things to track… inside America? Something tells me their Canadian/British point of view might have skewed things a little bit, especially considering we kicked the Union Jack to the ground a long time ago…

Religion
Religion

American Duality

I’m not going to assume that the rest of the world knows this, but within America people are more than aware of the dual nature of things, and the ability to create smoke-and-mirrors like no other culture, country, or organization. Why is this important? All children are brought up in America knowing the Pledge of Allegiance, which includes the phrase “One Nation, Under God”, and seeing the phrase “In God We Trust” on our currency. And yet, these same children are also taught of the innate separation of Church and State, and the importance of that dynamic.

Many Americans pride themselves on being able to say one thing, and do another… this is a perfect example. While we claim that America is not affiliated with any religion, think about the religious preferences and other characteristics of our current and past Presidents. One phrase comes to mind: “WASP” (or a slight permutation of it).

Religion

There are more religions inside the boundaries of America than I can even count; some of them aren’t even real (*cough* Scientology *cough*). With so many choices, it would be hard to pin a certain religion to any group of people, especially when you consider that many Americans “believe in God” but don’t associate themselves with a specific church or religion, and may not attend any services/gatherings.

Difference of Generation

It’s widely known that today’s younger generations (15 - late 20’s), across the world, have been radically changing behaviors and ideas that were previously accepted the de facto standard. Asia is a good example of this, with the lessening importance on their past culture and a greater focus on Americanization.

Now, consider statistics you may find on atheism/agnosticism. What you should discover is that there exists the typical pockets of “non-believers” in the science/engineering/academic sectors, but that there is an interesting correlation … today’s teenagers and young adults believe in God (or some equivalent) substantially less than previous generations.

Why?

(There are no real reasons you can define for this, so I’ll just provide my own personal speculations, which may or may not be valid.)

With the advent of technology and a greater awareness of science, those involved statistically don’t believe in a higher being. Considering the rate of adoption for technology in the younger age groups, this is a valid point to consider. Does an understanding of how a computer works lead to a disbelief in God? Or does the understanding of DNA, and the science behind evolution?

Not only does science/technology seem to play a great role in this, but perhaps a mere factor of “time” as well. Between video games, school, the Internet, friends, sports, etc. an American’s time is very much divided… and sitting with a group of people in a room or building being, for all intents and purposes, silent may be seen as a waste of time, or not an efficient use. Church is no longer just “boring” but it “doesn’t fit” into their schedules.

Evolution
Evolution has long since outpaced Creation.

Future

I’m not arguing that religion has disappeared from America’s horizons, but instead suggesting that it may do so in the near future. Analysts have suggested that when my generation matures in 20 years there may be significant changes in things currently taken for granted… can religion be one of these? We all expect to have computers implanted in our heads, cellphones in our ears, and other such technological advancements.

Where is the room for a belief in a controlling supernatural force?

My Future Book

If you know me, you know that I love to read, especially SciFi/Fantasy novels (Herbert, Orson Scott Card, Niven, Tolkien, Goodkind, etc.). Because of my love of these kinds of books, and the ideas I’ve developed while reading them, I’ve decided to “write” my own book.

“Write”

When I say “write”, I mean it only in loose terms. I’m very capable of writing things like essays, arguments, and other non-fiction things, but when it comes to fiction, I don’t have the knack. Believe me, I’ve tried. The dialog sounds cheesy and unbelievable, and I tend to gloss over things. That’s why, as of this week, I’m partnering with someone who actually can write.

Book
Better than movies and TV.

Roy Wallen and I are going to be collaborating, remotely via phone and the Internet, on a new book in the SciFi/Fantasy realm. My main purpose in this partnership is to bring ideas to the table, help figure out plots/characters, and assist in the proofing/editing, while Roy is obviously going to be doing the writing, as well as character/plot development.

The Topic

I don’t want to give away too much to the general public (not like there’s a whole lot to steal), but here’s the general concept for the book:

Rowlings -meets- Tolkien -meets- Goodkind -meets- Herbert -meets- Orson Scott Card

…basically it’s an amalgamation of my favorite authors, with the end result being something new and different, all of this being purely my idea at the moment, and not incorporating anything of Roy’s… which will change. Not your typical aliens/future/super-complicated SciFi novel, and not your typical slash-and-run Fantasy novel either.

Why?

It’s simple. After finishing the “Harry Potter” series (I read all but the last book in a week, and then finished the last book the night I got ahold of it), I wanted more. I went to Borders and asked some people there if they knew of anything that was like “Harry Potter”, in the sense of heavy magic and coming-of-age/into-their own, but more mature and darker… the outcome was a very solid ‘no’. I was unable to find any suggestions, from anybody (including on Amazon and Goodreads), for what I wanted.

Now I’ve decided to bring it to life.

Collaboration
Pretend the star is a book, and then you get the idea.

 

The Timeline

This could take a really long time. Roy has a day job in the tech industry, and alot of the pace of progress depends on his writing abilities. Also, this isn’t a main focus for either of us, and it’s more for the sake of the book’s potentially published existence than fame or fortune. I’d like it to not take the next 8-10 years, and am hoping 2 years is closer to reality, but only time will tell.

Next >>