Kodat och resonerat i Mars

Mars är snart slut och kodmässigt har de senaste 30 dagarna bjudit på lite insikter. Generellt har det varit en bra månad, förutom att det varit -2 grader och snöstorm mest hela tiden.

1# Designa för tablet first
Jag ser i loggarna på mina projekt att allt fler använder mobile enheter för att surfa med. Själv gör jag det hela tiden. Datorn använder jag att bygga med, Tablet för att använda tjänster och mobilen för att snabbkolla nyheter. Jag är knappast inte och det säger mig att man gör rätt i att alltid leverera en riktigt bra upplevelse på Ipad och Tablets.

bild

2# Beta är beta
Jag använder just nu flera olika projekt som är i beta. Bloggen går på WordPress 3.6-alpha-23797 och Lyriken på Laravel4 beta 3, ett annat hemligt projekt går på Phalcon 0.9. Det är kul och bra att vara uppdaterad men den senaste tiden har jag råkat ut för krascher, och då är det inte lika kul.

3# WordPress kod diskuteras
Jag använder wp och gillar det väldigt mycket. Backend är superenkelt och det går snabbt att bygga pluginer och funktionallitet. Man kan dock inte blunda för kodbasen och arkitekturen som numera har några år på nacken. Medan Drupal och Joomla har gjort omfattande strukturella ändringar (mer MVC-orienterade) har wp inte varit fullt så offensiva. Om detta skriver Henri Bergius i bloggposten Why WordPress needs to get Decoupled, intressant.

4# Uppdaterat
- Sticky texter, under rubriken utvalda
- Cache på meddelande
- Samtliga Macros omskriva i en egen klass
- Meddelande har fått bättre feedback
- Lagt till papperskorg, istället för att radera
- Omdesignad textsida, så författarens bild visas tydligt
- Mail hanmar inte längre i spam
- Inloggning med Facebook + skapa nytt konto med Facebook
- Kört jsLInit + php_sniffer på allt, och rättat massa små syntaxfel

3 månader med Lyriken.se

Det har gått tre månader sedan jag publicerade Lyriken.se. Det har inneburit väldigt mycket natt-kodande och väldigt mycket kul kontakter med fantastiska människor, tack alla för bugrapporter och testande!

I starten var Lyriken.se ett rent teknikprojekt. Jag var tvungen att få en grund på plats och jag var dessutom sugen på att utveckla något på Laravel eller på Phalcon. Efter några veckors djupdykning i dokumentation så föll beslutet på Laravel, och version 4 (som då inte var i beta 1, men som nu är i beta 4). Det har var inte ångrat.

Men vad jag kommit att inse nu är att Lyriken är ett designprojekt. Det handlar om kod-design, gränssnittsdesign och vacker syntax. Sällan tidigare har jag skrivit om så mycket kod enbart för att den varit ful. Aldrig förr har jag följt standarder till 100%. Allt detta gör att kvaliteten på Lyrikens grund känns väldigt solid.

Men alla kan skriva fungerande kod (nja, nästan alla), så det som verkligen kommer få Lyriken att sticka ut är designen på gränssnittet. Just nu befinner jag mig mitt i en period där ny funktionalitet ska läggas till. Det är en verklig balansgång att inte lägga dit länkar eller knappar överallt. Jag kommer envist hålla nere antalet funktioner till förmån för några bra. Jag kommer alltid se till att allt fungerar lika bra i mobilen som vid datorn (fast inte i ie8 eller ie7).

Så, framöver kan man räkna med nya sköna funktioner slipad design.

Pronto – jquery plugin för att ladda sidor snabbare

Alla vill ladda webbsidor snabbare, inte mist i mobilen där laddtiden ofta försämras av en lägre bandbredd. Ett sätt att göra detta på är att inte ladda hela sidan utan bara det som faktiskt ändras.

Biblioteken Pjax och Turbolinks har funnits ett tag och används just för detta. Båda gör sitt jobb men jag tänkte puffa för en liten och väldigt bra jQuery-plugin som heter Pronto.

Jag använder pronto på Lyriken.se och upplevelsen är absolut förbättrad. Det går snabbare och jag slipper dra in fonter, javascript och css så fort en sida ska visas.

Man behöver givetvis jquery och därefter pronto. Sedan har jag lagt följande kod på sidor där jag vill använda pronto.

$(document).ready(function(){
$.pronto({
selector: "a:not(.no-pronto)"
});
$(window).on("pronto.render", init_pronto_events);
});

Nu är alla länkar utom de som har en .no-pronto i href:en aktiva. Via metoden pronto-render kan jag se till att lägga till de events jag vill ha på sidor som pronto hämta. OCh vill man till exempel ta bort events gör man det via pronto.load.

function init_pronto_events() {
init_my_stuff();
}

Vad händer egentligen med WordPress 3.6?

Kära WordPress vad är det som händer med versin 3.6? Tidigare i veckan meddelades att Editorial Flow droppas för att det blir för komplext. Och nu får den som uppdaterar till senaste utvecklingsversionen (just nu 3.6-alpha-23451) se följande.

3-6

Detta är alltså uppdaterade Post Formats. Dessa har funnits tidigare men haft en ganska undanskymd tillvaro. Tanken är bra och jag har länge irriterat mig på att man inte kunnat skapa egna Post Formats utan bara haft tillgång till de som funnits inbyggda. Så ändringar i API:et för att förbättra detta är välkommet.

Men att lägga till ytterligare 10 flikar i vyn för att skriva poster känns, ja jag säger det, katastrofalt. WordPress är redan idag ganska komplext och gränssnittet är långt ifrån självklart. Ska man ändra i gränssnittet så borde det handla om förenkling, ta bort saker, underlätta. Jag hoppas verkligen att det inte kommer se ut så här när 3.6 kommer till sommaren.

Nu kör Lyriken.se på Laravel 4, beta

Under de senaste 3-4 veckorna har jag jobbat på att flytta Lyriken.se till Laravel 4 och nu är jag klar. En uppdatering av hel version brukar innebära en hel del kodändringar och jag tänkte berätta om mina erfarenheter såhär långt.

Laravel 4 (beta 4 när detta skrivs) är helt baserat på Composer, en underbar lite pakethantering för php. Det bygger därmed fullt ut på PSR-standard vilket gör att man väldigt enkelt kan använda alla resurser som finns på Packagist. Jag har även börjat använda Assetic via Basset och phpunit för tester, samt att jag numera fullt ut använder Eloquent för att prata med databasen. Till detta använder jag sedan tidigare Imagine för att hantera bilder och Essence för att hämta media med oembed.

Laravel 4 kommer med en hel del ändringar även om grundstrukturen i ett projekt är väldigt likt tidigare versioner. Installerar gör man såhär.

Installera composer via terminalen curl -s http://getcomposer.org/installer | php Ladda hem den senaste versionen av Laravel och kör sedan php composer.phar install Nu kommer Composer ta hem de paket du behöver och placera dem på rätt ställen i ditt projekt, och du ska kunna starta appen. Svårare var det inte :-)

Eftersom Laravel nu byggs med Composer verkar det som att en del generella classer har tagits bort till förmån för öppna diton. Till exempel finns inte Str, HTML, eller form-klasserna kvar. Dock finns det flera portningar av L3-klasserna + en del andra via Packagist, som till exempel Laravel-Powerpack. Samma sak gäller Profilern som är helt borta (eller inte klar än?). En del andra saker använder nu väl kända bibliotek istället för att vara helt egna, till exempel användaer Maill:: Swiftmailer och Request:: använder Symfony. Smart återanvändning av bra komponeneter som via Composer limmas ihop till Laravel.

Syntaxen i hela projektet är ändrad och där man tidigare skrev order_by skriver man nu istället orderBy ingen svår sak men har man ett stort projekt kan det bli en hel del rader att ändra.

Bytet till Eloquent (Laravels egna ORM) gjorde att jag fick göra om lite i databasen eftersom det förutsätts en viss namnstandard. Jag har alltid varit lite skeptisk till sådant men det fungerar väldigt smidigt. Nu i efterhand tycker jag att min kod har blivit väldigt mycket lättare att läsa och bättre strukturerad. Efter som ORM kräver att metoder ligger på rätt ställe så fick i alla fall jag betydligt bättre styr på mina klasser, en positiv bieffekt.

Jag har en ganska lång väg kvar tills Lyriken är så bra att jag kan köra Poetfreak.com på plattformen men att göra denna uppdatering var ett stort och kul delprojekt! SOm extra plus har jag uppdaterat jquery til 1.9.1 och börjat använda Pronto (pjax/turbolinks) samt Fort Awesome.

Nästa steg? Beta av 20-30 punkter lång fix-och-förbättra-lista, samt inleda tester på hur jag på ett smart sätt kan lägga statiska resurser på till exempel Amazon s3, våren är alltså räddad :-)

Laravel och mitt macro för cache

Jag tycker väldigt bra om Laravel, och en av de verkliga styrkorna är ramverkets möjlighet att göra så kallade custom macros, ofta kallat helpers eller view helpers. Macros är små metoder som man kan skriva och sedan återanvända på många olika ställen. Det finns en del inbyggda och man kan enkelt skapa egna.

Vill man skriva ut en img-tag kan man till exempel använda detta:

echo HTML::image('img/smile.jpg', $alt_text);

Man vad har detta med cache att göra? Jo, på en av de sajter jag jobbar med behöver jag rendera alla sidor i realtid. Det är en sajt där användarna loggar in och varje enskild sida är helt unik till varje besökare. Skulle en användare uppdatera sitt namn måste flera hundra sidor ändras (om hela sidor cachas). Här behöver jag en helt annan lösning.

Jag har byggt ett macro som tar emot några få parametrar och den ser ut så här.

/*
* Return a fragment of a user
* Usage HTML::user_fragment($id,'user_name')
*
*/
HTML::macro('user_fragment', function($id,$fragment){
$user = User::getUser($id);
if(isset($user->$fragment))
return e($user->$fragment);
});

Jag skickar in en användares id samt vilket fält från databasen som jag vill ha tillbaka. Objektet $user är cachat och på alla sidor som ska visa en användares namn används samma objekt. Ändrar man något i databasen, till exempel användarens namn så återspeglas ändringen omedelbart på alla sidor.

Macron i Laravel kan användas både i vyer och i modeller så var man än behöver få ut data ur objektet $user kan man använda macrot, superbra!

Metoden User::getUser ser ut så här.

public static function getUser($id){
return (self::getRequestCache($id) ? self::getRequestCache($id) : self::getUserFromDb($id));
}

getRequestCache kollar om samma $user redan har returnerats ut tidigare på sidan (i samma request), och då redan finns tillgänglig i en variabel. Saknas objektet använder jag getUserFromDb(); som hämtar ut objektet och skapar cahcen med Laravel Cache::remember.

På så sätt ser jag till att cacha alla viktiga objekt och jag kan samtidigt rendera alla sidor helt dynamiskt.

Jag kastar in lite fler användbara Larave-macros som ni gärna får använda.

Denna skapar länkar i en text.

/**
 * Try to create links in text
 * usage HTML::make_links($text);
 */
HTML::macro('make_links', function($text){
	$text = preg_replace(
		array(
   			'/(^|\s|>)(www.[^<> \n\r]+)/iex',
   			'/(^|\s|>)([_A-Za-z0-9-]+(\\.[A-Za-z]{2,3})?\\.[A-Za-z]{2,4}\\/[^<> \n\r]+)/iex',
   			'/(?(?=<a[^>]*>.+<\/a>)(?:<a[^>]*>.+<\/a>)|([^="\']?)((?:https?):\/\/([^<> \n\r]+)))/iex'
 		), array(
			"stripslashes((strlen('\\2')>0?'\\1<a href="\&quot;http://\\2\&quot;" target="\&quot;_blank\&quot;">\\2</a> \\3':'\\0'))",
   			"stripslashes((strlen('\\2')>0?'\\1<a href="\&quot;http://\\2\&quot;" target="\&quot;_blank\&quot;">\\2</a> \\4':'\\0'))",
   			"stripslashes((strlen('\\2')>0?'\\1<a href="\&quot;\\2\&quot;" target="\&quot;_blank\&quot;">\\3</a> ':'\\0'))",
		), $text
	);
	return $text;
});

Och den här använder jag för att leverera speciella styles till ie8 och ie9.

/**
 * This handle styling, check for user agent and send the correct one
 * to the Assets lib
 */
HTML::macro('page_css', function($file){

	if(!isset($file))
		return;

	if( stristr('MSIE 8.0', $_SERVER['HTTP_USER_AGENT']) OR stristr('MSIE 9.0', $_SERVER['HTTP_USER_AGENT'])){
		Assets::css($file . '-ie');
	} else {
		Assets::css($file);
	}

	return Assets::renderCss();

});

Jag hoppas ha inspirerat några till att bygga egna macros och framför allt till att använda Laravel.

Meddelanden och trådade kommentarer kommer till Lyriken.se

Lyrikens nya design

Bygget av Lyriken.se går vidare, jag ser hela 2013 som ett ”byggår” och sajten kommer egentligen inte vara klar och användbar på riktigt förrän 2014. Sakta men säkert läggs del för del till och hela tiden med responsiv tanke, snabb laddtid,vettiga, enkla och lättanvända funktioner.

Meddelanden

Jag har jobbat under januari med att skapa ett meddelandesystem till Lyriken.se. Tanken är helt enkelt att man på ett väldigt enkelt sätt ska kunna skicka privata meddelanden till andra medlemmar.

Det kommer finnas en inbox och en utbox, man kommer kunna svara på meddelanden och man kommer kunna gruppera meddelanden i historik. Det kommer även finnas en notifiering i menyn om nya/olästa meddelanden och man kan själv välja om man vill ha en notifiering till sin e-postadress. Framöver kommer jag även utöka säkerheten på sajten och då ska man inte kunna skicka meddelanden till medlemmar som har blockerat kontot osv.

Ganska basic funktioner men detta med meddelanden är lite trixigt, och på sajter jag byggt tidigare har just meddelanden var det som skickas mest (stora volymer). Betydligt fler än till exempel kommentarer. Därför ställer det lite extra krav på hur data lagras och hanteras för att allt ska upplevas som snabbt. Det måste gå snabbt att skick och snabbt att till exempel söka igenom sin inbox.

Till att börja med kan man lagra fritt antal meddelanden i sin inbox men det är troligt att jag kommer behöva sätta en gräns för det framöver. Tyvärr har min plånbok inte sedlar så det räcker för att lagra allt.

Trådade kommentarer

I början av januari lanserades de trådade kommentarerna (kritik) det innebär i kort att man numera kan svara på ett givet inlägg i en kommentarstråd. Det är supertrevligt och det blir bättre flyt i läsningen. På sajten är ändringen i stort en länk ”svara” men under ytan är hela kommentarslösningen omskriven :-)

Assets

Jag försöker få sajten så snabb som det bara gå och numera får Lyriken 97/100 av google page speed. Det är riktigt kul men det skapa en del nya utmaningar. En var att jag var tvungen att dynamiskt skapa nya filnamn på statiska assets, javascript, bilder, css:er osv. De befintliga cachas numera i användarnas browser upp till en månad, dvs om jag ändrar något tar det lång tid att få ut det. Lösningen blev att skriva ett lib som konkatenerar js/css-filer samt skapar en cachfil med en hash i filnamnet. Så, numera laddas bara exakt det som behövs för de olika sidorna vid en request, och om jag uppdaterar sidan ”skriv en text” så behöver inte samtliga sidors browsercache skrivas om.

Och nu då, nu blir det väl vår snart!

Januari/Februari kommer gå åt för att finjustera dessa två funktioner, därefter behöver jag jobba endel på optimering, cacha endel saker jag lagt åt sidan tidigare och göra några mindre gränssnittsändringar. Jag vill till exempel få bort jquery UI som sajten just nu använder.

2013 blir Lyrikens år

Då ger jag mig på en summering av Lyriken.se och 2012. Tanken var att lansera i Januari 2013 men jag var otålig och tillräckligt klar för att lägga ut sajten redan oktober. Plattformen var så pass stabil att man kunde publicera texter så varför vänta?

Därefter har jag jobbar och lagt ut ny kod i stort sätt varje vecka och här följer en list på förbättringar och incheckningar gjorda sedan oktober.

- Trådad kritik, man man numera ”svara” på kritik mitt i en tråd
- Byter namn på kommentarer till Kritik, tycker det är en viktigt skillnad där.
- Lägger grunden till det som ska bli Meddelanden, tjänsten öppnar under våren
- Fixar en bugg som gör att drafts inte uppdaterar texterna, bara publicerar dem
- Ökar storleken på fonterna i menyn i iPad, vill ha minst 40px aktiv yta att klicka på
- Breddar textytan för att förbättra läsningen och dessutom förbereda för de utökade kommentarerna
- Livesöket (textarkivet) fungerar dåligt, det beror på att jag tidigare uppdaterat databasen, så det fixas
- Fixar bugg som daterade alla utkast till 1970, bra år men fel
- Lägger till antalet nya kommentarer i menyn, tar senare bort det (återkommer i annan form)
- Ändrar så alla medlemmars fulla namn alltid visas på profilsidan, viktig för en seriös skrivarsida
- Omarbetar sidhuvudet så det är exakt samma på alla sidor
- Lägger till stöd för att ta bort nyskrivna kommentarer ”ångra”
- Ändrar förstasidan så bara texter med författare med fullständigt namn + egen bild visas, jag vill uppmuntra
- Lägger till metataggar till OG, så sidor man delar i sociala medier ser bättre ut
- Lägger till stör för att skicka mail då man får en kommentar
- Lägger till en sida för inställningar, tanken är att den ska fyllas på efterhand

Phu, till detta ska man lägga otaligt buggfixande, och timmar av designtrixande. Men nu startar det roliga, nämligen att få bygga och landsera nya tjänster till Lyriken. Redan nu finns det 25% klar meddelandefunktion men inkorg och utkorg osv. Givetvis ska man kunna skicka privata meddelande till varandra. Man ska även kunna embedda media (filmer och video) och poeternas egna sida ska få ett lyft.

Till det kommer såklart överraskningar i forma av skrivarfunktioner du kommer älska, 2013 kommer bli fantastiskt!

Två veckor med Lyriken

Det har gått två veckor sedan jag smyglanserade Lyriken.se. Responsen har varit fantastisk på alla sätt och en hel del buggar har blivit korrigerade. Så vad händer nu?

Egentligen var min plan att vara ute med en första version kring jul/nyår och jag tänker mig hålla kvar vid det. En hel del kodande ”bakom” ska göras men jag ser inga större förändringar på själva sajten. Sedan tar det verkligt roliga arbetet vid, och det handlar om att få lansera helt nya funktioner på sajten.

Jag har ingen helt fast plan men troligen ligger utökad hantering av kommentarer bra till för lansering under vintern. Jag tänker mig att man ska kunna se alla nya kommentarer på sina texter på ett överskådligt sätt och att man direkt ska kunna svara på dem. Dvs kommentarerna ska få ett trådat format. Detta är bra om man har många kommentarer på en text och man vill ge feedback på något som ligger i mitten av tråden. Jag vill på alla sätt uppmuntra och möjliggöra dialog kring texterna.

Efter det kommer jag arbeta på ”läslistan” eller ”följ”. Det handlar om att man ska kunna markera personer som man vill följa, och att man ska kunna sortera flödet på förstasidan så det bara visar texter från personer som man följer. Det påminner om Twitters feed men ska ha en lite twist.

Ja, med detta tror jag mig ha räddat vinterns kodande :-)

Lyriken.se – beta 1

Idag öppnar lyriken.se som är en helt ny skrivarsida jag gjort. Det är en bit kvar innan grunden sitter där jag vill att den ska vara men nu kan man skapa konton och publicera texter. Förhoppningen är att jag genom att öppna en publik beta ska kunna hitta buggar och ux-problem lite snabbare.

Jag har använt Laravel som ramverk. Det är fantastiskt och inte mist gör det att jag kan lägga tiden på att skapa sajten och inte på att hantera sessioner eller bygga en egen hantering av vyer osv. En annan sak som är lika fantastiskt och grundläggande är Composer, php:s pakethantering som ser till att jag alltid har uppdaterade versioner av alla extra bibliotek jag behöver. Till exempel använder jag Swiftmailer, Imagine och monolog.

Mycket funktionallitet saknas fortfarande i beta ett men jag tänker att allt blir lite roligare om jag bara lägger ut det. Sedan får jag helt enkelt jobba vidare utifrån det.

Enkel pakethantering med Composer

Pakethantering har historiskt inte varit fantastiskt i php-världen. Det beror bland annat på att utvecklare har gjort sina klasser och funktioner på olika sätt och då har det varit svårt att få dem fungera tillsammans. Drupal har haft en helt egen kodstandard som inte fungerat med Zend Framework osv. Jo, man kan skriva en wrapper och lösa problemet men…

Vore det inte bättre om php-klasser fungerade tillsammans på ett väldigt enkelt sätt? Självklart vore det så.

Lösningen finns och den heter Composer (och PSR-0). Det är en pakethantering för php och hanterar beroenden mellan klasser. Man kan säga att Composer klistrar ihop dina egna klasser med andras, underbart och väldigt användbart.

Composer har två grundbultar, dels repot Packagist som listar paket (drygt 4000 just nu) du kan inkludera i ditt projekt. Och dessutom finns en terminal-applikation.

För att installera Composer använder du terminalen. Gå till rooten (förmodligen webb-rooten) i ditt projekt och curla hem en .phar.

curl -s getcomposer.org/installer | php -d detect_unicode=Off

Därefter skapar du en composer.json och lägger denna på samma ställe som composer.phar nu ligger i, dvs i rooter i ditt projekt. I json-filen specar du vilka paket du vil ha.

{
  "require": {
    "imagine/Imagine": "dev-develop",
    "swiftmailer/swiftmailer": "4.2.x-dev",
    "monolog/monolog": "1.0.0"
  }
}

För att hämta hem paketen kör du.

php composer.phar install

Och för att i framtiden uppdatera paketen och se till att du har senaste versionen kör du

php composer.phar update

Nu kan du autoladda paketen i ditt projekt med hjälp av.

<?php require_once __DIR__ . '/vendor/autoload.php'; ?>

Skulle något något av dina paket ha ytterligare beroende hanterar Composer detta och ser till att även dessa paket laddas hem och blir tillgängliga.

Läs mer här.

http://nelm.io/blog/2011/12/composer-part-1-what-why/

http://blog.fortrabbit.com/handle-your-dependencies-with-php-composer/

Ipad first för Lyriken

Helgen har varit tung med förkylning och allmänt för lite sova. Det blev nog inte heller bättre av att jag varit iväg med jobbet för att skriva på utbildningar och konferensa i allmänhet. Sånt är sjukt inspirerande men sliter.

Well. En bra sak är att jag i helgen har redesignat (igen, sjukt osäker på formen just nu…) hela Lyriken, och nu utifrån jag ifrån att man i första hand kommer avnjuta texter från en iPad. Låter kanske märkligt men det är så jag själv läser saker på Internet nuförtiden och varför göra en kompromiss för Lyriken.se?

Så, min design-tes är för dagen följande.

Mobilen: Kommer användas för att snabbkolla nya texter. Man kommer inte skriva långa saker då tangentbordet är ganska knöligt i det lilla formatet.

iPad: Kommer användas för att läsa. Bokformatet med äkta bläddring. All navigation ”inom en tumme” och all funktionalitet behövs.

Desktop: Kommer användas för att skriva och utföra mer komplexa actions, som till exempel exportera texter eller organisera texter i böcker.

Givetvis kommer det vara massor av cross overs då man skriver på sin mobil osv, jag gör det själv var eviga dag men i stort ser jag att de olika enheterna har sin specifika uppgift att fylla, och att man helt säkert kommer ”vandra” mellan dem. Därmed också sagt att jag behöver bygga saker som gör resan mellan olika enheter enkel. Kanske ska applikationen minnas den sist lästa texten, så man kan fortsätta läsa där man slutade sist?

I min bok ser användarens resa mellan de olika enheterna ut ungefär såhär. På bussen tar jag fram mobilen och ser att en av mina favoritförfattare har skrivit en ny text. Hemma i soffan tar jag upp iPad:en för att läsa texten och skriva kortare kritik. Jag passa även på att komma mina meddelanden och senaste kommentarer. Vid midnatt tar jag en kopp starkt kaffe och slår jag mig ner vid datorn och publicerar en nyskriven text.

Känns som att det här projektet inte kommer sluta som jag tänkte det från början. Det blir en spännande resa i nya behov, nya ramverk och nya insikter, spännande är bara förnamnet.

Livesök och jquery UI

I veckan har jag arbetat med livesöket i det egna textarkivet. Jag minns från tidigare att många användare på skrivarsidor ganska snabbt kommer upp i flera hundra/några tusen publicerade texter. Då blir en klassisk paginering ganska otymplig så nu bygger jag istället ett sök som ska serva de inloggade användarna.

Det blir ett så kalla livesök (om jag inte ångrar mig) som helt enkelt leverera resultat efterhand som man skriver in sökord. Förhoppningsvis ska det vara en bra hjälp till användare med många publicerade texter.

Jag dessutom arbetat på listor av texter och hur man till exempel tar bort eller avpublicerar texter i bulk. Det lutar åt en fin lösning med ajax som tillåter att man gör detta och jag har just nu implementerat jquery UI för att att kunna använda deras dialog som extra hjälp säkerhet då man raderar saker.

Lyriken beta närmar sig

Lyriken.se närmar sig sakta en öppen beta. Förhoppningsvis ska jag vara klar med med visning av texter och hantering av användare inom några veckor.Jag bygger allt väldigt enkelt och enbart med grundläggande funktioner. Dels vill jag inte att detta ska bli ett monster, och dels tror jag att enkelt är bättre och att allt man vill är att posta texter och lösa dem (inte helt sant kanske…)

Just nu har jag massa ångest över designen och hur den ska skalas ner till iPad och mobilen. Det hoppas jag dock kunna lösa ganska kvickt för på en Post-it är följande nedkladdat…

- Multiactions på texter
- Datum på texter är engelska
- Utbox, meddelanden
- Datum på engelska, meddelanden
- Läsa ett meddelande
- Svara på ett meddelande
- Multiactions på meddelanden
- Nästa föregående, som ustoday.com
- Skriva en kommentar på en text, lite fetare fält än tidigare
Streckad yta ”logga in för att skriva en kommentar”, ytan byts sedan till form för texten.
(som instagram)
Fältet ska ligga under kommentarerna, äldst överst
Visa de 10 senaste + knapp, Visa alla kommentarer
- Macro nice_date visa fel språk
- Organisera dina texter, gruppera gör en ”Samling/Collections” (inte böcker)
- Nya kommentarer på mina texter är viktigt (ev i menyn)
- Blockera, rensa bort blockerade från listor
- Settings
- Skapa ny användare

Ett nytt skrivarprojekt tar form hos mig

Det är ganska många år sedan jag lämnade Poeter.se, och sedan dess har jag haft fullt upp med att jobba och göra annat. Senaste tiden har jag dock sneglat lite på skrivarsidor igen, och nu är det dags att jag berättar lite om ett kommande projekt.

Jag bygger alltså på en helt ny sajt, en svensk skrivarsajt som just för tillfället har arbetsnamnet Lyriken.se. Projektet blir en mix av erfarenhet från den gamla fina poeter.se-tiden blandat med nya insikter. Förhoppningsvis kommer det resultera i en bra sajt där vi kan dela texter och ha bra stunder tillsammans.

Här är några av de saker jag har haft i huvudet då jag designat och byggt.

Mobilt

Självklart ska allt fungera i både telefonen och på din läsplatta. Jag tror att ca 20-30% av användarna finns där så det är viktigt att supporta. Lyriken.se kommer stödja de mobila formaten och jag gör mitt yttersta för att optimera upplevelsen så den blir så bra som möjligt. Det blir alltså mycket mediaqueries men även responsiv javascript.

Snabbt

Självklart ska det vara snabbt och sidorna måste ladda in med blixtens hastighet. En skrivarsida är inte helt enkel att bygga och det kommer behövas cachning i olika nivåer för att lyckas med det. Sajten behöver tåla hög last och samtidigt vara i realtid. Ingen vill vänta på ett en ändring publiceras. Speciellt då man som jag själv, använder sin telefon till mycket av surfandet. Här tar jag hjälp av Laravel som är ett fantastiskt ramverk för att bygga sajter på.

Enkelt

Design är viktigt. Inga krusiduller, bara sidor som framhäver det viktiga, att skriva, läsa och skriva kritik. Det blir heller inga fotoalbum, diskussionsforum eller toplistor. Andra sajter gör ett bra jobb med att skapa sådana funktioner, så det lämnar jag till dem. På Lyriken.se kommer man bara göra två saker. Skriva och läsa, det tycker jag räcker bra för nu.

Säkert

Ingen ska kunna spamma sönder textlistor och du ska slippa se texter från dem du inte vill. Texter ska vara säkert förvarade och det måste vara användaren som själv har kontroll över det egna innehållet. Det är självklart massiv kryptering av lösenord och säkra servrar.

Moderna browsers

Jag siktar inte på att stödja gamla IE-versioner. För att kunna avnjuta Lyriken.se kommer du behöva en ny webbläsare. Det är inte kul att “bygga fel” för att supporta gamla dåliga webbläsare. Jag kommer använda CSS3 och HTML5 rakt igenom, det tror jag kommer vinna i längden. Dessutom, det kanske kommer ta längre tid än vad jag hoppas på att bygga klart detta, och vid det laget kanske ie7 är död och begraven på riktigt.

Det är massa kvar att göra men jag tror jag är ungefär halvvägs i bygget. Förhoppningsvis puttrar det på bra under hösten och då kan jag släppa ut det runt jul.

Johannes