Guida alla creazione di un blog di successo: Quale argomento trattare?

Nel post precedente abbiamo cercato di rispondere alla domanda principale, cioè "Perchè voglio bloggare?" .
Spero che vi siate fermati a pensare seriamente alla risposta a questa domanda, perchè da essa dipende il futuro del vostro blog.

La prima scelta da fare è di cosa si vuole parlare.
Probabilmente se avete deciso di aprire un blog, sapete già di cosa volete parlare,  anyway...

Argomento: scelgi la tua nicchia

Uno degli errori più comuni è voler parlare di tutto quello che vi passa per la mente: questo blog è sicuramente la tipologia più comune sulla rete, ma sicuramente non quella più di successo.

Perchè? perchè se un visitatore trova il vostro blog per caso, cercando informazioni, ad esempio, su C#, magari, visto che siete dei guru dell'argomento, vi mette nella sua lista di feed da aggiornare: ma se i vostri post tecnici sono annegati da post d politica, post di attualità, post di link a cose assurde dopo un po' si stancherà e abbandonerà il vostro blog.
Inoltre argomenti diversi attirano dei target di visitatori differenti, e quindi anche tutti gli elementi al contorno, come la grafica, il nome del dominio: se siete esperti sia di programmazione che di arrampicata sportiva, allora è meglio che apriate due blog diversi, uno sulla programmazione l'altro sul free-climbing. Eventualmente potete sempre linkare tra di loro i due blog.
Una dissertazione abbastanza dettagliata sul perchè è meglio diversificare (oltre al "Divide et impera" dei senatori romani del primo secolo a.C.) è stata fatta dal guru dell'usabilità Jakob Nielsen, nel suo articolo Diversity is Power for Specialized Sites, nel quale spiega che
"Small websites get less traffic than big ones, but they can still dominate their niches. For each question users ask, the Web delivers a different set of sites to provide the answers."

Lingua: italiano o inglese?

Per i non anglofoni, ma soprattutto per noi italiani, si pone il problema della lingua: scrivo in inglese o in italiano?

Se i contenuti sono localizzati, ad esempio politica o attualità, il problema non si pone... è meglio scrivere in italiano perchè difficilmente qualcuno dalla Nuova Zelanda sarà interessato agli scioperi dei ferrovieri o alle frodi bancarie. Se invece si parla di qualcosa di più generico, come la programmazione scrivo in inglese in modo da ottenere una maggior visibilità oppure scrivo in italiano per "favorire" i miei connazionali meno avvezzi alla lingua di Shakespeare?

AdSense (e similari)

Se tra i nostri scopi c'è anche quello di guadagnare qualcosa dai banner AdSense, se scrivo in italiano otterrò solo banner italiani, se scrivo in inglese otterrò i banner anche di altre nazioni, e quindi con più possibilità di guadagno. Infine, scegliendo la nicchia, si sta scegliendo anche le keyword che mostreranno gli annunci AdSense: ci sono keyword che pagano più altre. Ad esempio la parola blog ha una media di 0.30€ a click, mentre parole collegate con medicine più o meno discutibili (non dico il nome perchè poi magari mi vengono visualizzati i banner collegati, che esulano dalla nicchia di questo blog) o cure miracolose posso arrivare anche a 35€ per click. Personalmente non mi metterei mai a scrivere articoli sul cancro ai polmoni solo per avere più introiti, sia perchè non averi nulla da dire, sia perchè non mi pare etico.

La mia decisione

Come la scorsa volta mi dico anche a scelta sono giunto io: ho già un blog tecnico in italiano, per raggiungere un maggior numero di lettori ne aprirò anche uno, sempre tecnico, in inglese, e infine, con mia moglie, apriremo un blog sull'arrampicata, la montagna e i nostri viaggi.

IE7 supporterà nativamente XMLHttpRequest

Con Atlas alle porte e tutto il fermento su Ajax e Web2.0 (per lorenzo:  ) il team di Internet Explorer 7 ha deciso di supportare nativamente l'oggetto XMLHttpRequest.

Fino alla 6 era necessario instanziare l'ActiveX MSXML, ora invece si potrà usare lo stesso codice che viene usato all'interno di Firefox e gli altri browser.

Con Tabbed Browsing, miglior supporto ai CSS e tutte le mirabolanti novità promesso, aspetto con ansia l'uscita di una beta "ufficiale" di IE7...

Ah... quasi dimenticavo: Native XMLHTTPRequest object, dal blog ufficiale del team di IE

powered by IMHO 1.3

Custom Controls e ViewState

Mi sono avventurato nello sviluppo di un Custom Server Control per ASP.NET abbastanza complesso (almeno per la mia esperienza in questo campo che è limitata a qualche controllino che non gestiva postback): ho sviluppato un ConnectionStringBuilder, per inserirlo nelle pagine di installazione del blogging engine al quale sto contribuendo, SubText.

Ho dovuto affrontare un problema abbastanza sottile: il controllo contiene dei DropDown che vengono popolati direttamente nella sua prima visualizzazione, ma sul postback i valori non venivano mantenuti.
Abilitando il Trace ho notato che il ViewState era sempre di 0 byte.

Invece, il DropDown popolato sul postback manteneva correttamente i valori caricati.

Ho impiegato parecchio tempo per trovare la soluzione: dopo i primi 15 minuti su Google non sono riuscito a trovare nessuna menzione del problema, quindi significa solo due cose:

  1. è un problema banalissimo e quindi nessuno ne ha mai parlato
  2. è un problema che quasi nessuno incontra e quindi, nessuno ne parla

In realtà la risposta sta nel mezzo: pochi sviluppano custom controls complessi, e la soluzione al problema era ovvia sapendo come funziona il ViewState.

Una controllo salva il ViewState per tutti i controlli figli, ma solo a partire dal momento nel quale questi vengono salvati nella collection dei Controls.

Quindi prima di popolare la dropdown list avrei dovuto collegarla a cascata fino al controllo principale, non solo al suo parent.

Riporto due snippet trovati sul post di Scott Mitchell (per Igor, è il fondatore di 4GuysFromRolla ) che mi ha salvato da una figura meschina con i colleghi sviluppatori del progetto SubText.

Cosa ho fatto (e, a quanto pare, ha fatto pure lui) --- ATTENZIONE: E' SBAGLIATO ---:

public class MyControl : WebControl, INamingContainer
{
  ...

  
protected override void CreateChildControls()
  {
    DropDownList ddl = 
new DropDownList();
    
if (!Page.IsPostBack)
      
// do data binding to some database...

    
Controls.Add(ddl);
  }
}

E come va fatto correttamente

public class MyControl : WebControl, INamingContainer
{
  ...

  
protected override void CreateChildControls()
  {
    DropDownList ddl = 
new DropDownList();
    Controls.Add(ddl);   
// Add the control FIRST

    
if (!Page.IsPostBack)  // Bind data AFTER
      // do data binding to some database...
  
}
}

Per la spiegazione originale: Control Building and ViewState Lesson for the Day , e Composite controls that do their own databinding

powered by IMHO 1.3

«gennaio»
domlunmarmergiovensab
25262728293031
1234567
891011121314
15161718192021
22232425262728
2930311234