I wrote this last Friday after working out, pizza and beer, intentionally set it to be published a few days later for maximum exposure and because my last post was only published a day prior. I haven't proofread or made much adjustments to the text below, just added some links and intended to add some images but failed. It's also quite likely that this text is rather long and may bore you halfway through, but meh at that.
I've done a quick market research – the best tool for that being Google – and the competition is mainly from 'classic' news sites, where editors cough up articles on a daily basis. Most of the 'big players' only go for mainstream music, and the not-too-mainstream music usually has a site of its own. They both generally follow the same pattern though – articles posted in a blog-like fashion, some videos here and there, a flashy layout, and user interaction limited to people being able to post a comment on articles. Perhaps remarkably, this option is hardly ever used – in my five-minute market research run, I found only two articles with comments, limited to just one or two. For sites that appear high up in Google search results for queries like 'music news' and, based on that alone, should be seeing thousands, if not tens of thousands of users on a daily basis worldwide, that figure is ridiculously low.
I'm not an expert in this, but I'd blame it on the image the websites give. They all provide good and well-written news articles, but that seems to create a sense of detachment from the reader – the reader does not feel involved in the website, and the website does not make the user enthousiastic enough to reply to the article. It's like "I am The Website, I have no flaws, and if I do have flaws, I have a main editor that corrects it within 0.5 seconds. My word is your will, and my articles do not leave room for discussion or interpretation."
Next to that, there's also the 'one sheep' factor to keep in mind – nobody posts comments, so nobody's inclined to participate in the discussion, if any.
So, if nobody posts on the news websites, where do they vent their opinions?
The logical assumption would be 'Social Networks'. I'm quite convinced that nowadays (and for the past five years at least), a band's profile on networks like Myspace and Facebook is more frequently visited – and, more importantly, interacted with – than their own website or, indeed, news posted about them on some other website. I looked up the first band some news site (Blabbermouth.net, 'the CNN of heavy metal', yeah right) - which turns out to be Alice in Chains – on Facebook and Myspace.
(How come I only see Alice in Chains come by whenever there's heavy metal and such news on the internets? WTF, is it such a good band or something? Or does it just have good marketing behind it?)
On Facebook, I selected their wall. I'm not active on social networks at all (in fact, they creep me out), so all of this is new to me – bear with me if I make retarded remarks about it. On this wall, the band (or their spokesperson, more like) posts info about ticket sales, tour posters (?), and other small, seemingly insignificant tidbits.
However, each of these 'seemingly insignificant tidbits' do make the internet populace at large interact with it. In this particular example, each 'article' gets around 250 'likes' from various Facebook members, and (usually) between 70 and 200 comments. Quite different from the zero the big news sites get, and it's much more cost effective too – using Facebook is free, and writing up two sentences is cheap, especially if a band member does it in his free time. Based on the amount of user feedback, I'd say Facebook is much, much more effective than the random music news sites.
Of course, user feedback says nothing about actual figures or effectiveness, so I'm leaving that aside for now. However, I do like to assume that the amount of effective views and the 'information registration rate' (a scientific-sounding figure indicating which percentage of viewers actually read and remember the news) is much, much higher on Facebook than it is on the music news sites or even their own website (which, by the way, does not have any user interaction options or even references to the same news on Facebook – although it does have the mandatory 'social bookmark' links).
Now, to complete this mini-survey, let's look at Myspace, which I've long believed to be the most popular social network for bands.
I'd rate that page's effectiveness about zero. It doesn't work for me at the moment, =D. I'll re-check later.
To wrap things up, I'll make some conclusions about both the competition for the news site idea, as well as internet marketing and internet news in general.
The main competition for this website is social networks like Facebook and Myspace. Effectively, you can state that the website itself will grow into being a social network itself, with one of its main goals being to involve the visitors into the site itself – user supplied content, if you will, and to a degree user generated content as well. However, will it be able to differentiate itself enough from the established networks? If it is to have any chance at greatness, it will have to offer unique features or advantages over the networks.
It has a bonus in that it will be aimed at music and bands primarily – making it more concentrated than the established social networks. However, even if it is better (if that goal is ever reached, which is very debatable at this stage), it would still need to gain momentum, get people to actively post news on it, and – in the long run – get bands to transfer over to it, either partially or in full. Larger bands – like the example Alice in Chains I've used in this post – are quite likely to include it into their marketing machine if the site picks up. However, I'd personally be more pleased if smaller, more 'close to the populace' bands use the site as their main 'home'. Call it 'exclusive content', if you will.
Classic news sites, the ones that have a set of editors that spew out news (or copypaste it from somewhere else), do not seem to be very effective. I'm sure they get thousands of visitors every day, but what is the effective value of those visitors if they only skim their site and move on to the next thing (say, Facebook)? I'd say it's pretty low. A goal should be that a user spends a lot of time on a website. Facebook itself has reached for this goal, and has succeeded in it quite well – I've even read somewhere that Facebook is effectively a 'mini-internet', where its visitors find so much stuff to do that they spend many hours a week on it.
A news site that actively encourages its users to interact with it – and thus makes them 'think' about the news itself (or the band) when they write up their responses about it – will almost automatically make it more effective. Compare it with a laundry detergent brand. You all have seen (and secretly love) the TV commercials, but I'm sure that most of you have grown deaf and blind to such ads. If, however, there was a textbox underneath the ad, and a keyboard in your hand, and there was an element in the ad that triggered your 'YOU SHALLT RESPOND!'-reflex… Well, you'd most likely spew out the worst profanities, under the guise of anonymity. However, even when being negative about the ads, its creators, the French woman presenting the laundry detergent as heroin to your laundry, you actively think about the product, and it gets imprinted into your mind. Even years later, you will suddenly remember the event where you combined existing ones into all new and excellent profanities.
That is effective. I should totally go into advertising instead of webdevelopment.
WAIT! This already happens. A friend I sent a draft of this post to reminded me that good, catchy TV ads (not the bland ones) already get uploaded to Youtube - more recently by the advertising agency themselves, or the company they represent. If done right, these ads create their own cult following, and/or become a meme on the internet itself. And once your ad reaches memehood, it will forever be imprinted into the minds of hundreds of thousands of internet denizens - whether positively or negatively. A prime example would be the Old Spice ad campaign(s). I saw these amusing-if-you-can-stand-them ads on Dumpert, then googled a bit and found they were re-posted on very popular sites like Flabber, Collegehumor, wimp.com, Today's Big Thing, and even big news sites like CBS report on it, not particularly on the ad itself, but about its popularity on the internet.
You know you are ultimate win if your ad becomes more than an ad, when it becomes a viral, when there's ten million views on just one of your ads, when it becomes newsworthy material. And the crown of it all, when your ad is copied. Imitation is the sincerest form of flattery.
Imagine dishing out a million or two on such a campaign or however expensive it was, and watch it become a viral. Your video becomes shown all over the world, by hundreds of thousands of people, and [i]it doesn't cost you zilch[/url]. Free advertising? It's possible. Free advertising right in the middle of another TV program that gets a multitude of active viewers that watched the 30 seconds advertising time you dished out two million for? Yes. The internet has become the most (cost-)effective advertising medium.
[offtopic]the above was injected into the post randomly, so it may have broken the train of thought here. The below may make no sense now.[/url]
But the same thing (promotion, popularity, user involvement) applies to news. It too needs exposure. A band is a brand, its music is its products, its revenue is its sales combined with the cultural and musical value. I'm not a big fan of the financial aspect of music, so I'd rather focus on the latter. Good music deserves to be promoted, especially if not backed by big record companies and their social networks spamming marketing machines. One way to promote a band is to seriously invest in user / fan involvement. A band's music is only so much responsible for its popularity - its image is another, and I personally believe that its fans' involvement is just as important.
Case in point. A few days ago, Slipknot's bassist died. You can effectively put the responses to this into two camps: One side says "Who?", "Meh", or "w/e", the other says "OMG NOES!". The former category has a slight chance of going out to buy or listen to Slipknot. The latter most likely already did, and if they didn't, they will be more likely to do so now.
But the value of fans to a band has probably been described elsewhere, and much more scientifically than I am trying to do right here.
To add an end to this overly long post I (as it turns out) have been writing all evening now, news should be social. The website I'm planning should be social, and have good content. To be social, it should be inviting. To be inviting, the user should be involved with it. To be involved with it, the boundary between the article or the band it's about should be thin and wobbly, accessible. The article should also be inviting to comment on (this entails writing style and editorial additions), and the community should be inviting to interact with itself (be it a happy, child-friendly and strictly moderated or a 4chan), to invoke more user contributions in the form of comments and resulting blog posts.
Long sentence, excuse me.
In this post, I'll get to the first thing that you really should do before getting down to coding. I know that a lot of people - including myself - have an idea for a website or -app and just start hacking away in code, building up their program incrementally, slapping on features whenever they feel like it. I'm not saying that is a bad thing, by the way, just making note of it.
For this project, however, I'd like to work on it in a structured and organized fashion. To apply structure to a project however, one first needs to define the project, to make a list of Things It Should Do. For this particular project, it's been milling around in my head (and on various forums) for probably years now, but I never got around to putting it into words.
...Alright, I'm lying here, I did write a two-page document in half an hour or something early this year. But for the purpose of this document, let's pretend that didn't happen, alright?
In any case, back in the old days in uni (or the Dutch equivalent of that, HBO), I 'discovered' a technique called brainstorming. Or, to be more accurate, I found a piece of software written for the purpose of brainstorming. I played around with it a few times, read around the internets (or well, Wikipedia, the rest of the internets doesn't matter much about such subjects), and even applied it to a few smaller projects.
Brainstorming is, as Wikipedia puts it, "a group creativity technique designed to generate a large number of ideas for the solution of a problem." But of course, and for my own purposes, this can also be applied to just yourself.
Now, one of the key things about brainstorming - or, that thing I like to do to think about a project to be done - is that you need to be able to write your ideas down quickly, without being bothered with things like formatting or things like that.
The particular piece of software I referred to three paragraphs ago is called Freemind, an open source, visual mindmapping software kit. In itself, it's really not that great of a program - it lets you make graphs, and add pretty colors and fonts to it. See the screenshots I stole from their own site.
The thing that made it work for me though is that it's easy and quick to use, with just your keyboard. You create a new (sub)node with insert, and add a node on the same level with enter - that's it. You can navigate with the arrow keys, too.
Now, with the softare installed, we go to the actual storming of ye brain. It's important that you can spend some time on it - half an hour to an hour should be enough time to get a lot of ideas out there, but try to take as long as you still get ideas. Also, if you're easily distracted, turn off all of your IM and email software (or the internet in general), put on some music (that doesn't annoy you into skipping it too often), whatever you need to be able to concentrate for a little while.
Second, one of the key rules of brainstorming is: Don't judge. Ideas only, write them all down, do not delete anything. Nothing. Thinking about an idea beyond adding some more in-depth ideas about them will destroy your creative high. Or well, can destroy it.
In any case, let's start with the actual process. Open up Freemind, and put The Word in the center. This 'root node' is the central idea, the central concept of the thing you're trying to create ideas for.
Next, enable Automatic Layout, it's under the Format menu. This'll give the nodes colors and styles automatically, so you can differentiate between deeper levels without having to manually edit the formatting - because that'll distract you, and break the flood of ideas.
Then, it's time to get busy. Write down the first things that come to mind when you look at the first word. Key words, random ideas - just spew out anything. Don't worry about it being in the wrong place - you can easily move it once your ideas crystallize.
I blurted out 'Community website' and 'Music news from various sources' (simply typing those words and pressing enter) after a few seconds. When typing down that last one, the 'sources' came bubbling up, so then I pressed Insert to add nodes to the 'sources' node. Here's an image of what it looked like after blurting out a few ideas.
'WTF', quoth I, 'Automated?'. Well yeah, it's not very likely you will be able to gather a team of editors that spend enough time writing up articles to fill your site with content, especially not if your site pretends to have a wide audience and coverage of most genres, does it? Or that's what the random idea was. So, the minute your original train of thought is derailed by ideas and thoughts popping up about that 'automated' thing, you insert into that node, and spew out key words - 'crawlers', 'automatically gathered, manually checked and edited', 'daily / continuously / regularly', as well as questions that suddenly arise, such as 'permissions?', about whether it'd be legal to crawl certain pages on Myspace to effectively copy content.
Oh, and don't worry about technical implications at this point - you're spewing ideas instead of being realistic. Besides, in this day and age, almost everything is possible - at least, technology isn't as much a factor anymore. I can cook up a simple crawler in a few minutes if I need to. In fact, I did a few years ago, for the heck of it and because I didn't want to shell out hundreds of dollars to get a database dump of my free-hosted forum, wrote up a multithreaded forum crawler thing in an afternoon (or two?) and had it backup the 250.000 posts gathered over the years.
But I'm distracting myself. I should get back to properly finishing that mindmap now. Be right back.
There. I probably didn't follow some of the things I said in this post, but I don't listen to myself, nor should you - do what you feel is right, there's really no rules in this thing besides being creative and listening to yourself.
I was going to format the map I cooked up in just a few minutes (ran out of ideas then), but then the program crashed (I used the most recent pre-release version). Do make sure to save regularly. I was lucky that Freemind automatically makes backups, in your user profile folder, subfolder .freemind. Better save it properly this time around.
Below is the image of the mindmap. I'm too lazy to upload the .mm file for you to play around with at the moment, so it'll have to do.
I think that about wraps it up. The next step is to copy the ideas and put them into a proper word document, put the random ideas to writing. It's preferable you don't wait too long with this, or that you at least go over the mindmap and add enough things to it so the random words and sentences make sense, and that you go 'Oh right that's what I meant with that' when you see it again later. I'll try to do that for next time, but won't bore you with a post about that. Instead, I think I'll write up The Plan itself, or what the site should do for a first version. Based on that come requirements, and from there on I can start thinking about the technical side of things - technical requirements, to be precise. And based on that, and I know all of you are more interested in that than this overly long paragraph, I can look into programming languages, frameworks, databases, webservers, etcetera. I'll try not to be biased in that.
tl;dr, see you later. C&C is welcome, I probably should add more images and actually re-read my post before posting it, but I'm lazy.
Deze post zal in het Nederlands zijn, aangezien er al een redelijk leesbare handleiding voor het onderwerp van deze post beschikbaar is op het internet. De post is een beetje uit volgorde - in mijn vorige post beloofde ik dat ik het min of meer op volgorde ga doen, maar dat is heel moeilijk (ook aangezien ik nog niet aan het officiële plan begonnen ben).
Het onderwerp van deze post is onderdeel van een halfbakken serie over het opzetten van een ontwikkelomgeving. Om dit alvast uit te doeken te doen, mijn definitie van een ontwikkelomgeving betreft:
- Een development server (aangezien het een webapp betreft
- Een IDE (want een editor is gewoon niet pr0 genoeg
- Een issue management systeem
- De Rest
Maar dit is allemaal natuurlijker uit te leggen als het systeem er eenmaal staat. Nog een beetje achtergrond, en dan begin ik met de echte post.
Voor m'n werk (webdeveloper voor tot noch toe een dozijn-en-nogwat websites, samen met sinds een paar maand twee andere developers, sinds vorige week een projectmanager, en hopelijk binnenkort nog een frontend developer) gebruikten we de afgelopen twee jaar (nog van voor mijn tijd) nog Mantis, het systeem dat Tweakerts.net ook gebruikt.
Echter, op den duur voldeed dat niet meer. Het is op zich geen verkeerd systeem, maar het is voor een semi-leek zoals de non-developers onder ons niet makkelijk in gebruik of overzichtelijk, het voelt en lijkt zwaar uit de tijd, en zo nog een lijstje met dingen die, volgens ons, beter konden.
Het bedrijf van wie we het content management systeem in licentie hebben voor onze websites gebruiken intern Jira, een grote, bekende maar commerciële issue tracker, maar door de stevige prijsvoering niet echt een optie voor ons. Dus ik mocht op zoek gaan naar een alternatief.
Uitendelijk waren er twee kandidaten: Redmine, een issue tracker op Ruby on Rails gebouwd en Trac, nog een issue tracker op Python gebouwd. Beide systemen zijn globaal gezien vergelijkbaar qua features - issue tracker, ingebouwde wiki, integratie met Subversion, Mantis import optie, etc - en qua licentie - beide zijn het open source projecten - maar uiteindelijk is voor Trac gekozen omdat die volwassener oogt en voelt, meer gebruikers heeft en daaropvolgend ook beter support heeft, zouden er wel problemen zijn.
Dus, ik Trac installeren, met een verouderd en niet-werkend Mantis import script worstelen, en uiteindelijk is het gelukt.
Er lopen geruchten dat Trac moeilijk is om te installeren, en dit kan inderdaad waar zijn, maar als je de makkelijke weg kiest - zoals ik - valt het genoeg mee. Ik heb het in Windows geïnstalleerd (omdat we dat van de systeembeheerders kregen, ), maar de installatie voor Linux en Mac moet vergelijkbaar zijn.
De makkelijke manier
1. Installeer Python.
Trac ondersteunt het redelijk splinternieuwe Python 3.0 nog niet - ook omdat die opzettelijk backwards compatibility de deur uitsmeet (wat ik alleen maar kan aanprijzen, overigens, mits de oude versie nog een tijd ondersteund wordt). Python >= 2.4 en < 3.0 is dus nodig. Wij hebben de meest recente stabiele 2.x versie gebruikt, [http://www.python.org/download/releases/2.6.5/]versie 2.6.5 van Python[/url]. 2.7 zit nog in béta, dus die hebben we nog niet gebruikt (wat overigens een beetje hypocriet is, aangezien we Trac 0.12 gebruiken, die ook nog maar net in de eerste beta zit).
Python 2.6.5 komt gewoon in een installer, dus kies je smaak, en gaan met die banaan. Vervolgens wil je Python ook in je systeem z'n PATH zetten. Ik weet niet of iedereen daar bekend mee is, dus:
- Rechtermuisklik op Deze Computer -> Eigenschappen
- Geavanceerde tab (XP), of linkje Geavanceerd in Windows 7, dan tab Geavanceerd.
- Knopje 'Omgevingsvariabelen' indrukken
- Pak de variabele 'PATH' (of 'Path') in het lijstje van systeemvariabelen, en vul deze aan. De bestaande informatie niet aanpassen, overigens. Scheidt het vorige pad in deze lijst met een puntkomma, en vul in:
(waar c:\Python26 je installatiedirectory is). Zo kun je op de commandline Python aanroepen, en kan de andere software Python ook vinden.
2. installeer Setuptools.
Setuptools is een setje van installatietools voor Python bibliotheken, ruwweg gezegd. Dat maakt het installeren makkelijk. Ook dit komt gewoon in een installer voor Windows, dus selecteer je platform en de versie van Python die je hebt (de 2.6 versie in dit geval) en gaan met die banaan. De installer installeert een .exe in c:\Python26\Scripts, dus die werkt gelijk vanaf de commandline na installatie.
Tot zover het moeilijke gedeelte.
3. Installeer Genshi.
Genshi is een template taal voor Python, van dezelfde makers als Trac. Is nodig. Om het leven je makkelijk te maken, open een commandline (start -> uitvoeren -> cmd) en typ:
Even wachten, klaar.
4. Installeer Trac
Ja, dat is het.
5. Trac omgeving initialiseren
Vervolgens gaan we nog even "een Trac opzetten". Ga weer naar je commandline, en typ:
trac-admin c:\trac\mijnproject initenv
Even wachten, klaar. Lijkt wel een magnetronmaaltijd. Dit commando zal je een tweetal vragen stellen - de naam van je project, en een database connectie string. Out-of-the-box komt Trac met ondersteuning voor SQLite, dus door gewoon op enter te drukken bij de databasevraag maakt Trac automagisch een SQLite databasebestand aan. Wij gebruiken het ook, en voor het meeste werk moet het gewoon voldoen.
Tenslotte starten we de webserver even op. Ja, Trac komt ook met een ingebouwde webserver.
tracd --port 8000 c:\trac\mijnproject
Nu kun je een browser opstarten, en naar [url]http://localhost:8000[/url] gaan om je splinternieuwe Trac omgeving te bekijken. Of, een lijst met projecten die je lokaal hebt te draaien - je kunt per project een nieuwe Trac omgeving opzetten, wat wel zo makkelijk is als je de zaken gescheiden wilt houden.
Dat is het. Ik zal nu een eind aan deze post breien, want volgens mij ben ik al driemaal over de aandachtsspanne heen.
De moeilijke manier van Trac installeren behelst:
- Het installeren en draaien onder je eigen webserver (Apache)
- Het gebruiken van iets anders dan SQLite (mag je ook de databasebindings voor je databasesoftware gaan installeren)
- Localisatie toevoegen (nog zwaar beta)
- Trac (+ de rest) zelf compilen vanuit de source
En met dat sluit ik af. Ik kan, indien zo gewenst, nog een post wijden aan de werkwijze die ik zal aanhouden - als daar vraag naar is natuurlijk.
Verder zou ongezouten kritiek op deze post ook welkom zijn - duidelijkheid, schrijfstijl (opzettelijk informeel), leesbaarheid, nuttigheid, etcetera. Maar ik verwacht niks minder, .
However, I've long felt that I should be doing something constructive with my time, and I believe that a blog that will get some actual exposure from people that know a thing or two and who can at least pretend they care (either by constructive criticism, attempts at that, or flat-out ridicule - either are fine by me, by the way) will give me the motivation I need.
I've decided to start my new blogging career with finally getting started with developing one of the projects I've long had in the back of my head. The project I've had in mind is, summarized, a social music news website, where the members can select a number of topics, bands, genres or anything they would like the latest news on (you know, like tags). Said news would be semi-automatically gathered from a number of sources, including official band sites, Facebook profiles, Twitter, and in-house editors.
For this blog series, I want to post about the entire development process - from the setup of a development environment (a version control system, issue tracker for my own administration), the writing of a design document (or an attempt at that), to the decision making into a language and, if applicable, a framework, then through aspects of development and, in the long run, the actual release of the application and the website.
The blog posts will usually be in English, however I think that some of the posts will be in Dutch. One of the first next posts I expect to make will be on installing a development environment, and I think that posts like that would be better posted in Dutch because most documentation on such tools already is in English.
I'll try not to be too dry with my posts, however I cannot guarantee I'll be short and concise - I tend to be lengthy in my writings, which can be seen as both positive and negative. If it's too long, please let me know, but I can't promise I'll change.
Finally, no, this blog doesn't have a custom layout yet. I'm nowhere near good at design (although I know my CSS). If anything, I'd put a giant cookie monster in the header. Like this one, only bigger.
I hope that, using this blog, my motivation will keep up and that, at the same time, my own skills in all the areas of software development will improve with the comments I'll most likely get by using Tweakblogs instead of my own domain with a Wordpress installation.
FGJ is an internet-TLA for For Great Justice, the One Reason to Do It All. If you don't get it, you're too young. I can't think of any good names for my project, so I'll just go with that. It's also a neat short address for the blog.