"Dus euh, jij voert dan die huizen in?" nl

Door creator1988 op woensdag 18 mei 2011 15:37 - Reacties (39)
Categorie: -, Views: 6.849

"Maar, dat funda dat is toch wel af?"; "En dat doe je dan in je eentje neem ik aan?"; "Maak jij dan de foto's ofzo?"; zomaar een paar citaten die in de afgelopen 2,5 jaar zijn langsgekomen tijdens feestjes. Daarom het enige echte dev-overzicht van funda, met hopelijk een verklaring hoe we 20 man fulltime bezig kunnen houden met het knutselen aan de site. Kan ik daarna mooi bit.ly/neeikvoergeenhuizenin hierheen laten linken en op een t-shirt printen.

Dus, hoeveel man loopt daar nou rond?
In totaal bestaan we uit een man/vrouw of 50, waarvan er ~ 20 zich bezig houden met techniek, verdeeld over de volgende disciplines:
  • - 1 Groot leider
  • - 1 Software architect
  • - 2 Project managers
  • - 2 Testers
  • - 4 User experience designers (waarvan 1 groot leider)
  • - 1 Release manager / interne technisch applicatiebeheerder
  • - 10 Software developers, waarvan 7 intern, en 3 op locatie
En daarnaast nog 3 applicatiebeheerders die voornamelijk voor ons werken, maar in dienst van onze applicatiebeheer-partij zijn.

Maar, die site verandert toch nooit?
Wel dus! Maar naast werk aan de sites funda.nl en fundainbusiness.nl hebben we ook nog een mobiele site, een iPhone app, een API, etc. De meeste tijd gaat echter zitten in ons makelaarportaal, de funda desk, waar we tools hebben voor het beheer van alle panden, media en kantoorgegevens. Omdat er voor producten die we daar aanbieden betaald moet worden, hebben we tevens een grote set aan business rules + aanverwante programma's die dit allemaal in goede banen leiden.

Lees verder »

OAuth provider in .NET nl

Door creator1988 op woensdag 11 mei 2011 17:45 - Reacties (5)
Categorie: Frontend, Views: 2.893

Om maar eens met een auto-analogie te komen: wanneer je (iets te onbetrouwbare) neefje iets uit de kofferbak van je auto moet halen, kan het een onveilig gevoel geven om hem direct de sleutel van je nieuwe A4 te overhandigen. Hij kan immers met die sleutel de auto starten, wegrijden en je no-claim om zeep helpen. En doet hij het niet nu, dan kan hij de sleutel kopiëren en het morgen proberen. Zou het niet mooi zijn om een sleutel te geven die alleen werkt op de kofferbak?

Zelfde geldt voor 3rd parties die bij jouw data willen. Wanneer een applicatie alleen een lijstje met de huizen die jij bewaard op funda wil tonen, waarom zou je dan je gebruikersnaam en wachtwoord moeten geven? Daar kan de applicatie immers álles mee. Daarom: OAuth.

An open protocol to allow secure API authorization in a simple and standard method from desktop and web applications.
"If you're storing protected data on your users' behalf, they shouldn't be spreading their passwords around the web to get access to it. Use OAuth to give your users access to their data while protecting their account credentials."

OAuth is dus een open protocol waarmee je 3rd parties toegang kan geven tot data van je gebruikers, zonder dat de gebruiker zijn wachtwoord met de 3rd party hoeft te delen.

Lees verder »

Google Analytics in MVC nl

Door creator1988 op donderdag 05 mei 2011 15:14 - Reacties (7)
Categorie: Backend, Views: 3.339

Wanneer je iets in je MVC applicatie wil implementeren dat op (bijna) elke pagina terug moet komen, zoals Google Analytics, is dat een probleem dat lastig te tackelen is. Tactieken die ik in de praktijk heb gezien:
  • 1. Een baseclass maken met daarop de property 'GoogleAnalyticsTag', en alle Masterpages van dit model laten overerven. In de masterpage vervolgens <%= Model.GoogleAnalyticsTag %> doen.
  • 2. In je action 'ViewData["GoogleAnalyticsTag"]' zetten, om geen afhankelijkheid op alle modellen te hebben.
  • 3. Een losse action maken, en in je masterpage '<%=Html.RenderAction("GoogleAnalytics", "SomeController")%>'.
3 is op zich de 'way-to-go' wat mij betreft, maar in tegenstelling tot 1. en 2. waar je in je action (of model) de GA tag zet heb je hier geen action context meer. En dus zag de code er in een van onze applicaties uit als:

C#:
1
2
3
4
5
6
7
8
9
10
11
12
var url = HttpContext.Current.Request.Url.PathAndQuery;
var tag = "";

if (url.StartsWith("/koop/")) tag += "koop/";
if (url.StartsWith("/huur/")) tag += "huur/";

if (new Regex(@"/(koop|huur)/[\w-]+/\w+-\d+-[\w-]+/").Match(url).Success) {
    if (url.Contains("omschrijving")) tag += "object-omschrijving";
    if (url.Contains("fotos")) tag += "object-fotos";
}

// etc. etc. etc.

Ononderhoudbaar, buggevoelig, en super hacky. Dat kan mooier!

Lees verder »

iOS like Javascript photo gallery breakdown nl

Door creator1988 op dinsdag 03 mei 2011 14:23 - Reacties (14)
Categorie: Frontend, Views: 3.145

Vandaag een breakdown van de swipe-events in de photo gallery die we op onze mobiele website gebruiken. Verwacht niet een line-to-line breakdown, maar alleen de wijzigingen die hebben moeten doen om van onze more-or-less statische versie een versie te maken die swipe events ondersteunt.

Let's get it started
Omdat we gebruik willen maken van de 'touchmove' events gebruiken we een zelfgeschreven jQuery plugin die de interface iets handiger maakt: jquery.(s)wipe.js. De syntax voor deze plugin is:

JavaScript:
1
2
3
4
5
$('#een-element').wipe({
    wipeStart/* */,
    wipe/* */,
    wipeEnd/* */
});

We kunnen aan deze events functies koppelen waardoor we alle logica voor het swipen op één plaats hebben.

Lees verder »