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:

Om Riksdagens beslut om samtycke till cookies

Igår beslutade Riksdagen att det ska krävas samtycke från besökaren innan cookies får lagras eller hämtas i webbläsaren. Beslutet ändrar lagen om elektronisk kommunikation vad gäller exempelvis cookies.

Tidigare löd paragraf 6:18 så här:

Elektroniska kommunikationsnät får användas för att lagra eller få tillgång till information som är lagrad i en abonnents eller användares terminalutrustning endast om abonnenten eller användaren av den personuppgiftsansvarige får information om ändamålet med behandlingen och ges tillfälle att hindra sådan behandling. Detta hindrar inte sådan lagring eller åtkomst som behövs för att utföra eller underlätta att överföra ett elektroniskt meddelande via ett elektroniskt kommunikationsnät eller som är nödvändig för att tillhandahålla en tjänst som användaren eller abonnenten uttryckligen har begärt.

Men från 1 juli kommer den lyda så här:

Uppgifter får lagras i eller hämtas från en abonnents eller användares terminalutrustning endast om abonnenten eller användaren får tillgång till information om ändamålet med behandlingen och samtycker till den. Detta hindrar inte sådan lagring eller åtkomst som behövs för att överföra ett elektroniskt meddelande via ett elektroniskt kommunikationsnät eller som är nödvändig för att tillhandahålla en tjänst som användaren eller abonnenten uttryckligen begärt.

Skillnaden är alltså att det tidigare räckte med information om varför cookies används och hur besökaren stänger av dem i sin webbläsare — men nu måste besökaren aktivt samtycka till cookies. Alltså en väldans massa popup-fönster, men det går ju inte.

Det ska bli intressant att besöka Riksdagen.se 1 juli och se om de frågar innan de lagrar sessions-cookies i min webbläsare.

(Notera också formuleringen i sista meningen, som gör att du inte behöver be om samtycke till cookies om det är nödvändigt för att göra det användaren begär, exempelvis att logga in och fortsätta vara inloggad i en webbapplikation.)

Uppdatering: Feber skriver så här:

Det har dock varit rätt mycket kontroverser vad ”aktivt samtyckande” betyder och det kan räcka med att man ställer in sin webbläsare på att automatiskt godkänna cookies, vilket är default-inställningen på alla webbläsare på marknaden. Computer Sweden säger att den här frågan antagligen kommer att avgöras i domstol och innan det sker kommer åtminstone vi här på Feber inte att vidta några åtgärder när lagen träder i kraft.

Uppdatering: Det handlar förstås inte bara om cookies, även html5 local storage och annat som täcks in av de generella formuleringarna.

Säkrare PHP-sessioner

PHP genererar ju ofta ett sessions-id som lagras som en cookie i webbläsaren. Jag läste just att man kan säga åt PHP att generera säkrare/bättre sessions-idn genom att ändra några inställningar i PHP.ini (alternativt ändra dem i ditt skript med functionen ini_set):

session.hash_function = 1

Default är 0, vilket betyder att MD5 används. Sätt värdet till 1 för att istället använda den bättre funktionen SHA-1.

session.entropy_file = /dev/urandom
session.entropy_length = 16

Då läser PHP 16 bytes från den ganska bra slumpkällan /dev/urandom istället för att som standard bara använda timestamp, IP-adress och något mer. Det gör det mycket svårare att gissa sig till ett sessions-id.

Om du vill ha extremt säkra sessioner, bör du förstås inte nöja dig med detta. Då bör du istället sätta inställningarna så här (rekommenderas ej om du inte har extrema säkerhetskrav då det ger sämre prestanda):

session.hash_function = sha512
session.entropy_file = /dev/random
session.entropy_length = 512

jQuery-events och ”return false”

Douglas Neiner på Fuel Your Coding skriver en bra artikel om varför du kanske inte borde avsluta alla jQuery-event-callbacks med ”return false” (för att undvika standardbeteendet). Rekommenderas om du vill lära dig mer om hur events propagerar.

In most situations where you would use return false what you really want is e.preventDefault(). … This does everything we want without prohibiting parent elements from receiving these events as well. The fewer restrictions you place on your code the more flexible it will be to maintain.