\r\n\r\n\r\n
\r\n\r\n\r\n\r\n\r\n\r\n

\r\nLive at GraphConnect: a Challenge for You

\r\n\r\nSo our desktop Zen-Table will be there at GraphConnect, waiting for you \r\nin our Community Café. We're super excited about having this \r\nopportunity to hack with it.\r\n
\r\nWe thought about combining the Zen with a Raspberry Pi to allow external access via http and running a JavaScript engine on the Pi to generate the necessary table-script on demand.\r\n
\r\n\r\n
\r\n\r\n

\r\n\r\nYour challenge is now to come up with graph renderings that are well \r\nsuited to visualize a small or medium size dataset on the sand of the \r\nZen-Table. You can try your ideas at zen-table.com with some static graph data.\r\n
\r\nWe look forward to your suggestions and will invite the two best ideas to come along to GraphConnect.

 

 

 

","bodyAsHTML":"

 Editor's Note: This post was originally written by Michael Hunger at the Neo4j blog.

As you probably know by now, we plan to run GraphConnect on Nov 6 2012 in San Francisco.
\r\nFor the event, the Neo4j community team devised some interesting hacking challenges.
\r\nOne challenge is recording an interaction-graph based on OpenBeacon-RFID tracking much like the one we worked on during JRubyConf.EU
\r\nThe other one has a backstory:
\r\n

\r\nAndreas and Michael were chatting about graph datasets, their representation and especially conference data\r\n related to\r\n GraphConnect. Andreas suggested to rake the visualizations in sand much\r\n like you'd do in a Zen-Garden. So Michael started to search the web for\r\n javascript libraries that would be able to achieve such an effect but \r\ncame across something much more incredible. The kickstarter-backed \r\nZen-Table project by Simon Hallam is a autonomous Zen garden in a box \r\n(on a table).\r\n
\r\n
\r\n

Zen-Table is an ingenious mechanism consisting of a microcontroller, \r\nstrong neodynium magnets and a plotter like mechanism to move the \r\n"drawing head" across sand on top of a coffee- or desktop-table. Of \r\ncourse the table is programmable. It allows for static images from a \r\nSD-card to be drawn in the sand and also dynamic renderings via an \r\nUSB-port.\r\n
\r\n

\r\n\r\n

The drawing is controlled with programming language called table-script which has some basic commands like: Robot.LineTo(x,y,final-speed) or Robot.LineToSmooth(x,y), Robot.Clear[X|Y](), Robot.Home() and some more. Simon created a javascript library to generate that table-script on demand as well as an image tracer. You can find all this in action at zen-table.com.\r\n

\r\n
\r\n
\r\n\r\n

First ever Zen-Desktop table shipped, unboxed and tested

\r\n

\r\n During our crazy meetup week in the Bay Area we arranged for the first \r\nZen-Desktop-Table to be shipped to our place. We couldn't await to unbox\r\n it and try it out.\r\n After spending a great day in the awesome premises of the HeavyBit office - Herokus Add-On-Provider incubator. - thanks James & Jason - the unboxing was a worthy highlight of the evening party there.\r\n

\r\n \r\n \r\n

\r\n As we love to work with Heroku and their incredible employees, we \r\nsponaneously decided to give the Zen-Table into the caring hands of our \r\nHeroku friends as a small token of friendship. And obviously they liked \r\nit.\r\n

\r\n

Love from an add-on provider. This thing is amazing. Neo4j instagr.am/p/QQVkFLvwPz/\r\n

— Oren Teich (@teich) October 1, 2012\r\n
\r\n \r\n\r\n\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n

\r\nLive at GraphConnect: a Challenge for You

\r\n\r\nSo our desktop Zen-Table will be there at GraphConnect, waiting for you \r\nin our Community Café. We're super excited about having this \r\nopportunity to hack with it.\r\n
\r\nWe thought about combining the Zen with a Raspberry Pi to allow external access via http and running a JavaScript engine on the Pi to generate the necessary table-script on demand.\r\n
\r\n\r\n
\r\n\r\n

\r\n\r\nYour challenge is now to come up with graph renderings that are well \r\nsuited to visualize a small or medium size dataset on the sand of the \r\nZen-Table. You can try your ideas at zen-table.com with some static graph data.\r\n
\r\nWe look forward to your suggestions and will invite the two best ideas to come along to GraphConnect.

 

 

 

","author":{"id":826095,"username":"akollegger","realname":null,"emailHash":"76b2eeff6d2b9c2bc6e7ce31da7e0ed2","avatar":"https://secure.gravatar.com/avatar/76b2eeff6d2b9c2bc6e7ce31da7e0ed2?d=identicon&r=PG","reputation":0},"activeRevisionId":544232,"revisionIds":[544230,544232,544231],"lastActiveUserId":826095,"lastActiveDate":1351471218000,"parentId":null,"parentAuthor":null,"originalParentId":null,"childrenIds":[],"commentIds":[],"marked":true,"topics":["tips and tricks","nosql","architects","neo4j"],"primaryContainerId":8,"containerIds":[7,8],"plug":"zen-graph-visualizations-cool","wiki":false,"score":0,"depth":0},"enableThreadedComments":true,"portal":{"topic":{"id":"59","type":"topic","creationDate":1434655010000,"creationDateFormatted":"06/18/2015 07:16 PM","name":"database","createdBy":{"id":2,"username":"matt"},"parentTopics":[],"childTopics":[],"usedCount":28934},"blurb":"Database, SQL & NoSQL news and training resources from DZone, the trusted source for learning advanced software design, web development and devops best practices.","code":"database","id":5,"creationDate":1434673820000,"creationDateFormatted":"06/19/2015 12:30 AM","displayTitle":"Database Zone: Database, SQL & NoSQL news, tutorials & tools","title":"Database","new":false,"order":4,"shortTitle":"database-sql-nosql-tutorials-tools-news","color":"purple","pageTitle":"Database, SQL & NoSQL Tutorials, News & Jobs - DZone","active":true,"modificationDate":1437509399000,"modificationDateFormatted":"07/21/2015 08:09 PM"},"contentType":"article"}],"loadedStyles":[["/lib/bootstrap/bootstrap.less","/lib/font-awesome/font-awesome.less","/lib/fontello/css/fontello.css","/lib/fontello/css/animation.css","/lib/angular-ui/select.css","/lib/ngDialog/css/ngDialog.css","/less/ngDialog-theme.less","/lib/bootstrap-switch/bootstrap-switch.css","/less/dzone20.less","/less/fonts.less","/less/directives.less","/lib/slick/slick.css","/lib/bootstrap-slider/bootstrap-slider.css","/less/layout.less","/widgets/article/content/article-content.less","/widgets/article/infoBar/widget.less","/widgets/components/slider/widget.less","/widgets/content/commentsSlider/widget.less","/widgets/header/blackBar/widget.less","/widgets/header/main/header-common.less","/widgets/header/main/widget.less","/widgets/sidebar/content/list/list.less","/widgets/sidebar/tapBar/sidebar-list.less","/widgets/sidebar/tapBar/widget.less","/widgets/users/UserHomeMiniProfile/widget.less"]],"loadedScripts":[["/lib/jquery/jquery.js","/lib/lodash/lodash.js","/lib/moment/moment.js","/scripts/utils.js","/lib/angular/angular.js","/lib/angular/angular-sanitize.js","/lib/local-storage/angular-local-storage.js","/lib/bootstrap/bootstrap.js","/lib/angular-ui/bootstrap.js","/lib/angular-ui/select.js","/lib/bootstrap-switch/bootstrap-switch.js","/lib/ngDialog/js/ngDialog.js","/lib/angular-moment/angular-moment.js","/scripts/app.js","/scripts/socket.js","/scripts/services.js","/scripts/ui-services.js","/scripts/directives.js","/scripts/filters.js","/lib/angular-touch/angular-touch.min.js","/lib/elastic/elastic.js","/lib/ng-file-upload/angular-file-upload-all.js","/lib/angular-deckgrid/angular-deckgrid.js","/scripts/dzone.js","/scripts/ads.js","/scripts/head.js","/scripts/links.js","/scripts/utilities/directives.js","/scripts/utilities/services.js","/scripts/utilities/image-editor.js","/lib/bootstrap-slider/bootstrap-slider.js","/lib/bootstrap-slider/directive.js","/lib/angular-draganddrop/draganddrop.js","/widgets/article/content/utils.js","/widgets/article/infoBar/services.js","/widgets/components/slider/service.js","/widgets/header/main/angulartics-ga.js","/widgets/header/main/angulartics.js","/widgets/header/main/resize.js","/widgets/sidebar/content/list/service.js","/widgets/sidebar/tapBar/directive.js","/widgets/sidebar/tapBar/service.js"]],"TH_CSRF":"-1011547775074479108","botInfo":[{"isRenderBot":false}],"request":[{"site":{"id":7,"title":"DZone: Programming & DevOps news, tutorials & tools","keywords":"programming, software development, devops, java, agile, web, iot, database, mobile, big data, cloud","description":"Programming, Web Development, and DevOps news, tutorials and tools for beginners to experts. Hundreds of free publications, over 1M members, totally free.","name":"DZone.com"},"dev":false,"cdn":["dz2cdn1.dzone.com","dz2cdn2.dzone.com","dz2cdn3.dzone.com","dz2cdn4.dzone.com"],"theme":"dz20","context":"","user":{"id":2500002,"authenticated":false,"name":"Anonymous","realName":null,"avatar":"https://secure.gravatar.com/avatar/?d=identicon&r=PG","profile":"/users/2500002/anon-user.html"}}],"portals":[[{"topic":8,"id":2,"shortTitle":"agile-methodology-training-tools-news","color":"red","name":"Agile","code":"agile","url":"/agile-methodology-training-tools-news"},{"topic":6129,"id":3,"shortTitle":"big-data-analytics-tutorials-tools-news","color":"green","name":"Big Data","code":"big-data","url":"/big-data-analytics-tutorials-tools-news"},{"topic":30,"id":4,"shortTitle":"cloud-computing-tutorials-tools-news","color":"orange","name":"Cloud","code":"cloud","url":"/cloud-computing-tutorials-tools-news"},{"topic":59,"id":5,"shortTitle":"database-sql-nosql-tutorials-tools-news","color":"purple","name":"Database","code":"database","url":"/database-sql-nosql-tutorials-tools-news"},{"topic":31,"id":6,"shortTitle":"devops-tutorials-tools-news","color":"yellow","name":"DevOps","code":"devops","url":"/devops-tutorials-tools-news"},{"topic":1138,"id":7,"shortTitle":"enterprise-integration-training-tools-news","color":"green","name":"Integration","code":"integration","url":"/enterprise-integration-training-tools-news"},{"topic":48,"id":8,"shortTitle":"iot-developer-tutorials-tools-news-reviews","color":"orange","name":"IoT","code":"iot","url":"/iot-developer-tutorials-tools-news-reviews"},{"topic":1,"id":1,"shortTitle":"java-jdk-development-tutorials-tools-news","color":"purple","name":"Java","code":"java","url":"/java-jdk-development-tutorials-tools-news"},{"topic":29,"id":9,"shortTitle":"mobile-app-developer-tutorials-tools-news","color":"yellow","name":"Mobile","code":"mobile","url":"/mobile-app-developer-tutorials-tools-news"},{"topic":653,"id":10,"shortTitle":"apm-tools-performance-monitoring-optimization","color":"red","name":"Performance","code":"performance","url":"/apm-tools-performance-monitoring-optimization"},{"topic":35,"id":11,"shortTitle":"web-development-programming-tutorials-tools-news","color":"orange","name":"Web Dev","code":"webdev","url":"/web-development-programming-tutorials-tools-news"}]],"matchedUrl":{"name":"dzone:articles:view","mapping":"/articles/**","mappingPatterns":{}},"requiresModule":["angulartics","angulartics.google.analytics","dndLists","generalDirectives","monospaced.elastic","angularFileUpload","akoenig.deckgrid","ui.bootstrap-slider","ngSanitize","ui.select","ui.bootstrap","angularMoment","ngTouch","ngDialog","LocalStorageModule"]}; } catch(e) { console.error(e); }
4
Notification
  • Adam Van Grack started following you

  • Jessica Conaghan, Gumption Scott and 6 commented on a link you posted

    T-Mobile Unvells Cheaper, More Basic 'Simple Prepaid' Phone Plans

  • Jessica Conaghan replied on a comment you posted

    CSS counters are one of those "oh neat, didn't know CSS could do that" features with a lot of Xubuntu 14.10 Utopic Unicorn is the latest release of xubuntu based on Ubuntu 14.10

  • Jessica Conaghan started following you

See All
POWERED BY DZone TeamHub
\r\n\r\n\r\n
\r\n\r\n\r\n\r\n\r\n\r\n

\r\nLive at GraphConnect: a Challenge for You

\r\n\r\nSo our desktop Zen-Table will be there at GraphConnect, waiting for you \r\nin our Community Café. We're super excited about having this \r\nopportunity to hack with it.\r\n
\r\nWe thought about combining the Zen with a Raspberry Pi to allow external access via http and running a JavaScript engine on the Pi to generate the necessary table-script on demand.\r\n
\r\n\r\n
\r\n\r\n

\r\n\r\nYour challenge is now to come up with graph renderings that are well \r\nsuited to visualize a small or medium size dataset on the sand of the \r\nZen-Table. You can try your ideas at zen-table.com with some static graph data.\r\n
\r\nWe look forward to your suggestions and will invite the two best ideas to come along to GraphConnect.

 

 

 

","source":"blog.neo4j.org/2012/10/zen-graph-visualizations-what-can-you-do.html","views":4313,"articleDate":1351471218000,"tldr":null,"originalSource":"http://blog.neo4j.org/2012/10/zen-graph-visualizations-what-can-you-do.html","published":true,"nComments":0,"articleType":""}]; WMODEL_DATA.perms = {"canDecidePick":false,"canPublish":false}; WMODEL_DATA.isPreview = false; WMODEL_DATA.OPTIONS = {}; TH.installWidgetController('article.content', 'articleContent7', WMODEL_DATA, typeof controller == 'function' ? controller : null, [{name: 'partners', data: true},{name: 'DEFAULT', data: true}], ' oUhbblYOaqbcblYOaqbcC', null); })(); (function() { function controller($scope, $service, $location, SideBarService, TH$Request) { SideBarService.ctx.pageSize = $scope.pageSize; SideBarService.ctx.isPreview = $scope.isPreview; SideBarService.ctx.mode = $scope.mode; SideBarService.fn.loader = $service; SideBarService.fn.scrollCheck = function() { $scope.$emit('thIfScrollCheck'); }; var currentFilter; $scope.$on('$locationChangeSuccess', function() { if (!$location.search().filter) { $scope.filter = 'latest'; } else { $scope.filter = $location.search().filter; if ($scope.filter == 'latest') { $location.search('filter', null); } } if (currentFilter == $scope.filter) { return; } currentFilter = $scope.filter; SideBarService.ctx.filter = $scope.filter; }); $scope.display = SideBarService.getList(); $scope.$watchCollection(function() { return SideBarService.getList(); }, function (n) { $scope.display = n; }); $scope.isActive = SideBarService.isActive; $scope.isExcluded = SideBarService.isExcluded; $scope.loadMore = SideBarService.load; $scope.loading = function() { return SideBarService.ctx.loading; } } var WMODEL_DATA = {}; WMODEL_DATA.pageSize = 20; WMODEL_DATA.isPreview = false; WMODEL_DATA.OPTIONS = {}; WMODEL_DATA.mode = null; TH.installWidgetController('sidebar.content.list', 'sidebarContentList10', WMODEL_DATA, typeof controller == 'function' ? controller : null, [{name: 'DEFAULT', data: true}], ' oUhbkSMaaqbcdvVkcC', null); })(); (function() { var WMODEL_DATA = {}; WMODEL_DATA.OPTIONS = {}; TH.installWidgetController('sidebar.tapBar', 'sidebar', WMODEL_DATA, typeof controller == 'function' ? controller : null, null, ' oUhbkSMadabfWVcC oUhbkSMadabbWQbVkcC', null); })(); (function() { function controller($scope, shareThis, TH$Dialog, TH$Service) { $scope.getEditUrl = function(id, type) { if (!type || type == 'article') { return '/content/' + id + '/edit.html'; } else { return '/dzone/staff/' + type + (type == 'refcard' ? 'z' : 's') + '/' + id + '/edit.html'; } } $scope.share = function(socialNet, url, title){ shareThis.shareThis(socialNet, url, title); }; $scope.canDelete = function(article) { return article.canDelete; } $scope.edit = function(link) { TH$Dialog.open({ loadWidget: 'links.postPreview', widgetArgs: { edit: link.id }, size: 'xbig' }).then(function (result) { $scope.link.title = result.title; $scope.link.linkDescription = result.content; $scope.link.thumb = result.thumb; $scope.link.tags = result.topics; }); }; $scope.deleteLink = function(article) { var title = article.title; var type = 'link'; if(article.header){ title = (article.header.type == 'article') ? article.header.title : article.title; type = (article.header.type == 'article') ? 'article' : 'link'; } TH$Dialog.confirm('Do you want to delete "' + title + '"?').then(function() { return TH$Service.action('delete', {type: type, id: article.id}); }).then(function() { article.deleted = true; }); }; } var WMODEL_DATA = {}; WMODEL_DATA.OPTIONS = {}; TH.installWidgetController('content.commentsSlider', 'contentCommentsSlider9', WMODEL_DATA, typeof controller == 'function' ? controller : null, null, ' oUhbaqbcaibvnWffWVcC', null); })(); (function() { var WMODEL_DATA = {}; WMODEL_DATA.name = "commentsSlider"; WMODEL_DATA.slot = null; WMODEL_DATA.OPTIONS = {"name":"commentsSlider"}; TH.installWidgetController('components.slider', 'componentsSlider8', WMODEL_DATA, typeof controller == 'function' ? controller : null, null, ' oUhballbvbdSaoUhM', null); })();