Fibonacci Hashing: The Optimization that the World Forgot (or: a Better Alternative to Integer Modulo) | Probably Dance

Fibonacci Hashing: The Optimization that the World Forgot (or: a Better Alternative to Integer Modulo) | Probably Dance

All of my hash tables now use Fibonacci hashing by default. For my flat_hash_map the property of breaking up sequential numbers is particularly important because I have had real problems caused by sequential numbers. For the others it’s just a faster default. It might almost make the option to use the power of two integer modulo unnecessary.

Vanhoja ideoita kannattaa kokeilla uudelleen. Niiden seasta löytyy välillä helmiä, jotka ratkaisee sekä vanhoja että tuoreita ongelmia.

Behavior Trees in Robotics and AI: An Introduction - Michele Colledanchise, Petter Ögren

Behavior Trees in Robotics and AI: An Introduction - Michele Colledanchise, Petter Ögren

A Behavior Tree (BT) is a way to structure the switching between different tasks in an autonomous agent, such as a robot or a virtual entity in a computer game. BTs are a very efficient way of creating complex systems that are both modular and reactive. These properties are crucial in many applications, which has led to the spread of BT from computer game programming to many branches of AI and Robotics. In this book, we…

Linkin takaa ladattavissa hyvä intro-PDF “behavior tree”/käyttäytymispuu -nimiseen tekoälytekniikkaan, jolla itsenäisesti toimivia järjestelmiä saadaan toimimaan perinteisiä tilakoneita ja päätöksentekopuita joustavammalla tavalla. Tekniikkaa käytetään nykyään paljon peleissä ja on alkanut tulla käyttöön myös muilla aloilla.

Omassa korttipelissä mietin tämän tekniikan käyttöä korttien monimutkaisten efektien ja niihin tarvittavien käyttäjän tekemien valintojen toteuttamiseen. En varmaan tee tätä vielä ensimmäiseen versioon.

Programming is hard - dorinlazar.ro

Programming is hard - dorinlazar.ro

What I’m saying should not discourage beginners. It should just prepare them for what’s ahead. So if you want to tell a beginner something like this: „when it comes to programming, some things are easy, and some things are hard. If you’re patient enough, in time, the hard things will be exciting, and the easy things will become harder”.

But don’t tell them that programming is easy. It’s not.

Pohdiskelua ohjelmoinnin “helppoudesta”, hankaluudesta ja “kaikkien pitää osata koodata” -ajattelun pakottamisesta.

No-code/low-code/Excel tuo uusia ihmisiä ohjelmoinnin ja koneoppimisen pariin lähivuosina. Asioita ei pidä kaunistella alalle tuleville, mutta ne pitää viestiä sopivalla positiivisuudella.

No-Code and the Ikea Effect: How software lock-in evolved and made us never want to churn - capiche.com

No-Code and the Ikea Effect: How software lock-in evolved and made us never want to churn - capiche.com

We’ve made the software our own, customized it just enough for the Ikea effect to keep us hooked. We invented it here, or so it seems, and the traditional objections to using pre-made software or the arguments to upgrade to the next shiny thing melt away.

Pohdiskelua erilaisista tavoista saada sitoutettua asiakkaat palveluusi. Näistä järjestelmän osittainen rakentaminen itse näyttää olevan tehokkaimpia, koska se ei ole keinotekoinen vaan muodostuu asiakkaan oman paneutumisen ja välittämisen kautta.

aysplaceinspace: Elo sucks — better multiplayer rating systems for smaller games

Elo sucks — better multiplayer rating systems for smaller games

I have designed a new rating system called the Aco rating system, which is similar to Elo except it fixes a few key problems.

  1. Actual win rates: The win probability is calculated from the actual data of the past 100000 games. This means it does not need to fit an exponential curve. For example, the system could lookup its database and see that a matchup of a 1800 rating player vs a 1300 rating player results in the higher-level player winning 76.3% of the time. If the high-level player is outperforming this, they gain points over time, and that is a fair system, based in actual data.

  2. Newbie suppression: The points able to be gained/lost is reduced when you are playing someone substantially lower in rating than you. This makes people happier because they can’t lose as many points to newbies. Instead, they can only lose the most points to people similar to their skill level, which feels much more fair.

  3. Small increments: In general, you will gain or lose about 1 point per game. This means each game is insignificant in the scheme of things, and it doesn’t hurt to play every game in ranked mode. Competing systems like TrueSkill or Glicko say their advantage is that you can converge on your rating a lot faster, sometimes adding 50 or 100 points from a single game. I actually found this was a disadvantage. The slow rating increase of Aco means that if you reach the top of the leaderboard, you know for sure you have really earned it and that it is not just caused by uncertainty error in the rating system.

  4. Daily decay: Every day, a person’s rating decays by 5 points. This ensures everyone is encouraged to keep playing ranked and defend their title. To preserve the true rating unchanged, the decay is stored separately from the rating, caps at 100 and each game cancels out 1 point of decay. Previously, people would camp at the top leaderboard, simply not playing to maintain their position, and that was not any fun.

Kiinnostava tiivistelmä erilaisista kilpapelien pisteytysjärjestelmistä ja niiden sopivuudesta eri kokoisiin peleihin. Lopussa on tiivistelmä muutoksista, joilla kirjoittajan peli saatiin pisteyttämään pelaajia reilummin.

Kohdan 4 jatkuva pisteiden laskeminen on sekä hyvä että huono asia. Oma etenemiseni Trackmania 2:n Canyon-moduulin listoilla pysähtyi, koska pisteiden voittamiseen tarvittavia korkeamman tason pelaajia ei löytynyt enää hetken päästä pelin palvelimilta. Pisteiden laskeminen olisi korjannut tämän, mutta aiheuttaa ongelmia mikäli pelaaja ei pääse jostain syystä pelaamaan hetkeen.

Toinen ongelma on Trackmania 2:n esport-skene, jossa virtuaaliset turnaustapahtumat tuo korkeatasoiset pelaajat yhteen. Näihin ei itsellä ollut kiinnostusta osallistua aikataulujen takia.

Ratkaisuna voisi ehkä olla useampi eri pistelista, joissa pisteiden putoaminen olisi aggressiivisempaa, mutta tämä ei auta jos peli keskittyy pääasiassa turnaustapahtumiin.

Yhden napin blogi

Vuosi tai pari sitten joku sanoi, että Facebookin tykkäykset on kommunikoinnin einesruokaa. En löydä lausahduksen alkuperää enää, mutta se jäi mietityttämään. Asiayhteys oli muistaaksen aika negatiivinen, mutta nopeampi ja helpompi kommunikointi ei olisi huono asia. Tätä on yritetty aiemminkin erilaisilla enemmän tai vähemmän onnistuneilla kokeiluilla kuten Vine ja Yo.

Tästä päädyin miettimään toimiiko samanlainen keventäminen myös blogin sisällön kanssa? Voisiko pelkästään puhelimen muutaman sensorin datasta koota kiinnostavaa tai hyödyllistä sisältöä?

Kokeillakseni tätä tein sijantini jakamiseen blogin IFTTT:n Do Button -puhelinsovelluksella ja Tumblr:in avulla. Voin julkaista blogiin puhelimelta yhdellä napin painalluksella nykyisen sijaintini ja IFTTT:n järjestelmien siitä luoman Google Maps -karttakuvan.

Julkaisen blogiin kesäloman aikana tehtävän reissun varrelta sijainteja, jotka toivottavasti muodostavat jonkinlaista tarinaa reissun tapahtumista. Blogi löytyy osoitteesta https://kavintaalla.tumblr.com/

Mietteitä harrastelijatason massiivinettipeleistä

Redditin MUD-subredditissä oli jonkin aikaa sitten kiinnostava keskustelu MUD-pelien modernisoinnista isomman käyttäjäkunnan saavuittamiseksi.

http://www.reddit.com/r/MUD/comments/31bezx/what_would_it_take_for_muds_to_become_popular/

Erään keskustelijan mielestä perinteisiä MUDeja ei voi kunnolla modernisoida, mutta niiden helppoon perustamiseen ja muokkaukseen pohjautuva kulttuuri voisi olla mahdollista elvyttää tulevaisuudessa helpompien pelinkehitystyökalujen avulla.

shawncplus:

Now, I can see where the culture of MUD building can get popular again. All it takes is for a newbie-friendly, free, powerful modern mmo engine to get released. As soon as someone who, now, would download SMAUG and make a MUD can instead download AwesomeNewMmoEngine and make a WoW clone with essentially the same skill level that’ll be the nail in the coffin for new MUD creation and the birth of a new generation of that culture of MUD builders.

Muutama tällainen työkalupaketti on jo tarjolla esimerkiksi HeroEnginen ja SmartFoxServerin ( + Unity3D:n) muodossa, mutta ne eivät vielä ole yhtä helppoja pystyttää ja ylläpitää kuin tekstipohjaiset MUD-palvelimet.

Seuraillaan mitä tulevaisuus tuo tulleessa. Haluan pelata joitan hassua.

(Hu)go-testailua

Olen parin viikon ajan testaillut Go-ohjelmointikieltä. Kieli on vaikuttaa varsin mukavalta ja itseä siinä kiinnostaa nopeus sekä käännetyn koodin tarjoamat helpotukset esimerkiksi nettipalvelujen deploy-prosessihin.

Aloin testailumielessä toteuttaa sillä pidempään ideatasolla pyörinyttä podcast proxy -palvelua, jolla on tarkoitus ladata, säätää ja antaa ladattavaksi podcast-feedissä olevia MP3-tiedostolinkkejä. Esimerkki käytöstä olisi seuraavanlainen http://korjaa-aud.io/korjaa/http://linkki.fi/ääni/tiedostoon.mp3. Linkin kutsuminen olisi tarkoitus palauttaa säädetty ja uudelleen enkoodattu MP3-tiedosto ladattavaksi.

Toteutan palvelua Go:lle tehdyllä bindauksella SoX-äänikäsittelykirjastoon. Komentorivityökalu toimii tällä hetkellä, mutta kirjaston/bindauksen ongelmana on todella pieni määrä esimerkkejä sen käytöstä ja joidenkin säätöefektien kummalliset parametrit.

Yksi hyödyllisemmistä efekteistä “silence”, jolla sain lyhennettyä 1 tunti 45 minuuttia kestävästä podcastista pois 15 minuuttia pois leikkaamalla sen keskellä olevat hiljaiset kohdat lyhyemmiksi.

Go:n kirjastojen lisäksi olen testaillut satunnaisia Go:lla tehtyjä ohjelmia. Näistä isommassa testissä on ollut staattisia sivuja sisältö- ja template-tiedostoista generoiva Hugo. Sivuston generoiva komentorivityökalu on nopea, mutta se on vielä kehityksen alla.

Esimerkiksi järjestelmässä ei ole vielä sisäänrakennettua tapaa luoda postauksista sivutettua listaa ja Markdown-parseri tekee vähän omiaan. Kummankin korjaus ja läjä muita kiinnostavia ominaisuuksia on kyllä tulossa.

Mari Saario: Kuka tukee koodarilapsen intohimoa?

http://marisaario.net/blog/2014/09/07/kuka-tukee-koodarilapsen-intohimoa/

Jos kolmivuotias on kiinostunut viulunsoitosta, hänelle on tarjolla käytännössä joka kunnassa musiikkileikkikouluja ja -kerhoja. … Jos lapsi on kiinnostunut tietokoneista, hänen vanhempiansa neuvotaan rajoittamaan harrastusaikaa.

Mitä teet kun robotti vie työsi?

Kaikenlainen tekoälyyn ja automatisointiin liittyvä on kiinnostanut itseä jo pitkään. Yllä olevassa videossa pohditaan lähitulevaisuuden työllisyystilannetta, jossa fyysinen robotti tai tekoälyjärjestelmä korvaa ihmisen työn tekijänä.

Evernoten Android-jakovalikkomuutos

Jonkin aikaa sitten Evernote vaihtoi nimensä Androidin jako-valikossa “Lisää Evernoteen”. Syynä on ilmeisesti ollut yrityksen ajatus nostaa sitä aakkosjärjestyksessä olevassa listassa lisäämällä e-kirjaimella alkavan valikkotekstin eteen a-kirjaimella alkava. Eli englanniksi teksi on nyt muodossa “Add to Evernote”.

Englanniksi tämä toimii kivasti ja Evernote nousee valikossa, mutta muille kielille käännettynä ensimmäinen sana saattaa olla mitä vaan. Suomeksi käännettynä teksti alkaa nyt l-kirjaimella ja puotaa listassa jonkin verran. Itsellä on ohjelmia sen verran, että joudun nykyään rullaamaan pari kertaa että pääsen klikkaamaan Evernotea.

Olen puhelimella Evernoten suurkuluttaja ja lisään muun muassa kiinnostavia twiittejä kokonaisena, jotta saan kiinnostaviin linkkeihin myös kontekstia mukaan.

Bisnes-mielessä tekstin vaihtaminen on ihan ymmärrettävä valinta. Oletettavasti osa Evernoten mobiilivärkkiinsä asentaneista ei välttämättä muista käyttää sitä jakovalikon kautta ja tällä heitä muistutetaan käyttämään ohjelmaa ja ehkä jossain välissä siirtymään maksaviksi asiakkaiksi.

Evernote on suomeksi ja varmaan myös muille kielille lokalisoitu kohtuullisen hyvin, mutta käännöksen aiheuttamaa “haittaa” ei ole jostain syystä jaksettu/muistettu ottaa huomioon muutosta tehtäessä. Maksaviin asiakkaisiin tällä ei välttämättä ole suoraan mitattavissa olevaa vaikutusta, mutta olisi kiinnostavaa saada tästä lisää tietoa joskus tulevaisuudessa.

Flickr:n hieno web-karttakäyttöliittymä

Selasin pitkästä aikaa Flickr:istä kuvia ja huomasin heidän toteuttaneen erittäin siistin ja pienessä tilassa toimivan karttanäkymä kuvan paikkatiedon näyttämiseen.

Kartta vaihtaa zoomitasoa muutaman tason verran viemällä hiiri kartan päälle ja kartan klikkaaminen vie hakuun, joka näyttää sijannin lähellä otetut muut kuvat. Yksi parannusidea olisi mennä eri zoomitasoilla klikkaamalla eri laajudelta kuvia etsiviin hakuihin.

Alla on animaatio kartan toiminnasta.

Animatio kartan toiminnasta

naveen: a personal API

naveen:

a personal API i started at first by writing my workouts down, and then trying out all types of digital trackers. one favorite tool that came out of this period was the withings scale: it allowed me to periodically keep track of trends in my weight and body composition and allowed me to think about big trends in my life that affected performance.

Kiinnostavaa asiaa oman elämän seuraamisesta. Kirjoittaja on rakentanut oman APIn tietojen käsittelyyn eri palveluista ja laitteista.

fartscroll.js by theonion

http://theonion.github.io/fartscroll.js/

The Onion siirtymässä onnistuneesti myös ohjelmistokehityksen pariin.

phpstack - A TCP/IP Stack and Webserver in PHP

http://dunkels.com/adam/phpstack/

Internet crazy glue iskee taas. :D

Three Panel Soul » Archive » on Infinite Loops

http://threepanelsoul.com/2013/04/15/on-infinite-loops/

Ohjelmointi on palkitsevaa ja kiinnostavaa. :)

put a burger in your shell

http://notes.torrez.org/2013/04/put-a-burger-in-your-shell.html

Ajattelin laittaa työkoneelle 🙂 tai 🙁 sen mukaan onko keittimessä kahvia.

The Onion: Internet Users Demand Less Interactivity

http://www.theonion.com/articles/internet-users-demand-less-interactivity,30920/

Luen yleensä The Onionia hupaisan satiirin takia, mutta tällä kertaa vastaan tuli ihan asiallinen artikkeli nykyisestä ADHD-SoMe-internetistä. Välillä kaipaa aikoja jolloin sisältö oli pelkkää HTMLää ja jakaminen oli linkin copy-pasteaminen irkkiin (jota teen kyllä edelleen).