Jag finns nu på Mediastrategi

Observera att jag har slutat på Mediastrategi.

För något år sedan var jag frilansande webbutvecklare på heltid, sedan började jag på Pingdom och blev expert på webbprestanda. Nu har jag återvänt till konsultandet och jobbar på webbyrån Mediastrategi.

Mediastrategi är en liten webbyrå i Västerås som har två avdelningar:

  1. Internetmarknadsföring
  2. Webbproduktion

Vi kan alltså hjälpa dig med exempelvis SEO, sociala medier och webbutveckling (mestadels Joomla och WordPress, men även skräddarsydda system).

Jag kommer successivt ta över allt ansvar för webbproduktionen, medan Daniel Nordahl fortsätter som vd och marknadsförings-guru.

Ring mig på 021-470 88 32 om det finns något som vi kan hjälpa till med!

Hur man publicerar blogginlägg på Twitter och Facebook automatiskt

Jag är bekväm av mig, därför vill jag att bloggandet ska vara så enkelt som möjligt. När jag klickar på knappen Publicera, vill jag att blogginlägget automatiskt ska publiceras på Twitter och Facebook.

Som tur är, har jag hittat sådana plugins till WordPress, som dessutom gör det på ett snyggt sätt: Simple Facebook Connect och Simple Twitter Connect. Låt dig inte luras av namnen, pluginen kan göra nästan allt.

En fördel med just dessa plugins är att de guidar dig till att skapa ”appar” hos både Facebook och Twitter, vilket bland annat gör att det står att inlägget publicerades ”via Apprikos” (eller vad din app kallas).

Så här kommer det se ut:

Du kan också låta dina besökare exempelvis kommentera på inläggen via Facebook och lägga in de officiella Like– och Tweet-knapparna.

Twitter släpper två bra bibliotek: Bootstrap och Hogan.js

I augusti släppte Twitter  Bootstrap, ”a front-end toolkit for rapidly developing web applications”. Det är ett paket med HTML, CSS och Javascript som gör det busenkelt att skapa snygga webbapplikationer. Utseendet kommer förstås påminna väldigt mycket om Twitter, vilket inte borde avskräcka alltför mycket…

Idag släppte de också Hogan.js, ett templating-ramverk för Javascript. Jag har inte tittat närmare på det, men eftersom det kommer från Twitter, utgår jag från att det är bra grejer.

Kolla in och testa genast!

Introduktion till Git

En bra video för dig som vill lära dig versionshanteringssystemet Git:

 

För att sedan kolla upp detaljer, kan du använda ”boken” Pro Git som finns gratis på nätet.

Jag har tidigare skrivit om Subversion, men numera skulle jag nog rekommendera Git eller Mercurial. (Läs Git is like MacGyver, Mercurial is like James Bond om du vill veta skillnaderna på ett övergripande plan.)

Använd inte MD5 eller SHA-1

Det är egentligen ganska enkelt: använd inte md5 eller sha-1 för att hasha dina användares lösenord. Inte ens om du använder salt.

United States Computer Emergency Readiness Team skrev 2008:

Software developers, Certification Authorities, website owners, and users should avoid using the MD5 algorithm in any capacity. As previous research has demonstrated, it should be considered cryptographically broken and unsuitable for further use.

Computer Security Division vid NIST skrev 2006:

Federal agencies should stop using SHA-1 for digital signatures, digital time stamping and other applications that require collision resistance as soon as practical, and must use the SHA-2 family of hash functions for these applications after 2010.

Säkerhetsgurun Ron Rivest skrev 2005: ”… now that md5 and sha1 are both clearly broken (in terms of collision-resistance).”

Förutom att algoritmerna har påvisade säkerhetsbrister går det väldigt snabbt att skapa uppslagstabeller för att ta reda på vilket lösenord som döljer sig bakom ett hash.

Med optimerade algoritmer och genom att använda grafikkort för att beräkna hashsummorna (de är snabbare än vanliga processorer på detta), har man kommit upp i 700 miljoner hashar per sekund för SHA-1. Mina tester visar att MD5 går ännu snabbare.

Det betyder att ditt ”säkra” lösenord på 8 tecken (ex. ”LvZ49l3U”, ”ibOQ3sjL”, ”LwL5opHp”) knäcks på en vecka. Om du är som de flesta och har lösenord på max 6 tecken, är det knäckt på under en halvtimme.

(Det finns också färdiga sådana uppslagstabeller som kallas rainbow tables som man kan använda för att blixtsnabbt knäcka alla tänkbara lösenord.)

Jag skrev tidigare en kort introduktion till hur man lagrar lösenord säkert, men sedan dess har jag lärt mig mer och kan sammanfatta det så här:

Använd SHA-256 med key stretching och dynamiskt salt för varje användare eller bcrypt med Blowfish (PHP-kodare bör använda PHPass). Då klarar du dig rätt bra.

Introduktion till Node.js

Vad är Node.js?

Node.js (kallas oftast ”Node”, rätt och slätt) är i grunden ett program som kan köra din Javascript-kod från kommandoraden – utan en webbläsare. Node.js gör det också möjligt att använda nätverket och filsystemet från Javascript mycket bättre än vad som är möjligt i dagens webbläsare.

I praktiken används Node.js mest som en webbserver, men det är egentligen bara ett av många möjliga användningsområden (men också det som Node.js-folket själva framhåller mest).

Ett av målen med Node.js är att det ska vara skalbart och alltså kunna hantera väldigt många samtidiga besökare på exempelvis en webbtjänst (men det är kanske inte riktigt så enkelt som att Node.js löser alla problem med skalbarhet).

Något som kan vara värt att tänka på är att med Node.js kommer du närmare hårdvaran än med exempelvis PHP på Apache. Node.js är alltså inte en högre abstraktionsnivå utan en lägre – vilket ger större flexibilitet men också mer komplexitet.

Installation

Du kan installera Node.js på flera olika sätt, men det enklaste är via en pakethanterare. I Ubuntu kan du använda apt för att installera Node.js:

$ sudo apt-get install python-software-properties
$ sudo add-apt-repository ppa:chris-lea/node.js
$ sudo apt-get update
$ sudo apt-get install nodejs

npm

Node Package Manager (förkortas npm) är en pakethanterare för Node.js, ungefär som PEAR för PHP, RubyGems för Ruby eller pip för Python. Npm gör det enkelt att installera moduler som du behöver.

Det enkla sättet att installera npm på:

$ curl http://npmjs.org/install.sh | sudo sh

”Hello, world!”

Skapa en fil helloworld.js och skriv in denna kodrad:

console.log('Hello, world!');

Kör det sedan från kommandoraden med detta kommando:

$ node helloworld

Enkelt!

Webbserver

En introduktion till Node.js måste förstås inkludera en enkel webbserver också. För att göra det enkelt för oss använder vi modulen Express istället för att använda den råa, inbyggda http-modulen.

$ npm install express

Skapa sedan en textfil, exempelvis webserver.js och skriv lite kod:

var app = require('express').createServer();

app.get('/', function(req, res){
    res.send('Hello, world!');
});

app.listen(3000);

Funktionen require() läser in modulen och createServer() skapar ett server-objekt som vi kallar ”app”. Genom att anropa metoder såsom get() och post() på app, talar vi om för objektet vad som ska hända när en viss URL på servern anropas. Det blir alltså ett slags router eller front controller.

Argumenten req och res står för request och response. req innehåller allt du behöver veta om anropet, och res är objektet som ska returneras till webbläsaren när du är färdig.

Metoden listen() säger sedan åt Node.js att vi vill lyssna på port 3000 och hantera alla http-anrop som kommer in där. Servern kommer fortsätta att lyssna tills du stänger av Node.js (ex. med Ctrl+C) eller tills något undantag eller fel inträffar.

Testkör servern exempelvis så här:

$ node webserver &
$ curl localhost:3000
$ killall node

Läs mer

Jag hoppas att du har lärt dig grunderna i Node.js, men naturligtvis finns det massor att upptäcka och lära sig:

Tips på artiklar om programmering

Riktigt bra artiklar som jag har lärt mig mycket från:

  1. The M in MVC: Why Models are Misunderstood and Unappreciated. ”Controllers must define application behaviour only in the sense that they map user input onto calls in Models, but beyond that role it should be clear all other application logic is contained within the Model.”
  2. ORM is an anti-pattern. ”OO design cannot represent relational data in an efficient way; this is a fundamental limitation of OO design that ORM cannot fix.”
  3. Understanding typeof, instanceof and constructor in JavaScript. ”They say in JavaScript “everything is an object”. They’re wrong. Some types in JavaScript are so-called “primitive types”, and they don’t act like objects.”
  4. One of the Best Bits of Programming Advice I ever Got. ”… And that giving it a better name would tend to make the design more encapsulated, less spaghetti code, in short more object oriented.”
  5. Nobody Understands REST or HTTP. ”Let’s talk about a few cases where either REST or HTTP (which is clearly RESTful in its design) solves a common web development problem.”

The Cloud Host

På diskussionsforumet PHPportalen för några månader sedan:

Stötte nyligen på ett mycket billigt webhotell (http://thecloudhost.se/) som erbjuder webhotell från 99:-/år. Detta verkar skrämmande lågt, finns det några nackdelar med webhotellet? Om man läser texterna på webbsidan, verkar i varej fall det tekniska mycket lovande. Är det någon som har erfarenhet av dessa?

I marknadsföringen:

En annan bidragande orsak till att vi kan hålla priserna så låga som vi gör, beror på att vi hyr hårdvaran i form av servrar, programvara och nätverksutrustning av HostDime. HostDime är ett engelskt hostingföretag och de har sin utrustning placerad hos Blue Square datacenter i Berkshire och Milton Keynes, cirka tre mil utanför London.

Nu på thecloudhost.se:

Thecloudhost.se har fått en total servercrash med flera hårddiskar totalförstörda.

Även backup diskar har gått sönder och att återfå backuperna är nästintill omöjligt. Vi återkommer med mer information snarast och gör vårt bästa för att återfå backuper/filer.

Mvh Thecloudhost.se

60 gratis affärsidéer till 24hbc

I höst går förhoppningsvis 24 Hour Business Camp av stapeln för tredje gången. Jag var med senast och är gärna med i år igen. Det är ett inspirerande och väldigt roligt event för (framförallt) webbentreprenörer.

Eftersom jag har en liten samling små affärsidéer som jag aldrig kommer göra något av, tänkte jag passa på att dela med mig av dem inför 24hbc. Jag ville också se hur många nya idéer jag kunde komma på, så jag satt en stund och tänkte. Det är en bra övning, att ”tvinga” fram kreativitet.

Idéerna nedan är inte alls genomtänkta och det finns ingen marknadsundersökning eller affärsplan, så se dem mer som inspiration eller utgångspunkter för att göra en ”riktig” affärsidé. Alla kanske heller inte skulle platsa på 24hbc.

Kom ihåg att det är inte idén som är det svåra, det är genomförandet och marknadsföringen. Du kan bli miljonär flera gånger om på en ”dålig” och tråkig idé som att sälja kuvert.

Varsågod, mina idéer till webbtjänster och appar som du får använda precis som du vill:

  1. Bevakning av domännamns-snapback med wildcards, för att kunna övervaka när domäner med vissa nyckelord blir lediga
  2. Erbjud gratis upptids-övervakning av webbsidor, exempelvis via Pingdom (min arbetsgivare), och använd själv statistiken för att ranka webbhotell på en annan tjänst.
  3. Bearbeta podcasts med normalisering av volym och ökning av hastighet (för att kunna lyssna på kortare tid). Användaren matar in ett podcast-flöde och får en länk till ett bearbetat flöde.
  4. Spara podcasts automatiskt till användarens Dropbox-konto. Då behöver man inte först ladda hem avsnitten, de finns redan på Dropbox-kontot.
  5. Marknadsplats för att sälja WordPress-teman och plugins
  6. Video-community med utvalda videos från YouTube, Vimeo etc inom en specifik nisch. Låt användarna logga in med Facebook- eller Google-konto och föreslå videos, rösta på andras förslag och så vidare.
  7. Kontakt/nätverkshantering som bygger på LinkedIns API, där man exempelvis kan mata in anteckningar om varje kontakt och lägga till kontakter som inte finns på LinkedIn.
  8. System för tidsplanering av exempelvis utvecklare och designers på en webbyrå
  9. Lokalt eller branschspecifikt företagarcommunity för att göra det enklare att samarbeta, lära av varandra, nätverka etc.
  10. Tjänst som automatiskt skapar sudokus eller liknande åt exempelvis tidningar
  11. En smart lösning för att kunna maila med svenska tecken på webbkaféer utomlands (även på AZERTY- och QWERTZ-tangentbord)
  12. Nischad svensk datingsajt för en specifik kultur som helst vill gifta sig med andra inom samma kultur. Exempelvis troende kristna, muslimer, judar eller specifika nationaliteter.
  13. Anpassningsbar bloggportalplattform som kan visa artiklar, bilder, podcasts, videos etc. Plattformen säljs till kunder som använder den för att visa bloggar i sina branscher.
  14. En ”modern” ersättare till diskussionforum som phpBB och vBulletin (kanske med drag av Stack Overflow och Facebook Groups)
  15. Svensk kopia av Wufoo; gör det enkelt att skapa webbformulär
  16. Översätt (till svenska) och publicera public domain- och CC-licensierade artiklar och böcker inom en specifik nisch
  17. Svensk kopia av Gramlee; en tjänst för manuell granskning av språk och grammatik. Bygg upp ett nätverk av exempelvis språksäkra studenter som kan ta på sig små, sporadiska uppdrag.
  18. Prenumeration på väder-sms när man är på resande fot. En prognos som skickas ut varje dag med dagens och morgondagens väder. (Alla har inte smartphones.)
  19. Visa YouTube-videos i ASCII, eller gör en YouTube-klon för ASCII-videos
  20. Facebook-app som ställer ett antal frågor till dig och din pojk/flickvän (separat) och sedan får du se hur väl ni faktiskt känner varandra. Kan göras seriöst eller humoristiskt.
  21. E-butik som säljer tillbehör till husdjur – jag har hört att den marknaden omsätter mer än ”barntillbehör” i USA. Sälj gärna lyxiga artiklar som kläder, skor, solglasögon, smycken, exklusiva koppel, filtar, väskor, bäddar etc.
  22. Studieplattform för att lära ut saker via video, text och ljud – tillhandahåll plattformen till dem som vill lära ut saker som exempelvis att spela gitarr, snickra, programmera etc.
  23. Anpassa WordPress eller något annat CMS för en specifik nisch, exempelvis bostadsrättsföreningar
  24. Överse en stabil enterprise-”branch” av WordPress som bara innehåller vältestad funktionalitet och säkerhetsuppdateringar. (Idag blandas nya funktioner och buggfixar, vilket inte är acceptabelt för många företag.)
  25. Read It Later-kopia för onlinevideo
  26. System för personalplanering som kan användas på exempelvis kaféer, bensinmackar, restauranger – alla organisationer där man jobbar i skift
  27. System för uthyrning av maskiner (eller varför inte hyrbilar)
  28. E-butiksplattform för välgörenhetsorganisationer, där kunden köper en produkt eller tjänst som levereras till någon annan, och kunden själv får ett gåvobrev. Ett lyckat exempel är WebaidShop.se.
  29. Marknadsplats för begagnad kurslitteratur, organiserad per fysiskt campus för att göra det enklare att genomföra transaktionerna.
  30. Resebokningssystem som specialiserar sig på retreater i Sverige och utomlands (eller någon annan riktigt smal nisch)
  31. Prenumerationstjänst för blöjor, skötbordsunderlägg, tvättlappar etc. Man anger vilken storlek, hur många och hur ofta, så kommer det ett paket på posten med jämna mellanrum.
  32. Låt föräldrar beställa brev från tomten till sina barn
  33. Svensk kopia av Fiverr.com, där folk kan göra enkla uppgifter för exempelvis 100 kr.
  34. Sälj ”skräddarsydda” dikter (skapa ett nätverk av skribenter och lej ut arbetet på dem)
  35. Enkel feedback-lösning som kan bakas in i mobila appar, som Uservoice’ eller Kundos webblösning fast i appar
  36. Privat video- och bildgalleri för släkt och vänner. Så enkelt att mormor kan använda det, och så säkert att ingen obehörig kan komma åt materialet. Och naturligtvis med en bra integritetspolicy.
  37. Telefonkonferens-system med inspelning och transkribering av det som sagts
  38. Betala röstskådespelare att läsa in public domain- eller CC-licensierade artiklar eller böcker och sälj dem som ljudböcker
  39. Roliga, lärorika och ”moraliska” barnspel som föräldrarna gärna betalar för
  40. Bokningssystem där kunden själv bokar på webben, exempelvis för frisörer, massörer, coacher, bed & breakfast etc
  41. Blogg och podcast med intressanta levnadsöden och berättelser från äldre människor. Kan såklart också sättas ihop till en bok och säljas.
  42. Mashup med Twitter och någon play-app eller Bambuser (för att kunna se en video och följa en hashtagg på Twitter samtidigt)
  43. Sälj sammanfattningar av böcker inom en specifik nisch. Bygg upp ett nätverk av betrodda skribenter som kan plocka ut de viktigaste idéerna och förmedla dem på ett enkelt sätt.
  44. App som bygger på något erotiskt förspels- eller sex-”spel” för att göra samlivet lite mer oförutsägbart och spännande.
  45. Prenumerationstjänst för hund- eller kattfoder. Man väljer vilket foder man vill ha, hur mycket och hur ofta, så kommer det en säck på posten med jämna mellanrum. (Sikta på kvalitetsfoder, inte det skräp som finns på ICA.)
  46. Svensk kopia av Wisedame som håller koll på senila eller dementa personer som annars kan irra bort sig. Använder GPS:en i smartphones.
  47. Övervakning av webbsidor för att se om de blivit hackade
  48. Visa ”dagens inspirerande händelse” med en eller flera historiska händelser varje dag som kan inspirera eller uppmuntra
  49. App som håller reda på hur många dagar, veckor och månader ens bebisar, valpar och kattungar är. Det är svårare att hålla reda på än man tror, och ganska bra att veta åtminstone i början.
  50. Kopiera nästan vilken framgångsrik webbtjänst som helst och anpassa till Kina, Japan eller Brasilien (eller den spansktalande delen av världen).
  51. Gör en eBay- eller Blocket-klon för en specifik nisch. Det är nog det enda sättet att konkurrera med dem.
  52. Tjänst för manuell användbarhetsgranskning av webbsidor som resulterar i en rapport. (Skapa ett system med ett strikt protokoll som utvärderaren följer och som automatiskt genererar en rapport baserat på resultaten.)
  53. Sälj prototyper eller proof-of-concept för webbappar eller appar till fast pris. Använd egna utvecklare eller outsourca. (Målgruppen är de som söker kapital för en större satsning och måste ta fram något enkelt att visa upp för sina finansiärer.) Typ som AppDone.
  54. Enkelt och smidigt tidrapporteringssystem för frilansare och konsulter
  55. Svensk kopia av Shopify.com, som gör det enkelt att öppna egna, proffsiga webbutiker
  56. Apoteks-app med närmaste apotek, öppettider och aktuella erbjudanden
  57. Community för att stötta, inspirera och uppmuntra dem som vill träna mer, gå ner i vikt eller spara pengar
  58. Tjänst där medlemmarna kan byta dvd- och bluray-filmer med varandra, ungefär som BookMooch
  59. Extrahera all text och alla bilder som man har laddat upp till Facebook
  60. Ta någon av idéerna från tidigare 24hbc och genomför den på ett bättre sätt
  61. Bonus: sälj nördiga kläder riktade till barn (ex. body med texten ”:first-child”)

Om du hittar en idé som du tycker verkar intressant, hör gärna av dig. Jag hjälper dig gärna att spåna vidare och hitta smarta intäktsmodeller. Om du bor i Västerås-området får du gärna bjuda på lunch. Ler

Om du inte hittar någon idé som passar dig, kanske du känner någon som skulle kunna få ut något av listan? Tipsa gärna om den här bloggposten.

Här finns ett par till listor med gratis affärsidéer som du kanske gillar:

Om du fortfarande inte är nöjd, tog nio MBA-studenter fram 111 idéer var och satte ihop en gigantisk lista med affärsidéer.

Apple is Evil.

Uppdatering i september 2013: Det ser faktiskt ut som att Apple har gjort stora ansträngningar för att komma till rätta med de etiska problemen vid tillverkning av sina produkter.

Ur Wall Street-bloggen på Svenska Dagbladet:

I januari totalsågades Apple för övrigt av 36 kinesiska miljöorganisationer som menade att företaget fullständigt struntar i miljö- och säkerhetsfrågor på de arbetsplatser som kontrakteras. Av 29 granskade företag tog Apple hem jumboplatsen efter att ha misslyckats med att ens lämna svar på flera viktiga frågor.

– Apple bryr sig bara om pris och kvalitet och inte det miljömässiga och sociala ansvaret. På så sätt tvingar de leverantörer att ta genvägar för att få kontrakten, sade Ma Jun vid Institute of Public & Environmental Affairs.

Läser man på om Foxconn (som Apple anlitar för större delen av sin tillverkning), så ser man att det verkligen inte är ett trevligt företag:

  • En rapport liknar fabrikerna med arbetsläger med misshandel av anställda och olaglig övertid utan lunchraster
  • 2009 tog en ung man livet av sig efter att ha tappat bort en iPhone-prototyp (och blivit förhörd och misshandlad)
  • Under 2010 försökte 18 anställda ta livet av sig (4 överlevde)
  • De anställda får högre lön för att företaget ska se bättre ut, men istället minskas deras bidrag till mat och husrum

Apple fortsätter att anlita dem och har gjort för lite för att slippa undan stämpeln Evil:

He who passively accepts evil is as much involved in it as he who helps to perpetrate it. He who accepts evil without protesting against it is really cooperating with it. (Martin Luther King, Jr.)

Hur bra deras produkter än må vara, så vill jag personligen inte stötta ett bolag som använder sig av modernt slaveri för att ta fram dem. De har hur mycket pengar som helst, och de skulle kunna förbättra villkoren för sina arbetare om de ville.

Ars Technica skrev för många år sedan en artikel Gates vs. Jobs: Who is the Nice Guy? där de jämförde Microsofts grundare Bill Gates med Apples grundare Steve Jobs:

… it’s hardly fair to paint Jobs in a purely negative light when many CEOs and other well-compensated executives give little or nothing to charity. However, if charitable giving and working to solve problems outside the technological sphere is your criteria, Gates comes out looking a lot better than Jobs. Jobs did start a charitable foundation in the 1980s, but gave it up once he ”discovered how time-consuming such business can be.”

Min tolkning är att Steve Jobs och Apple inte bryr sig om något annat än sina produkter och sina användare. Och om man läser Jonathan Sulos blogg, så verkar de inte bry sig om sina användare heller.

Vidare läsning: