PolterApp Version 1.11

Die neue Version der PolterApp stellt ein Hotfix für die Kartennutzung dar. Der Schlüssel für die Nutzung der Google-Maps war abgelaufen und musste erneuert werden. Es ist nun wieder möglich eigene Position und Positionen der erfassten Polter auf der Karte sehen.

Google Analytics for iOS

Once I reported about my experience with HockeyApp a tracking tool for iOS, Android and Windows Apps. Today I tested the abilities of Google Analytics for iOS. Without going deep in details here is the overview of the evaluation results:

  • There are SDKs only for iOS and Android. Tracking of the Windows Apps is not supported.
  • Tracking of the fatal and non fatal exceptions is possible
  • Screen tracking. If desired, the tracking method can be called for example in viewWillAppear. In the dashboard of Google Analytics there is the overview of the called Views.
  • Support for custom events
  • Real time screen end events tracking
  • Dashboard of the App Analytics looks almost same as the dashboard for tracking websites
  • If tracking private user data, be sure to learn about privacy policy and the proper use of the Google Analytics in your app

PolterApp Version 1.10

Dieses mal wurde ein Fehler in der Einzelstamm-Datenerfassung behoben. Die PolterApp stürzte ab, wenn Stamm-Länge oder Stamm-Diameter in der Stammerfasungs-Ansicht nicht angegeben waren. Jetzt wird der Nutzer mit einer roten Markierung auf die fehlenden Angaben hingewiesen. Das Abspeichern eines Stammes ohne diese Angaben ist nicht mehr möglich.

Die nächste Neuerung betrifft ebenso die Einzelstamm-Erfassung. Im PDF-Dokument, was zu einem Polter generiert werden kann, ist nun auch eine Tabelle mit der Verteilung der Stärkenklassen der Stämme zu sehen.

 

PolterApp Version 1.9

Die Weiterentwicklung der PolterApp geht voran. Mit dem neuen Update erhielt die App die Anzeige der Polter-Koordinaten im Grad/Minuten/Sekunden Format. Auf der gleichen View gibt es außerdem einen neuen Button zum Starten der Navigation zum aktiven Polter. Es kann entweder native Karten-App oder wenn installiert, Google Maps gestartet werden. Dabei wird aktuelle Position als Start-Punkt und Polter-Koordinaten als Ziel-Punkt an die Navigations-App übergeben.

Die Anbindung weiterer Navigations-Apps wie z.B. NavLog ist anvisiert. Die Priorisierung der Umsetzung wird durch die Nachfrage aus dem Nutzer-Kreis der PolterApp bestimmt.

Fotooptische Holzvermessung

Bei der fotooptischen Holzvermessung handelt es sich um ein automatisches Verfahren zur Ermittlung der Stammzahl in einem Holzpolter und Berechnung des Holzvolumens. Es gibt auf dem Markt sowohl einige Apps, die das Verfahren implementieren, als auch ganze fahrzeuggestützte Systeme. In der Regel erfolgt die fotooptische Poltervermessung in drei Schritten. Zuerst wird der Holzpolter mittels Einzelaufnahmen fotografiert, die Bilder zu einem Panoramabild verknüpft und alle sichtbaren Stammstirnflächen automatisch erkannt. Im zweiten Schritt hat der Nutzer die Möglichkeit Ergebnisse der automatischen Bilderkennung nachzujustieren und Referenzobjekte zur späteren Volumenberechnung festzulegen. Anschließend wird Holzvolumen automatisch berechnet.

Die fotooptische Holzvermessung bietet einige Vorteile gegenüber herkömmlichen Messverfahren. Insbesondere Zeitersparnis. Die Poltervermessung reduziert sich dramatisch auf nur einige Minuten. Nichtsdestotrotz stosst das Verfahren unter bestimmten Bedingungen auf seine Grenzen. Dunkelheit, Regen, Schnee all das kann die Qualität der automatischen Volumenberechnung stark beeinflussen. Deswegen wird das neue Verfahren die anderen Vermessungsverfahren nicht komplett verdrängen. Zumindest nicht so schnell.

Die fotooptische Holzvermessung sorgt aber für großes Interesse und hat auf jeden Fall ein großes Potenzial. Im Rahme der PolterApp-Entwicklung wurden erforderliche technologische Bausteine bereits evaluiert. Der grobe Prototyp könnte sogar schon im Frühling 2017 released werden.

Popular programming languages 2016

Every year various programming communities try to create and to analyze the rating of existing programming languages. Just to mention few of them:  TIOBEPYPLIEEE etc. These ratings are based on different approaches, e.g. popularity of tutorials for particular programming languages, data analysis at GitHub and StackOverflow or even analysis of messages in Twitter.

These ratings might help when making a decision about what programming language should be adopted when starting to build a new software system. Also they can be used by students or starting programmers to get a better feeling of what skills are mostly asked. Of course, every programming language despite of its rating, has a particular goal. It is designed to fulfill certain tasks. Even if one language is much more “popular” than some other, it does always not mean, that it is better. More frequently one programming language cannot even be substituted by some other due to system requirements. For example, it is not possible to write iOS apps in JAVA and Web browser can only execute JavaScript and no C++ code. Like every plumbing requires its own tools, so every development depends on the current requirements.

So what are the most popular languages of the year 2016? First place is traditionally JAVA. Also C and C++ stay at the top of all the ratings. C# has its stable high position as well. Popular script languages are PHP, Python and JavaScript. Functional programming languages like R become more and more popular.

Merry Christmas and a Happy New Year!

It’s the time of candles, cakes, songs, presents and laughter. Before we all dive into the joy of Christmas holidays, I want to say “thank you” to all those who actively supported me this yeah by development of the PolterApp. We worked together and we reached more than expected. What we made so far is a good base for further development and another victories.

I wish you all a Merry Christmas and a Happy New Yeah!

Multipeer Connectivity

The Multipeer Connectivity APIs, introduced by Apple in iOS 7 is an easy way to start building apps requiring peer-to-peer communication. Nearby devices communicate over infrastructure Wi-Fi networks, peer-to-peer Wi-Fi, and Bluetooth personal area networks. Connected peers are able securely transmit messages, streams, or file resources to other devices.

Evaluation of different aspects of Multipeer Connectivity with iPad Air 2 devices shows surprising results. Discovery and communication between iPad devices works mostly well. However, some shortcomings are to be mentioned here.

  • Establishing connection between peers always requires user interaction. The user has to confirm a connection to other device. There is no way to work with certificates or white lists of devices.
  • The other issue is that the framework does not always repair the broken ad-hoc network correctly. If a peer suddenly leaves the network, it often stays broken. Discovery must be restarted manually.
  • Multipeer Connectivity framework is only available for iOS, macOS and tvOS devices. So if the app has to run also on Android or Windows devices, this framework cannot be used.

To read more about Multipeer Connectivity refer to nshipster and apple’s doc.

PolterApp Version 1.8

PolterAppDas achte Update der beliebten Holzaufnahme-App bringt einige Verbesserungen in der Oberfläche und Nutzerführung. Bessere Aufteilung der funktionalen Elemente und unterstützende Animationen machen die Eingabe der Daten einfacher und die Arbeit mit der App angenehmer. Die neue Version der PolterApp is ab sofort zum Download im App-Store verfügbar.

Routing in ad-hoc Networks

devices-341443_640What does make routing and communication in Ad Hoc Networks different from routing and communication in usual LANs, WANs etc.? The main peculiarities are the absence of wires, routers and any predefined infrastructure. The nodes communicate with each other over the air and this is a very unreliable medium. Because of reflection, diffraction, diffusion and other signal propogation properties the data exchanging by nodes is frequently lost. Not only the connections between nodes can break, but the nodes move and the topology of the network can change any time.

Taking into consideration all these facts, it’s obvious that the standard approaches applicable to the usual networks with pre-existing infrastructure aren’t suitable in general for the ad hoc networks. In following I’d like to tell a couple of words to ISO/OSI layers and explain briefly how they are realized in ad hoc networks.

Data Link Layer.
In Ethernet the Carrier Sense Multiple Access Collision Detection (CSMA/CD) is mostly used as the Medium Access Control Protocol. This protocol does not work well in ad hoc network. So imagine there is a node A that wants to send a packet to the other node B. A has to be sure that no other neighbour is sending at the moment to avoid collisions. If medium is already in use, A has to wait. The main lack of this approach is so called Hidden Terminal Problem. hiddenterminalThe picture depicts it. The node C is hidden from the node A. If C is already sending and A wants to send, it can’t find any sending nodes nearby, so it starts sending too. It leads to a collisions at the node B.
That’s why IEEE 802.11 offers the alternative MAC protocol that partly solves this problem. If the node A wants to send some packet to the node B and the medium is free, A sends first of all a short RTS (ready to send) signal. All the neighbours of A know then that A is going to send. When B recieves RTS it sends CTS (clear to send) signal, and thus all the neihbours of B know that B is going to recieve. After the transmition B sends an ACK and it releases the medium for the neighbours.

Network Layer.
The most important and interesting question is how one node finds a multi-hop path to the other node. Routing protocols for mobile ad hoc networks are devided into three large classes proactive, reactive and hybrid routing protocols.
Reactive protocols are designed for the ad hoc networks with high dynamics, where the network topology changes frequently. Each time when one node sends a packet to the other node, the routing path is built up again.

Proactive protocols use a kind of routing tables. It is assumed that the routes change not so often and they can be saved for a while in a table. The tables are then changed by the nodes.

Hybrid protocols use both of these technics.

The list of most popular algorithms can be found for example in Wikipedia.

Transport Layer.
In most ad hoc networks various realizations of TCP are used as the transport protocol. All the realizations like TCP Reno, TCP New-Reno differ from each other by algorithms that set the congestion window. The “normal” TCP doesn’t work well in ad hoc networks because the packets are frequently lost being propagating over the air. “Normal” TCP has to be adopted to these conditions.

Application Layer.
Unlike the Application Layer in common networks, application layer in mobile ad hoc networks can’t be completely isolated from the network layer. The developing applications have to be aware of the dynamics of the network and depending on the frequency of the topology changes apply for example the appropriate routing protocol.