• Solr, deel 1: Introductie tot faceted search

    Alle huizen op funda staan netjes opgeslagen in een SQL Server database. Normaal gesproken best praktisch, maar niet flexibel genoeg om al onze wensen eenvoudig te vervullen. Vandaar de overstap naar een zoekplatform dat hier wél voor geoptimaliseerd is. Vandaag deel 1 in een technische serie over de overgang naar Solr.

    Bij onze zoektocht naar nieuwe software is het van belang dat deze snel is, want we serveren tijdens een beetje drukte makkelijk meer dan 300 pageviews per seconde. Daar ligt ook meteen het goede nieuws: Solr is blazingly fast! Op één instance haalden we al een performance van 1.000 req/s. En dat is niet alleen zoeken, maar inclusief het converteren van en naar .NET code. En het mooie is; het integreren binnen een bestaande .NET omgeving is helemaal niet zo lastig!

    Continue reading »

  • Javascript, state van snel opvolgende AJAX requests bijhouden (?)

    Tijdens het productiewaardig krijgen van de Javascript van de nieuwe zoeksuggesties stuitte ik op een probleem waarin de gebruiker snel achter elkaar doortypt:

    amst            (request #1)
    amste            (request #2)
    amster            (request #3)

    Geen probleem zolang de requests allemaal even lang duren. Maar wanneer deze terugkomen in de volgorde:

    #1
    #3
    #2

    staat er verkeerde data in de suggesties.

    Continue reading »

  • Minesweeper met Javascript en Canvas

    Vrijdagmiddag om half vier is een uitstekend moment om de laatste 90 minuten pre-borrel gewoonweg te verspillen. Dat kan met filmpjes kijken of door spelletjes te spelen. Blijkbaar had systeembeheer dit ook door, want op mijn verse geïnstalleerde machine staat mooi geen mijnenveger. Mooi moment om eens te gaan spelen met <canvas />. Beware voor awesome code, met fantastische variabelenamen: Minesweeper in Javascript en Canvas (bouwtijd: minder dan 60 minuten vanaf scratch)!
    http://www.100procentjan.nl/tweakers/minesweeper.png

    Continue reading »

  • Video: Primer; Hoe Facebook omgaat met Javascript

    De beste video die ik in 2010 heb gezien, "Primer: Facebook's 2k of JavaScript to power (almost) all interactions" door Makinde Adeagbo. Verplicht voer voor iedereen die professioneel met JavaScript bezig is.

    Videolink

    Continue reading »

  • MVC Views gebruiken in ASP.NET Webforms

    Wanneer je een hybride website hebt, waarin zowel MVC als Webforms gebruikt worden; een niet ongewoon scenario wanneer je website constant in development is; kan het gebeuren dat je veelgebruikte controls (zoals bijvoorbeeld een 'Login' control) in Webforms schrijft omdat je ze dan voor allebei de architecturen kan gebruiken.

    Vandaar het 'ViewRenderer' control, een CustomControl dat MVC Views kan renderen in Webforms controls. Syntax?

    <Mvc:ViewControl runat="server" ViewName="~/Views/Shared/Login.ascx"/>

    Continue reading »

  • Non-javascript fallbacks in ASP.NET MVC

    Alles op den ganse aarde is tegenwoordig Ajaxified, en een behoorlijk aantal websites heeft haar Ajax interacties Javascript-only gemaakt. Nogal vervelend als een aanzienlijk deel van je gebruikers onder werktijd je website probeert te gebruiken. Met ASP.NET MVC is het behoorlijk gemakkelijk gemaakt om eenvoudige interacties ook beschikbaar te maken voor non-Javascript clients.

    De 'Bewaren' knop
    Men neme als voorbeeld, de 'Bewaren als favoriet' functionaliteit zoals deze op elke detailpagina te zien is. Een knop met drie states:
    http://www.100procentjan.nl/tweakers/nonjs_bewaren.png
    http://www.100procentjan.nl/tweakers/nonjs_bewaarprogress.png
    http://www.100procentjan.nl/tweakers/nonjs_bewaard.png

    Aan de achterkant doet dit niets anders dan een GET naar de controller 'ClientActie' (GETs zijn goedkoper dan POSTs) via:

    $.get('/clientactie/bewaarobject/?id=47883154', function(d) { /* change state */ }, 'json');

    Continue reading »

  • 2010: Nu eens échte cijfers over browsers en besturingssystemen

    Na vandaag de volgende artikelen te hebben gelezen: Firefox deelt klap uit aan IE in Europa, en Windows 7 in Nederland groter dan XP; ter reflectie eens wat cijfers van een echte website die door een aanzienlijk deel der bevolking wordt gebruikt. Met net even andere conclusies. Tevens een aardige indicator voor het gebruik van Internet Explorer 6 in 2010.

    Browsers
    Het aantal bezoeken per browser over geheel 2010:
    http://www.100procentjan.nl/tweakers/ga2010_browsers.png
    Duidelijk te zien is dat IE nog altijd zeer dominant is. Wanneer we alleen de maand december pakken, dan is wel duidelijk dat dit afneemt; maar nog altijd ruim de grootste. Opvallend is wel de opmars van Safari.
    http://www.100procentjan.nl/tweakers/ga2010_browsersdec.png

    Continue reading »

  • Intelligente suggesties, deel 4: Aantallen, caching en Protocol Buffers

    Dit is deel 4 in een serie over de techniek uit een 'intelligente' zoekbox.

    We kunnen hierarchisch zoeken, spel- en typfouten verhelpen en zelfs vrij goed gokken wat een gebruiker bedoelt als we de zoekterm niet helemaal begrijpen; waardoor alleen nog de grijze getallen met aantallen openstaan.

    Continue reading »

  • Intelligente suggesties, deel 3: Uitspraak en hierarchie

    Dit is deel 3 in een serie over de techniek uit een 'intelligente' zoekbox.

    Na gisteren een BK-tree gemaakt te hebben waarmee we kunnen zoeken op woorden, en daarbij ook typfouten kunnen ondervangen, verbeteren we dit vandaag door middel van een combinatie van het fonetisch algoritme Soundex en de Burkhard-Keller tree.

    Continue reading »

  • Intelligente suggesties, deel 2: Volledige matching en typfouten

    Dit is deel 2 in een serie over de techniek uit een 'intelligente' zoekbox.

    Na gisteren in te zijn gegaan op de basis van de applicatie, vandaag gaan we dieper in op Burkhard-Keller trees voor efficiënte volledige matching, en het ondervangen van typfouten.

    Continue reading »