Programming
- What Emacs is …
- For handsome, smart, educated, awesome, people such as myself, it is a lifetime of treasures, hidden within RSI-inducing key bindings, no matter where on the keyboard one puts C and M. For leprous, primitivist, stinky, bottom-feeding, monkey-scratchers, it may be a befuddling plethora of options and flexibility that forces the user to form their own [...] Read more – ‘What Emacs is …’.
- Statistics from my recently finished Seam 3 Migration Project
- I just finished a project upgrading a mid-sized Java EE6 application from Seam 2 to Seam 3 (and JBoss 4 to 7). It has been a fun ride with lot of roadblocks, head-aches, “Aha!” and “F*ck-this-I’m-done” moments. The Seam 2 part is now upgraded to Seam 3/CDI, Richfaces to Primefaces, JBoss 4.x Scheduler MBeans to [...] Read more – ‘Statistics from my recently finished Seam 3 Migration Project’.
- → Professionalism for Software Engineers
- 1. a professional programmer picks a worthwhile problem to attack; we are engineers, not scientists, and therefore should attempt solutions that will solve real user problems. 2. a professional programmer has a dedication to the end-user experience; most computer applications built these days are Web applications built by small teams and hence it is now [...] Read more – ‘→ Professionalism for Software Engineers’.
- Announcing Rotterdam/The Hague Clojure Meetup
- As you can see from the trend in my blog posts and my tweets, I have been a fan of Clojure language and pursuing the mastery of it with great interest. I’m a member of the friendly Amsterdam Clojure meetup. I try to attend the monthly meetup but I’m not as regular as I wanted [...] Read more – ‘Announcing Rotterdam/The Hague Clojure Meetup’.
- A quick way to integrate Seam 3 CDI and Quartz Jobs
- I am currently working on porting a Seam 2/JBoss 4.x application to Seam 3/JBoss AS 7.x. The old codebase contains some “jobs” that use ServiceMBeanSupport, that are triggered at regular intervals using JBoss varia module. Since the module isn’t there anymore, I wanted port the “jobs” to Quartz. Adding quartz was easy enough, but the [...] Read more – ‘A quick way to integrate Seam 3 CDI and Quartz Jobs’.
- Editing remote sudo’d files from Emacs
- Here’s how you can edit remote sudo-protected files without leaving emacs: Since Emacs 23.2, eshell has also an own implementation of the su and sudo commands. Both commands change the default directory of the *eshell* buffer to the value related to the user the command has switched to. This works even on remote hosts, adding [...] Read more – ‘Editing remote sudo’d files from Emacs’.
- → Clojure/core — Reducers – A Library and Model for Collection Processing
- We now have a new super-generalized and minimal abstraction for collections – a collection is some set of things that, when given a function to apply to its contents, can do so and give you the result, i.e. a collection is (at minimum) reducible. In other words, you can call reduce on it. via Clojure/core [...] Read more – ‘→ Clojure/core — Reducers – A Library and Model for Collection Processing’.
- Web Application Development with Clojure – Part 5
- In this part of the Clojure Web application development blog post series, we'll see how to create a simple secured administration area using ring session middleware. We'll wrap up the blog engine by adding a simple form that will submit data to the server and add code to create a new blog post. This part completes all the necessary parts to create a simple blog engine. In the next and final paart of this series we'll cover the deployment options available for deploying this application to production. Read more – ‘Web Application Development with Clojure – Part 5’.
- Web Application Development with Clojure – Part 4
- The story so far - In the last 3 parts, we completed setting up the project for a simple blog engine, loading the test data and finally displaying the blog posts on the "home" page. In this post first we'll first add some nice CSS, using Twitter Bootstrap, to make it look a bit better and finish the blog post detail page. Next we'll add an authentication page for the blog - a simple login page that will check the credentials entered. Read more – ‘Web Application Development with Clojure – Part 4’.
- Web Application Development with Clojure – Part 3
- This post is part of the Web Application Development with Clojure tutorial. You might want to read the previous posts before this post for continuity’s sake. Part 1: Project Setup Part 2: Data model definition with Lobos and Korma Part 3: Loading Fixtures with clj-yaml and HTML Templating with Enlive Part 4: Adding CSS, Post [...] Read more – ‘Web Application Development with Clojure – Part 3’.
- My super cool workplace at Lunatech
- In my 10 years of programming career, Lunatech is probably the best company to work with. Herman Miller Aeron: Ultimate Programmer’s Chair Nerf Recon CS-6 with N-Strike Darts: For fun times. 17″ Mac Book Pro with 8GB RAM, SSD running Emacs in Full Screen: Ultimate Programmer’s Computer The Joy of Clojure: The book for Ultimate [...] Read more – ‘My super cool workplace at Lunatech’.
- Web Application Development with Clojure – Part 2
- This post is part of the Web Application Development with Clojure tutorial. You may want to read the previous posts before continuing with this post. Part 1: Project Setup Part 2: Data model definition with Lobos and Korma Part 3: Loading Fixures with clj-yaml and HTML Templating with Enlive Part 4: Adding CSS, Post detail [...] Read more – ‘Web Application Development with Clojure – Part 2’.
- Web Application Development with Clojure – Part 1
- This post is part of the Web Application Development with Clojure tutorial. Part 1: Project Setup Part 2: Data model definition with Lobos and Korma Part 3: Loading Fixures with clj-yaml and HTML Templating with Enlive Part 4: Adding CSS, Post detail page and Simple Authentication Part 5: Blog Administration Area Introduction Clojure is general-purpose [...] Read more – ‘Web Application Development with Clojure – Part 1’.
- CoffeeScript Experiments: Magic Date
- I started learning CoffeeScript recently and wanted to get my hands dirty. Here’s the first experiment. Read more – ‘CoffeeScript Experiments: Magic Date’.
- Play!ground at Lunatech
- Last Friday we at Lunatech hosted first ever Play!ground in the Netherlands. We had some great talks lined up with Peter Hilton(@peterhilton) and Nicolas Leroux(@nicolasleroux) explaining introduction to Play!. They also demonstrated via live coding how easy it is to build a Play! application that uses advanced features such as Websockets. Erik Bakker(@eamelink), who is [...] Read more – ‘Play!ground at Lunatech’.
- Subtle jokes on “devoxx” home page map
- The devoxx home page‘s ”google map” has some subtle jokes by Google. Clue-less suites on Oracle Open World “Open Soon” Java Store. Java Polis, Sun in Cemetery Sunken ships – “.not” “JINI” JCP Cracked and guarded. Someone rowing away from all this in JS (Java Script?) And the best of them all – Sinking [...] Read more – ‘Subtle jokes on “devoxx” home page map’.
- A Simple Web Application with Clojure and CouchDB
- Here’s another very small step in my pursuit of learning Clojure. A couple of weeks ago Heroku introduced their new Cedar stack which adds Clojure support on their platform. With my usual curiosity for all things Clojury, I checked out their documentation on how to setup a simple web application written using Compojure and uses [...] Read more – ‘A Simple Web Application with Clojure and CouchDB’.
- “The Software is Wrong, Not the People”
- The simple publishing tools that we used back in the 90s “evolved” into massively complex structures requiring expensive experts to install and administer. CMS like SharePoint, Vignette and Percussion are punishing experiences for the user, turning the joyous task of writing into a machine-led death march. You enter your content and then engage in a [...] Read more – ‘“The Software is Wrong, Not the People”’.
- → Apple Volume Purchase Program for B2B apps
- This is fantastic news! Custom B2B apps are built just for you by third-party developers and business partners to address a specific business process, integrate with a unique back-office environment, or deliver a custom interface for your users. Using the Volume Purchase Program, you can securely and privately purchase custom B2B apps for iPhone and [...] Read more – ‘→ Apple Volume Purchase Program for B2B apps’.
- → Bored People Quit
- I’ve gone back and forth on whether managers should code and my opinion is: don’t stop coding. Each week that passes where you don’t share the joy, despair, and discovery of software development is a week when you slowly forget what it means to be a software developer. Over time it means you’ll have a [...] Read more – ‘→ Bored People Quit’.
- → ModeShape 2.6.0.Beta1 is available
- Here’s a quick summary of what’s new in ModeShape 2.6.0.Beta1 Kits for JBoss Application Server 5.x and 6.x Improved overall performance New disk-based storage connector Added cache support in several connectors Pluggable authentication and authorization The JPA connector now support configuring/using Hibernate 2nd-level cache Improved BINARY property support for large files Automatically use the JDK [...] Read more – ‘→ ModeShape 2.6.0.Beta1 is available’.
- → How to Actually Make Text Look Interesting
- Typography is not merely the process of arranging font on a page. It is a living creature; it feels joy in an exclamation point, takes deep sighs at periods, grabs consciousness with each bold strike and begs for understanding in the space between every italic. It has intricate rhythm and harmony, staccato paragraphs and legato [...] Read more – ‘→ How to Actually Make Text Look Interesting’.
- Connecting to Hippo Repository in Clojure
- The first thing or the most important thing I wanted to learn in Clojure is the Java-Interop stuff. Since this would give me instant productive feeling aligning with my current line of work. Hippo Repository is built on top of Apache Jackrabbit and java clients can connect to the repository over RMI. I wanted to [...] Read more – ‘Connecting to Hippo Repository in Clojure’.
- Getting a hang of Emacs
- Learning Emacs has been a recurring item in my list of things to do, and never gets any attention. Recently, I’ve started learning clojure and I’m now at the advanced-n00b level. And every clojurain swears by Emacs and learning clojure & emacs seem to be complementing goals. So I switched to emacs as my basic [...] Read more – ‘Getting a hang of Emacs’.
- On a scale of 1-6 I’m WTF
- Here’s an article by Joel Spolsky from year 2000 that provides some context for my today’s burning brain feeling. Treating your rocket scientist employees as if they were still in kindergarten is not an isolated phenomenon. Almost every company has some kind of incentive program that is insulting and demeaning. Then, you filled out optional “self-evaluation” [...] Read more – ‘On a scale of 1-6 I’m WTF’.
- iKiva – One month in numbers
- It has been just over a month since iKiva has been released and it is time for an update! The app has been successful beyond my wildest imagination, I never thought It’ll have more than 100 users. But the popularity of Kiva helped and the app seems is used by many users. I think the [...] Read more – ‘iKiva – One month in numbers’.
- What’s a Quality App?
- As a user I really don’t like to see an app I just bought now being offered at a lower price. I feel I made a bad decision buying the app. I regret the purchase. I also feel bad about buying an app I’ve already bought, just because I wish to run it on my [...] Read more – ‘What’s a Quality App?’.
- iKiva – My first iOS App
- iKiva is a client for Kiva.org. I’ve started working on it in March 2010. Other things caught up with me and finally I was able to focus on it again from February this year. This project has been a very special one to me because of many reasons. I’ve been writing software for sometime, but [...] Read more – ‘iKiva – My first iOS App’.
- Notes from “The Humane Interface”
- Some notes/quotes from the book The Humane Interface: New Directions for Designing Interactive Systems I recently finished reading. Read more – ‘Notes from “The Humane Interface”’.
- A tale of two upgrades
- Last week while I was working on my iPhone app, XCode started to stuck and suck. The beach-balls were blocking me almost every hour. I was ver annoyed thinking why this machine is so slow. The MacBook Pro I'm using is reasonably fast and almost recent (bought last year). The whole point of buying a MacBook Pro is the ability to run at least two command shells, XCode, iOS simulator, Pixelmator (for graphics manipulation) and Safari for reference. Read more – ‘A tale of two upgrades’.
- Don’t Distract New Programmers with OOP
- When you’re trying to help someone learn how to go from a problem statement to working code, the last thing you want is to get them sidetracked by faux-engineering busywork. Some people are going to run with those scraps of OO knowledge and build crazy class hierarchies and end up not as focused on on [...] Read more – ‘Don’t Distract New Programmers with OOP’.
- Google Contracts for Java
- Traditionally, Java programmers enforced preconditions using explicit parameter validation code in public methods, and assertions in non-public methods. Likewise, they enforced invariants and postconditions using assertions. This approach is described in detail here. Since then, new features in Java 5 have enabled a more convenient and expressive implementation of contracts. Contracts for Java is our [...] Read more – ‘Google Contracts for Java’.
- FOSDEM this weekend
- I’ll be attending FOSDEM again this year. There a lot of interesting talks lined up, these are the ones I’m planning to attend. LLVM and Clang This talk gives an introduction to the LLVM Project (http://llvm.org/), which is an umbrella project that encompasses a broad range of low level toolchain components. Cloud9 IDE: Kick ass [...] Read more – ‘FOSDEM this weekend’.
- You Are What You Eat
- The work you take on can define you— it’s what you practice, what you get recognized for, and what you’ll be hired to do next. Passion & belief in a cause is easily a sufficiently motivating factor, as are bills that need to be paid. The way I see it— if you’re into it, do [...] Read more – ‘You Are What You Eat’.
- Personalization of User Interface
- … if we are competent user interface designers and can make our interfaces nearly optimal, personalizations can only make the interface worse. Therefore, we must be sparing and deliberate in offering user customizations. If a user can, by a few judicious choices, really improve the interface, we probably have done a poor job. On the [...] Read more – ‘Personalization of User Interface’.
- Clojure – Project Euler Problem 6
- This post is the part of the series Solving Project Euler’s problems with Clojure. ;; The sum of the squares of the first ten natural numbers is, ;; 12 + 22 + ... + 102 = 385 ;; The square of the sum of the first ten natural numbers is, ;; ;; (1 + 2 [...] Read more – ‘Clojure – Project Euler Problem 6’.
- Clojure – Project Euler Problem 4
- This post is the part of the series Solving Project Euler’s problems with Clojure. ;; A palindromic number reads the same both ways. ;; The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 99. ;; Find the largest palindrome made from the product of two 3-digit numbers. (:require [...] Read more – ‘Clojure – Project Euler Problem 4’.
- Mounting remote (ssh) filesystem on Mac OS X
- I use SSH to login to different servers I manage. There are some nifty tools available for a Mac for transferring files to a server via SCP like Fugu and Cyberduck. But I wanted to have the entire folder mounted in Finder so that I can access it anytime. The MacFuse + sshfs combination worked [...] Read more – ‘Mounting remote (ssh) filesystem on Mac OS X’.
- More and more Dutch companies promote flexible work hours
- Ninety-five percent of Dutch Microsoft employees work from home at least one day a week; a full quarter do so four out of five days. Each team has a “physical minimum;” some meet twice a week in the office, others once a quarter. Online communication and conference calls save time, fuel and paper waste. The [...] Read more – ‘More and more Dutch companies promote flexible work hours’.
- →Threading in Cocoa applications
- Brent Simmons’s notes on threading in Cocoa applications: Stuff happening in threads is private and self-contained. Black boxes, train cars. Communication between two things should be on the main thread, except in carefully controlled circumstances. Communication includes notifications and KVO, not just direct calls. Using GCD or NSOperationQueue is way better than the old ways [...] Read more – ‘→Threading in Cocoa applications’.
- Learn-Clojure.com
- Learn-Clojure.com is “an attempt to gather together everything you will need to learn Clojure, assuming that you already know another programming language or two or three.” via Learn Clojure. Read more – ‘Learn-Clojure.com’.
- → The inevitable decline from clutter
- Seth Godin: Once you overload the user, you train them not to pay attention. More clutter isn’t free. In fact, more clutter is a permanent shift, a desensitization to all the information, not just the last bit. Read more – ‘→ The inevitable decline from clutter’.
- → The 30 CSS Selectors you Must Memorize
- So you learned the base id, class, and descendant selectors – and then called it a day? If so, you’re missing out on an enormous level of flexibility. While many of the selectors mentioned in this article are part of the CSS3 spec, and are, consequently, only available in modern browsers, you owe it to [...] Read more – ‘→ The 30 CSS Selectors you Must Memorize’.
- → Why the 8 Hour Workday Doesn’t Make Sense
- At the root of all 8 hour workday issues is this. The 8 hour work day is a creativity killer. Today, human creativity is at an all time high because less and less people are working in offices. People are finding ways to make a sustainable living by tapping into their own creative potential. This [...] Read more – ‘→ Why the 8 Hour Workday Doesn’t Make Sense’.
- Clojure – Project Euler Problem 3
- This post is the part of the series Solving Project Euler’s problems with Clojure. ;; The prime factors of 13195 are 5, 7, 13 and 29. ;; What is the largest prime factor of the number 600851475143 ? (defn factor "Finds out the largest factor for the given number n" [n i] (if (= [...] Read more – ‘Clojure – Project Euler Problem 3’.
- Clojure – Project Euler Problem 2
- This post is the part of the series Solving Project Euler’s problems with Clojure. Here’s the Problem 2 Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be: 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, [...] Read more – ‘Clojure – Project Euler Problem 2’.
- Clojure – Project Euler Problem 1
- This post is the part of the series Solving Project Euler’s problems with Clojure. After dabbling in Common Lisp and getting my feet wet with functional programming, I wanted to get serious about switching my thinking from Object Oriented view of the world to more of a functional view. First I started reading and trying [...] Read more – ‘Clojure – Project Euler Problem 1’.
- In Praise of Quitting Your Job
- I’ve worked for a handful of companies over the course of the last 6 years. I started all of them with a fair amount of enthusiasm, but within 5 months of each I dipped into a depression. By 7 months the work was having a tangible effect on my mood and outlook, and by nine [...] Read more – ‘In Praise of Quitting Your Job’.
- → Null References: The Billion Dollar Mistake
- I call it my billion-dollar mistake. It was the invention of the null reference in 1965. At that time, I was designing the first comprehensive type system for references in an object oriented language (ALGOL W). My goal was to ensure that all use of references should be absolutely safe, with checking performed automatically by [...] Read more – ‘→ Null References: The Billion Dollar Mistake’.
- → Large heap dump analysis with Eclipse Memory Analyzer
- Jeroen Reijn (@jreijn) on his experience with heap dump analysis: One of the great things about Eclipse Memory Analyzer is that it starts indexing the heapdumps on first load. This makes the processing of the heapdump very fast and once youve parsed the entire heapdump, reopening it is a piece of cake, because it does not [...] Read more – ‘→ Large heap dump analysis with Eclipse Memory Analyzer’.
- → Dynamic Code Evolution VM
- The Dynamic Code Evolution Virtual Machine (DCE VM) is a modification of the Java HotSpot(TM) VM that allows unlimited redefinition of loaded classes at runtime. The current hotswapping mechanism of the HotSpot(TM) VM allows only changing method bodies. Our enhanced VM allows adding and removing fields and methods as well as changes to the super [...] Read more – ‘→ Dynamic Code Evolution VM’.
- CrapCode of the Day – JavaScript Edition
- This what I found after looking at the source code of a retarded online banking website, Oh yeah they have blocked the right-click so I couldn’t see the code. if ('BalanceMain' == id) { document.getElementById('BALANCE').style.color = "#ff6600"; document.getElementById('BALANCE').style.textDecoration = 'underline'; } else { document.getElementById('BALANCE').style.color = "#5d6063"; document.getElementById('BALANCE').style.textDecoration = 'none'; } if (id == 'HomeFileUpload') { [...] Read more – ‘CrapCode of the Day – JavaScript Edition’.
- → Measurement
- On the same subject of Measuring: Software organizations tend to reward programmers who (a) write lots of code and (b) fix lots of bugs. The best way to get ahead in an organization like this is to check in lots of buggy code and fix it all, rather than taking the extra time to get [...] Read more – ‘→ Measurement’.
- The Mismeasure of Man
- Astonishing as it may seem, some developers like to commit changes to their version control system frequently to create the impression that they are hard at work. This only works if you are managed by the technically incompetent. In other words, it works more frequently than you would like. - The Mismeasure of a man, [...] Read more – ‘The Mismeasure of Man’.
- → Modularized Java with JBoss Modules
- JBoss guys announce a new module system for Java. How does this compare with JSR 294? This simple module system has several advantages over JSR 294 as it stands today.Its available now. There is no telling when JDK modules will become available – maybe in Java 7 in 2012, maybe in Java 8 or later. This [...] Read more – ‘→ Modularized Java with JBoss Modules’.
- → You Can’t Innovate Like Apple
- Old, but still worth linking again. First, forget about it unless you are willing to invest significantly and heavily to establish a culture of innovation like Apple’s. Because it’s not just about copying Apple’s approach and procedures. The vast majority of executives who say, “I want to be just like Apple,” have no idea what [...] Read more – ‘→ You Can’t Innovate Like Apple’.
- UX Won’t Save You
- Why should you have a proper product roadmap, instead of implementing every feature request from the customers: Customer feature requests are closely tied to Customer Acquisition. Every product should have a clear roadmap and a clear understanding of what the product does and does not do. If your team does not have this in place, [...] Read more – ‘UX Won’t Save You’.
- Pirate Bay Receives Notice To Keep a Torrent
- Another example of Mac Software Developers Awesome-coolnesss ! A few months ago Dmitry Chestnykh, the founder of Coding Robots and copyright holder of Mémoires, discovered that his program – like many others – was being shared via The Pirate Bay. Out of curiosity he decided to download the torrent to find out how it was [...] Read more – ‘Pirate Bay Receives Notice To Keep a Torrent’.
- A View Into How Apple Develops APIs
- Apple first launches a private API for internal use. The API is iterated until there are no more internal questions. It then goes public. Feedback is critical to further refine the service so it has longevity over the span of several generations. via A View Into How Apple Develops APIs – ReadWriteCloud. Read more – ‘A View Into How Apple Develops APIs’.
- Ready to be an open source contributor but don’t know where to start?
- This is really interesting. I’m checking out the site right now. OpenHatch is a place for developers who want to be involved in open source but don’t know where to start. You can go to the site and search for a way to contribute based on a language you know or a project you like. [...] Read more – ‘Ready to be an open source contributor but don’t know where to start?’.
- → Marketing your Open Source Project
- Marketing your open source project doesn’t have to be hard, or expensive. It just takes a bit of resourcefulness and passion. Most importantly, be patient. It will take time to build up your developer audience. Keep at it and they will come. Read more … Read more – ‘→ Marketing your Open Source Project’.
- ModeShape 2.0
- The ModeShape project proudly announces that version 2.0 is now available and ready for use. ModeShape 2.0 now implements the JCR 2.0 specification (JSR-283). Specifically, ModeShape supports all the JCR 2.0 required features and most of the JCR 2.0 optional features. ModeShape 2.0 supports five query languages: the JCR-SQL2 and JCR-QOM query languages defined in [...] Read more – ‘ModeShape 2.0’.
- Designing for Mobile First Helps with Big Issues
- For years, Web designers and developers have struggled to make Web sites look and act the same in every browser. But every browser is different. They each have their own capabilities and limitations. So making every experience the same across all browsers means not taking advantage of some opportunities capabilities and hacking around existing limitations. [...] Read more – ‘Designing for Mobile First Helps with Big Issues’.
- Faceted Navigation with Hippo CMS and HST2
- Categorizing and presenting large volumes of documents is a big challenge. Content can be organized into 3 different models - Using Hierarchies (organized into folders), Using Categories (attaching taxonomy category to a document) or by Using Tags. These three organization models in turn can serve as navigational models as well. When the content size grows larger these models hinder the accessibility of the content. This also affects the discoverability of the content, of course searching is an option but search itself cannot be considered as navigation since the users needs to be aware of what properties the content has and how to specify the criteria. Faceted Navigation solves this problem by providing a way to access the in series of refining queries. The users can drill down and access the content the way they want. Hippo CMS, along with HST provides excellent support for creating a faceted navigation of your content. In this article I'll try to explain how you can build your own faceted navigation in your website using Hippo CMS and HST. Read more – ‘Faceted Navigation with Hippo CMS and HST2’.
- Multi Channel Publishing with Hippo CMS and HST
- When you are using Hippo CMS, the content and presentation logic are clearly separated. This cleaner approach to content management allows the developers to publish the content to various channels without much effort. In this post I'll try to explain how you can publish the same content from CMS and serve it using HST2 to different channels - Web Sites, Mobile (iPhone), iCal format and Layar (Augmented Reality Browser). Read more – ‘Multi Channel Publishing with Hippo CMS and HST’.
- → Hippo CMS 7 WebDAV Support
- The current status is that the WebDAV addon has default support for the Hippo assets folder. This was actually quite easy to develop. This can also be used to copy all assets from a CMS 6 instance directly into a running CMS 7 instance. All other folders are not WebDAV enabled yet, but I have [...] Read more – ‘→ Hippo CMS 7 WebDAV Support’.
- Google Maps Plugin for Hippo CMS
- Almost done – will soon be on forge. Read more – ‘Google Maps Plugin for Hippo CMS’.
- ERROR: column notation .id applied to type name, which is not a composite type
- Note to Self: If you are using PostgreSQL with Hibernate and got this error, make sure that the entity names are not in the PostgreSQL’s reserved keywords. So the table name(or the Entity name) “User” is going to give the error in the title! Read more – ‘ERROR: column notation .id applied to type name, which is not a composite type’.
- Hippo CMS Image Browser Update
- The next tag/version of Hippo CMS will have an updated image browser. The images can now be displayed both as List or a Thumbnail Grid, see the screenshots below. The Grid View is implemented using simple css and ul tags. Here’s an example of the HTML/CSS that is used to convert a ul with images [...] Read more – ‘Hippo CMS Image Browser Update’.
- → Why the iPhone Simulator is Awesome
- The iPhone simulator’s method seems magically wonderful. Since the iPhone OS is MacOS, all the kernel APIs are the same. The natively-compiled frameworks, libraries, and display engine are built from the same source code, so you know they’re the same too. And your Mac’s CPU is a lot faster than the iPhone’s CPU, so the [...] Read more – ‘→ Why the iPhone Simulator is Awesome’.
- → Object Oriented CSS
- Code re-use in CSS almost non-existent. File size in CSS just keeps getting bigger as we continue to modify it. CSS code is often too fragile. It can get ruined by the first person to touch it. via LukeW | An Event Apart: Object Oriented CSS. Read more – ‘→ Object Oriented CSS’.
- Update: Easy Forms 2.0 for CMS 7.3
- A quick update on Easy Forms plugin for Hippo CMS – it is now updated and compatible with latest Hippo CMS Release 7.3. The 2.0 version artifacts are now available in the forge maven repository. I’ll provide the details on how to configure and create the Easy Forms in a following post, though it is [...] Read more – ‘Update: Easy Forms 2.0 for CMS 7.3’.
- Common Lisp vs Java
- I’ve been sort of wanting to learn LISP for long time (~ 10 years). Now finally I got some chance to try that out. I’ve started reading On Lisp by Paul Graham along with Practical Common Lisp by Peter Seibel. I find them pretty invaluable in learning Lisp. It has been nearly 9 years since I’ve [...] Read more – ‘Common Lisp vs Java’.
- Updated: Related Documents Plugin for Hippo CMS 7.3
- The Related Documents plugin for Hippo CMS allows the editors of the documents to select “related” documents of the current document. The plugin provides automatic suggestions using Similarity Search and Referring documents. Also, the document editors/authors can hand-pick the related documents. The plugin is now updated for CMS 7.3(released last week). You can get the [...] Read more – ‘Updated: Related Documents Plugin for Hippo CMS 7.3’.
- Smart Console now on Hippo Forge
- Finally I got sometime to move the Smart Console project out of sandbox. The project is now hosted at Hippo Forge. There are two things that are aimed with this project . One – to provide a simple, user friendly JCR Explorer and Console for any repository. Obviously, I’ll add Hippo Repository specific features to [...] Read more – ‘Smart Console now on Hippo Forge’.
- → JBoss Tohu
- Designed to support question and answer style interactions where the set of questions are dynamic and potentially dependent on the answers received Initially targeted at interactive web applications, however technology independent and could be used in B2B scenarios, mobile devices, etc An embeddable component that complements and works within existing UI frameworks such as Seam/JSF/Spring [...] Read more – ‘→ JBoss Tohu’.
- → LESS – Leaner CSS
- LESS is an extension of CSS. You can write LESS code just like you would write CSS, except you need to compile it to CSS. LESS extends CSS with: variables, mixins, operations and nested rules. LESS, written in Ruby, is available as a gem. Just do a ‘sudo gem install less’ – if you are using [...] Read more – ‘→ LESS – Leaner CSS’.
- →How to recognise a good programmer
- Passionate about technology Programs as a hobby Will talk your ear off on a technical subject if encouraged Significant and often numerous personal side-projects over the years Learns new technologies on his/her own Opinionated about which technologies are better for various usages Very uncomfortable about the idea of working with a technology he doesn’t believe [...] Read more – ‘→How to recognise a good programmer’.
- Project Kenai: as good as dead
- Project Kenai, however, will be discontinued for public use. Oracle will continue to use it internally and look for ways that our customers can take advantage of it. The timeline for users to migrate their data and projects off of Kenai will be posted at kenai.com. Please see the FAQ there for more details when [...] Read more – ‘Project Kenai: as good as dead’.
- Mutt for GMail IMAP on Mac OS X
- Mutt is an advanced email client for *nix systems that runs in a terminal . Here’s how you can use mutt on Mac OS X [Snow] Leopard and configure for GMail account with IMAP. All mail clients suck. [mutt] just sucks less. First download and install MacPorts. Open a terminal window and install Mutt 1.5.20 using [...] Read more – ‘Mutt for GMail IMAP on Mac OS X’.
- RIP Sun Microsystems
- The end of Sun Microsystems, Image via James Gosling’s Blog Read more – ‘RIP Sun Microsystems’.
- → Quality control in application development without unit testing
- Depending on your development methodology, unit tests can serve a number of different functions. But if used purely to detect bugs then they are a very high cost approach for low return.Unit tests dont test the overall program, only isolated units. This creates many holes integration, timing, re-entrancy, inter-module communication that need to be tested [...] Read more – ‘→ Quality control in application development without unit testing’.
- Notes on Performance and Stress testing
- Some notes I wrote sometime ago while working on Performance testing using JMeter for a client: Definition of Terms Performance : The application’s ability to meet a certain goal, such as a desired response time & latency, level of throughput, concurrency, etc. Capacity: The total load the application can handle – Quantity of Data, Number of Users, [...] Read more – ‘Notes on Performance and Stress testing’.
- One small step
- mvn clean install brain:run-exploded -Psleepy Read more – ‘One small step’.
- → Lessons Learned From Java EE’s Evolution
- Rod Johnson talks about Java’s evolution, in particular J2EE, presenting the lessons to be learned from its failures, like committee-led standards and container-managed frameworks, preparing to avoid such mistakes in the future. via InfoQ: Lessons Learned From Java EE’s Evolution. Read more – ‘→ Lessons Learned From Java EE’s Evolution’.
- Easy Forms ß1 for Hippo CMS (Video)
- Read more – ‘Easy Forms ß1 for Hippo CMS (Video)’.
- → You’ll never get what you want.
- If you think you’re a genius, that’s great. But you’re not. Even if you are, realise that you aren’t. Even if you actually are, keep it to yourself. Key words here: “Show, don’t tell.” Long story short, do what you enjoy. Do it lots and lots. You’ll get better at it. There’s no easy way [...] Read more – ‘→ You’ll never get what you want.’.
- EasyForms for Hippo CMS 7 – Some progress
- Read more – ‘EasyForms for Hippo CMS 7 – Some progress’.
- EasyForms Plugin for Hippo CMS
- Now onto adding more field types and other whizzbang fields and stuff. Read more – ‘EasyForms Plugin for Hippo CMS’.
- Using Ram Disk for Maven Repository on Mac OS X
- Using Maven sometimes becomes a pain for a large project. Compiling sometimes takes forever. Recently I heard a tip on our office floor that if I use a RamDisk for maven repository it may be faster. So I tried to find out easy way to setup the RamDisk on Mac OS X (Snowleopard). Here’s how [...] Read more – ‘Using Ram Disk for Maven Repository on Mac OS X’.
- Hippo Forge Friday
- On October 30th, we at Hippo are organizing the free Forge Friday hacking event. If you are using any software from Hippo or interested in implementing it in the future or even just wanted to know more about Hippo Software, this is a great time to come and join us during the Friday Forge event. [...] Read more – ‘Hippo Forge Friday’.
- Sneak Preview 1
- Version 0.01 Read more – ‘Sneak Preview 1’.
- Work in Progress …
- Read more – ‘Work in Progress …’.
- → What is wrong with HTML 5
- Part the first: The Hypertext Markup Language was designed to describe the structure of scientific documents and how they related to one another. Part the second: The Hypertext Markup Language is used to describe the way a given screen of information is structured, presented and responds to user input. Thesis: Everything wrong with HTML5 can [...] Read more – ‘→ What is wrong with HTML 5’.
- → What to look for in an Open Source Company
- In just over three years, four companies that Fenton invested in while at his current firm Benchmark Capital, or previous one, Accel Partners, have sold for a combined $1.6 billion. Fenton, who ranks on Forbes’ Midas List at No. 50, was an investor in JBoss Inc. (sold to Red Hat Inc. for $350 million), Zimbra [...] Read more – ‘→ What to look for in an Open Source Company’.
- Video: How to add a workflow step to Hippo CMS 7
- Berry explains how to add a workflow step to Hippo CMS. This video tutorial takes you through the process of adding a button to the CMS that calls a workflow action on the repository. You can find the discussed code on the Hippo Forge: forge.onehippo.org/projects/workflow-action/ via: Arjé Cahn Read more – ‘Video: How to add a workflow step to Hippo CMS 7’.
- Customizing Hippo CMS – Getting Started
- This post is part of a series which will be focusing mainly on Hippo CMS's extensibility. These posts are more targeted towards the developers who want to customize and enhance the core CMS functionality. Read more – ‘Customizing Hippo CMS – Getting Started’.
- Debugging maven-jetty web application in NetBeans
- Setup Jetty to run with Debugging enabled on port 8000 export MAVEN_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8000" Run Jetty using Maven Plugin mvn jetty:run In NetBeans, Goto Debug→ Attach Debugger menu. Select Java Debugger(JPDA) and specify the port as 8000. Now you can debug the webapplication using NetBeans. Read more – ‘Debugging maven-jetty web application in NetBeans’.
- PSD file format
- From comment in the code of Xee // At this point, I’d like to take a moment to speak to you about the Adobe PSD format. // PSD is not a good format. PSD is not even a bad format. Calling it such would be an // insult to other bad formats, such as PCX [...] Read more – ‘PSD file format’.
- Seam Mail (2.1.1) – Attachment not working when body type is 'plain'
- I was working with a Jboss seam application, and found out that I cannot send attachment when the body type is set to ‘plain’. After searching the seam bugs, I found this: https://jira.jboss.org/jira/browse/JBSEAM-3970 I checked out the code to rebuild the fixed seam-mail.jar. If you are also experiencing the issue, then you can just replace your [...] Read more – ‘Seam Mail (2.1.1) – Attachment not working when body type is 'plain'’.
- Doing the "right" thing
- In the well thought-out article analyzing why MySQL founders chose to leave Sun: [The hackers] may feel that their work is simply not “right” – either in engineering or moral terms. And whereas concerns about the other annoyances of daily employment can often be largely suppressed, the issue of doing the “right thing” is more [...] Read more – ‘Doing the "right" thing’.
- → Refactor My Code
- Wouldn’t it be great to have a site that cares about your code ? That threats it as a piece of art and at the same time, encourage people to make it better and more beautiful ? → RefactorMyCode.com Read more – ‘→ Refactor My Code’.
- → Programmers are Tiny Gods
- Programmers are the Gods of their tiny worlds. They create something out of nothing. In their command-line universe, they say when it’s sunny and when it rains. And the tiny universe complies. So if you’re working with a programmer, you have to treat him or her like a God. You have to pray. You cannot [...] Read more – ‘→ Programmers are Tiny Gods’.
- (mt) feedback form
- Here is the mailer I got from (mt) today. Once you click the “Tell Us Anything” button, it takes you to the form with just one large text area, no boring surveys or no 10 field customer data, answering who am I, where am I and other stupid stuff.. just one field. I’m happier being [...] Read more – ‘(mt) feedback form’.
- Open-plan office sucks
- “Australian scientists have reviewed a global pool of research into the effect of modern office design, concluding the switch to open-plan has led to lower productivity and higher worker stress.” - news.com.au This was the same thing I thought and have been arguing with management since I started my career. In fact, this is one [...] Read more – ‘Open-plan office sucks’.
- Coming Soon …
- Read more – ‘Coming Soon …’.
- Addictive guess the number iPhone game
- Developed in less than 20 mins! Read more – ‘Addictive guess the number iPhone game’.
- SQLite3 Exception: SQL logic error or missing database
- So this morning I was trying to update a testing machine with my shiny new Rails app. Remove the sqlite database – CHECK run rake db:migrate – CHECK start the application Now there were no errors anywhere. But I still get: SQLite3::SQLException: SQL logic error or missing database After usual googling around and trying to [...] Read more – ‘SQLite3 Exception: SQL logic error or missing database’.
- iphone developer program
- Just got the certificate! Weekend Project: Update (and possibly Brick) my iphone to 2.0 OS. Read more – ‘iphone developer program’.
- open iphone application development
- Today, I started hacking my iphone and built my first application with the help of the book iPhone Open Application Development. The dev environment setup took some 3 hours – copying the frameworks from iPhone, setting up the tool-chain and building it. But finally I was able to build something. With my recent experience of [...] Read more – ‘open iphone application development’.
- "select_rows is an abstract method" during "rake db:migrate"
-
After successfully building a couple of applications in RoR with SQLite3 and PostgreSQL, I'm now trying to use Oracle as the database for Ruby on Rails application. When I tried db:migrate I ran into an error that said select_rows implementation is not available in oracle_adapter.rb.
After searching for a patch in the RoR Trac, the error is finally resolved. And here the file that fixed the error. Make sure that you installed activerecord-oracle-adapter gem and replace the oracle_adapter.rb with the file attached with this post.$RUBY_HOME\lib\ruby\gems\1.8\gems\ activerecord-oracle-adapter-1.0.0\lib\ active_record\connection_adapters
Read more – ‘"select_rows is an abstract method" during "rake db:migrate"’. - Live Search for JTable
-
Live Search has been very popular recently in the web 2.0 world. I was recently working with a desktop application, in which I wanted to provide a similar feature. You have JTable displaying the data you fetched from somewhere (database etc.) and you provide a simple text field using which the table can be filtered. It works just like your Firefox History side bar search. You can call the method using the KeyListener so that it looks very "alive" :-)
Here's the LiveSearchTableModel implementation you can use to create live filtering of JTable rows.
Read more – ‘Live Search for JTable’. - Using Java Serialization
- import java.io.Serializable; public class SerializableClass implements Serializable { private static final long serialVersionUID = 8527009390527848344L; private volatile int volatile_integer = 1; private transient int transient_int = 1; public SerializableClass() { System.out.println("SerializableClass : constructor "); this.volatile_integer = 2; this.transient_int = 2; } public void changeInteger() { // Takes really long to complete. try { System.out.println("SerializableClass : changeInteger : try "); volatile_integer = 3; transient_int = 3; Thread.sleep(20000); } catch (InterruptedException ie) { ie.printStackTrace(); } finally { System.out.println("SerializableClass : changeInteger : finally "); volatile_integer = 4; transient_int = 4; } } public int getTransientInteger() { return transient_int; } public int getVolatileInteger() { return volatile_integer; } } import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; public class MainClass { public static void main(String[] args) { final SerializableClass sc = new SerializableClass(); try { new Thread(new Runnable() { public void run() { System.out.println("Thread 1 for calling change integers"); sc.changeInteger(); } }).start(); new Thread(new Runnable() { public void run() { System.out .println("Thread 2 for serializing and deserializing the object"); FileOutputStream fos = null; ObjectOutputStream out = null; try { System.out.println("Before Serialization:"); System.out.println("Value of transient: " + sc.getTransientInteger()); System.out.println("Value of volatile: " + sc.getVolatileInteger()); fos = new FileOutputStream("c:/object.ser"); out = new ObjectOutputStream(fos); out.writeObject(sc); System.out .println("Serialization finished!"); } catch (IOException ex) { ex.printStackTrace(); } SerializableClass sc2 = null; FileInputStream fis = null; ObjectInputStream in = null; try { fis = new FileInputStream("c:/object.ser"); in = new ObjectInputStream(fis); sc2 = (SerializableClass) in.readObject(); } catch (IOException ex) { ex.printStackTrace(); } catch (ClassNotFoundException ex) { ex.printStackTrace(); } System.out.println("After deserialization: "); System.out.println("Value of transient: " + sc2.getTransientInteger()); System.out.println("Value of volatile: " + sc2.getVolatileInteger()); } }).start(); } finally { System.out.println("Main Thread finally executed "); } Runtime.getRuntime().addShutdownHook(new Thread() { @Override public void run() { System.out.println("In the shutdown Hook :"); System.out.println("Value of transient: " + sc.getTransientInteger()); System.out.println("Value of volatile: " + sc.getVolatileInteger()); } }); } } Read more – ‘Using Java Serialization’.
- Using JRex in Eclipse RCP
-
After successfully running JRex, I moved on to embed JRex in RCP application. RCP applications are developed using Eclipse Rich Client Platform. Including JRex in RCP is little tircky, since JRex is based on Swing/AWT. But Eclipse RCP provides SWT and AWT bridge, using which any AWT component can be embedded in SWT component.
Read more – ‘Using JRex in Eclipse RCP’. - JRex embedded browser
-
Today I started working on JRex, and embeddable Gecko(Mozilla) browser for Java. I spent almost 3 hours to get JRexworking on my machine. I followed all the steps in the releases page.
And when I try to run the program here's the error I got
Read more – ‘JRex embedded browser’. - Python: Class and Data Attributes
-
Python has two kinds of attributes for objects: Class and Data. Class attribute is similar or equivalent to static variables in Java. That means they belong to the class rather than an instance of the class. The data attributes are like instance variables, that are bound to an instance rather than the class.
The class and data attributes are declared normally in Python. But the way they are accessed inside the class is different. Here's the sample code to find how class and data attributes work:
Once the program is run it prints the following output:1 1 2 1indicating that class_attr is incremented whenever a new Object is created, whereas data_attr is related to the instance and hence its just "1" regardless how many objects have been created. Read more – ‘Python: Class and Data Attributes’. - Python: Simple Class and Object
-
I've just finished Classes in Python chapter. Here's the python class to say helloworld!
Read more – ‘Python: Simple Class and Object’. - Python Progress
-
So yesterday, I started reading the book Dive Into Python, and finished reading first 4 chapters. The language seems to be very interesting, somewhat similar to perl. I worked on a perl project during '04.
So, here's the gist of what I've learned:- Python is an Object Oriented language in which everything is an Object.
- Python functions are declared using def The second parameter is an optional parameter, which takes the default value "value" if we don't specify when we are calling that function.
- Every python script or program can be called as standalone program or can be import as modules into other scripts. So the following block of a script is executed only when the module is called as a standalone program. So this if block serves a main method for the script.
- Python's statements end with a new line character, phew! no more semicolon typing
- In Python block's are identified using the indentation. So bye bye braces!
- Python has "in-built" support for Lists, Dictionaries and Tuples. Lists are like ArrayList in Java, Dictionaries correspond to Hashtable in Java and Tuples are immutable lists in which the order is preserved.
- Python provides various powerful introspection methods like getattr(Object, Method) which will retrieve the reference to the method of the object.
- Python provides support for lambda functions - kind of inline methods, which can be assigned to any variable and reused anytime. This is very convenient when we want to evaluate a single expression and return some value.
statically typed language
A language in which types are fixed at compile time. Most statically typed languages enforce this by requiring you to declare all variables with their datatypes before using them. Java and C are statically typed languages.
dynamically typed language
A language in which types are discovered at execution time; the opposite of statically typed. VBScript and Python are dynamically typed, because they figure out what type a variable is when you first assign it a value.
strongly typed language
A language in which types are always enforced. Java and Python are strongly typed. If you have an integer, you can't treat it like a string without explicitly converting it.
weakly typed language
A language in which types may be ignored; the opposite of strongly typed. VBScript is weakly typed. In VBScript, you can concatenate the string '12' and the integer 3 to get the string '123', then treat that as the integer 123, all without any explicit conversion.
So Python is both dynamically typed (because it doesn't use explicit datatype declarations) and strongly typed (because once a variable has a datatype, it actually matters). Read more – ‘Python Progress’. - Tiddly Wiki
-
Tiddlywiki is a one page wonder. It's a wiki in a page. You don't need to install the software, configure the database or even change the settings file like other wikis. Just copy the file. That's it.TiddlyWiki is written in JavaScript. So its a client side wiki. Just download and start editing right away, and upload the single file to server and your are done. So easy. You can see my TiddlyWiki installation here. Its just a single file. The wiki has plugins and themes too. There are also customized TiddlyWiki forks like GTD (Getting Things Done) implementation for TiddlyWiki etc.If you want to test the TiddlyWiki goto TiddlySpot. TiddlySpot is a free TiddlyWiki hosting service. Find out more about TiddlyWiki at www.TiddlyWiki.com.Read more – ‘Tiddly Wiki’.
- Upgrading Ports on FreeBSD
-
I was busy working on some Windoze application, Since it needed COM Port access, couldn't work on FreeBSD. Yesterday, I started portupgrade after cvsupping to the latest ports snapshot. And in the middle the laptop went off and the pkgdb got corrupted.Then I tried using pkgdb -uf command. But the pkgdb was not rebuilding. I thought the system got messed up, I need to install all the pkgs, ports again. I changed to the /var/db/pkg directory. And then a mv pkgdb.db pkgdb.db.old. Did the pkgdb -fu again. Voila! it rebuilt the pkgdb. So today morning I started the portsupdate -a. I'm sure it will take some good time for upgrading all the 561 packages Once the ports are upgraded, I'll switch to FreeBSD 7.0 series next week!
Read more – ‘Upgrading Ports on FreeBSD’.
- Starting with Ruby
- Ruby language has been the talk of the town for the past one year or so. Its a scripting language like Perl, Python and TCL. I've programmed with perl and also had entry level experience with Python. So I started off learning Ruby recently. Coming from the Java world, where even for simple operation we have to write all the nonsense code to get to to the actual stuff, Ruby surprises me with its simplicity. Read more – ‘Starting with Ruby’.
- Creating Firefox extensions using Eclipse
- Mozilla firefox, the latest hot browser from Mozilla Foundation. The firefox interface is developed in XUL, which gives the most flexible way to develop extra features called "extensions". I've been working with XUL since sometime, you can find the XUL Tutorial I'm writing in the Articles & Tutorials section. The most difficult thing for a developer coming from other language experience such as Java/.Net is the lack of proper IDE. I started out creating an extension recently. But code-debug-deploy was painful. I'd to create the XPIs manually and editing the files in Notepad was like going back in time. So I started out using Eclipse and Ant for developing the extension. The best thing is I can sync my source code using a cvs server as well. Read more – ‘Creating Firefox extensions using Eclipse’.
- Bean Shell Compiler
-
Bean Shell makes your Java programs scriptable. Recently I started working on it. BeanShell provides its own JavaScript-like syntax to access your Java Objects. You can even change the syntax to anything you like using JavaCC. I started playing with it. BeanShell uses a Parser and Abstract Syntax Tree (AST) to tokenize the code. Here's a small class for compiling the BSH script, before sending it to the interpreter.
import java.io.FileReader;
Read more – ‘Bean Shell Compiler’.
import bsh.ParseException;
import bsh.Parser;/**
* * BshCompiler Class is used to compile the scripts and verify for the syntax
* errors, before interpreting. * The class constructor takes the Script file
* name/path * as the argument, and checks for the syntax. Once the process is
* complete, use * isSuccess to get the result, and also the getResponse * and
* getErrors to get the respnses. Note that this class is not synchronized, it
* has to be handled externally. * *
*
* @author Vijay Kiran Duvvuri *
* @version 0.1
*/
public class BshCompiler {
private StringBuffer response;private StringBuffer errors;
private boolean success;
private FileReader fileReader = null;
private Parser parser;
private String script;
/**
* * scriptFile - path of the scriptFile *
*
* @param scriptFile
*/
public BshCompiler(String scriptFile) {
this.script = scriptFile;
compileScript();
}private boolean compileScript() {
response = new StringBuffer();
errors = new StringBuffer();
success = false;
try {
fileReader = new FileReader(script);
parser = new Parser(fileReader);
parser.setRetainComments(true);
while (!parser.Line()/* eof */) {
response.append(parser.popNode() + "\n");
}
success = true;
} catch (Error error) {
errors.append(error + "\n");
} catch (ParseException parseException) {
errors.append("PARSE EXCEPTION: " + parseException.toString()
+ "\n");
errors.append("ERROR MESSAGE: " + parseException.getMessage()
+ "\n");
} catch (Exception e) {
System.out.println("Other Exception");
errors.append(e + "\n");
} finally {
try {
if (fileReader != null) {
fileReader.close();
}
} catch (Exception e) {
e.printStackTrace();
} catch (Error error) {
}
}
return success;
}public StringBuffer getResponse() {
return response;
}public StringBuffer getErrors() {
return errors;
}public boolean isSuccess() {
return success;
}
} - My Dash Board – Announcement
- I'm online almost all of the time. I browse, read, blog, chat, IM, search, mail even when I'm on the move. I've been planning to take all my settings every time instead of installing some software. So that I can synchronize my online activity from every where. So I was planning to create a small XUL web application using which I can track everything through my website, which is accessible from any computer. It's a kind of dashboard. After my recent experience with XUL I've decided that I'll develop it in XUL + JS. Here are the tentative list of features: Read more – ‘My Dash Board – Announcement’.
- JMX HelloWorld
-
Introduction
JMX or Java Management eXtensions gives you the ability to manage programs remotely. I've been working on JMX in one of the SOA application. I would like to share how my first program in JMX has been written and deployed onto JBoss. The MBeans are also know as Platform MBeans (MBeans - Management Beans). You can use JMX to remotely invoke the function on an object. In layman terms, JMX MBeans can be used as "Remote Control" for the "Object that implements the MBean". Using the MBean the object's operations can be invoked remotely. The JBoss application server has been constructed over a microkernel that uses JMX specification. Every service JBoss provides is an MBean or collection of MBeans. Different kinds of MBeans and notifications are not covered in this article. This article just explains two examples: The plain MBean (HelloWorld), and creating and deploying MBean in the JBoss as an SAR (Service Archive). Read more – ‘JMX HelloWorld’. - XUL HelloWorld Application
-
XUL Applications
As described already XUL applications need XUL Runtime, which can be any mozilla browser instance. But for starting XUL Application as a seperate standalone application, we can use XULRunner. Similar to the JRE, xULRunner provides the runtime environment for the XUL application. For development purposes, we can use the XUL App Directory Structure. The deployment/installable package structure will slightly differ from this setup. The deployment will be explained in a later section.
Development Package Structure
The following is the package structure for creating a standalone application. The application.ini will have the initial settings for the application. The chrome folder is the place where all the interface(XUL), and behaviour(JS) is kept. The chrome folder can be delivered as a JAR file as well.helloworld/ application.ini chrome/ chrome.manifest content/ helloworld/ --- XUL and JavaScript files. ---- locale/ en-US/ helloworld/ --- DTD files for en-US locale --- skin/ helloworld/ -- CSS for styles etc. --- defaults/ preferences/ helloworld-prefs.js
The main folders of a chrome package are content, locale and skin.
Content - Windows and scripts
The content folder contains all the windows defined using XUL and corresponding behaviour files defined in JavaScript files. The main XUL file should have the same name as the application folder, in our case it should be helloworld.xul. Generally scripts are placed in seperate JS files.Locale - Locale specific files
The mozilla applications support internationalization using locale. You can use locale folder to create different DTD files for different locales. The locale can be switched in the runtime.Skin - Style sheets, images and other theme specific files
Stylesheets alontg with images can be used for skin of the application, in this way its very easy to make the interface skinnable. It's very useful if you want your application to be customizable look and feel.Previously an RDF format file is used to manifest the contents of the package. But since Firefox 0.9 the format has changed to plain-text file chrome.manifest. Here are the steps to create the HelloWorld application
- First download the XULRunner from here
- Extract the XULRunner to the hard disk (C:\xulrunner).
- Download the helloworld.zip attached with this article. You can even create your own application structure as explained below. But starting with the skeleton pakcage will give you more flexibility.
- Extract the helloworld.zip to the hard disk (C:\helloworld).
- Run the application using the command c:\xulrunner\xulrunner.exe c:\helloworld\application.ini
- XUL tutorial
- Mozilla platform provides framework and components to develop crossplatform rich client applications. Mozilla platform contains various technology implementations like AJAx, CSS, HTML, DOM,JavaScript, XML, RDF, RSS, XUL, XSLT and XML. Read more – ‘XUL tutorial’.
- Google vs Yahoo
- Of late I am thinking about google .. I am now almost convinced that Google is going to hit a wall eventually.And I am not into Search-Research related software development, instead I am focusing on Enterprise Software (Small-Medium) .. I think more IT penetration is needed in that sector. Innovation was the major reason of [...] Read more – ‘Google vs Yahoo’.
- Windows Installer XML
- WIX is Opensource tool to create Windows Installer packages .. might be useful for people who are developing Software for windows. It helps in creating/compiling the MSI packages. Dev, Thanks for the link! Read more – ‘Windows Installer XML’.
- XAMPP
- From the site XAMPP is an easy to install Apache distribution containing MySQL, PHP and Perl. XAMPP is really very easy to install and to use – just download, extract and start. I know the amount of time and understanding neded to install all the OpenSource Apps, and then make them work properly with each [...] Read more – ‘XAMPP’.
- Essential Software for Linux
- Or the ones I think I must have after every upgrade/install of new Linux Distro: Languages : Ruby, Perl, Python, gcc-suite, Java5. Internet: Firefox, Evolution, Gaim, Liferea. Programming: JDK, Netbeans, Eclipse. Servers: Tomcat, Apache, MySQL. System tools: Synaptic(for Debian-based systems). Productivity/Office: Scribus, OpenOffice2(now in beta), GIMP. Games: Frozen Bubble Multimedia: XMMS, Noatun. Read more – ‘Essential Software for Linux’.
- Upgrade to Ubuntu Linux 5.0.4 complete
- Phew .. after 6 hours of downloading, the upgrade to new 5.0.4 release is complete. Task for tomorrow to install Java and Eclipse & Related plugins, And also the Kubuntu Read more – ‘Upgrade to Ubuntu Linux 5.0.4 complete’.
- Process Creation Process
- Process Creation Process – kind of recursive Being obsessed with open-source development ‘methodologies’ ( I hate to use BuZZ words .. but still ), here I am, again trying to do things in MY WAY … fighitng RUP-IS-GOOD-EVEN-FOR-MY-GRANNY world. After extensive reading (I am just 52Kgs, so your extensive might mean something else) of PeopleWare, [...] Read more – ‘Process Creation Process’.
- A History of Free and Open Source
- Here is the interesting series at groklaw : The History of Free and Open Source, by Peter H. Salus. Very interesting, I am waiting to read the book completely. Among other things, now I am using Liferea for reading news feeds a wonderful tool to read the news and keep yourself updated. You can get [...] Read more – ‘A History of Free and Open Source’.
- Linux on Laptop
- Finally I managed to install the Debian GNU/Linux on our Laptop. It was really painful because, the laptop doesn’t have the floppy drive and I donot have the Installation CDs, and one more challange was that the Laptop was running Windows Me (yuk!!). I already installed the Linux completely through network. But at that time [...] Read more – ‘Linux on Laptop’.
- Ruby!
- After reading the Bruce Eckel’s blog after a long time, I found an interesting and entertaining link to a book on ruby: Why’s (poignant) guide to Ruby . Being an extremely influence by Bruce, I got some conviction that there are only four REAL computer languages in the world other than Perl: C++, Java and [...] Read more – ‘Ruby!’.
- Web Application Development using Perl
- Perl is one of my favorite languages, especially because of its versatility. Perl is everywhere: CGI, GUI, Application Development, XML Processing, Database Accesss and of course System administration tasks. The main challenge in developing a web-application is proper design. The decoupling of the static content from the dynamic content inside the individual pages is the [...] Read more – ‘Web Application Development using Perl’.
