Nikola Brežnjak blog - Tackling software development with a dose of humor
  • Home
  • Daily Thoughts
  • Ionic
  • Stack Overflow
  • Books
  • About me
Home
Daily Thoughts
Ionic
Stack Overflow
Books
About me
  • Home
  • Daily Thoughts
  • Ionic
  • Stack Overflow
  • Books
  • About me
Nikola Brežnjak blog - Tackling software development with a dose of humor
Breaking News, Ionic

Ionic Analytics Alpha

From an official blog post, Ionic Analytics Alpha

gives you all the data you need to better understand and optimize your push notifications, deployments, and much, much more.

The go on to say that

You can chart your app’s progress, from the time of its initial release, and see which marketing strategies were most (or least) effective. You can even gain insights into your app’s demographics, allowing you to see how well your app is doing within a given population.

Some of the data this will be able to provide is:

  • How many people log into my app every day?
  • How many of those continue to use my app after a week? A month? A year?
  • With which parts of my app are users interacting the most?
  • What are users doing right now in my app?

If you were like me – thinking that this will cost some amount, here’s what they say:

During the alpha period, Ionic Analytics will be 100% free. In the future, we’ll release tiered pricing based on usage and will continue to offer a free tier.

All this is indeed remarkable, as Ionic team released push support and live updates just few weeks ago. Also, for developers alike, they announced Ionic Market where you’ll be able to make plugins for other users (and, I guess sell them too?). So, IMHO Ionic is building an awesome ecosystem and I bet they’ll become the best hybrid platform! What is left to see is how will the actual price tiers look like.

 

Miscellaneou$

Infobip Dev Days 2015

Here are my notes from an awesome 4th Infobip Dev Days 2015 conference:

[toc]

Introduction

  • Presenter: Izabel Jelenić, Co-founder, CTO
  • infobip – 600+ employees (122 devs)
  • Worldwide A2P SMS traffic is expected to grow. Revenue > 45bn.
  • They handle 150M transactions daily.
  • They said they’re doing business with “one big social” network, but they didn’t name it actually, I wonder why is that (some kind of NDA or what? 🙂)
  • Picture time:
    infobip_intro

How we ended up doing continuous delivery

  • Presenter: Mario Žagar, Senior Software Architect
  • ASAP and as often we have to go into production
  • Unit & integration tests
  • Scaling cube
  • First they scaled by increasing monoliths
  • Then they took some parts out of the monolith (API, Billing, Inbound SMS, …) => easier to focus, possible to deploy independently
  • Typical feature deployment today:
    • Short lived feature branches with Git
    • Develop & run tests locally
    • Push feature branch to remote repository (Stash)
    • Jenkins – CI server builds the feature branch
    • Deployment artifacts published to Infobip repository (Artifactory)
    • Deploy feature branch to integration environment
    • Run tests on integration environment
    • Merge pull request to master branch & release
  • Average about 80 deploys per day
  • DevOps culture – you built it, you deploy it, you support it
  • Troubleshooting tools:
    • Graylog
    • Graphite
    • Grafana
    • Nagios
    • Seyren
    • HipChat
    • Ansible
  • Picture time:
    infobip_ci_intro
  • And a few more here, since, well, you know I love MEMEs:
    infobip_ci_deploy
    infobip_ci_devops

Scrum experience

  • Presenter: Marko Stipanov, Product Owner
  • How to increase productivity?
    • hiring more devs?
    • best is to hire someone new and give them some totally new project
  • PDD – Panic Driven Development
    • the bigger the panic the greater priority
    • how relates to this, please hands up hand_rock_n_roll
  • they tried with daily report writing
  • Agile process manifesto
  • they divided their 60 devs at a time to 12 teams and each team works on a small project
  • Product Owner
    • vision and definition of products
    • goal setting
    • priority setting of the whole team
    • talks to stakeholders
  • Scrum ceremonies
    • organisation
    • iterative process
  • Scrum steps (they do the sprints fro 1-2 weeks instead of 2-4):
    • Product backlog
    • Sprint backlog
    • SPRINT
    • Deliverable
  • 1 project = 1 team
  • 1 team => more projects
  • Priorities are defined by business value
  • Kanban, Scrumban
  • Daily team lead meeting with just few minutes
  • You can’t do agile without teams!
  • Scrum definitely give us a better intercommunication.
  • Picture time:
    infobip_scrum

Modern SQL

  • Presenter: Markus Winand, SQL expert and author
    modernsql_intro
  • SQL 99 broke the relational standard
    • LATERAL
      • “for each” loop of SQL
    • WITH
      • “private methods” of SQL
    • WITH RECURSIVE
      • “while” loop of SQL
  • SQL 2003
    • Turing complete
    • OVER and PARTITION BY
      SELECT dep, salary, SUM(salary) OVER (PARTITION BY dep) FROM ...
    • OVER and GROUP BY
      • actually, do this in the application, thank you very much
  • SQL 2008
    • SELECT TOP is not official – it’s FETCH FIRST ROWS ONLY
  • SQL 2011
    • OFFSET is EVIL
      • http://use-the-index-luke.com/ modernsql_offset
      • Also, the author was cool and he was giving these stickers:
        modernsql_offset_badges

Indexes: The neglected performance all-rounder

  • Presenter: Markus Winand, SQL expert and author
  • 50% SQL problems are caused by poor query/indexing
    index_comic
  • CREATE INDEX is not in the standard!
  • The solution- indexing is a development task!
  •  And now the author hits the spots when he explains that in
    • 11 SQL books he analyzed only 1% of the pages are about indexes
    • 14 database administration books he analyzed only 6% of the pages are about indexes
  • Everybody knows indexing is important for performance, yet nobody takes the time to learn and apply it properly.

Personal and Interpersonal Effectiveness

  • Presenter: Danilo Goliani, PhD professor, enterpreneur
  • Our clients are paying our paychecks!
  • Personal effectiveness – others have faith in me
  • Team effectiveness – I have faith in others
  • Organisational effectiveness – clients love us
  • Stephen R. Covey: 7 Habits of Highly Effective People
  • Courage – willingness and ability to express your thoughts and emotions
  • Don’t just say NO to your children – explain also WHY
  • Self induced interrupt
  • Brain Games
  • Picture time:
    danilo

Machine learning

  • Presenter: Jan Šnajder, PhD/assistant professor/FER
  • IBM Watcson Developer Cloud
  • 88% of unstructured data
  • #1 Top skill on LinkedIn 2014
  • Tools:
    • Weka
    • RapidMiner
    • Orange
    • R (mother of all)
    • Matlab (commercial)
    • mloss.org
    • Apache Mahout
    • Spark
    • Azure Machine Learning
    • Amazon Machine Learning
  • Picture time:
    machine

Java puzzlers

  • Presenter: Aleksandar Dostić, Senior Software Engineer IB
  • Picture time intro:
    java_intro
  • Puzzle 1:
    java_1
  • Puzzle 2:
    java_2
  • Puzzle 3:
    java_3
  • Puzzle 4:
    java_4
  • Puzzle 5 – the most sneaky one!
    java_5
    and here is why!!! shockedjava_5_explanation

HA-JDNI as a Solution for Service Discovery in Distributed Systems

  • Presenter: Aleksandar Branjković, Head of Mobile Payments R&D
  • Picture time:
    ha

 

 

Breaking News, Ionic

Ionic Deploy Alpha enables app update on the fly

Yesterday (10.06.2015) Ionic announced the Deploy Alpha which enables you to update your app without having to wait for the review & approval.

They say that

Ionic Deploy lets you update your app on demand for any changes that do not require binary modifications.

You can roll back to a previous version of your app, automatically apply updates, and control every aspect of the upgrade.

Also, the features that they list as upcoming are stunning to say the least:

  • live A/B tests
  • analytics
  • multiple version deployment to certain “Channels”

This is pretty awesome to be honest, and really shows that there is future for Ionic framework and that it’s a great time to be a hybrid app developer.

You can learn more about it from the official blog post.

Miscellaneou$

I just got an email from Google saying that someone logged in to my account using some different email address!?

This got me pretty alarmed:

GoogleHackAttemptFullMail

I immediately checked the devices from which it was accessed but couldn’t see any different from what I use usually. Nevertheless, even though I use two-factor authentication, I changed my password immediately.

Now, has any one of you had a similar experience? I thought the “problem” could be related with Google ignoring the dot (.) in the email thus for example [email protected] and [email protected] would come to the same email address. But, someone used the added numbers 33, so this hardly would pass as the same use case.

Anyways, still kind of baffled about it, so would appreciate some insight from more knowledgeable users.

edit: I asked this question on another StackExchange site (StackOverflow is a part of StackExchange btw) called Web Applications and will see if I get some explanation  there.

edit2: The answer, as that usually is the case with StackExchange sites, came pretty swiftly. User Al E. responded:

It’s hard to tell exactly what you’ve got here. (I don’t speak or read the language. (Slovenian? Croatian?)) I suspect one of two possibilities:

  1. Someone logged in (or tried to log in) from an area where you usually aren’t. (I might get a message if someone tried to log in from China, when I’m on the East Coast of the U.S.)
  2. More likely, I think, is someone has set your email address to be their recovery email or alternate email, and probably by mistake

I think you’ve done the responsible thing. You’re already using two-step authentication and you’ve changed your password. This probably won’t ever come up again. I wouldn’t worry any more about it.

And my comment on it was:

Thanks for your answer. Sorry for not translating Croatian (very close guess btw!), but essentially what it says is that someone just signed in to my account [email protected], then some details and then the question with a link if I don’t recognize this activity. Since this email isn’t mine I’m inclined to thinking that the possibility 2 really is the case, be it intentional or unintentional. But yeah, I probably should have a peace of mind having changed the pass immediately and since I have a two-way auth enabled. Thanks for reassurance! –

Miscellaneou$

Webfestival 2015

I was just accepted to the Webfestival 2015 competition, so fingers crossed!

C/P from the official site (since, well, this is for Croatian users – so, fellow citizens, do join in!):

Tema ovogodišnjeg Webfestivala su osobne web stranice koje se u kontekstu natjecanja promatraju kao zbirka digitalnih sadržaja koje prikazuju napredak, razvoj i postignuća nekog pojedinca.

Cilj natjecanje je ukazati na potencijal i važnost osobnih web stranica u vremenu cjeloživotnog učenja i kontinuiranog stručnog usavršavanja te potaknuti CARNetove korisnike, ali i sve ostale, na izradu osobnih web stranica. Također, tijekom trajanja natjecanja ćemo kroz radionice i webinare upoznati korisnike s pojedinim alatima i mogućnostima za izradu osobnih web stranica te ćemo naposljetku autore najboljih osobnih web stranica i nagraditi vrijednim nagradama.

Svi zainteresirani autori mogu se prijaviti u dvije kategorije – Osobne stranice u obrazovanju ili Profesionalne osobne web stranice putem prijavnice dostupne nahttp://webfestival.carnet.hr/2015_prijava . Prijava na natjecanje će biti moguća do 30. rujna 2015. kada će Ocjenjivački sud započeti s ocjenjivanjem pristiglih prijava.

Autorima osobnih web stranica koje stručni Ocjenjivački sud ocijeni najboljima u svakoj kategoriji bit će dodijeljena nagrada u okviru CARNetove korisničke konferencije CUC 2015 koja se ove godine održava u Dubrovniku od 18. –  20. 11. 2015.

Pozivamo sve zainteresirane da se s detaljima natjecanja, pravilima sudjelovanja te kriterijima ocjenjivanja upoznaju na webu natjecanja  te da se prijave na natjecanje.

Breaking News, Ionic

Ionic has a bright future by partnering with IBM

This is indeed awesome, as it hopefully means that Ionic is here to stay, so that all of us who use it won’t have to fear for it’s future – since it’s all awesome and stuff :). True, this seems more inclined towards business people, but the sole fact that with this more people will know about Ionic and won’t look you strangely when you say you’re developing iOS/Android apps with it by using one codebase.

Some news coverage about this:

  • IBM and Ionic Empower Business Users to Accelerate Mobile App Development
  • Make everyone a hacker: IBM MobileFirst & Ionic empower business users to prototype their own apps
Miscellaneou$

Weblica 2015

I just came home from Weblica, the very first ever developers conference in my Međimurje county. All in all, a very good conference and I hope this is just the first one in the years to come! The entrance was free and every attendee got a T-Shirt. Since I was active with questions I got a nice tiblica with an USB instead of meat inside 🙂 as you can see on the featured image above. Below are my notes and some pictures, and a friend of mine uploaded few videos (including me using Oculus Rift) on youtube playlist.

ECMA Script 6 – the future is JavaScript

  • Presenter Ratko Ćosić, MCSD, MCSE, MCITP, …
  • JavaScript was the language of 2014
  • ES6 (Harmony) features:
    • array functions (var sq = x => x*x)
    • block level scope (by using keyword let)
    • classes
      class Shape {
          id; x; y;
      
          constructor (id, x, y){
              this.id = id;
              this.name (x,y);
          }
      }
    • inheritance (extends keyword)
    • modules (kind of a merge between CommonJS and AMD, support for import, export)
    • promisses – similar to jQuery Deffered object
    • constants
    • new regular expression functions
    • new Math functions
    • symbols
    • typed arrays
    • default parameters
    • generators
    • map objects
    • collections (let s = new Set();)
    • better support for strings with for example backticks (`), includes(), startsWith(), endsWith() functions
  • Transpilers => conversion of JS from one version to another (Traceur, 6to5, Babel, TypeScript?
  • TypeScript – superset of JS, compiles to JS (ES5)
    • Angular2 uses TypeScript!
    • short types, interfaces, generics
  • Open question: will SPA frameworks (Angular, Ember, Aurelia) be needed when we’ll have ES7???
  • Browsers will be the new OS-es!
  • picture time!:
    ratko

node.js (sa sirom i vrhnjem)

  • Presenter Davor Tarandek, Tria d.o.o.
  • io.js uses the newer V8 engine than does node.js
  • asynchronity is hard to grasp
  • pm2 is awesome and it overpassed forever module
  • I actually wrote three rather extensive posts on the topic of the MEAN stack, that’s why I have so little notes from this lecture
  • picture time!:
    nodeTriaDavor

Ember.js in practice

  • Presenter Nikola Begedin, Coder.ly
  • convention over configuration
  • ember-cli is the thing
  • allows ES6 syntax (Babel transpiler mentioned earlier)
  • uses npm and bower
  • ember is not ember-cli (is what the Ember team recommends)
  • Some cool tools they use
    • Error reporting – Sentry
    • Task tracking – Asana
    • For chat – Slack
    • Heroku, Mandrill, Stripe, Amazon S3, Cloudfront, KissMetrics, Segment, NewRelic, CodeClimate, …
  • Recommended books to start Ember – Ember CLI 101 (google for it, it’s suppose to be free ;), if not, don’t mind spending a buck or two)
  • Talking Code podcast on iTunes
  • picture time!:
    emberNikola

Modern web using Microsoft tools

  • Presenter Miroslav Popović
  • Microsoft Studio vOld = .NET, 2003, 2005, 2008, 2010
  • Change started with ASP.NET MVC
  • 2012/2013 – Interface design, new web editor, GIT
  • HTML support – full HTML5 IntelliSense, code snippets, data-* attributes
  • JS – ECMA Script 5 support, strict mode support
  • CSS – IntelliSense CSS3 validation, color selection, vendor prefixes, CSS drag/rop
  • Browser Link
  • Other stuff: CoffeeScript coloring, Mustache, Handlebars, Knockout bindings, Angular Directives, LESS and SASS preprocessors, TypeScript
  • Community Edition FREE for up to 5 devs?!
  • WebEssentials
    • open source extension for VS
  • 2012/13 VS added Node.js based tools
    • static bundling & minification, image optimization & sprite generating, JS Hint, Source maps, LESS/SASS and CSS preview, CoffeScript preview
  • Visual Studio 2015
    • new web structure
    • package managers – NuGet, npm, bower, jspm
    • client side build tools – MSBuild, Grunt, Gulp, TaskRunner Explorer
  • Visual Studio Code – doesn’t (yet) support plugins like Sublime Text for example, but that’s a TODO
  • Other cool tools: Resharper, SideWaffle, Github for VS, Chutzpah (Jasmine, Qunit, Mocha)
  • picture time!:
    modernWeb

Effective software team collaboration

  • Presenter Zvonimir Juranko, Colombio
  • Colombio app
  • dare to disagree
  • 85% of people fear the conflict with their boss
  • The Marshmallow Challenge
  • LEAN canvas
  • be prepared to fail!
  • genchi genbutsu – try it out yourself!
  • make a MVP (minimum viable product) and build upon that
  • picture time:
    iDisagree

Oculus Rift – virtual reality for everyone

  • Presenter Tibor Kozjak, Infenso d.o.o.
  • there are some issues to be solved still
  • price around 500$ with shipping to Croatia
  • I tested the device after the talk and I guess in my case the verdict is “it’s really not for everyone, since I’m probably feeling sick and dizzy still :O”
  • picture time!:
    oculus

Hope to see you next year!

edit: A cool video made by the organisers after the conference:

Weblica 2015 from TICM on Vimeo.

Miscellaneou$

Touch Pianist app is awesome

Touch Pianist is an awesome free app which

is a musical toy / instrument that allows the user to perform hard-to-play classical piano music favorites (from composers like Beethoven, Mozart, Bach, Satie, Debussy to name a few) just by tapping the rhythm of the piece’s par

From developers point of view, the app was made using Pixi.js. Since this raised quite a buzz, I’m expecting to see Attack of the Clones 😉

Pluralsight, Three.js

Pluralsight WebGL and Three.js fundamentals course notes

Recently I bought a years worth subscription over at Pluralsight (here’s my portfolio of passed courses), and here I’ll be posting my notes from the courses that I attended. Please note that this is not meant to be as a sort of tutorial, just as the name says – notes for myself :). However, one could get some useful content from these posts as I’m noting things that catch my attention.

Here are my notes from the WebGL and Three.js fundamentals course. I rated the course 4/5 and all in all it’s a good introduction to WebGL with Three.js.

//rant: I passed the exam with the whopping 100%, and actually I feel that since Pluralsight is very famous and all that, that they could improve on the quality (it’s just too easy and does not go into detail) of these certification tests.

var scene = new THREE.Scene(); //acts like a container of all items
var renderer = new THREE.WebGLRenderer(); //how our content will be displayed on the page (WebGL, Canvas or SVG renderers)

It uses a Cartesian cordinate system (x,y,z). If you don’t specify the position- it will be positioned at (0,0,0).

It has a perspective and ortographic camera:

camera = new THREE.PerspectiveCamera(
35, =>fov
window.innerWidth / window.innerHeight,
1, => near
1000 => far planes
);

You can use your dev tools console (Chrome) or Firebug (Firefox) and access items if you properly export the objects in the code (return {scene: scene}); code snippet in the listing below):

//app.js file
var example = (function(){

    "use strict";
    
    var scene=new THREE.Scene(),
    renderer = window.WebGLRenderingContext ? new THREE.WebGLRenderer() : new THREE.CanvasRenderer(),
    light= new THREE.AmbientLight(0xffffff),            
    camera,        
    box;

    function initScene(){
        renderer.setSize( window.innerWidth, window.innerHeight );
        document.getElementById("webgl-container").appendChild(renderer.domElement);

        scene.add(light);
                          
        camera = new THREE.PerspectiveCamera(
        35,
        window.innerWidth / window.innerHeight,
        1,
        1000
        );
                            
        camera.position.z= 100;            
        scene.add( camera ); 

        box = new THREE.Mesh(
        new THREE.BoxGeometry(20,20,20),
        new THREE.MeshBasicMaterial({color: 0x00FF00})
        );

        box.name="box";   

        scene.add(box);

        render();
    }

    function render(){
        box.rotation.y +=0.01;
        
        renderer.render(scene, camera); 
        requestAnimationFrame(render);        
    }

    window.onload = initScene;
    
    return {
        scene: scene
    }

})();
//HTML file
<!DOCTYPE html>

<html>
    <head>
        <title>WebGL with three.js Fundamentals</title>       
    </head>

    <body>
    	<div id="webgl-container"></div>
    	
    	<script src="scripts/three.js"></script><!--DL this from official site-->
    	<script src="scripts/app.js"></script>
    </body>
</html>

Accessing it from Chrome Console as mentioned above:

var a = example.scene.getObjectByName('box');
a.position.x = 10;
a.position.set(0,2,2);
  • Degrees to radians formula: radians = degrees *pi/180
  • Meshes – geometry + material
  • use stats.js
  • different existing controls: FlyControls.js, OrbitControls.js
  • Collision detection
  • Raycasting – returns objects that are on some other objects “ray” and Box3.
  • Physics: PhysiJS is a wrapper for Ammo.js which is a port of C++ Bullet
  • Supports gravity, mass property, friction, restitution (bounciness)

Cool 3D frogger game made by the author: https://github.com/alexmackey/threeJsFrogger

Miscellaneou$

Microsoft HoloLens and VR in general may just be our doom

I’m all about advancement, but this just kinda starts to freak me out, fearing that we just may end up as in the movie Surrogates. But, it’s so cool 🙂 – can’t wait to see how will they make fighting games for it. Yeah, I’m sure pr0n industry will have it’s market for it too 😉

So, I guess, it’s just as with everything “groundbreaking” – shut up and take my money 🙂 But, on a more serious note – we just may wanna keep our vigilant eye open…

edit: Today (9.05.2015), on a developers conference in my hometown I tried out Oculus Rift, and  all I got to say is that I’m still feeling dizzy and sick, so yeah, this just may not be for everyone – not for me that’s for sure :/.

Page 6 of 8« First...«5678»

Recent posts

  • Discipline is also a talent
  • Play for the fun of it
  • The importance of failing
  • A fresh start
  • Perseverance

Categories

  • Android (3)
  • Books (114)
    • Programming (22)
  • CodeProject (35)
  • Daily Thoughts (77)
  • Go (3)
  • iOS (5)
  • JavaScript (127)
    • Angular (4)
    • Angular 2 (3)
    • Ionic (61)
    • Ionic2 (2)
    • Ionic3 (8)
    • MEAN (3)
    • NodeJS (27)
    • Phaser (1)
    • React (1)
    • Three.js (1)
    • Vue.js (2)
  • Leadership (1)
  • Meetups (8)
  • Miscellaneou$ (77)
    • Breaking News (8)
    • CodeSchool (2)
    • Hacker Games (3)
    • Pluralsight (7)
    • Projects (2)
    • Sublime Text (2)
  • PHP (6)
  • Quick tips (40)
  • Servers (8)
    • Heroku (1)
    • Linux (3)
  • Stack Overflow (81)
  • Unity3D (9)
  • Windows (8)
    • C# (2)
    • WPF (3)
  • Wordpress (2)

"There's no short-term solution for a long-term result." ~ Greg Plitt

"Everything around you that you call life was made up by people that were no smarter than you." ~ S. Jobs

"Hard work beats talent when talent doesn't work hard." ~ Tim Notke

© since 2016 - Nikola Brežnjak