tag:blogger.com,1999:blog-57719563978490579232024-03-08T20:38:43.726+01:00What's nextStighttp://www.blogger.com/profile/17732976186109189576noreply@blogger.comBlogger51125tag:blogger.com,1999:blog-5771956397849057923.post-663029394188159162011-08-07T08:57:00.001+02:002011-08-07T08:57:13.256+02:00Moved to blogger.comAs I'm always striving for perfection, I'm testing out blogger.com as a substitute for wordpress. The export/import worked fine. Now to check consistency, layout, differences in UI and what didn't get transferred.Stighttp://www.blogger.com/profile/17732976186109189576noreply@blogger.com0tag:blogger.com,1999:blog-5771956397849057923.post-65895169002476216132011-07-18T16:50:00.000+02:002011-08-07T08:50:17.642+02:00A software engineering approach to marketing real-estate<img class="alignright size-medium wp-image-323" title="Balcony view" src="http://stigl.files.wordpress.com/2011/07/39_952429006_xl.jpg?w=300" alt="" width="300" height="200" /><br/><ol><br/> <li><strong>Create ad</strong></li><br/> <li><strong>?</strong></li><br/> <li><strong>Profit</strong></li><br/></ol><br/><strong>Evil log of the Software Engineer advertizer</strong>. I've put the log on the top. For a first impression, read the Intro first.<br/><br/><strong>24. June:</strong> <strong>Bought our new house</strong>. Started planning of selling the apartment.<br/><br/><strong>6. July</strong>: 3 rounds of <strong>interviews with potential real estate brokers</strong>. One showed a sub-par interest, like any normal Norwegian :) Second was one we had met a lot during our peeks into the market for the last 5 years. The third was a younger guy with a non-salesguy look. A real outsider, and he gave us a damn good presentation and showed real interest. Also would cost 8.000€ more than the others, but had a more expensive package. The decision was a tie between the well-known and the outsider, but the well-known had the advantage of knowing the area well and knowing that it could be a tough sell and remedies for that. Not to self, if you have some own meanings to how selling your apartment should be and want to give feedback to the process, it's perhaps better to choose the salesperson which you can "mold" :)<br/><br/><strong>15. July:</strong> <strong>The taxonomist</strong> (?) viewed our apartment. His impression was very positive, but he measured our apartment to be 1 square meter smaller than we were expecting, and estimated it to be 5.000€ less than we'd prefer...<br/><br/><strong>17. July:</strong> First writedown of the original <strong>ideas and elaboration</strong><br/><br/><strong>18. July:</strong> Rented a <a href="http://www.lagerboks.no">http://www.lagerboks.no</a> <strong>storage-box</strong> on a trailer, fetch'n delivery of the box + 3 months storage for 400€. Expensive, but damn good solution. Placed the stuff we don't need in boxes and got 8 cubic meters of stuff shoved away and cleaned out almost everything before the photo-shoot.<br/><br/><strong>20. July:</strong> Bought 20€ worth of fruit in green, yellow, orange and red colors to place in strategic places. Ikea for towels, bedspread and pictures of ducks. New pillows, fragrant soap with red color and other stuff from around Oslo. <strong>Photo shoot</strong> went real well. Removing all the clutter was a big hit, you have NO time to arrange stuff during the shoot. Also had the original prospect of the apartment from when we bout it handy. The pictures have added lots of light to them, so strong bright colors is a must, and preferably as few colors as possible per picture frame.<br/><br/><strong>26. July</strong>: The <strong><a href="http://www.finn.no/finn/realestate/object?finnkode=29738339">finn.no advertisement</a></strong> is out!!! I believe it looks good. Got just under 2.000 impressions on finn.no on the first day which is quite good compared to the market when most are on vacation. Similar apartments have ~1500 impressions after 2-6 days. Did some viral marketing on Facebook, Google Plus and MSN. Will save Twitter till later. Am saving Twitter marketing till later.<br/><br/><strong>27. July</strong>: Have created <strong>Facebook and Google ads/adwords</strong>. Google adwords is for rocketscience advertisers! Damn hard to figure out why nothing is showing! But a lot of knobs and levers to fiddle with. Facebook was real nifty - got 12.000 impressions and 12 klicks in zero time. Needed to pay 4$/click to make it interestin to facebook :) Set down rates now that I can see the thingamajig is working. Am using both CPC and CPM on FB on two different ads. Will change the text and titles to "renew" the ad in the forthcoming days so punters don't get annoyed. Am also afraid to hit the $ ceiling, it looks so horrible that money is pouring out of my account like that. Damn yee marketing leeches! Am recommenting on FB and google+, hoping it attracts more views and publicity. Am going to bed with 2820 impressions on finn.no. Will try to go physical tomorrow.<br/><br/><strong>28. July: Ad campaign running </strong>08:00 3006 shows on Finn.no. Facebook squeezed out the last penny of my 45$/day campaign. At least got me 45 clicks. Google adwords got off to a very slow start and ran away with 5$ for 7 clicks. Can't get the search words quite to work. Feeling that my ad campaign on the net is more for annoying people than anything else :) Have got a rather good feel for the parameters - $/click or view. Tweaking the parameters and seeing the result is like a game engine! No wonder sales people have the incentives model they've got. On my way to work this morning, I wondered what it'll cost to get one of the beggars aligned down the street to hold my ad "Nice 3 room for sale" with the QR code which people can scan with their smartphones. 1€/hour perhaps? :) Don't think they'd dislike a stable hourly income. And although it'd attract negative attention, it'd be quite cool in a sense. Perhaps get some media attention as well.<br/><br/>Had 8 people from 4 groups at a private showing which I held. Fun stuff :) I should market myself as the Honest Real Estate Guy. I bet that it was severely in my disfavor. But they were really interested in me talking. Last ones left after 2 hours. Status of tonight - Accumulated 3699 shows and <100 bookmarks on Finn, which is quite nice. Have annoyed 52,824 punters on facebook over 4.5 times, gotten 76 clicks which has cost me 84$. Have gotten 4 246 shows on Google Adwords with 30 clicks and cost me 50$. The annoyance/cost favors Facebook until now :)<br/><br/><strong>29. July:</strong> Where are people coming from? The paths people take into my finn.no ad may vary widely because of the different channels (FB, Google, QR code cliks, FB personal comments aso) without me knowing. The statistics analysers at finn suck top notch, and FB and google don't give me much info. Recommend to use multiple URL shortener links which gather much statistics from the users. That way, you can differ how they got to your ad.<br/><br/><strong>30. July:</strong> Cleaned up several plastic bags of garbage in the vicinity. Your neighbors are always pigs. Especially their children!!! hehe... But a couple of hours work really payed off. Made the approach alot more visually pleasing. Ended up not going totally Gorilla with the QR code advertising. My access card at work is shut off in the weekends, so no printer.<br/><br/><strong>31. July:</strong> S<strong>how of the apartment</strong> - had a lot of visitors. 22 wrote their names on the list - more than twice that of a regular good showing. 5 from private shows I held. 4500 views on finn.no, ~50% better than a normal good viewing. Was extremely lucky with the timing - only 5 other apartments had showings the same day in the surrounding area. There still were some people out and looking even though summer vacation officially wasn't over yet.<br/><br/><strong>1. August:</strong> <strong>The Sales Round</strong> is where I hope using a seasoned real estate broker will pay off, who's given potential buyers confidence during the show and handles the selling round well.<br/><h1>Introduction</h1><br/>I am in the process of selling my beloved 3 room apartment in central Oslo. I have chosen a real estate broker which I believe will do a great job and knows the area well. The marketing package is a straight-forward ad in the only credible real-estate marketplace in Norway, <a href="http://www.finn.no/eiendom">Finn.no</a>, which assumes everyone uses it. I am on a low budget, but wan't as many as possible to know what my apartment has to offer. I can do better!<br/><h2>Problem elaboration</h2><br/><a href="http://www.finn.no/eiendom">Finn.no</a> is market leader and everyone uses it. Very few use other sources and the brokers know it and don't have incentives to think differently. But that's not quite true. Everyone nowadays start with a <strong><a href="http://www.google.no/search?q=finn+oslo+eiendom">Google search</a></strong>, even to find the portal they already knew the address to. And it looks like getting a <a href="https://adwords.google.com">Google Adwords</a> on search results like "3 room apartment oslo" can't cost too much. Paying for ads feels like cheating in a game of marbles by being the bully of the block who doesn't care for his lunchmoney. So why not apply software ingenuity to manipulate Google search hits by fair and square cheating. You won't find any apartments listed in Google results for Finn.no or the brokers, because they "hide" their pages from Google by requesting that their containing pages aren't to be indexed. What has happened is that searching for apartments bring you into a vast void of non-relevant search results. Lets manipulate:<br/><ol><br/> <li>Create a dummy Apartment Landing Page which in time will contain some of the same info from the upcoming Finn.no ad when it's been written. <a href="http://leilighet.kompo.st">http://leilighet.kompo.st</a></li><br/> <li>Write some more text, add outgoing links to Finn.no and so on.</li><br/> <li>Make friends and followers notice the landing page and reference it from their channels (Social Networks, Facebook, Google+++)</li><br/> <li>Check out if Google finds landing page</li><br/> <li>(...)</li><br/> <li>Profit!</li><br/></ol><br/>What about IRL Gorilla marketing in the streets!? My next step is to wallpaper these around in Oslo on random places and venues:<br/><br/>"Great 3 Room Apartment in Oslo"<br/><br/><a href="http://stigl.files.wordpress.com/2011/07/leilighet-kompo-st.png"><img class="size-full wp-image-320 alignnone" title="leilighet.kompo.st" src="http://stigl.files.wordpress.com/2011/07/leilighet-kompo-st.png" alt="" width="372" height="372" /></a><br/><br/>Oslo will never know what hit'em!<br/><h2>Some statistics</h2><br/>What statistics does Facebook give Advertiserists? 689700 In norway use FB between 18-35 18.6% have a college education 48% are not single 13260 Swedish speaking in norway, 60% live in OsloStighttp://www.blogger.com/profile/17732976186109189576noreply@blogger.com1tag:blogger.com,1999:blog-5771956397849057923.post-31704539539207855112011-07-18T15:30:00.000+02:002011-08-07T08:50:17.643+02:00Auto DraftStighttp://www.blogger.com/profile/17732976186109189576noreply@blogger.com0tag:blogger.com,1999:blog-5771956397849057923.post-40368609252974007482009-11-02T12:58:00.000+01:002011-08-07T08:50:17.643+02:00Open Sourcing the Business ModelIT and Tech have started playing with open cards, exposing their handiwork and knowhow. What will happen if Business open up their inner secrets? Will the company still stay competitive? Will openness attract customers and open new prospects?<br/><a name='more'></a><br/><h2>How business processes are perceived</h2><br/>Contracts are often signed on golf courses, between school buddies, hidden in safes, and are seldom reviewed.<br/><h2>What's to change</h2><br/>Seldom does a company expose all their price plans, annual sales, quantitative-, premium customer- or early-bird discounts.<br/>Who are their customers? What did they buy? What discounts did they get? Who's the customers respective contacts? What does the contract say, in a format which is easily understandable and comparable.<br/><h2>Transparent contracts</h2><br/>If this contracts were readably available, it would be easier to:<br/><ul><br/> <li>tech new employees to work in the sales department</li><br/> <li>get an overview of the running contracts</li><br/> <li>compare contracts profitability</li><br/> <li>adjust the rest of the organization to suit the requirements of the contracts</li><br/> <li>do an external revision</li><br/></ul><br/>Having a formalized, standardized and simple way of describing contracts, stored in an accessible repository could make a whole lot of difference.<br/><h2>Opening the company</h2><br/>Making the Business Model, and in effect the company, more open would probably minimize the internal barriers between departments. Opening up can improve the felt transparency for the customer, making them more certain that they've done a choice based on facts and being able to compare them.<br/>The opposite of an open company, is an used car dealership.<br/><h2>What's to loose</h2><br/>What is your company's focus? What are they good at? What is their special sauce that makes them different from the crowd?<br/>Most likely, it's not the elegant blue suits, fancy partner events and golf outings.<br/>If the product is so great, a company should be proud of it's customers and sales, and should be able to proudly flaunt them on the company intra-web and Internet.<br/><h2>What's next</h2><br/>Show your customers, contracts and pricing strategies to the world, and be proud of them. A standardized, simple format can increase accessibility and usefulness. If your Business Model isn't open and transparent; your customers will get their own impression of your company from elsewhere.Stighttp://www.blogger.com/profile/17732976186109189576noreply@blogger.com0tag:blogger.com,1999:blog-5771956397849057923.post-38619895215915114932009-10-25T00:10:00.000+02:002011-08-07T08:50:17.643+02:00Making school bands cool againSchool bands are seen as uncool<br/>How can we change that?<br/><a name='more'></a><br/>The music they play (marches, musicals, classical, symphonies ++) are part of the problem.<br/>Creating new music for an entire band requires much work, even rewriting existing well known music is hard.<br/><br/>Proposal:<br/>Create projects where the goal is to play a single pop-song, rap song or similar, heavily inspired by the existing music score.<br/>Take only a few, very talented musicians, able to improvise and have simple score-writing abilities. The instruments should resemble the sound made by the original score. IE drums, Bass brass for base, wind for synth and so on. Using a singer from a choir can also be possible. Simplicity is key. <br/>Each musician/instrument should at first try to mimic the sound their music score makes, before they try improvising. Rehearsal can be done solo at first, playing alongside the original score.<br/>The projects main goal is recreating the original score, but preferably also changing it to their own interpretation. Band members should preferably be changed for each new project, and multiple projects can be run simultaneously.<br/><br/>Note that such projects are expected to be labour intensive, and require much following up.Stighttp://www.blogger.com/profile/17732976186109189576noreply@blogger.com2tag:blogger.com,1999:blog-5771956397849057923.post-54411739827616488552009-06-18T13:36:00.000+02:002011-08-07T08:50:17.643+02:00Simple REST server with GrailsI have recently worked on two small projects that need a simple data store for more intelligent clients. Choosing REST was a no-brainer after some discussion. Grails' HTML CRUD interface is a great template to start off with, but it lacks dealing with XML/JSON.<br/><a name='more'></a><br/><h2>Prerequisits</h2><br/>You can get all the scaffold templates with the command "grails install-templates". Edit src/templates/scaffolding/Controller.groovy similarly to <a href="http://fbflex.wordpress.com/rest-service-xml-output-in-grails-via-content-negotiation">this tutorial</a>. To see the end result, generate the resulting code: "grails generate-controller Person"<br/><b>NOTE: When editing a template, the code generated from the template can block the newly generation and cause errors you were not expecting!</b><br/><h2>Time for some fun</h2><br/>When you've got the scaffolding in place;<br/><ul><br/> <li>create <a href="http://code.google.com/p/rfid-server/source/browse/#hg/grails-app/domain">a simple domain model</a> in Groovy + Grails syntactic sugar (one-to-many relations)</li><br/> <li>create <a href="http://code.google.com/p/rfid-server/source/browse/#hg/grails-app/controllers">controllers </a>for each domain class you want to expose. Use automatic scaffolding as much as possible</li><br/> <li>no need for an additional bulletpoint, thats all there is to it</li><br/></ul><br/><a href="http://code.google.com/p/rfid-server/source/browse/">The RFID-Server source code uses this approach</a>Stighttp://www.blogger.com/profile/17732976186109189576noreply@blogger.com1tag:blogger.com,1999:blog-5771956397849057923.post-89584997722240832862009-03-22T09:41:00.000+01:002011-08-07T08:50:17.643+02:00Facilitating web page error reporting<h1>Are there currently any products for facilitating reporting errors in web pages?</h1><br/><br/><h2>Problem description</h2><br/>A end user is browsing through your site, and stumbles upon a page which for him has an error or bug. It might be a mother-of-all-stacktraces shining at him, a number which is wrong or single space missing. Often, the end user is the only one who can see the problem, and it is difficult and timeconsuming to report through email or on the phone.<br/>Preferrably, the user can send a screen shot. But it is a difficult process to explain, several manual steps involved, and the state of the application cannot be captured by a screen shot.<br/><br/><h2>Possible solution</h2><br/>A "report bug" link which can easily be placed on every page, that when pressed, creates a report containing <br/> * The offending web page as html <br/> * A dump of all relevant state for the page<br/> * A field where the user can type in what's wrong<br/> * A crude marking device to easily tell where the error is located<br/>The report can then be emailed and fed to an issue reporting system.<br/><br/><h2>Relevant technologies</h2><br/>A javascript library or reusable SiteMesh decorator or similar. Preferrably as little intrusive as possible.<br/><br/><h2>Does this already exist?</h2><br/>Please tell me if it does! :)Stighttp://www.blogger.com/profile/17732976186109189576noreply@blogger.com2tag:blogger.com,1999:blog-5771956397849057923.post-85262391445587186682009-02-04T23:56:00.000+01:002011-08-07T08:50:17.643+02:00Debugging Java web applicationsDebugging Java web applications is often necessary, but setting it up on different vendors can be difficult.<br/>However, there is a generic, easy way to do this by setting the JVM running the web server in debug mode.<br/><br/><h3>Jetty and Maven</h3><br/><code><br/>export MAVEN_OPTS="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=4000,server=y,suspend=n"<br/>mvn jetty:run<br/></code><br/>Set up your IDE for remote debugging on port 4000 and you're laughing!<br/><img class="size-medium wp-image-287 alignnone" title="idea-remote-jetty-debugging" src="http://stigl.files.wordpress.com/2009/02/idea-remote-jetty.png?w=300" alt="idea-remote-jetty-debugging" width="300" height="251" />Stighttp://www.blogger.com/profile/17732976186109189576noreply@blogger.com0tag:blogger.com,1999:blog-5771956397849057923.post-42010503494533025622009-01-21T10:59:00.000+01:002011-08-07T08:50:17.644+02:00Publishing to Blog from Google docsGoogle docs has a mighty fine WYSIWYG editor for text. <a title="http://bradfordcross.blogspot.com/2009/01/code-snippets-in-your-blog.html" href="http://bradfordcross.blogspot.com/2009/01/code-snippets-in-your-blog.html" id="kywp"></a><br>To publish to your blog:<b> Share -> Publish as web page -> post to blog</b><br><a title="http://bradfordcross.blogspot.com/2009/01/code-snippets-in-your-blog.html" href="http://bradfordcross.blogspot.com/2009/01/code-snippets-in-your-blog.html" id="kywp">http://bradfordcross.blogspot.com/2009/01/code-snippets-in-your-b</a><a title="http://bradfordcross.blogspot.com/2009/01/code-snippets-in-your-blog.html" href="http://bradfordcross.blogspot.com/2009/01/code-snippets-in-your-blog.html" id="kywp"></a><a title="http://bradfordcross.blogspot.com/2009/01/code-snippets-in-your-blog.html" href="http://bradfordcross.blogspot.com/2009/01/code-snippets-in-your-blog.html" id="kywp">log.html</a><br><br><a title="http://bradfordcross.blogspot.com/2009/01/code-snippets-in-your-blog.html" href="http://bradfordcross.blogspot.com/2009/01/code-snippets-in-your-blog.html" id="kywp"><div style="text-align:left;padding:1em 0;"><img style="width:588px;height:198px;" src="http://docs.google.com/File?id=dc4wn56b_20cbpfw9g3_b"></div></a><br>Stighttp://www.blogger.com/profile/17732976186109189576noreply@blogger.com0tag:blogger.com,1999:blog-5771956397849057923.post-68978230944891422672009-01-19T16:07:00.000+01:002011-08-07T08:50:17.644+02:00Neo4J as a Grails backendThis post is a reply to <a href="http://twitter.com/emileifrem">@EmilEifrem</a>'s <a href="http://twitter.com/emileifrem/status/1120909713">twition</a>.<br/><br/>Neo4J could be a nice extension as a Grails' persistence backend, similar to a DB, space or LDAP. The problem today is that <a href="http://grails.org/GORM">GORM</a> is tightly coupled to Hibernate. Looks like <a href="http://twitter.com/graemerocher">@GraemeRocher</a> is in the works of <a href="http://twitter.com/graemerocher/status/1118207560">extracting Hibernate as a plugin</a>, from which one can use other persitence plugins. Absolutely looking forward to that. (Graeme, please document what defines the folders which contain domain classes, controllers and views, so they can be changed!). <a href="http://twitter.com/nawroth"></a><br/><br/><a href="http://twitter.com/nawroth">@Nawroth</a> recommended <a href="http://twitter.com/nawroth/status/1100185072">using Neo4J through a JCR layer</a>, though theres no implementation for Grails or Neo4J. The motivation for this is to be able to use the nice features such as MyPersonNode.find(), trinity.save() ... <a href="http://www.infoq.com/presentations/rudolph-grails-intro">Recommend watching this clip 4 intro to Grails</a>.<br/><br/>What can be done today is just using the Neo4J jar in Grails as it is. But the magic of GORM that makes Grails so different, compared to regular Java won't exist...Stighttp://www.blogger.com/profile/17732976186109189576noreply@blogger.com1tag:blogger.com,1999:blog-5771956397849057923.post-64458340091972504452009-01-07T22:29:00.000+01:002011-08-07T08:50:17.644+02:00Finally, a decent media server for PS3I've been looking for a <a href="http://www.dlna.org">DLNA</a> media server for streaming music and video to my PS3 for quite some time. And at last I can say that I've found a decent application for my streaming needs, <a href="http://code.google.com/p/ps3mediaserver">PS3 Media Server</a>. Most importantly, Its JAVA, Hooray!<br/>What else? The application runs on Windows, Linux and mac, and is packaged with appropriate installers for the different OS'. Although the project builds on Ant, it could be worth looking into if it's done nicely.<br/>Now to solve the problem with my sluggish wireless network...<br/><img class="alignnone" src="http://ps3mediaserver.googlecode.com/svn/trunk/ps3mediaserver/dist-archive/win32.png" alt="" width="880" height="640" />Stighttp://www.blogger.com/profile/17732976186109189576noreply@blogger.com0tag:blogger.com,1999:blog-5771956397849057923.post-71034233823819107422008-12-27T17:06:00.000+01:002011-08-07T08:50:17.644+02:00Teaching the internet generation to code<a href="http://www.secs.oakland.edu/~li4/pic/hacker.gif"><img class="alignright" title="Hacker" src="http://www.secs.oakland.edu/~li4/pic/hacker.gif" alt="" width="332" height="373" /></a>My 12 year old nephew is a heavy user of Vista, abuser of MSN, scoundrel on teh internetzor, and is fair on english. I will not discuss how much further I was at that stage, but I believe that the creation of nifty GUI OS' and xtrem good looking games has minimized the incentive of writing code to do stuff. So how do we teach coding to the internetzor generation and make it interesting for those with a short attention span?<a name='more'></a><br/><h1>Groovy?</h1><br/>I made a push with Groovy, some time ago, since it lowers the bar on adoption and fairly similar to Java. But the end result was that a simple hello world was 30 min of installing, and coding more advanced stuff is often to complex to do on-the-fly and should propably be done beforehand. Also, the end result is not astonishing for a 12 year old. You printed out "hello world" to the screen, so what!? It doesn't exactly look like Tekken...<br/><h1>HTML?</h1><br/><img class="alignright" title="HTML coder" src="http://uk.gizmodo.com/homeless-coder.jpg" alt="" width="300" height="302" />This winter I tried a different approach, HTML web pages. The main benefit is that it's really fast to mock up a demo and show something. And it's a technology which's not wrong to teach. When he wants to have something a little more dynamic, show him JavaScript. If he wants a full application; Applets or Flash. He can fairly easily show it to his friends. The only problem I can see is that reading and learning xml syntax, such as can be hard.<br/><br/>After seeing the second web page he had created; "I want to make a scam site for <a href="http://habbo.no">Habbo</a>"<br/>I guess HTML just might have potential...Stighttp://www.blogger.com/profile/17732976186109189576noreply@blogger.com1tag:blogger.com,1999:blog-5771956397849057923.post-14132627445403921252008-12-24T00:25:00.000+01:002011-08-07T08:50:17.644+02:00GStreamer - multimedia fun on a plugin architecture<a href="http://gstreamer.freedesktop.org"><img class="alignright" title="GStreamer logo" src="http://gstreamer.freedesktop.org/data/images/artwork/gstreamer-logo-75.png" alt="" width="203" height="51" /></a>I've poked around <a href="http://gstreamer.freedesktop.org">GStreamer</a> and the <a href="http://code.google.com/p/gstreamer-java/">bindings for Java</a>. GStreamer is a framework for "constructing graphs of media-handling components". For example a video player from "scratch".<a name='more'></a> GStreamer is mainly a linux project with few run-of-the-mill GUI components, hence rough around the edges. But two days of compiling, testing and asking questions on a <a href="irc://irc.freenode.net#gstreamer">lively IRC channel</a>.<br/><h1>Java Bindings</h1><br/>GStreamer-Java is a API binding layer on top of GStreamer. This means Java can be used for composition of the application, and GStreamer is used as a native library which handles the dirty work. As long as the API's are ok and the native API can pull its weight, I'm happy with the division, as the tedious work of adding functionality can be outsourced, and I can focus on the stuff I know.<br/>GStreamer-Java works is nice to work with out of the box. <a href="http://code.google.com/p/gstreamer-java/wiki/Tutorials">The tutorials</a>, borrowed from the parent project, are very well as documentation. I haven't dug through the source, but I'm happy for the time beeing. The project isn't Maven-supported, but <a href="http://groups.google.com/group/gstreamer-java/browse_thread/thread/8ed9009aa83f3012">I've posted a .pom</a> for the needy. The project is <a href="http://code.google.com/p/gstreamer-java/">hosted on google</a>, but I believe the most updated code lies in a <a href="http://projectkenai.com/projects/gstreamer-java">mercurial repo</a>.<br/>The rough edges are concerned with setting up GStreamer, installing native libraries and multimedia components and getting the whole shebang working for each installation. You have been warned! But don't be discouraged; read the next paragraph.<br/><h1>Setting up on a Mac</h1><br/>GStreamer can be installed on a Mac with the help of <a href="http://gstreamer.darwinports.com">MacPorts</a>. Remember to install the gst-plugins-good, and possibly bad and ugly, to get the required libs and components for running the tests. Set the VM parameters in your IDE to -Djna.library.path=/opt/local/lib on mac, /usr/lib on linux. I've had some problems with native libraries on JDK 1.6 on Mac, resulting in the error message:<br/><code>Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'gstreamer-0.10': dlopen(/opt/local/lib/libgstreamer-0.10.dylib, 1): no suitable image found. Did find:<br/>/opt/local/lib/libgstreamer-0.10.dylib: mach-o, but wrong architecture</code><br/>In which case, try switching to JDK 1.5.<br/><h1>Conclusion</h1><br/>Messing with GStreamer has been fun, and alot less hopeless than f*cking with <a href="http://stigl.wordpress.com/ps3-doing-java-sexy-and-almost-there">Java on Blu-Ray</a>. Their web page could need a overhauling when it comes to finding essential information quickly, and messing with native applications is not what Java developers like to do. But the simplicity and potential power of the architecture is really interesting for my upcoming project, and I'm looking forward to poking some more at it.Stighttp://www.blogger.com/profile/17732976186109189576noreply@blogger.com0tag:blogger.com,1999:blog-5771956397849057923.post-51223470903266072912008-12-21T14:30:00.000+01:002011-08-07T08:50:17.645+02:00Do we need WSDL?<img class="size-medium wp-image-255 alignright" title="Waddle by davidw - flickr.com/photos/davidw/2313950805" src="http://stigl.files.wordpress.com/2008/12/waddle.jpg?w=225" alt="Waddle" width="225" height="300" />Joe Gregorio wrote a <a href="http://bitworking.org/news/193/Do-we-need-WADL">blogpost that asks if we need WADL</a>, for describing REST services, and effectively WSDL. He argues that we do not need something as expressive as XSD every time we write a WSDL contract, and that we should avoid doing the same error with REST and WADL.<a name='more'></a><br/>He introduces the concept of using MIME-type standards as the main part of your contract. For example, you would only have to tell that your service is a mail service via a MIME-type instead of creating a gigantic WSDL that describes the different ways you can interact with a mail server. Perhaps we should use this more when we create the contracts for our services?<br/><br/>For those of you who are unfamiliar with REST, I can recommend you <a href="http://www.javaworld.com/cgi-bin/mailto/x_java.cgi?pagetosend=/export/home/httpd/javaworld/javaworld/jw-10-2008/jw-10-rest-series-1.html">reading this article</a>.Stighttp://www.blogger.com/profile/17732976186109189576noreply@blogger.com0tag:blogger.com,1999:blog-5771956397849057923.post-23914375128767651332008-12-21T13:00:00.000+01:002011-08-07T08:50:17.645+02:00GStreamer, can do streamed music?I'm going to take a dive into <a href="http://gstreamer.freedesktop.org">GStreamer</a>, to find out if it is possible to use as a mixer for my music application needs. I'm going to input music from different sources, do some adjusting of volume, effects and write to file or stream to the net.<br/>Can someone give me some pointers to GStreamer, and possibly on <a href="http://code.google.com/p/gstreamer-java">Java</a>?<br/><br/><strong><a href="http://gstreamer.freedesktop.org/features">Features</a></strong>Stighttp://www.blogger.com/profile/17732976186109189576noreply@blogger.com0tag:blogger.com,1999:blog-5771956397849057923.post-17051932280721368382008-12-20T00:50:00.000+01:002011-08-07T08:50:17.645+02:00PS3 doing Java - Sexy, and almost there<img class="alignright" src="http://www.breakitdownblog.com/wp-content/uploads/2007/12/sony_playstation_3.jpg" alt="" width="490" height="337" />The promise of what I have been investigating is that Java applications can be run directly inside the normal PS3 GUI, as well as other Blu-Ray players, without requiring any kind of hacks on behalf of the end user. It may not be the ultimate base for writing applications, but it should not be too hard to port applications, games and so on from other J2ME applications that exist for mobile phones and so on. Shoutcast player or <a href="http://www.operamini.com">Opera Mini</a> on PS3 anyone? :)<br/><br/>This is a summary of developing Java applications on PS3 and Blu-Ray, in hope that someone else will pick up the loose ends.<br/><a name='more'></a><br/><h2>Building from source</h2><br/><a href="https://hdcookbook.dev.java.net">The HDCookBook project</a> is a fair starting point for setting up a development environment. Mainly, this project is about setting up the required surrounding files required for creating the Blu-Ray disk, as well as a couple of examples. The files can be run directly from your hard drive and tested by some DVD-players. The project uses ant for building, which could be helped alot if it were easier to read and getting started, by for example using the maven assembly plugin for packaging the project.<br/><br/>The <strong>nasty bit</strong> is that it requires that you manually find three stub files, like bdj.jar, which requires you sending a mails to ask for them. <a href="http://wiki.java.net/bin/view/Mobileandembedded/BDJPlatformDefinition">More info here</a>. Someone with guts should put those files in a public repository somewhere, since this hinders adoptations enourmosly.<br/><br/><h2>Running from Memory-Stick on PS3</h2><br/>A PS3 can run the application directly from a memory stick instead of through a Blu-Ray disk. This can possibly increase the adoptation of Java application enourmosly. <a href="http://74.125.77.132/search?q=cache:_dOrl-ipqGkJ:www.ps3hax.net/55770-post49.html">silenoz</a> made a <a href="http://www.ps3-hacks.com/2008/07/18/ps3-java-games-launched-via-xmb">running demo</a> based on the HDCookBook project by changing the file names. Setting up the rig is as easy as unzipping.<br/><br/><h2>What are we working with?</h2><br/>Rumor has it that the PS3 has the better Java Virtual Machine (JVM) performance compared to other Blu-Ray players. From what I have gathered, it doesn't sound like Sony has put much effort into creating a Cell-specific JVM (<a href="http://en.wikipedia.org/wiki/Wikipedia:Citation_needed">Citation needed</a>), and it is running interpreted mode of a PowerPC variant. The JVM "distro" is called <a href="http://en.wikipedia.org/wiki/BD-J">BD-J</a>, which is based on Java-TV and J2ME, and must be compiled to Java 1.3. The API is based around <a href="http://en.wikipedia.org/wiki/BD-J#BD-J_Xlet_Capabilities">XLets</a>, which handles the life-cycle.<br/>I have seen some comments that getting the input from the PS3-controller is not as good as one would hope.<br/><br/><h2>Conclusion</h2><br/>Java has a major chance at beeing the less complex, second-citizen programming language for GUI applications on PS3 and Blu-Ray set-top-boxes, which already have a good penetration. The market may not have the same potential as mobile devices, but porting applications may be possible without too much fuss. I believe there are large numbers of developers who would wish to write small applications for this plattform, but the main obstacle for getting started with developing is setting up the development environment. Beeing able to deploy and test applications via Memory Sticks on PS3's could mean a lot of difference.Stighttp://www.blogger.com/profile/17732976186109189576noreply@blogger.com0tag:blogger.com,1999:blog-5771956397849057923.post-320998825659761162008-12-09T12:38:00.000+01:002011-08-07T08:50:17.645+02:00Setting up a BD-J development environment sucks!I've recently looked at how one can set up a Blu-ray development environment for developing Java apps on a PS3.<br/>The <a href="https://hdcookbook.dev.java.net">HDCookBook project</a> seems like a good starting place, since you need alot of files to surround your BD-J Java apps when on the disk. Fine enough, but expect some hassle of changing file names if you want to put them on a memorystick. <br/>Next step, run ant for compiling the project... You need to download "BDJ.jar". You can find it AFTER INSTALLING NERO ON WINDOWS. Aaargh. Three hours later, we've found our bdj.jar. <br/><a href="http://java.sun.com/javame/downloads/sdk30ea.jsp">Java ME SDK</a>? It requires you to register at Sun... Ok, done that. Next step, Install sun_java_me_sdk-3_0-ea-win.exe on Windows. I HAVE A MAC!!! AHRG! Who needs multi-platform portable javacode when you can distribute it as .exe files!?<br/><br/>Do they even want people to develop on their platform? This is not inviting! And stop the stupid Ant stuff. Maven is the only way of distributing sourcecode and knowledge that works.Stighttp://www.blogger.com/profile/17732976186109189576noreply@blogger.com0tag:blogger.com,1999:blog-5771956397849057923.post-42068079663013926792008-12-09T11:00:00.000+01:002011-08-07T08:51:00.506+02:00Java on PS3<img class="alignleft" src="http://java.com/en/about/brand/img/java_powered_logo_rgb.gif" alt="" width="70" height="131" />Today, I saw a Java Powered logo on the side of my PS3 box. Hmm... What does that mean?<br/><br/>If you install linux on the PS3, it can ofcourse run Java. But my sources indicate that it has little resources, and the requirements for installing are a little tough for the regular gamer.<br/><br/>The JVM installed on PS3 is placed there to meet the BluRay standard to show menus and stuff, called <a href="http://en.wikipedia.org/wiki/BD-J">BD-J</a>. From what I can gather after a quick Google, its an interpreted JVM, which is far slower than a regular Sun JVM. The PS3 is claimed to be one of the fastest, but probably not optimized in any way to cater for the multitude of Cell processors. And the BD-J does not help running Java applications in the web browser.<br/><br/><img class="alignright" src="http://www.breakitdownblog.com/wp-content/uploads/2007/12/sony_playstation_3.jpg" alt="" width="490" height="337" />So, why would we want a native JVM on the PS3 specialized for Cell? Because it's damn cool :) Perhaps for running web servers. But a JVM capable of running Applets in the PS3 Web Browser could mean that Sony could capitalize on the enourmous amounts of Java games located on the web available freely to PS3 owners. Ofcourse, the native games will still have better funding and perform better, but allowing free applications could create the same community of developers and games as Apple has benefited from. Without the drawback of locking in developers to a single platform.<br/><br/><h2>Update</h2><br/>Apparently, <a href="http://www.ps3-hacks.com/2008/07/18/ps3-java-games-launched-via-xmb">running games off a USB memory stick works</a>. Will be back with more on the subjectStighttp://www.blogger.com/profile/17732976186109189576noreply@blogger.com0tag:blogger.com,1999:blog-5771956397849057923.post-22620068539499986262008-12-07T00:54:00.000+01:002011-08-07T08:51:00.507+02:00Groovy does Neo4J thanks to Maven SimplicityGuillaume Laforge, <a href="http://groovy.codehaus.org">Groovy Project</a> Manager, kicked off a debate on the Neo4J mailing list with his post <a href="http://lists.neo4j.org/pipermail/user/2008-November/000915.html">Groovy and Neo4J</a>. He stated some examples of how Neo4J could be more Groovy. However, since most Neo4J developers aren't familiar with Groovy, the topic wasen't tested out further.<a href="http://groovy.codehaus.org/"><img class="alignright" title="Groovy Image" src="http://media.xircles.codehaus.org/_projects/groovy/_logos/medium.png" alt="" width="203" height="100" /></a><br/><br/>Therefore, with of my L337 skillz in Groovy, Neo4J and Maven, I saw it my destiny to create a simple Neo4J test in a Groovy environment to validate Guillaume's propositions. Along the way, I had to add some <a href="http://groovy.codehaus.org/GMaven">GMaven magic</a>, embedded <a href="http://neo4j.org">Neo4J</a>, <a href="http://www.selenic.com/mercurial">Mercurial</a> version control and <a href="http://maven.apache.org/guides/introduction/introduction-to-archetypes.html">Maven Archetype</a> for distribution. No wonder why I didn't get this out the door yesterday! ;)<br/><a name='more'></a><br/><h2>The Proposition</h2><br/><code> firstNode.setProperty( "message", "Hello, " );</code><br/>Groovy handles the setProperty/getProperty methods in a particular fashion, and without doing anything special, you should be able to directly use this nicer syntax in Groovy:<br/><code> firstNode.message = "Hello"</code><br/>...<br/>Combining everything:<br/><code>[<br/>[name: "Neo"],<br/>[KNOWS: [since: someDate],<br/>[name: "Trinity"]<br/>]</code><br/><h2>The Result</h2><br/>Setting up the demo takes less than 1 min!!! No unzip and stuff, and you get both a Java and Groovy version of the code. (You need Maven installed, and the time for automatically downloading from the toobs.) However, the proposed handling of properties did not work directly. Possibly due to not implementing the right interface (?) The more advanced example is a little harder to get around, so I just dropped it :)<br/>The conclusion: Groovy just might have a nice syntax for writing the data-entries. However, I didn't get it up and running as proposed, and therefore I am quite happy with getting a demo up and running on Groovy, and am passing the task of making the proposition work to Guillaume and the Neo4J team.<br/>More on Maven Archetype soon to come.<br/><h2>Instructions</h2><br/><h3>Downloading and setting up the code</h3><br/><code>mvn archetype:generate -DgroupId=org.neo4j -DartifactId=neo4j-groovy-test -DarchetypeArtifactId=helloworld-test -DarchetypeGroupId=no.lau.neo4j -DarchetypeVersion=0.1 -DarchetypeRepository=http://ultimate-roundtrip.googlecode.com/svn/trunk/maven-repository</code><br/><code>cd neo4j-groovy-test</code><br/><h3>Testing</h3><br/><code> mvn test<br/>-------------------------------------------------------<br/>T E S T S<br/>-------------------------------------------------------<br/>Running TestSuite<br/>[Parser] Running:<br/>Command line suiteRunning Groovy tests<br/>Thomas Andersson's friends:<br/>At depth 1 => Trinity<br/>At depth 1 => Morpheus<br/>At depth 2 => Cypher<br/>At depth 3 => Agent Smith<br/>Finding hackers<br/>Hackers:<br/>At depth 4 => The Architect<br/>Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.111 sec<br/><img class="alignright size-medium wp-image-90" title="gmaven-console1" src="http://stigl.files.wordpress.com/2008/10/gmaven-console1.png?w=300" alt="gmaven-console1" width="300" height="160" /><br/><h3><a href="http://stigl.wordpress.com/smacking-up-a-groovy-demo-in-less-than-10-seconds">Smacking up a quick IDE for running the code and testing</a><a href="http://stigl.wordpress.com/smacking-up-a-groovy-demo-in-less-than-10-seconds"></a></h3><br/><code>mvn groovy:console</code><br/><br/></code>Stighttp://www.blogger.com/profile/17732976186109189576noreply@blogger.com3tag:blogger.com,1999:blog-5771956397849057923.post-24063511336460301422008-12-04T15:07:00.000+01:002011-08-07T08:51:00.507+02:00Bleeding Edge Technology<a href="http://stigl.files.wordpress.com/2008/12/bloody-knife.jpg"><img src="http://stigl.files.wordpress.com/2008/12/bloody-knife.jpg?w=300" alt="bloody-knife" title="bloody-knife" width="300" height="225" class="alignright size-medium wp-image-221" /></a><br/><br/>Proverb of the day: <em>Bleeding Edge Technology - It aint fun if it doesn't hurt</em>Stighttp://www.blogger.com/profile/17732976186109189576noreply@blogger.com0tag:blogger.com,1999:blog-5771956397849057923.post-7184995613557206442008-11-30T23:41:00.000+01:002011-08-07T08:51:00.507+02:00On demand development IDE plugin as a resource to the source codeA cumbersome task which everyone who wants to join a software development project, opensourcy or enterpricy, is setting up the development appropriately. This is becoming more apparent due to the new programming and scripting languages and frameworks like Rails which pop up every now and then. We are getting somewhere (<a href="http://maven.apache.org">Maven 2</a>)when it comes to making sure the source code compiles and runs out of the box. But the development environments still need to be downloaded, installed, and configured (allthough Maven can help here) and license keys entered.<br/><br/>However, there is hope!<a name='more'></a> <a href="http://stigl.files.wordpress.com/2008/10/gmaven-console1.png"><img src="http://stigl.files.wordpress.com/2008/10/gmaven-console1.png?w=128" alt="gmaven-console1" title="gmaven-console1" width="128" height="68" class="alignright size-thumbnail wp-image-90" /></a>GMaven can produce a simple texteditor which can run Groovy code in context of an entire project, all dependencies inclusive, with the help of a Maven plugin run from the command line. More details in <a href="http://stigl.wordpress.com/smacking-up-a-groovy-demo-in-less-than-10-seconds">Smacking up a Groovy demo in less than 10 seconds</a>.<br/><br/>I believe that it would be beneficial for development environment vendors to package their product as a simple stripped-down version of their software that can be packaged as a free alternative to bells-n-whistles product, as a Maven plugin or similar. The benefit for the software vendors is exposure and increased penetration in the marcet, as well as simpler installation. IDE plugins can lower the bar for introducing new developers to the project, and open source projects can benefit from recommending a free alternative for getting started.<br/><br/>So, Jetbrains, Eclipse and Netbeans; when can I get my IDE plugin?Stighttp://www.blogger.com/profile/17732976186109189576noreply@blogger.com0tag:blogger.com,1999:blog-5771956397849057923.post-69089140623173355212008-11-18T19:57:00.000+01:002011-08-07T08:51:00.507+02:00Grails impresses yet again with its plugins - Todays tidbit:
SoundManagerGrails and its plugins doesn't cease to impress me. I tested out the <a href="http://grails.org/SoundManager+Plugin">Grails SoundManager plugin</a> today, which is a thin gsp wrapper around a <a href="http://schillmania.com/projects/soundmanager2">javascript library for playing mp3's in a webpage</a>. The documentation is short, has all you need to know, and Grails fixes the rest. Just what I need for creating my web-playable music "shop".<br/><br/><strong>Update</strong> - SoundManager will also play videos and streamed content :DStighttp://www.blogger.com/profile/17732976186109189576noreply@blogger.com0tag:blogger.com,1999:blog-5771956397849057923.post-80505928254548165162008-11-14T13:05:00.000+01:002011-08-07T08:51:00.507+02:00Does insta-backup Dropbox impress the blasé crowd?<a href="http://stigl.files.wordpress.com/2008/11/small_logo.gif"><img src="http://stigl.files.wordpress.com/2008/11/small_logo.gif" alt="DropBox small logo" title="DropBox small logo" width="167" height="50" class="alignright size-full wp-image-201" /></a>I tried out <a href="http://getdropbox.com">dropBox</a> today. Nice intro vid, simple app for mac which says that "Everything inside this folder is kept up to date with what's on the web. If you do any changes, they are instamatically updated elsewhere" Not only that, but if you have another machine online that uses the same account and has the same file, they are automatically updated. Did I mention versioning? <br/>One use is the shared-excel-spredsheet which holds all the current tasks and work in progress.<br/><br/><a href="http://stigl.files.wordpress.com/2008/11/cloudbox.gif"><img src="http://stigl.files.wordpress.com/2008/11/cloudbox.gif?w=300" alt="cloudbox" title="cloudbox" width="300" height="240" class="alignright size-medium wp-image-202" /></a><h2>Wow, nice</h2><br/>now I can both do backup and collaboration with other people via the web. Next thought is; I've already thought out how I could do the same stuff with Subversion. Only thing is that neither me or anyone else had the time to implement it. <br/><br/><h2>Are we blasé?</h2><br/>First people go "oooh, I've never seen anyone do that before", 5 minutes later, they're browse off to <a href="http://slashdot.org">slashdot</a>. Jesus would have a hard time finding a crowd these days.Stighttp://www.blogger.com/profile/17732976186109189576noreply@blogger.com0tag:blogger.com,1999:blog-5771956397849057923.post-91517963721943404152008-11-12T13:07:00.000+01:002011-08-07T08:51:00.508+02:00Grails 1.1 got Maven support - So What?You know you've been wasting too much time blogging in the sphere when, <a href="http://twitter.com/graemerocher/status/1000520179">renowned developers start stalking YOU</a> :)<br/>Anywho, the comment I recieved informed me that <a href="http://grails.org/Maven+Integration">Grails 1.1 Maven support is out</a>, giving Maven developers much needing air-mileage towards a Grails firstclass-citizen-goldcard. Predecessor Octo was, what I reckon, a shell around Ant scripts for doing Grails tasks, distancing Maven from responsibility of doing the nitty-gritty building and wiring.<br/><br/><h2>So why should you care who builds your Grails project?</h2><br/>Because of the nifty reusable plugin functionality you get out of the box from maven. And more importantly with Grails, control of how you wire your app together.<br/><br/><h2>The current state of the new Maven plugin</h2><br/>I can't see no Ant anywhere. It might be because I've been lazy and havent poked around the poms, but until contradicted, I choose to believe that Maven is in charge. One difference is the added folders, src/main/webapp aso. <strong>Does it work as it should yet?</strong> Of course not, it wouldn't be bleeding edge if it did, but well enough for me to get a good impression and a <a href="http://jira.codehaus.org/browse/GRAILS-3562">list of issues</a> to report back on.<br/><br/><h2>Conclusion</h2><br/>If the Maven plugin picks up speed inside GrailsDev, I'm a happy camper! Good Work!Stighttp://www.blogger.com/profile/17732976186109189576noreply@blogger.com0tag:blogger.com,1999:blog-5771956397849057923.post-84756326970799751722008-11-12T09:27:00.000+01:002011-08-07T08:51:00.508+02:00Idea for create-archetype-from-existing-project pluginThe project I'm working on is teh best, and I don't have time to create an <a href="http://maven.apache.org/plugins/maven-archetype-plugin">archetype</a> from it! Why should I need to structure the project in a different way to create the archetype? If I do that, I cannot continue working on the code. The plugin should be able to rip out all the non-generic stuff, like groupId, projectId, folders, wrap them in templates so they are automatically filled and presto, you have a new archetype.Stighttp://www.blogger.com/profile/17732976186109189576noreply@blogger.com3