Quantcast
Channel: comSysto Blog » Frontend Development
Viewing all 14 articles
Browse latest View live

Adobe Flash Catalyst: Testbeispiel

$
0
0
Adobe Flash Catalyst

Ein sehr gutes Einstiegsbeispiel für Adobe Flash Catalyst:

http://createordie.de/cod/artikel/Flash-Catalyst-2575.html

Nachdem man das Beispiel durchgespielt hat, versteht man auch warum die vielversprechende Software es noch nicht in die Ladenregale geschafft hat. Das Setzen der Eigenschaften der Komponenten funktionert noch nicht.

Gelangt man zum letzten Schritt, bei dem man “setProperty” setzen möchte um das mittlere Bild bei den Transitions vom 1. bis zum 3. Bild und umgehehrt auszublenden, stellt man fest dass eine BETA Software eben mal Mängel hat. Durch Klicken auf “Add Action” legt man zwar eine Aktion an, aber dann kann man die Properties im Property-Reiter nicht bearbeiten. Dieses Problem lässt sich durch folgende Code-Modifizierung (z.B. im Flash Builder) beheben.

Adding an instance of the Fade Class

Innerhalb der Transitions:  fromState=”Page3″ toState=”Page1″ und fromState=”Page1″ toState=”Page3″ fügt man noch eine Instanz der “Parallel  – Klasse” ein. Durch den Fade – Effekt kann man beispielsweise das mittlere Bild transparent schalten. Das “autoReverse” property macht dies rückgängig, sobald man zu einem anderen “State” wechselt.



Apache Wicket Training von comSysto und jWeekend

$
0
0

comSysto und jWeekend laden zum ultimativen Apache Wicket Training im Münchner Technologiezentrum (MTZ). Lernen Sie in 2 Tagen anhand sorgfältig aufeinander abgestimmter Theorieteile und praktischer Beispiele mit uns, wie man Webanwendungen der nächsten Generation mit Hilfe des führenden Frontend-Frameworks entwirft und implementiert.

Beginn: Do, 11.11.2010, 09:00
Ende: Fr, 12.11.2010, 17:00

Ort:
comSysto GmbH (Münchner Technologiezentrum)
Agnes-Pockels-Bogen 1
80992 München

Kursgebühr pro Teilnehmer: EUR 800,-

Kursunterlagen und praktische Übungen sind in Englisch, unsere Trainer deutschsprachig.

Anmeldung und mehr Details über XING:

https://www.xing.com/events/apache-wicket-training-comsysto-jweekend-581458

Flyer-Download:

http://www.comsysto.com/flyer/ApacheWicket.pdf

Email-Anmeldung und Kontakt: office[at]comsysto.com.

Wir freuen uns auf Ihre Kontaktaufnahme!


How to integrate Google Maps in a website using jQuery in 3 steps

$
0
0

comSysto Google Maps

There are lots of powerful jQuery plugins out there. Let’s have a look how jQuery’s Plugin jMaps can help us to integrate a Google Maps goodie in a website. jMaps is originally developed by DigitalSpaghetti and can be downloaded from the plugin section on jQuery.com. So let’s start:

Step 1: Google Maps Key
Get google maps key to access google maps service and add following tag to your website:

<script src=”http://maps.google.com/maps?file=api&v=2&key=YOUR_KEY_HERE&#8221; type=”text/javascript”></script>

Remember that for displaying Google Maps in your local environment it is not necessary to enter a valid key, but once you are ready to go your maps widget will not work without the key. Google uses it to prevent fraud and misuse of the API and assigns it to each person individually.

Step 2: Modify your HMTL
First you need to refer to jQuery library and to downloaded jMaps file. Add following two tags with your individual file- and folder names (and paths) to your HTML file

<script type=”text/javascript” src=”scripts/jquery-1.4.4.min.js”></script>
<script type=”text/javascript” src=”scripts/jquery.jmap.js”></script>

..and provide a DIV container (feel free to use any other HTML tag) where you want your Google Maps widget to be inserted. For instance:

<div id=”googleMap”></div>

Step 3: Call the jMap function
Now all you need to do is to call the jMap function and feed it with map data you want to be displayed. There are several way to do it. You can either insert an internal script snippet into your HTML file, or you can create a new external JavaScript document and call the jMap function using the $(document).ready(function() {}). I prefer to link to external JavaScript files just before the closing </body> tag at the end of the DOM. Doing this you can skip the $(document).ready - stuff, since this is only telling the browser: “Wait till you have the complete DOM”. Since the script link appears on the end of the DOM the DOM is already ready and you can give your fingers a break. So lets fire the jMap:

$(‘#googleMap’).jmap(‘init’, {
mapCenter:[48.173224, 11.530809],
mapShowjMapIcon: false,
mapZoom: 12,
mapControlSize: ‘large’,
mapEnableDoubleClickZoom: true
});
$(‘#googleMap’).jmap(‘addMarker’, {
pointLatLng:[48.173224, 11.530809]
});


Lets have a look what all this Options stand for
With the first line of code you select the HTML tag with id=”googleMap” using jQuery’s CSS Selector ‘ #googleMap’ and fire the jMap function giving it a Object Literal with several attributes. Most of them are self explaining except of those magic numbers for the mapCenter. Those coordinates you can get on the Google Maps page by entering wished address into the maps form. Once Google Maps has displayed the requested section of the map you can get the according coordinates by entering following magic spell into the location bar of your browser:

javascript:void(prompt(”,gApplication.getMap().getCenter()));

Google Maps will than alert the needed coordinates. All you need to do here is to replace of the “(” and “)” by “[" and "]“and to assign the value to the mapCenter attribute. The further function ‘addMarker’ will get you a marker on the map.

You can see how this looks like with this DEMO: http://www.comsysto.com/Imprint.htm


Munich MongoDB User Group: First Meetup

$
0
0

You are invited to the First Meetup Munich MongoDB User Group!

Date: 6/28/2011
Time: Starting 7pm
Who: Brendan McAdams, 10gen Corp.
Subject: „A MongoDB Tour for the Experienced and Newbie Alike“
Location: Münchner Technologiezentrum, comSysto GmbH, Agnes-Pockels-Bogen 1, D – 80992 Munich
http://www.comsysto.com/
http://twitter.com/#!/comsysto

A Few Facts on MongoDB:
„MongoDB is an open source, document-oriented database designed with both scalability and developer agility in mind. Instead of storing your data in tables and rows as you would with a relational database, in MongoDB you store JSON-like documents with dynamic schemas. The goal of MongoDB is to bridge the gap between key-value stores (which are fast and scalable) and relational databases (which have rich functionality).
Using BSON (binary JSON), developers can easily map to modern object-oriented languages without a complicated ORM layer. This new data model simplifies coding significantly, and also improves performance by grouping relevant data together internally.
MongoDB was created by former DoubleClick Founder and CTO Dwight Merriman and former DoubleClick engineer and ShopWiki Founder and CTO Eliot Horowitz. They drew upon their experiences building large scale, high availability, robust systems to create a new kind of database. MongoDB maintains many of the great features of a relational database — like indexes and dynamic queries. But by changing the data model from relational to document-oriented, you gain many advantages, including greater agility through flexible schemas and easier horizontal scalability.“

Do you want to learn more about MongoDB? Then please register via
http://www.meetup.com/Munchen-MongoDB-User-Group/
or
https://www.xing.com/events/munich-mongodb-user-group-meetup-781984
and give us a visit! The number of participants is unfortunately limited to 50.

For any further information please contact Matija Gasparevic/office@comsysto.com/


Data Visualisation Training in München

$
0
0

“Data visualisation is both an art and a science. It is an art concerned with unleashing creativity and innovation, designing communications that appeal on an aesthetic level and survive in the mind on an emotional one. It is a science aimed at understanding and exploiting the way our eyes and brains process information most efficiently, effectively and accurately.” Andy Kirk

comSysto und visualisingdata.com bringen Datenvisualisierung in München auf den neuesten Stand!

Während das Erdöl immer knapper wird, werden die Daten als das Öl unserer Wirtschaft immer lauter genannt. Und das neue Öl sprudelt aus unseren Systemen so schnell heraus, dass wir mit unserer Verarbeitung, Speicherung und Interpretation kaum noch Schritt halten können, trotz konstanter Steigerung in Hardwareleistung und parallelen Verarbeitungsalgorithmen. Unsere Pipelines und Speicher werden also ständig erweitert und versuchen es mehr oder weniger erfolgreich mit der Flut aufzunehmen.

Und wie sieht es beim Endverbraucher aus? Trotz einer scheinbaren Überversorgung treten ganz häufig Engpässe auf. Denn aus dem Rohstoff werden nicht immer Produkte, die von den Endverbrauchern so dringend benötigt werden, und das gilt es zu ändern. Aus diesem Grunde möchten wir die Informationskette nun von hinten betrachten: Wie konsumieren Menschen Daten bzw. Informationen? Was für Endprodukte werden wirklich benötigt? Wie sollen diese gestaltet werden, um die Aufnahme zu erleichtern und zu beschleunigen? In der eintägigen Veranstaltung mit Andy Kirk begeben wir uns gemeinsam auf die Suche nach den Antworten.

Mehr Details zu den Inhalten des Trainings findet man unter visualisingdata.com/index.php/training/

Wann?
Mittwoch, 25.07.2012, 9 – 18 Uhr

Wo?
comSysto Office im Zentrum von München.

Für wen?
Analysten, Designer, UX-Spezialisten, Statistiker, Excel-Fanatiker, Entwickler, Manager, BI-ler, Information Architects, Excel-Hasser…

Sprache?
Englisch

Kosten?
EUR 250,- pro Teilnehmer, für Verpflegung ist gesorgt.

Interesse?
Eine kurze und formlose Email auf office [at] comsysto.com.


How to Present Spring Data Neo4j Nodes in a JavaFX TableView

$
0
0

Today I would like to show you how to create a JavaFX TableView that displays Spring Data Neo4j nodes. Additionally the user can add new nodes, search for existing ones and edit them.

Why?

JavaFX is a aspiring new technology to build user interfaces and Neo4j is a graph database, which allows to insert a massive amount of nodes and search them in nearly constant time. But up to now, there is no possibility to present the Neo4j nodes in a JavaFX TableView.

So how will it look like in the end?

Spring Data Neo4j JavaFX TableView Demo

How to install the demo on your computer?

The source code of this demo is available on GitHub: https://github.com/comsysto/spring-data-neo4j-javafx-tableview. To execute it, build it with maven and start the CustomerApp class.

What are the components?

How does the Neo4jTableBuilder work?

To construct a Neo4jTableBuilder, you need the node class which implements Neo4jNode (in our case the Neo4jCustomer class), the repository instance of these nodes and the JavaFX TableView instance.

Afterwards, you can initialize the data table by calling initDataTable(). This will set up the columns of the table according to the annotations in the node class.

For each field that is annotated with @Neo4jTableBuilderColumnField(columnName = “xy”, columnOrder = 42) a column is created with the given column name. In the end, all columns will be sorted by ascending column order values. If the field should not be editable, you can declare it readonly by stating columnType  = Neo4jTableBuilderColumnField.FieldType.readOnly.  As default, fields are edittable and have a columnOrder of 10. Fields can be of the following types: String, Integer and Date. If you need other types, you can include them with their StringConverter in the createAndSetFactories() method.

For all set-methods in the Neo4j node class which are annotated with @Neo4jTableBuilderColumnSetMethod(columnName = “xy”, columnOrder = 42) the Neo4jTableBuilder creates a editable column. Property type, column name and order work according to the field annotation.

So when should you annotate the field and when the set-method? By default, it is sufficient to annotate the field. Only if side effects should happen while saving values, a set-method is needed. In our case, the name property shall be updated, if the first or last name changes. Therefore, the set-methods of first and last name are annotated instead of their fields. Notice that the field and the set-method need corresponding names, e.g. the field for setFirstname(String firstname) must be String firstname. Otherwise, the Neo4jTableBuilder can’t read the values.

Finally we call setTableData(neo4jCustomerRepository.findAll()) to initially present all nodes.

How does the search function work?

When the user enters text in the JavaFX text field or changes an exiting search term, the searchTextfieldKeyReleased() method is called and resets the table data to all nodes that contain the search term in their name.

How to add new nodes?

The first row of the table is marked in green and represents a new node, that will be saved in the repository as the user clicks on the Save button. Afterwards, a new node is created, that can be saved as well.

How to edit existing nodes?

To edit an existing editable node, just mark the row by clicking on it and then click an the field you want to edit. The field turns into an input field and by clicking somewhere else the change will be saved, as long as it matches the field format. If not, the field will be reset to the previous value. This functionality is implemented in the inner class EditingCell. So far, pressing the return key doesn’t end the editting state.

How to delete nodes?

Nodes can be deleted by clicking on the red X button in the last column. You can find the implementation in the inner class ButtonTableCell.

How does the column sorting work?

By clicking on a column heading, the table entries are sorted in ascending order. If you click again, the sorting order is removed. Up to now, columns can’t be sorted in descending order and changing columns by pressing the tab key doesn’t work correctly.

What may help if you have problems?

If you get a java.lang.RuntimeException: Exception in Application start method Caused by: org.springframework.beans.factory.BeanCreationException you probably started the application twice. Stop both instances and try again.

If miracles occur, it may help to delete the data folder and try again.

How can this demo be extended?

Of course, you can try to overcome the limitations mentioned above. Moreover, you can implement ways to represent relations and manage them. It’s also possible to add more tables with a Neo4jTableBuilder for each of them. Additionally, you can create a login and restrict opperations as Stephen Chin showed in Steve On Java.

What is the demo based on?

This demo is based on Steve On Java – JavaFX , JavaFX Documentation Home – TableView and Neo4j HelloWorlds Example.

If you have any feedback, please write to Elisabeth.Engel@comsysto.com!


Ubercharts live charts with Wicket 6 and Websockets

$
0
0

Today we want you to show how you can provide live tracking charts for Web-based dashboards. This small showcase Application is based on Wicket 6, Wicket Websockets and Ubercharts.

Just imagine you are running a high-frequency Webshop and you released new Features. And you want to see the feedback what have this features bring to you as soon as possible. Normally you have to wait up to 24h to get the the reports generated through your Business Intelligence Tools. To get reports immediately you have to provide dashboards which updates themselves automatically and which are available from everywhere. This requirements we solved with Wicket a Java Webframework for building Websites and Ubercharts. Ubercharts is meant to be a tiny wrapper for apache wicket framework around the highcharts javascript library. The communication between the Wicket and Live Ubercharts will be provided by Wicket Websockets. In this post we show only the frontend part, not the backend part with saving tracking events.

Run the demo:

  1. Clone GitHub Repo: git clone git@github.com:comsysto/Ubercharts.git
  2. Go to the Ubercharts folder : cd Ubercharts
  3. git checkout wicketWebSockets
  4. gradle idea / gradle eclipse
  5. In IntelliJ IDEA or Eclipse open com.comsysto.runner.Start
  6. Start the main class
Uebercharts Bar Diagram

After running Ubercharts sample Application with websockets it’s should look like this

What should you see at the end :

Relevant Java Classes Diagram:

Live Charts Diagram

Java Class Diagram for Uberchart Websockets example application

The Webapplication starts with a DemoPage.java which only creates the DownloadChartModel.java and transfer it to the DownloadChartPanel.java class which handles the Websockets communication between server and the browser.

DownloadChartModel.java creates the charts with the Uberchart library, for initialize and show the chart is the initChart() method enough. As you can see we initialize the Series with emtyArray, because the data will bee update through Websockets in the DownloadChartPanel.java class.

private Highchart initChart() {

        Number[] emptyArray = {};
        ISeries<Number[]> rock = new NumberSeries(
                   MusikGenre.ROCK.getName()).setData(emptyArray);
        ISeries<Number[]> urban = new NumberSeries(
                   MusikGenre.URBAN.getName()).setData(emptyArray).setVisible(false);
        ......

        Highchart highchart = new Highchart(new BarChart(),
                           rock, pop, urban, electronic, bluesJazz);
        return highchart;
    }

For the Websocket communication we have to set events for the charts. The update events we add through highchart.getChart().getEvents().setLoad(getScript()); method the javascript file DownloadsChartPanel.js. This javascript file subscribes for Websocket messages and updates the chart:

   Wicket.Event.subscribe("/websocket/open", function(jqEvent) {
        // show the initial state of the chart
    });

    Wicket.Event.subscribe("/websocket/message", function(jqEvent, message) {
        // new record is pushed by the server
        var record = jQuery.parseJSON(message);
        if (record) {
            if(record.type == '${messageType}'){
                columnChartUpdate(record.data, record.dataName);
            }
            if(record.type == '${messageSeriesType}'){
                columnChartCategoriesUpdate(record.data, record.dataName);
            }
        }

    });

Websockets handling is initialized in the DownloadChartPanel.java inner class ChartUpdatingBehavior. This inner class creates an UpdateTask.java which handles the WebSocketsConnectionRegistry and the connection handling in a separate thread:

@Override
public void run() {
  IWebSocketConnectionRegistry webSocketConnectionRegistry =
                              new SimpleWebSocketConnectionRegistry();
     while (true) {
       Application application = Application.get(applicationName);
       IWebSocketConnection connection = webSocketConnectionRegistry.
                           getConnection(application, sessionId, pageId);
         if (connection == null || !connection.isOpen()) {
           // stop if the web socket connection is closed
             return;
         }

         try {
           updateFunction(connection);
           // sleep for a while to simulate work
           TimeUnit.SECONDS.sleep(1);
         } catch (Exception x) {
           x.printStackTrace();
           return;
        }
     }
  }

In DownloadChartPanel we have to implement  UpdateTask abstract method updateFunction() in order to update update Chart with new data. UpdateTask sends every second a message with the new values for the chart in the updateFunction() method. The Data is here generated random in the method getDownloads(), there should be a DB or Service call instead for real data. This Websocket Message will bee handled from chart events javascript functions which are loaded in DownloadChartModel.java.

private class ChartUpdatingBehavior extends WebSocketBehavior {
  @Override
  protected void onConnect(ConnectedMessage message) {
     super.onConnect(message);
     // create an asynchronous task that will write the data to the client
     UpdateTask updateTask = new UpdateTask(message.getApplication(),
                message.getSessionId(), message.getPageId()) {
        @Override
        protected void updateFunction(IWebSocketConnection connection)
                                                     throws IOException {
            ObjectMapper objectMapper = new ObjectMapper();
            Message<Number[] > message = new Message<Number[]>(
              MessageType.SERIES_UPDATE,selectedGenreType.name(), getDownloads());
            String json = objectMapper.writeValueAsString(message);
            connection.sendMessage(json);
        }
    };
 Executors.newScheduledThreadPool(1).schedule(updateTask, 1, TimeUnit.SECONDS);
}

So now we have one way communication from the Server to the Client. Now we want to change the Music genre in the webfronted with a click on the Chart Legend. For that we add in the ChartModel the ChartCategorySwitch.js which is called on chart click function. The Script sends Wicket.Websocket message to the Server with the name of the selected genre.

function productSwitchUpdate (event) {
    var selected = this.index;
    var allSeries = this.chart.series;
    $.each(allSeries, function(index, series) {
      if(selected == index ){
        series.show() ;
        var message='{"type":"'+'${messageType}'+'","dataName":"'+series.name+'"}'
        Wicket.WebSocket.send(message);
      }else{
        series.hide();
      }
   });
   return false;
}

The Server hadles the click-message in the DownloadsChartPanel.java getWebSocketBehaviorForClicks() method. This method Listens for Websockets Messages and when a GENRE_UPDATE Message comes in selectedGenreType will be set. When a Websocket message will be pushed back to the chart with the new categories names.

private Behavior getWebSocketBehaviorForClicks() {
  return new WebSocketBehavior() {
    @Override
    protected void onMessage(WebSocketRequestHandler handler,TextMessage message){
      try{
        ObjectMapper objectMapper = new ObjectMapper();
        Message parsedMsg = objectMapper.readValue(message.getText(),
                     new TypeReference() {});
        if (parsedMsg.getType() == MessageType.GENRE_UPDATE){
           selectedGenreType = MusikGenre.valueOf(
                         parsedMsg.getDataName().toUpperCase());
           Message<String[]> msg = new Message<String[]>(
                         MessageType.CATEGORIES_UPDATE,selectedGenreType.name(),
                         musikGenreMap.get(selectedGenreType));
           String json = objectMapper.writeValueAsString(msg);
           handler.push(json);
        }
    } catch (IOException e) {
       e.printStackTrace();
    }
  }
};
}

While developing  we have some problems to get it running in Jetty and Tomcat with the same war file. For fixing it you have to add dependencies in the build.gradle file:

  "org.apache.wicket:wicket-native-websocket-jetty:0.6",
  "org.apache.wicket:wicket-native-websocket-tomcat:0.6",

and also add a filter in web.xml file:

   //ENABLE WHEN JETTY
   <filter-class>org.apache.wicket.protocol.ws.jetty.Jetty7WebSocketFilter</filter-class>
   //ENABLE WHEN TOMCAT
   <filter-class>org.apache.wicket.protocol.ws.tomcat7.Tomcat7WebSocketFilter</filter-class>

Next steps are migrating it to jetty 9 and add some Wrapper for Ubercharts to easier add Updating tasks.

If you have any feedback, please write to luka.leovac@comsysto.com or alen.tolj@comsysto.com


TDWI conference 2013 and more Big Data with R

$
0
0

TDWI_EuropeIt was a big pleasure for us to be part of the big TDWI family at the big european conference in Munich from 17.-19.06.2013. Together with our big partner MapR we had a big booth at a perfect place in the exhibition hall. MapR provides Apache Hadoop solutions for Big Data and extends comSysto‘s portfolio to offer a complete Big Data life cycle solution from idea to hardware to data analyses platform in operation for our customers. Thanks to all our customers, partners and interested parties to visit us at the conference booth. Congratulation to all our prize winners. Enjoy your trainings and Nexus 7.

rstatsNext to many interesting talks around data warehouse solutions there were some big discussions how Hadoop technologies can support or replace traditional warehouse solutions. With our tutorial “Using R for Business Intelligence in Big Data” presented by Dr. Markus Schmidberger we introduced participants to the powerful statistical software R. Covering topics as rmongodb and rmr2 Markus introduced concepts to use Big Data technologies as MongoDB and Hadoop within R. Using the RStudio IDE and a not big (single node) AWS based MapR clusters participants trained their self with real world examples in short exercises. The slides of the tutorial are available for download at the conference download page.

Strata_twitter_logoIf your are interested in more and more detailed courses around R and Big Data please check our event page and register for your favorite course. Or join my next “Big Data Analyses with R” tutorial at the Strata Conference in London from 11-13 November 2013.



push.conference 2013

$
0
0

This October we attended the push.conference 2013 at the congress hall in Munich. The conference was held on Friday and Saturday. Entering the conference we immediately noticed that this conference is something special. First of all, we got our entrance pass along with 8 stickers. We had to select 4 out of them to add to our pass showing our interests. This was a good starting point for conversations with other participants.

P1030336

Sunny weather and good vibes

Grabbing some coffee and pretzels, we headed highly motivated to the first talk at 11 o’clock. The introduction truly lived up to the topic of the conference – interaction design and user experience. We had to stand up and introduce ourself to the surrounding people. Darja Isaksson talked about the digital revolution from her own experience. She adviced the audience to team up and value impact more than pride.

The following talk ‘Multi & Cross-Device UX Concepts‘ got more into detail. Neil Calderwood explained that Mobile first isn’t the right path. He introduced us to the Inside-Out-Design, which takes into account the requirements for different devices instead of just extending the minimal mobile version to a desktop one.

During the lunch break (with sunshine and a variation of tasty wraps), we explored the booths of different student projects.

P1030371

Booth safari

After the break, Lucia Terrenghi gave a talk entitled ‘Designing technologies for the next billion people: challenges and opportunities’. She pointed out how to design for different cultures, especially in the developing world.

The push.conference organisators introduced the concept of Lightning Talks, which gives new talents the opportunity to present their work and inspirations. Kalle Kormann-Philipson talked about Lean UX, Markus Steinhauser presented his startup Testbirds and Franz Bruckhoff gave us insights on his career path from a developer to a UX designer. He also mentioned that as a UX designer you should also consider driving the users’ expectations in the right way.

Kevin Sweeney’s talk ‘The Unseen Experience: Putting Detail Into The Web‘ increased our awareness of the little details with big influence. For example, he showed how to raise loading performance by predicting the users’ next steps.

Friday’s last talk was given by Mike Lemmon. He talked about ‘Design Languages for Interactions’. We got a first glance on a tiny, little wearable camera called MEME taking party shots in an automatic capture mode. Similar to polaroids, the pictures are shown instantly after the shot.

The second day started with Elliot Woods talking about ‘Digital Light as a Semi-Material‘. Followed by a talk by Wesley Grubbs about ‘Experiencing Data’ who made the point that human beings don’t think in numbers and bar charts, but in images. Therefore, it is important to tell a story with your data.

Sebastian Oschatz delighted us with his talk ‘Untangling Rectangles’ showing five strategies how to get other formats than rectangles.

On the second day there were Lightning Talks as well. Julia Laub from onformative talked about data art and how it differs from infographics. She emphasized that adding data doesn’t necessarily add meaning. The CEO of LAB BINAER talked about his experiments with generative design and shared with us his philosophy: ‘creative design is not a job, it is a lifestyle’. Industrial designers from LUNAR Europe showed examples of their work and how they also consider the inactive state of a product. Jochen Leinberger and Roman Stefan Grasy presented their book ‘Prototyping Interfaces: Interaktives Skizzieren mit vvvv’. They pointed out how important it is to inspire the people in an early phase.

Happy attendees

Happy attendees

After the last break, Mariana Santos inspired us with her talk about ‘Visual Storytelling for the News‘. She told us about her personal background and digital journalism at The Guardian. She adviced us to keep reinventing ourselves and to fail fast and succeed soon. Her positive attitude and the insights about her work for the Olympic Games in London 2012 charmed and amused the audience equally.

The last talk was given by Marcus Field about ‘Forms of Inquiry’. He pointed out his experiences with generative art and how customers feel about it.

Summarizing the lessons learned from the push.conference 2013:

  • take some risks
  • take responsibility about changes
  • don’t bend yourself to meet unrealistic customers’ requirements
  • design and business development must go hand in hand
  • your brand is a promise
  • you can achieve anything if you know the process

The push.conference 2013 was a great experience for us and we’re already looking forward to next year’s edition.

If you want to know more about our experience at the conference, please contact Marlene.Gottstein@comsysto.com or Elisabeth.Engel@comsysto.com!


Skillmazing – Visualize your Skill Profile

$
0
0

This week our new platform Skillmazing starts into public beta. During the last four months we developed a new way of managing skills and visualizing skill profiles.

Until last year, we only managed them in a table format. This was a good start, but implied a lot of problems. Especially, as the table rapidly grew in size, it was hard to retrieve information instantly. Therefore, we developed a new application called Skillmazing. The tool especially focuses on personal development and supports users in improving their skills. Since we think that the application can not only benfit our company, but everybody who is interested in developing their skills, we would like to share it with you.

What Skillmazing offers:

  • See what skills you have and what you would like to improve
  • Search for material and stuff you can do to improve your skills
  • Get your skills, goals and progress visualized
  • Save your visualizations as .svg or .png file
  • Search for like-minded people to improve your skills together
  • Share your profile on social plattforms or via email

As default, all your data is invisible for other users. So create your profile and make it visible for others to present your skills and attract like-minded people!

Start Now

Choose from nine different visualizations and create personal profile visualizations like this:

Skill Visualization Sunburst

Skill Visualization Village Chart

Skill Visualization Bar Chart Horizontal

Skill Visualization Badges

Skill Visualization House Chart

Skill Visualization Bar Chart Vertical

Skill Visualization Timeline

Skill Visualization Puzzle

To see more, visit my skill profile here.

As Skillmazing started into public beta this week, we are looking forward to your feedback! Enjoy!


Automatic Breadcrumb for Jekyll on GitHub Pages

$
0
0
Automatic Jekyll Breadcrumb for GitHub Pages There are many Breadcrumb Plugins out there but I wanted something that works on GitHub Pages together with jekyll’s safe mode. Assuming you have the following static page URL structure for all pages (you will need to disable the breadcrumb inside your blog pages). UPDATE 2015-05-06: You can use […]

Overview of the JavaScript ecosystem

$
0
0
What can I accomplish with Javascript? The ecosystem of JavaScript has grown. Long gone are the days of simply inserting jQuery into your website and fading stuff in or out. Entering the world of JavaScript today is an overwhelming task with lots of possibilities. It also means that it’s a world that’s brimming with opportunity. […]

Building a desktop application with Electron

$
0
0
The how and what of JavaScript desktop applications Desktop applications always had a special place in my heart. Ever since browsers and mobile devices got powerful, there’s been a steady decline of desktop applications which are getting replaced by mobile and web applications. Still, there’s are a lot of upsides to writing desktop applications — they are […]

Anatomy of a large Angular application

$
0
0
Do I really need a strategy? Yes. A fresh application always starts out as that one application that’s going to be designed for easy maintenance and development. Unfortunately, it’s just a matter of time until that application becomes non-trivial and needs reorganisation and/or a rewrite. In those moments, it helps if you’ve designed your application […]
Viewing all 14 articles
Browse latest View live




Latest Images