Tag Archives: JavaScript

Programming with Meteor and Materialize

Posted on by and


Our goal at the Crisp hack summit last weekend was to migrate our 2 year old shopping app written in Meteor to the latest version and to learn about Google’s material design. Our old app was built as a way for us to learn Meteor. The structure is less than ideal, and as we learn new things we add them to the app, but don’t revisit old parts. So we followed Dan North’s experiment rewriting the app from scratch. We also decided to use Materialize for the UI. We wanted to rewrite the app in 2 days, keeping all the functionality we currently have, but at the same time adding the UI and usability improvements that we really need.

We ended up completing the rewrite in 9 days: 2 hack days and then a couple of hours each day for the next week. Not too bad for a brand new app, but surprisingly longer than we would have guessed. Both Meteor and Materialize are pretty simple to get started with, but adding Materialize to Meteor proved to be challenging. Here are some highlights!

read more »

Test Driving JavaScript: Grunt with Gradle

Posted on by

A few weeks ago Daniel Sundman wrote a blog entry about how to test drive JavaScript with Grunt. Today we’ll talk about how to run your Jasmine Grunt setup using Gradle!

There are no standard plugins for Grunt in Gradle, but it’s easy to add all the code manually. After all, this is Gradle not Maven 😉

We’ll assume that node and grunt-cli are already installed see (Test Driving JavaScript with Grunt).

read more »

Test Driving JavaScript – It’s Never Been Easier

Posted on by

If you’re a TDD addict you know that it’s not always easy to Test Drive your JavaScript. Which testing framework should you use? How do you set your CI pipeline up? Etc…

There are quite a few frameworks out there and it seems like writing a testing framework is what everybody wants to do. I am pretty sure we don’t need any more. We just need them to be easy to use. In this post I’ll show you how incredibly easy it is these days to start using Grunt, Jasmine and PhantomJS.

read more »

RequireJS – Providing Structure Where None Exists

Posted on by

As JavaScript is transitioning from the dark ages as a language of ridicule to a respected language of it’s own, it is obvious that some of the rough edges need polishing.

There is no rougher edge than the global namespace issue and the difficulty providing encapsulation. Even for a seemingly trivial JavaScript application, it is no longer OK to just whip up some JavaScript files and assume that you can maintain the code base as it grows. The application now lives in the browser and the amount of code you need to maintain requires modularization.

read more »

Backbone: Orderly JavaScript

Posted on by and

Backbones aren’t the usual fare for tech blogs, but if you’ve been following frontend development, then you’ll have heard of Backbone.js. From their site: Backbone.js gives structure to web applications by providing models with key-value binding and custom events, collections with a rich API of enumerable functions,views with declarative event handling, and connects it all to your existing API over a RESTful JSON interface. read more »

JavaScript Development – A Year Later

Posted on by

As some of you may remember, a year ago I took Q3 off to focus on building a JavaScript application. I learned a lot especially about Node.js.

Yassal and I have a pet project called FeedMe that we have worked on over the years. FeedMe implements a shopping list for us to use when doing our weekly shopping. It has had many shapes over the years; it started out as a plain Java Web application; then it changed to a REST based Scala backend with a plain JavaScript front end to go back to having a Java backend again. Now there is no Java, no Scala…just JavaScript.

The application just seemed to fall into place with Node. If you want a reasonably simple modern web application, Node is perfect. By “modern” I mean a very responsive web application typically with a JavaScript fat client. As it turns out, FeedMe now has a Node backend and a Backbone based JavaScript fat client. If anything, more work went into FeedMe this summer than last, even though there was no sabbatical this time. During the Crisp Hack Summit last weekend, Yassal and I dug deep and we’re getting close to having an actual application.

Although one man’s buzz is the next man’s old news, I think we won the buzzword bingo at the Summit. FeedMe uses the following technologies.

Yassal and I will be blogging about FeedMe and the technologies involved over the next couple of months.

The source (incomplete as it may be) can be found at: https://github.com/crispab/feedme

The Compelling Case for Node.js

Posted on by

The basic premise of Node.js is that I/O is expensive and that, since I/O is expensive, we can’t block waiting for it to complete.

Many traditional Web Servers typically adopt a one thread per request approach, and any I/O (database, web service, file system call…) during the request blocks that thread of execution. This is inefficient in many ways because when the thread is blocked waiting for I/O to complete, it can’t respond to other requests.

read more »

IntelliJ and nodeunit

Posted on by

It turns out that I’ve gotten completely side tracked…or maybe not side tracked per se, but at least not completely focused on the client side of the Application. The past couple of weeks I’ve been engulfed in Node. Trying to figure out what it is, what I can do with it and obviously how I can test drive it. I found nodeunit which seemed to be a good testing framework candidate.

read more »

TDD, JsTestDriver and YUI

Posted on by

As I mentioned in my previous entry, the goal of my sabbatical is to build a JavaScript Application. Notice the emphasis is on Application. That is, I don’t intend to build a JavaEE web application with plenty of JavaScript. The goal is to build an Application in the browser. It will probably (eventually), communicate with a server side component for persistent storage and synchronization but for now, that’s secondary.
read more »

Brendan Eich ber Microsofts Chris Wilson hålla klaffen

Posted on by

Brendan Eich har kanske den intressantaste bloggen om internetpolitik på hög nivå (hur kommer vi att göra webbapplikationer i framtiden, typ). Han skapade JavaScrip, och när han skriver något är det nästan alltid högintressant.

ECMAScript 4 (nästa stora uppgradering av JavaScript) får många nya features för att skriva stora applikationer, och det verkar göra Microsoft skraj. Man vill helst inte ha några konkurrenter till sina egna teknologier, såsom Silverlight. Nu försöker de, genom chefsarkitekten för Internet Explorer, Chris Wilson, backa ur ECMAScript 4 genom att påstå att språket går ifrån sina rötter som ett litet och enkelt språk, och att Brendan ignorerat Microsofts invändningar.

Brendans svar är skoningslöst! I ett blogginlägg knökfullt med referenser till öppna mailinglistor, öppna wikis och andra forum slår han fast att han gjort allt som varit mänskligt möjligt för att bemöta Microsofts synpunkter. Citat:

Assuming you didn’t know better, and someone was misinforming you, you (along with everyone reading this letter) know better now. So I’ll expect to see no more of these lies spread by you.


Detta har hänt i sommar

Posted on by

För er som inte knarkar tekniknyheter lika okontrollerat som jag gör har jag nöjet att få summera de senaste 5-6 veckorna inom områdena Java, Ajax, Scrum och annat av intresse. Tro mig, jag har gallrat stenhårt.

  • JUnit 4.4 släpptes nyligen. Nyheterna var inte speciellt upphetsande.
  • En av mina favoritbloggare, Cederic Beust, har skrivit om dynamiska och statiska språk. Inte mycket text, men mycket intressant. Väl värt ett par minuter.
  • Av någon anledning är kodformattering mig nära hjärtat, så det var med visst nöje jag noterade att Slashdot hade en tråd om detta i somras. David Herron har bloggat i samma domäner, vilket är kul, även om han verkar ha snott titeln på sitt inlägg från mig.
  • Medlemmar från Ajax-ramverket Dojo har skrivit en artikel med namnet "Why Dojo", som jag tror alla som står i valet och kvalet att välja Ajax-ramverk nog bör läsa. Dojos event-modell är väldigt cool, och tydligen har den blivit extra bra i senaste 0.9 versionen av Dojo.
  • En annan Ajax-artikel med namnet "Write scalable Comet applications with Jetty and Direct Web Remoting" borde intressera alla som försöker välja Comet-ramverk. Go DWR Go!
  • ThoughtWorks har släppt en "agile project management software" med namnet Mingle. Vet inget mer om detta, men Henrik kanske känner sig manad?
  • Matt Raible har summerat "Open Source Web Frameworks’ Mailing List Traffic – June 2007", dvs hur mycket trafik är det på de olika ramverkenas mailinglistor. Ganska intressant, om man försöker avgöra vartåt det blåser. Till min stora glädje ligger Wicket bra till, Liksom GWT, men mest trafik har Ruby on Rails, vad man nu kan dra för slutsatser av det?
  • W3C funderar på att inte låta HTML 4 övergå till XHTML, eftersom de verkar vilja göra en femte version av HTML. Vad ska man tro om det?
  • Specifikationen för Java EE 6 har släppts. Troligen kommer de första implementationerna först i början av 2009.
  • Jag försöker hålla ett öga på vad som skrivs om Scala, då jag fått intrycket att det kanske är ett bra språk för framtidens multi-core processorer, så artikeln "Is Scala the new Groovy" kunde jag naturligtvis inte undvika. Sedan finns det de som tror att Terracotta är rätt väg att skriva multi-core applikationer i Java, så "Hello Terracotta" kanske är rätt ställe att börja?
  • Vill man läsa mer om JavaScrips framtid så kan man läsa här. Daniel?
  • För oss anhängare av Google Calendar är nog artikeln "Black belt scheduling with Google Calendar" oundviklig.
  • Vad kommer efter social networking? Själv har jag inte en aning, eftersom jag känner mig helt bakom flötet när det gäller Facebook, YouTube, MySpace, Twitter, etc etc etc.

Privat har jag varit en vecka i Småland, 4 veckor i Thailand, samt en vecka i Västerbotten, där jag och mina två söner besteg fjället Jengegietje, 1477 meter över havet, i lysande väder. Shorts och T-tröja räckte på toppen!

JavaScript för Java programmerare

Posted on by

Min kollega Daniel Sundman har skapat en mycket bra presentation av JavaScript, utifrån en Java programmerares synvinkel. På vilket sätt är språken olika, vad kan man göra för coola grejer i JavaScript, och hur gör man generellt olika saker i det språket? Det bästa med presentationen är att den är gjord för att köras i Firebug, Firefox JavaScript debugger! Man startar helt enkelt Firebug, öppnar Daniels presentation (som naturligtvis är i HTML format med embeddad JavaScript) och stegar sig igenom den annoterade koden. I konsollen kan man sedan se resultetet. Många gånger sker inte alls det man väntar sig!

Nästa gång jag ska göra något som inte är trivialt i JavaScript kommer jag att fräscha upp mina kunskaper genom att stega mig igenom hans presentation.

Här finns för övrigt en massa annat Crisp material som borde kunna intressera Java programmerare i största allmänhet.

Arkanoid / Breakout i DHTML/Ajax

Posted on by

Många spel har under det senaste året konverterats till Ajax, ändå blev jag förvånad när jag upptäckte att någon på Yahoo gjort en riktigt bra version av Breakout i JavaScript. Tanken svindlar vid tanken på hur mycket jobb det måste ha varit.

JSLT – ett javascript-baserat alternativ till XSLT

Posted on by

Jag har alltid varit skeptisk till X-et i Ajax, dvs XML. Varför skapa och skicka ett så bökigt format som XML från servern, för att sedan processas i JavaScript, ett språk som inte så många är duktiga på? Nu har Rik Arends skapat JSLT, som ger möjlighet att processa XML med hjälp av JavaScript-syntax som liknar XSLT. Nu är XSLT i och för sig ett språk som inte ens en mor kan älska, men det kan vara väldigt kraftfullt vid rätt tillfälle.

Flex2 jämfört med JavaScript/Dojo/Prototype/DWR

Posted on by

En grupp utvecklare bestämde sig för att pröva Flex2 för sin produkt, men kom fram till att det inte var stabilt nog för annat än små applikationer. De har nu gått tillbaka till kombinationen JavaScript/Dojo/Prototype/DWR, och är nu produktiva igen.

Brendan Eich om den öppna webben

Posted on by

Hittade just Brendan Eichs blog, hjärnan bakom JavaScript. Jag lyssnade på ett keynote speech han höll för ett år sedan på konferensen The Ajax Experience, och hans berättelse om hur det gick till var rätt fascinerande. Jag fick intrycket att de hackade ihop allt på typ två veckor för att det skulle med en specifik release av Netscape!

Han jobbar just nu mest med JavaScript 2.0, men verkar involverad i mycket som pågår i och runt Firefox och webbstandards. Hans senaste blog, om den öppna webben, var mycket intressant. Han hävdar bestämt att Flash inte är bra för webben, så han torde inte heller vara alltför entusiastisk över Apollo.

Hur som helst så kläcker han ur sig tankvärdheter i en fart jag sällan sett. Några exempel:

Forking can be the right thing, or it can be a kind of mutually-assured-destruction option that keeps everyone acting in the interest of not forking.

I assert that there is something wrong with web-like "rich" formats that aren’t hyperlink-able or indexable by search-engines.

If I were VP of Engineering in a 10,000 person company, I would want the security blanket of the C-like syntax and a static type system for a well-known, big-bell-curve language like AS3, C#, or Java.

Väldigt intressant artikel!

Auto-scrolling page navigation

Posted on by

Tobie Langel har skrivit en mycket instruktiv artikel (med det fyndiga namnet "A fistful of $$") för hur han hackade ihop JavaScript koden till auto-scrolling page navigation, så att texten auto-scrollar (istället för att bara hoppa) när man klickar på en länk som pekar till ett ankare på samma sida. Det enda man behöver göra är att lägga till hans JavaScript voodoo i headern, och off you go. Prova den här.