Guilty until proven innocent

Well, today I found why downloads of Overseer have significantly dropped off lately. The problem, is IE and Google Chrome have been giving nasty ‘warnings’ about the clean Overseer setup exe, like these:

 

 

Wow– that sure discourages a person from downloading! No wonder my #’s have dropped… What did I do to deserve such slanderous ‘warning’ messages?  I’m not popular. I’m not iTunes. Overseer hasn’t been downloaded enough. That’s it. This is a “not popular” warning. Only those that are popular get this removed, and only those that get enough downloads get popular…How is someone supposed to get enough ‘reputation’ with IE ‘SmartScreen’ or whatever Google is using to actually remove this slanderous business-killing warning message?!?  The internet is supposed to be the great equalizer– hence net neutrality and all that, but this ‘technology’ clearly favors big business over the little guy.

My only solution for now was to provide some verbiage in big green text on the download page trying to calm the fears of my potential customers– hopefully that helps. I’m also getting a code signing certificate which might help– but people are saying the red warning dialog simply changes to a yellow warning dialog with a signed executable…

Even internal projects at Microsoft have been bitten by this ill-conceived technology.

It sure seems to be a bad time to be a small independent software vendor(ISV)…

 

UPDATE: I received my code signing certificate($365 for 5 years) and changed my build process to sign the installer exe and the exe’s inside. I just tested, and Chrome appears to have removed their warning when downloading Overseer. Unfortunately, IE still warns people when downloading or trying to run the installer– even though it’s clearly properly signed. Maybe MS will eventually change their mind, and realize I’m not such a bad guy after all…

 

How to always run applications as administrator in Windows 8

I recently got a new laptop with Windows 8. I’ve been trying to not hate the removal of my start menu too much. One of the changes they also made, is that User-Account-Control can’t really be disabled without a registry change– and if you make that registry change, most of the Metro/Modern UI apps will no longer work! Having certain applications not run as administrator can really be a problem, however… Visual Studio needs admin access to create IIS web applications, for instance. Additionally, shelling out to cmd.exe for doing a multitude of different things will be very frustrating when you don’t have those admin privileges that are rightfully required to do administrative things…

Unfortunately, there’s no easy GUI way to tell Windows 8 to always launch applications as an administrator. You can right click on a shortcut and select ‘run as admin’ each time– or even define a shortcut and set ‘run as administrator’ on the compatibility tab– but this doesn’t work if you use start->run->’cmd.exe’, such as I do… It also doesn’t work if you’ve pinned solutions to your task bar, such as I do for Visual Studio.

Thankfully, after some searching, I found a solution. You can have any executable on your computer run as admin(assuming you have permission to do so), by adding entries to this registry key:

HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\

Simply add a new string value, paste the full path to the executable(such as c:\windows\system32\cmd.exe), and then edit the value to say ‘RUNASADMIN’. Next time you start that executable– through a shortcut, by going to start->run, through entries pinned to your taskbar, or double-clicking on an associated file in explorer, Windows 8 will actually run it as an admin, as you require.

Authoritive domain root list

I recently wanted to write some code that analyzed URLs to determine if the source was the same– eliminating sub-domains. For something simple like “sensiblesoftware.com” or “www.sensiblesoftware.com”, this is easy. However, what about othes countries? Something like “www.company.co.uk” or “company.co.uk”? It was clear I needed a list. Initially, I went and found the TLD/Top Level Domain list at the ICANN. It was clear by just looking at this, however, that it didn’t include individual country’s second level domains, such as “.co.uk”. This makes it difficult to use for getting the effective organization domain(which would be the ‘company’ in company.com or company.co.uk).

After looking, I eventually found a list of these, but it wasn’t formatted very nicely for use in programming, so I formatted it and I’m providing the list here– you can easily copy/paste this list into a text file for programmatic use.

.af
.com.af
.edu.af
.gov.af
.net.af
.org.af
.ax
.gov.al
.edu.al
.org.al
.com.al
.net.al
.dz
.com.dz
.org.dz
.net.dz
.gov.dz
.edu.dz
.asso.dz
.pol.dz
.art.dz
.as
.ad
.nom.ad
.ed.ao
.gv.ao
.og.ao
.co.ao
.pb.ao
.it.ao
.ai
.com.ai
.net.ai
.off.ai
.org.ai
.aq
.ag
.com.ag
.edu.ag
.co.ag
.net.ag
.nom.ag
.org.ag
.com.ar
.edu.ar
.gob.ar
.gov.ar
.int.ar
.mil.ar
.net.ar
.org.ar
.tur.ar
.am
.aw
.com.aw
.ac
.com.ac
.net.ac
.gov.ac
.org.ac
.mil.ac
.com.au
.net.au
.org.au
.edu.au
.gov.au
.csiro.au
.asn.au
.id.au
.act.au
.nsw.au
.nt.au
.qld.au
.sa.au
.tas.au
.vic.au
.wa.au
.archie.au
.conf.au
.gw.au
.info.au
.otc.au
.oz.au
.telememo.au
.cx
.hm
.nf
.at
.gv.at
.ac.at
.co.at
.or.at
.az
.com.az
.net.az
.int.az
.gov.az
.org.az
.edu.az
.info.az
.pp.az
.mil.az
.name.az
.pro.az
.biz.az
.bs
.com.bs
.net.bs
.org.bs
.edu.bs
.gov.bs
.bh
.com.bh
.info.bh
.cc.bh
.edu.bh
.biz.bh
.net.bh
.org.bh
.gov.bh
.com.bd
.edu.bd
.ac.bd
.net.bd
.gov.bd
.org.bd
.mil.bd
.bb
.com.bb
.net.bb
.org.bb
.gov.bb
.info.bb
.co.bb
.store.bb
.tv.bb
.biz.bb
.by
.be
.bz
.com.bz
.edu.bz
.gov.bz
.net.bz
.org.bz
.bj
.gouv.bj
.mil.bj
.edu.bj
.gov.bj
.asso.bj
.barreau.bj
.com.bj
.bm
.bt
.bo
.com.bo
.net.bo
.org.bo
.tv.bo
.mil.bo
.int.bo
.gob.bo
.gov.bo
.edu.bo
.ba
.org.ba
.net.ba
.edu.ba
.gov.ba
.mil.ba
.unsa.ba
.untz.ba
.unmo.ba
.unbi.ba
.unze.ba
.co.ba
.com.ba
.rs.ba
.bw
.co.bw
.org.bw
.adm.br
.adv.br
.agr.br
.am.br
.arq.br
.art.br
.ato.br
.bio.br
.blog.br
.bmd.br
.cim.br
.cng.br
.cnt.br
.com.br
.coop.br
.ecn.br
.edu.br
.eng.br
.esp.br
.etc.br
.eti.br
.far.br
.flog.br
.fm.br
.fnd.br
.fot.br
.fst.br
.g12.br
.ggf.br
.gov.br
.imb.br
.ind.br
.inf.br
.jor.br
.jus.br
.lel.br
.mat.br
.med.br
.mil.br
.mus.br
.net.br
.nom.br
.not.br
.ntr.br
.odo.br
.org.br
.ppg.br
.pro.br
.psc.br
.psi.br
.qsl.br
.rec.br
.slg.br
.srv.br
.tmp.br
.trd.br
.tur.br
.tv.br
.vet.br
.vlog.br
.wiki.br
.zlg.br
.io
.vg
.com.bn
.edu.bn
.org.bn
.net.bn
.bg
.bf
.net.mm
.com.mm
.edu.mm
.org.mm
.gov.mm
.bi
.per.kh
.com.kh
.edu.kh
.gov.kh
.mil.kh
.net.kh
.org.kh
.cm
.gov.cm
.ca
.ab.ca
.bc.ca
.mb.ca
.nb.ca
.nf.ca
.nl.ca
.ns.ca
.nt.ca
.nu.ca
.on.ca
.pe.ca
.qc.ca
.sk.ca
.yk.ca
.cv
.ky
.com.ky
.org.ky
.net.ky
.edu.ky
.gov.ky
.cf
.td
.cl
.gov.cl
.gob.cl
.cn
.ac.cn
.com.cn
.edu.cn
.gov.cn
.net.cn
.org.cn
.ah.cn
.bj.cn
.cq.cn
.fj.cn
.gd.cn
.gs.cn
.gz.cn
.gx.cn
.ha.cn
.hb.cn
.he.cn
.hi.cn
.hl.cn
.hn.cn
.jl.cn
.js.cn
.jx.cn
.ln.cn
.nm.cn
.nx.cn
.qh.cn
.sc.cn
.sd.cn
.sh.cn
.sn.cn
.sx.cn
.tj.cn
.tw.cn
.xj.cn
.xz.cn
.yn.cn
.zj.cn
.cx
.cc
.com.co
.org.co
.edu.co
.gov.co
.net.co
.mil.co
.nom.co
.km
.com.km
.coop.km
.asso.km
.nom.km
.presse.km
.tm.km
.medecin.km
.notaires.km
.pharmaciens.km
.veterinaire.km
.edu.km
.gouv.km
.mil.km
.cd
.cg
.co.ck
.org.ck
.edu.ck
.gov.ck
.net.ck
.gen.ck
.biz.ck
.info.ck
.cr
.ac.cr
.co.cr
.ed.cr
.fi.cr
.go.cr
.or.cr
.sa.cr
.ci
.hr
.cu
.ac.cy
.net.cy
.gov.cy
.org.cy
.pro.cy
.name.cy
.ekloges.cy
.tm.cy
.ltd.cy
.biz.cy
.press.cy
.parliament.cy
.com.cy
.cz
.dk
.dj
.dm
.com.dm
.net.dm
.org.dm
.edu.do
.gob.do
.gov.do
.com.do
.sld.do
.org.do
.net.do
.web.do
.mil.do
.art.do
.tl
.com.tl
.gov.tl
.ec
.com.ec
.info.ec
.net.ec
.fin.ec
.med.ec
.pro.ec
.org.ec
.edu.ec
.gov.ec
.mil.ec
.com.eg
.edu.eg
.eun.eg
.gov.eg
.mil.eg
.name.eg
.net.eg
.org.eg
.sci.eg
.edu.sv
.gob.sv
.com.sv
.org.sv
.red.sv
.gq
.com.er
.edu.er
.gov.er
.mil.er
.net.er
.org.er
.ind.er
.rochest.er
.w.er
.ee
.com.et
.gov.et
.org.et
.edu.et
.net.et
.biz.et
.name.et
.info.et
.eu
.co.fk
.org.fk
.gov.fk
.ac.fk
.nom.fk
.net.fk
.fo
.fm
.ac.fj
.biz.fj
.com.fj
.info.fj
.mil.fj
.name.fj
.net.fj
.org.fj
.pro.fj
.fi
.fr
.tm.fr
.asso.fr
.nom.fr
.prd.fr
.presse.fr
.com.fr
.gouv.fr
.gf
.pf
.com.pf
.tf
.ga
.gm
.ge
.de
.com.gh
.edu.gh
.gov.gh
.org.gh
.mil.gh
.gi
.gr
.com.gr
.edu.gr
.net.gr
.org.gr
.gov.gr
.gl
.gd
.gp
.com.gp
.net.gp
.mobi.gp
.edu.gp
.asso.gp
.org.gp
.com.gu
.com.gt
.edu.gt
.net.gt
.gob.gt
.org.gt
.mil.gt
.ind.gt
.gg
.ac.gg
.co.gg
.gov.gg
.net.gg
.sch.gg
.org.gg
.com.gn
.ac.gn
.gov.gn
.org.gn
.net.gn
.gw
.gy
.co.gy
.com.gy
.net.gy
.ht
.hm
.hn
.uk
.com.hk
.edu.hk
.gov.hk
.idv.hk
.net.hk
.org.hk
.hu
.2000.hu
.agrar.hu
.bolt.hu
.casino.hu
.city.hu
.co.hu
.erotica.hu
.erotika.hu
.film.hu
.forum.hu
.games.hu
.hotel.hu
.info.hu
.ingatlan.hu
.jogasz.hu
.konyvelo.hu
.lakas.hu
.media.hu
.news.hu
.org.hu
.priv.hu
.reklam.hu
.sex.hu
.shop.hu
.sport.hu
.suli.hu
.szex.hu
.tm.hu
.tozsde.hu
.utazas.hu
.video.hu
.is
.in
.co.in
.firm.in
.net.in
.org.in
.gen.in
.ind.in
.ac.in
.edu.in
.res.in
.gov.in
.mil.in
.nic.in
.ac.id
.co.id
.net.id
.or.id
.web.id
.sch.id
.mil.id
.go.id
.ir
.ac.ir
.co.ir
.gov.ir
.id.ir
.net.ir
.org.ir
.sch.ir
.iq
.gov.iq
.edu.iq
.com.iq
.mil.iq
.org.iq
.ie
.ac.il
.co.il
.org.il
.net.il
.k12.il
.gov.il
.muni.il
.idf.il
.im
.plc.co.im
.net.im
.co.im
.org.im
.ac.im
.ltd.co.im
.com.im
.gov.im
.it
.com.jm
.net.jm
.org.jm
.edu.jm
.gov.jm
.mil.jm
.jp
.ac.jp
.ad.jp
.co.jp
.ed.jp
.go.jp
.gr.jp
.lg.jp
.ne.jp
.or.jp
.je
.co.je
.org.je
.net.je
.sch.je
.gov.je
.jo
.com.jo
.net.jo
.gov.jo
.edu.jo
.org.jo
.mil.jo
.name.jo
.sch.jo
.org.kz
.edu.kz
.net.kz
.gov.kz
.mil.kz
.com.kz
.co.ke
.or.ke
.ne.ke
.go.ke
.ac.ke
.sc.ke
.com.ki
.biz.ki
.net.ki
.info.ki
.org.ki
.gov.ki
.edu.ki
.mob.ki
.tel.ki
.phone.ki
.kp
.kr
.co.kr
.ne.kr
.or.kr
.re.kr
.pe.kr
.go.kr
.mil.kr
.ac.kr
.hs.kr
.ms.kr
.es.kr
.sc.kr
.kg.kr
.seoul.kr
.busan.kr
.daegu.kr
.incheon.kr
.gwangju.kr
.daejeon.kr
.ulsan.kr
.gyeonggi.kr
.gangwon.kr
.chungbuk.kr
.chungnam.kr
.jeonbuk.kr
.jeonnam.kr
.gyeongbuk.kr
.gyeongnam.kr
.jeju.kr
.edu.kw
.com.kw
.net.kw
.org.kw
.gov.kw
.kg
.gov.kg
.mil.kg
.la
.lv
.com.lv
.edu.lv
.gov.lv
.org.lv
.mil.lv
.id.lv
.net.lv
.asn.lv
.conf.lv
.com.lb
.edu.lb
.gov.lb
.net.lb
.org.lb
.ls
.co.ls
.org.ls
.com.lr
.edu.lr
.gov.lr
.org.lr
.net.lr
.ly
.com.ly
.net.ly
.gov.ly
.plc.ly
.edu.ly
.sch.ly
.med.ly
.org.ly
.id.ly
.li
.lt
.lu
.mo
.com.mo
.edu.mo
.gov.mo
.net.mo
.org.mo
.mk
.com.mk
.org.mk
.net.mk
.edu.mk
.gov.mk
.inf.mk
.name.mk
.mg
.org.mg
.nom.mg
.gov.mg
.prd.mg
.tm.mg
.edu.mg
.mil.mg
.com.mg
.ac.mw
.co.mw
.com.mw
.coop.mw
.edu.mw
.gov.mw
.int.mw
.museum.mw
.net.mw
.org.mw
.my
.com.my
.net.my
.org.my
.gov.my
.edu.my
.sch.my
.mil.my
.name.my
.aero.mv
.biz.mv
.com.mv
.coop.mv
.edu.mv
.gov.mv
.info.mv
.int.mv
.mil.mv
.museum.mv
.name.mv
.net.mv
.org.mv
.pro.mv
.com.ml
.net.ml
.org.ml
.edu.ml
.gov.ml
.presse.ml
.com.mt
.org.mt
.net.mt
.edu.mt
.gov.mt
.mq
.mh
.mr
.gov.mr
.mu
.com.mu
.net.mu
.org.mu
.gov.mu
.ac.mu
.co.mu
.or.mu
.com.mx
.net.mx
.org.mx
.edu.mx
.gob.mx
.md
.mc
.tm.mc
.asso.mc
.mn
.gov.mn
.edu.mn
.org.mn
.me
.co.me
.net.me
.org.me
.edu.me
.ac.me
.gov.me
.its.me
.priv.me
.ms
.ma
.net.ma
.ac.ma
.org.ma
.gov.ma
.press.ma
.co.ma
.co.mz
.org.mz
.gov.mz
.edu.mz
.na
.com.na
.co.na
.org.na
.edu.na
.alt.na
.in.na
.info.na
.mobi.na
.ws.na
.nr
.edu.nr
.gov.nr
.biz.nr
.info.nr
.net.nr
.org.nr
.com.nr
.com.np
.org.np
.edu.np
.net.np
.gov.np
.mil.np
.nl
.an
.nc
.ac.nz
.co.nz
.geek.nz
.gen.nz
.maori.nz
.net.nz
.org.nz
.school.nz
.cri.nz
.govt.nz
.iwi.nz
.parliament.nz
.mil.nz
.ni
.gob.ni
.co.ni
.ac.ni
.org.ni
.nom.ni
.net.ni
.mil.ni
.ne
.com.ng
.org.ng
.gov.ng
.edu.ng
.net.ng
.nu
.nf
.com.nf
.net.nf
.per.nf
.rec.nf
.web.nf
.arts.nf
.firm.nf
.info.nf
.other.nf
.store.nf
.mp
.no
.com.om
.co.om
.edu.om
.ac.om
.sch.om
.gov.om
.net.om
.org.om
.mil.om
.museum.om
.biz.om
.pro.om
.med.om
.pk
.net.pk
.edu.pk
.org.pk
.fam.pk
.biz.pk
.web.pk
.gov.pk
.gob.pk
.gok.pk
.gon.pk
.gop.pk
.gos.pk
.com.pw
.net.pw
.org.pw
.edu.pw
.gov.pw
.belau.pw
.ps
.com.ps
.biz.ps
.net.ps
.edu.ps
.gov.ps
.sch.ps
.mun.ps
.net.pa
.com.pa
.ac.pa
.sld.pa
.gob.pa
.edu.pa
.org.pa
.abo.pa
.ing.pa
.med.pa
.nom.pa
.com.pg
.net.pg
.ac.pg
.gov.pg
.mil.pg
.org.pg
.org.py
.edu.py
.mil.py
.gov.py
.net.py
.com.py
.una.py
.pe
.edu.pe
.gob.pe
.nom.pe
.mil.pe
.sld.pe
.org.pe
.com.pe
.net.pe
.ph
.com.ph
.net.ph
.org.ph
.mil.ph
.ngo.ph
.i.ph
.gov.ph
.edu.ph
.pl
.com.pl
.org.pl
.gov.pl
.pl
.com.pl
.biz.pl
.net.pl
.art.pl
.edu.pl
.org.pl
.ngo.pl
.gov.pl
.info.pl
.mil.pl
.waw.pl
.warszawa.pl
.wroc.pl
.wroclaw.pl
.krakow.pl
.katowice.pl
.poznan.pl
.lodz.pl
.gda.pl
.gdansk.pl
.slupsk.pl
.radom.pl
.szczecin.pl
.lublin.pl
.bialystok.pl
.olsztyn.pl
.torun.pl
.gorzow.pl
.zgora.pl
.pt
.com.pt
.edu.pt
.gov.pt
.int.pt
.net.pt
.nome.pt
.org.pt
.publ.pt
.pr
.biz.pr
.com.pr
.edu.pr
.gov.pr
.info.pr
.isla.pr
.name.pr
.net.pr
.org.pr
.pro.pr
.est.pr
.prof.pr
.ac.pr
.com.qa
.org.qa
.edu.qa
.gov.qa
.net.qa
.ro
.arts.ro
.com.ro
.firm.ro
.info.ro
.nom.ro
.nt.ro
.org.ro
.rec.ro
.store.ro
.tm.ro
.www.ro
.re
.asso.re
.nom.re
.com.re
.ru
.com.ru
.net.ru
.org.ru
.pp.ru
.rw
.gov.rw
.net
.edu
.ac
.com
.co
.int
.mil
.aero
.asia
.biz
.cat
.coop
.info
.jobs
.mobi
.museum
.name
.org
.pro
.tel
.travel
.xxx
.gouv
.sh
.co.sh
.com.sh
.org.sh
.gov.sh
.edu.sh
.net.sh
.nom.sh
.kn
.org.kn
.net.kn
.gov.kn
.edu.kn
.lc
.com.lc
.org.lc
.net.lc
.co.lc
.l.lc
.p.lc
.vc
.com.vc
.net.vc
.org.vc
.ws
.com.ws
.net.ws
.org.ws
.gov.ws
.edu.ws
.sm
.st
.gov.st
.saotome.st
.principe.st
.consulado.st
.embaixada.st
.org.st
.edu.st
.net.st
.com.st
.store.st
.mil.st
.co.st
.com.sa
.edu.sa
.sch.sa
.med.sa
.gov.sa
.net.sa
.org.sa
.pub.sa
.sn
.rs
.co.rs
.org.rs
.edu.rs
.ac.rs
.gov.rs
.in.rs
.sc
.com.sc
.net.sc
.edu.sc
.gov.sc
.org.sc
.sl
.com.sl
.net.sl
.org.sl
.edu.sl
.gov.sl
.sg
.com.sg
.net.sg
.org.sg
.gov.sg
.edu.sg
.per.sg
.idn.sg
.sk
.si
.com.sb
.net.sb
.edu.sb
.org.sb
.gov.sb
.ac.za
.city.za
.co.za
.edu.za
.gov.za
.law.za
.mil.za
.nom.za
.org.za
.school.za
.ecape.school.za
.fs.school.za
.gp.school.za
.kzn.school.za
.mpm.school.za
.ncape.school.za
.lp.school.za
.nw.school.za
.wcape.school.za
.alt.za
.net.za
.ngo.za
.tm.za
.web.za
.agric.za
.cybernet.za
.grondar.za
.iaccess.za
.inca.za
.nis.za
.olivetti.za
.pix.za
.gs
.su
.es
.com.es
.nom.es
.org.es
.gob.es
.edu.es
.com.lk
.org.lk
.edu.lk
.ngo.lk
.soc.lk
.web.lk
.ltd.lk
.assn.lk
.grp.lk
.hotel.lk
.gov.lk
.sch.lk
.net.lk
.int.lk
.sd
.com.sd
.net.sd
.org.sd
.edu.sd
.med.sd
.tv.sd
.gov.sd
.info.sd
.sr
.sz
.co.sz
.ac.sz
.org.sz
.se
.a.se
.b.se
.ac.se
.bd.se
.c.se
.d.se
.e.se
.f.se
.g.se
.h.se
.i.se
.k.se
.l.se
.m.se
.n.se
.o.se
.p.se
.r.se
.s.se
.t.se
.u.se
.w.se
.x.se
.y.se
.z.se
.org.se
.pp.se
.tm.se
.parti.se
.press.se
.ch
.sy
.edu.sy
.gov.sy
.net.sy
.mil.sy
.com.sy
.org.sy
.news.sy
.tw
.edu.tw
.gov.tw
.mil.tw
.com.tw
.net.tw
.org.tw
.idv.tw
.game.tw
.ebiz.tw
.club.tw
.tj
.ac.tj
.aero.tj
.biz.tj
.co.tj
.com.tj
.coop.tj
.dyn.tj
.edu.tj
.go.tj
.gov.tj
.info.tj
.int.tj
.mil.tj
.museum.tj
.my.tj
.name.tj
.net.tj
.org.tj
.per.tj
.pro.tj
.web.tj
.co.tz
.ac.tz
.go.tz
.or.tz
.ne.tz
.ac.th
.co.th
.in.th
.go.th
.mi.th
.or.th
.net.th
.tg
.tk
.to
.tt
.co.tt
.com.tt
.org.tt
.net.tt
.biz.tt
.info.tt
.pro.tt
.name.tt
.edu.tt
.gov.tt
.tn
.com.tn
.ens.tn
.fin.tn
.gov.tn
.ind.tn
.intl.tn
.nat.tn
.net.tn
.org.tn
.info.tn
.perso.tn
.tourism.tn
.edunet.tn
.rnrt.tn
.rns.tn
.rnu.tn
.mincom.tn
.agrinet.tn
.defense.tn
.com.tr
.gen.tr
.org.tr
.biz.tr
.info.tr
.av.tr
.dr.tr
.pol.tr
.bel.tr
.mil.tr
.tsk.tr
.bbs.tr
.k12.tr
.edu.tr
.name.tr
.net.tr
.gov.tr
.web.tr
.tel.tr
.tv.tr
.tm
.tc
.tv
.ug
.co.ug
.ac.ug
.sc.ug
.go.ug
.ne.ug
.or.ug
.ua
.com.ua
.gov.ua
.net.ua
.edu.ua
.org.ua
.in.ua
.ae
.co.ae
.net.ae
.gov.ae
.ac.ae
.sch.ae
.org.ae
.mil.ae
.pro.ae
.name.ae
.ac.uk
.co.uk
.gov.uk
.ltd.uk
.me.uk
.mod.uk
.net.uk
.nic.uk
.nhs.uk
.org.uk
.plc.uk
.police.uk
.sch.uk
.ak.us
.al.us
.ar.us
.az.us
.ca.us
.co.us
.ct.us
.de.us
.fl.us
.ga.us
.hi.us
.ia.us
.id.us
.il.us
.in.us
.ks.us
.ky.us
.la.us
.ma.us
.md.us
.me.us
.mi.us
.mn.us
.mo.us
.ms.us
.mt.us
.nc.us
.nd.us
.ne.us
.nh.us
.nj.us
.nm.us
.nv.us
.ny.us
.oh.us
.ok.us
.or.us
.pa.us
.ri.us
.sc.us
.sd.us
.tn.us
.tx.us
.ut.us
.va.us
.vt.us
.wa.us
.wi.us
.wv.us
.wy.us
.dc.us
.as.us
.gu.us
.mp.us
.pr.us
.vi.us
.dni.us
.fed.us
.isa.us
.kids.us
.nsn.us
.com.uy
.edu.uy
.gub.uy
.net.uy
.mil.uy
.org.uy
.vi
.co.vi
.com.vi
.uz
.co.uz
.com.uz
.vu
.va
.com.ve
.edu.ve
.gob.ve
.mil.ve
.net.ve
.org.ve
.info.ve
.co.ve
.web.ve
.vn
.com.vn
.biz.vn
.edu.vn
.gov.vn
.net.vn
.org.vn
.int.vn
.ac.vn
.pro.vn
.info.vn
.health.vn
.name.vn
.wf
.com.ye
.co.ye
.ltd.ye
.me.ye
.net.ye
.org.ye
.plc.ye
.gov.ye
.ac.zm
.co.zm
.com.zm
.org.zm
.co.zw

If this list is out of date in any way, please let me know and I’ll udpate it. Thanks.

EventLogSession/EventLogReader error remotely accessing Windows XP/W2K3 machines

Sometimes, when searching Google it takes all of 30 seconds to find an answer to a question. Other times, it can take minutes, or even hours. I’m writing this blog post, because I was just researching an issue that took me hours to figure out– and in the end, it was so simple, yet disappointing at the same time…

For the new version of Overseer, the network monitoring software I write, I was adding support for extended event logs– these are the “Applications and Services Logs” event logs below the regular ones in W2K8’s event viewer. I found I had to use the new EventLogSession/EventLogReader API. I found it required .NET 3.5, so I upgraded my software to require .NET 3.5(it was v2 compatible up to this point).

I got things working, and I was able to monitor event logs(new and old style) using the code remotely accessing Windows 2008 and Windows 7 computers. I got an error when accessing Windows XP machines(and I’m sure W2K3 machines, but I didn’t have any to test with at the time). The error was “UnauthorizedAccessException – Attempted to perform an unauthorized operation.”  To most, including myself, this seems like a permissions issue– so I looked into all sorts of potential impersonation problems, etc. I scoured the web looking for anyone even having the same problem, but didn’t find it.

Eventually, I found a reference buried in some forum reply, that one of the API calls that the new EventLogSession/EventLogReader calls is Vista/W2K8+ only. That’s just great– the whole API is now Vista/W2K8+ only… Why Microsoft wouldn’t add a compatibility layer for Windows XP and Windows 2003 is beyond me… But once I found this, I at least was able to move on, realizing that I had to detect the version of Windows running on the remote machine and use the different API’s accordingly… If only Microsoft had included proper documentation clearly specifying this new API was Vista/W2K8+ only, had an error message indicating something of that sorts, or actually did the right thing and wrote a compatibility layer into it, I wouldn’t have wasted so much time on such an unproductive search.

 

 

How to find icons for a software application

Finding icons for your software application can be tough. There are many sources of free icons that you can easily find online with a Google search. If you’re on an incredibly tight budget, but have lots of time, this can make lots of sense. The problems with this, is the amount of time it takes to find the icons you need and often times you end up with an inconsistent look and feel in your application– your icons are often pulled from many different places, and your application looks that way.

I personally prefer to buy big sets of icons. IconShock has been selling icon sets for years, and I can highly recommend their entire icon collection which is only $299 right now– that’s over 600k icons, for only $300. That’s less than $0.0005 per icon… Or roughly 20 icons per penny. Buying icons in a set like this, it’s fairly easy to find just the right icon for every part of your application, and best of all they have the same look and feel(provided you pull from the same or a similar set).

I’ve also started to make my icons larger in my applications. Traditionally, icons are only 16×16 in menus, toolbars, etc… With higher resolutions on screens, I find it’s far best to use 24×24 icons in menus and either 24×24 or 32×3 icons in toolbars. This provides a larger area for the user to see what the icon is(showing off your snazzy new icons!), identify it with the function in your software, and click.

Always have a software schedule

As some of you may know, I spend a large portion of my time contracting with a specific client. The rest of my time, I spend doing operations things, and trying to develop and promote my products, Overseer Network Monitor and Employee Scheduling Pro. The time demands of my primary contract, along with personal time demands, sometimes leaves me very little time to develop and/or promote my products. It can be quite frustrating at times. In the past 6 months or so, I’ve been doing my best to force myself to do a little bit every week. I created a whiteboard that tracks how many days it has been since my last release, blog post, sale, etc. for each of the products. As I see this number go up, I get more motivated to do something with the product so I can make a release, and therefore a blog entry, and hopefully all this will spur sales(or potentially do some marketing to make the sales # move)…

While this has been helpful to keep me from being totally idle on my products, I’ve found it’s caused a different problem. I’ll notice late in the week that a number is high, and be motivated to make a release to bring that number down to 0. So, I’ll search my feature database for something I can bang out in a couple hours or maybe a day– tops… If I have a bit more time, I’ll do a couple to make it a more substantial release… The problem with this, is I’m always pressed for time in a week– so only small enhancements get done… The exception to this rule, is when I have a customer specifically asking for features– then I focus all my development efforts on getting the list of features implemented that the specific [potential] customer requests. I feel I get a lot done in this manner, but it often spans multiple periods of my non-contract time. This is good, because I stay focused.

After noticing this pattern and doing some research online, I’ve come to the realization that I can’t continue without a little more structure. I need to start planning software releases– to create a simple schedule. I need to take some time, sit down, and choose a certain few features(big and small) to be included in a release. I then have to schedule out how long that’ll take, and get it done– accepting upfront that this will take numerous sessions– I can’t bang out a substantial release in an afternoon as I’ve been doing…

Download tracking revisited

After my recent post about Google Analytics not tracking downloads accurately, I had decided to go back to counting download using a weblog parsing method. After some consideration, and the suggestion of a colleague who tracks downloads using Google Analytics himself, I’ve decided not to use that method.

The reasoning behind it, is Goal tracking in Google Analytics lets me see what traffic sources(sites and keywords) are converting best. I lose this very important marketing feature if I use the web log tracking method. Being able to track my marketing methods for Overseer Network Monitor and Employee Scheduling Pro is far more important than seeking 100% accuracy for this number.

As an alternative, I’m using a download redirect option. Now on my software websites, a user will go to the ‘download’ page to view the links to download, and click the appropriate link to download the file. This takes them to a “your download will start now” page, at which point it uses a meta http-refresh to start the download. This should work with GA better to track the downloads. I have a funnel setup to require the end user to go to the download page before the downloading page, and set a noindex meta tag on the downloading page to try to prevent Google traffic being sent directly to this page.

The negative of using multiple monitors

Using multiple monitors is great. Personally, I use 4 large 23″ widescreen LCDs on Ergotron arms. This works amazingly well, and my productivity is improved considerably by using them. I’m able to have multiple copies of Visual Studio 2010 running, and sometimes even lay them out side by side. I also have a browser on one screen, Email on another, spreadsheets for tracking misc. info shared on another, etc.

The big problem with this, comes when I’ve been couped up all winter, and spring hits… The last couple days have been a “false spring” with 60º+ weather(quite pleasant for Rochester, NY). I would love to be able to sit out on my deck and work on my laptop… The problem with that, is I’d have to make due with only one 17″ screen. That means going from 976 square inches of desktop space to around 129 square inches… That’s losing 86.8% of my desktop!

The only solution I can think of(until multiple screen laptops are a feasible reality), is finding a single task that I can do on a single screen, and simply tolerate a longer turn-around for Email responses(considering I can’t monitor it as well), etc… Unfortunately, I can’t always find such simple tasks, particularly that need to be done when the weather is nice…

Crystal Reports 2010 has a huge redistributable

So today I investigated reporting options for Employee Scheduling Pro. I had previously used Crystal Reports 2008 for Visual Studio 2008 with some success. It felt clumsy and bloated, but it worked. Overall, considering my previous experience and the ‘industry standard’ it has become, I was planning on using it.

Come to find out, Visual Studio 2010 didn’t ship with Crystal Reports as previous versions did. It included a link to Business Object’s site for a beta2 of the Crystal Reports 2010 for Visual Studio 2010. It’s still free, but is very late– it’s still not released, even though it was supposed to be released in Q4 2010 and it’s late in Q1 of 2011… Regardless, I looked at downloading this beta to evaluate if it was still useful, but I found that the redistributable is 72MB!!! In comparison, the CR2008 redistributable is roughly 17MB…. 72MB to add a few reports to an otherwise simple app? I don’t think so… In addition to this, I find that CR2010 requires .NET 4.0, which forces me to bloat my installer more and eliminate OS support(such as W2K)… I don’t know about you, but I really don’t think a 100MB+ download is acceptable for an Employee Scheduling Software tool…

Fortunately, I had a good alternative. DevExpress, which is the toolkit I’ve used for my Win Forms controls, also has a reporting control that’s actually included in my subscription. Upon investigation online, it appears XtraReports is pretty decent– and it can even import existing Crystal Reports which will be useful for other projects that I may want to upgrade in the future… In comparison, XtraReports will add a couple megabytes(even less once compressed in the installer). I’ll also have the added bonus of having a report viewer that’s skinned in the same manner as the rest of Employee Scheduling Pro.

How to Email a cell phone

For many reasons, many people may want to Email a text message to their cell phone. This might be used to notify themselves when their servers or websites go down– or simply to notify them of backup completion or a new sale. If you’re interested in receiving Emails when your servers or websites go down, you may want to check out Overseer, which does exactly that– it is able to send an Email to your phone when your website goes down.

If you’d like to Email a cell phone directly from your Email client, from a script, or something else, you can still do so quite easily. This has the benefit of being free for the person sending the email, but the recipient may still pay to receive the email as a text message. To send a text message to someone’s cell phone via Email, you will need to know their phone number and what cell phone carrier they use. To send a text message to a cell phone, simply send an Email to the appropriate Email address:

AT&T phonenumber@txt.att.net
Cingular Wireless phonenumber@mobile.mycingular.com
Cricket phonenumber@sms.mycricket.com
Metro PCS phonenumber@mymetropcs.com
Nextel phonenumber@messaging.nextel.com
Sprint PCS phonenumber@messaging.sprintpcs.com
T-Mobile phonenumber@tmomail.net
US Cellular phonenumber@email.uscc.net
Verizon phonenumber@vtext.com
Virgin Mobile phonenumber@vmobl.com

 

Remember to keep your EMails short, as the recipient will be receiving them on a small screen, and long Emails may be cut off or split between multiple text messages(and they’ll get charged for each one by their carrier). Also, if your carrier isn’t here, it may be here: Cell Phone Email Addresses.

Cell Phone Email Addresses

Most mobile phone and pager carriers provide Email gateways into their SMS/Text messaging networks, allowing for the free sending of text messages to these devices. These Email addresses sometimes change, so I’ve provided a list of SMS cell phone Email addresses here. Some of these may not work– it’s best to try sending an Email to each address for your provider and see if you get the message. If you know of a provider/Email address combination that’s not here that you know works, please contact me at dkalweit@sensiblesoftware.com so I can add it to the list. Note that messaging rates on the device may still apply. For more details, please see How to Email a Cell Phone. If you’re interested in monitoring your servers, websites, and network devices, and getting Emails to your cell phone when they go down, please check out Overseer Server Monitoring Software.

 

Provider Name Email Address
3 River Wireless phonenumber@sms.3rivers.net
ACS Wireless phonenumber@paging.acswireless.com
AT&T phonenumber@txt.att.net
AT&T Pocketnet PCS phonenumber@dpcs.mobile.att.net
Advantage Communications pagernumber@advantagepaging.com
Airtouch Pagers pagernumber@airtouch.net
Airtouch Pagers pagernumber@airtouchpaging.com
Airtouch Pagers pagernumber@alphapage.airtouch.com
Airtouch Pagers pagernumber@myairmail.com
Alltel phonenumber@message.alltel.com
AlphNow pin@alphanow.net
Ameritech Clearpath pagernumber@clearpath.acswireless.com
Ameritech Paging pagernumber@pageapi.com
Ameritech Paging pagernumber@paging.acswireless.com
Andhra Pradesh Airtel phonenumber@airtelap.com
Arch Pagers (PageNet) pagernumber@archwireless.net
Arch Pagers (PageNet) pagernumber@epage.arch.com
BPL mobile phonenumber@bplmobile.com
BeeLine GSM phonenumber@sms.beemail.ru
Beepwear pagernumber@beepwear.net
Bell Atlantic phonenumber@message.bam.com
Bell Canada phonenumber@bellmobility.ca
Bell Canada phonenumber@txt.bellmobility.ca
Bell Mobility number@txt.bellmobility.ca
Bell South (Blackberry) number@bellsouthtips.com
Bell South Mobility phonenumber@blsdcs.net
Bell South phonenumber@bellsouth.cl
Bell South phonenumber@blsdcs.net
Bell South phonenumber@sms.bellsouth.com
Bell South phonenumber@wireless.bellsouth.com
Bluegrass Cellular phonenumber@sms.bluecell.com
Boost Mobile phonenumber@myboostmobile.com
Carolina Mobile Communications pagernumber@cmcpaging.com
Cellular One East Coast phonenumber@phone.cellone.net
Cellular One PCS phonenumber@paging.cellone-sf.com
Cellular One South West phonenumber@swmsg.com
Cellular One phonenumber@mobile.celloneusa.com
Cellular One phonenumber@cell1.textmsg.com
Cellular One phonenumber@cellularone.textmsg.com
Cellular One phonenumber@cellularone.txtmsg.com
Cellular One phonenumber@message.cellone-sf.com
Cellular One phonenumber@sbcemail.com
Cellular South phonenumber@csouth1.com
Central Vermont Communications pagernumber@cvcpaging.com
CenturyTel phonenumber@messaging.centurytel.net
Chennai RPG Cellular phonenumber@rpgmail.net
Chennai Skycell / Airtel phonenumber@airtelchennai.com
Cincinnati Bell phonenumber@gocbw.com
Cingular Wireless phonenumber@mobile.mycingular.com
Clearnet phonenumber@msg.clearnet.com
Comcast phonenumber@comcastpcs.textmsg.com
Communication Specialist Companies pin@pager.comspeco.com
Communication Specialists 7digitpin@pageme.comspeco.net
Comviq number@sms.comviq.se
Cook Paging pagernumber@cookmail.com
Corr Wireless Communications phonenumber@corrwireless.net
Cricket phonenumber@sms.mycricket.com
DT T-Mobile phonenumber@t-mobile-sms.de
Delhi Aritel phonenumber@airtelmail.com
Delhi Hutch phonenumber@delhi.hutch.co.in
Digi-Page / Page Kansas pagernumber@page.hit.net
Dobson Cellular Systems phonenumber@mobile.dobson.net
Dobson-Alex Wireless / Dobson-Cellular One phonenumber@mobile.cellularone.com
EMT phonenumber@sms.emt.ee
Edge Wireless phonenumber@sms.edgewireless.com
Escotel phonenumber@escotelmobile.com
Fido phonenumber@fido.ca
GCS Paging pagernumber@webpager.us
GTE phonenumber@messagealert.com
GTE number@airmessage.net
GTE number@gte.pagegate.net
Goa BPLMobil phonenumber@bplmobile.com
Golden Telecom phonenumber@sms.goldentele.com
GrayLink / Porta-Phone pagernumber@epage.porta-phone.com
Gujarat Celforce phonenumber@celforce.com
Helio phonenumber@myhelio.com
Houston Cellular number@text.houstoncellular.net
Idea Cellular phonenumber@ideacellular.net
Infopage Systems pinnumber@page.infopagesystems.com
Inland Cellular Telephone phonenumber@inlandlink.com
JSM Tele-Page pinnumber@jsmtel.com
Kerala Escotel phonenumber@escotelmobile.com
Kolkata Airtel phonenumber@airtelkol.com
Kyivstar number@smsmail.lmt.lv
LMT phonenumber@smsmail.lmt.lv
Lauttamus Communication pagernumber@e-page.net
MCI Phone phonenumber@mci.com
MCI phonenumber@pagemci.com
Maharashtra BPL Mobile phonenumber@bplmobile.com
Maharashtra Idea Cellular phonenumber@ideacellular.net
Manitoba Telecom Systems phonenumber@text.mtsmobility.com
Meteor phonenumber@sms.mymeteor.ie
Metro PCS phonenumber@mymetropcs.com
Metrocall 2-way pagernumber@my2way.com
Metrocall pagernumber@page.metrocall.com
MiWorld phonenumber@m1.com.sg
Microcell phonenumber@fido.ca
Midwest Wireless phonenumber@clearlydigital.com
Mobilecom PA pagernumber@page.mobilcom.net
Mobilecomm number@mobilecomm.net
Mobileone phonenumber@m1.com.sg
Mobilfone phonenumber@page.mobilfone.com
Mobility Bermuda phonenumber@ml.bm
Mobistar Belgium phonenumber@mobistar.be
Mobitel Tanzania phonenumber@sms.co.tz
Mobtel Srbija phonenumber@mobtel.co.yu
Morris Wireless pagernumber@beepone.net
Motient number@isp.com
Movistar number@correo.movistar.net
Mumbai BPL Mobile phonenumber@bplmobile.com
Mumbai Orange phonenumber@orangemail.co.in
NBTel number@wirefree.informe.ca
NPI Wireless phonenumber@npiwireless.com
Netcom phonenumber@sms.netcom.no
Nextel phonenumber@messaging.nextel.com
Nextel(Brazil) phonenumber@nextel.com.br
Ntelos number@pcs.ntelos.com
O2 phonenumber@o2.co.uk
Omnipoint phonenumber@omnipointpcs.com
Omnipoint number@omnipoint.com
One Connect Austria phonenumber@onemail.at
OnlineBeep phonenumber@onlinebeep.net
Optus Mobile phonenumber@optusmobile.com.au
Orange – NL / Dutchtone phonenumber@sms.orange.nl
Orange Mumbai phonenumber@orangemail.co.in
Orange phonenumber@orange.net
Oskar phonenumber@mujoskar.cz
P&T Luxembourg phonenumber@sms.luxgsm.lu
PCS One phonenumber@pcsone.net
Pacific Bell phonenumber@pacbellpcs.net
PageMart Advanced /2way pagernumber@airmessage.net
PageMart Canada pagernumber@pmcl.net
PageMart 7digitpinnumber@pagemart.net
PageNet Canada phonenumber@pagegate.pagenet.ca
PageOne NorthWest 10digitnumber@page1nw.com
Pioneer / Enid Cellular phonenumber@msg.pioneerenidcellular.com
PlusGSM phonenumber@text.plusgsm.pl
Pocket Wireless phonenumber@sms.pocket.com
Pondicherry BPL Mobile phonenumber@bplmobile.com
Powertel phonenumber@ptel.net
Price Communications phonenumber@mobilecell1se.com
Primco number@primeco.textmsg.com
Primtel phonenumber@sms.primtel.ru
ProPage 7digitpagernumber@page.propage.net
Public Service Cellular phonenumber@sms.pscel.com
Qwest phonenumber@qwestmp.com
RAM Page number@ram-page.com
Rogers AT&T Wireless phonenumber@pcs.rogers.com
Rogers Canada phonenumber@pcs.rogers.com
SBC Ameritech Paging pagernumber@paging.acswireless.com
SCS-900 phonenumber@scs-900.ru
SFR France phonenumber@sfr.fr
ST Paging pin@page.stpaging.com
Safaricom phonenumber@safaricomsms.com
Satelindo GSM phonenumber@satelindogsm.com
Satellink pagernumber.pageme@satellink.net
Simple Freedom phonenumber@text.simplefreedom.net
Skytel Pagers 7digitpinnumber@skytel.com
Skytel Pagers number@email.skytel.com
Smart Telecom phonenumber@mysmart.mymobile.ph
Southern LINC phonenumber@page.southernlinc.com
Southwestern Bell number@email.swbw.com
Sprint PCS phonenumber@messaging.sprintpcs.com
SunCom number@tms.suncom.com
Sunrise Mobile phonenumber@freesurf.ch
Sunrise Mobile phonenumber@mysunrise.ch
Surewest Communicaitons phonenumber@mobile.surewest.com
Swisscom phonenumber@bluewin.ch
T-Mobile phonenumber@tmomail.net
T-Mobile(UK) phonenumber@t-mobile.uk.net
T-Mobile(Austria) Austria phonenumber@sms.t-mobile.at
T-Mobile(Germany) Germany phonenumber@t-d1-sms.de
TIM phonenumber@timnet.com
TSR Wireless pagernumber@alphame.com
TSR Wireless pagernumber@beep.com
Tamil Nadu BPL Mobile phonenumber@bplmobile.com
Tele2 Latvia phonenumber@sms.tele2.lv
Telefonica Movistar phonenumber@movistar.net
Telenor phonenumber@mobilpost.no
Teletouch pagernumber@pageme.teletouch.com
Telia Denmark phonenumber@gsm1800.telia.dk
Telus phonenumber@msg.telus.com
The Indiana Paging Co last4digits@pager.tdspager.com
Triton phonenumber@tms.suncom.com
US Cellular phonenumber@email.uscc.net
US West number@uswestdatamail.com
Unicel phonenumber@utext.com
Uraltel phonenumber@sms.uraltel.ru
Uttar Pradesh Escotel phonenumber@escotelmobile.com
Verizon phonenumber@vtext.com
Vessotel phonenumber@pager.irkutsk.ru
Virgin Mobile phonenumber@vmobl.com
Virgin Mobile Canada phonenumber@vmobile.ca
Vodafone phonenumber@vodafone.net
Vodafone Italy number@sms.vodafone.it
Vodafone Japan phonenumber@c.vodafone.ne.jp
Vodafone Japan phonenumber@h.vodafone.ne.jp
Vodafone Japan phonenumber@t.vodafone.ne.jp
Vodafone Spain phonenumber@vodafone.es
Vodafone UK phonenumber@vodafone.net
VoiceStream / T-Mobile phonenumber@voicestream.net
WebLink Wiereless pagernumber@airmessage.net
WebLink Wiereless pagernumber@pagemart.net
West Central Wireless phonenumber@sms.wcc.net
Western Wireless phonenumber@cellularonewest.com
Wyndtell number@wyndtell.com

Control Library Quirks

Generally when designing a software product, I have to weight the pros and cons of rolling my own code for everything, or strategically using control libraries for key parts of the code. A couple years ago, I decided that for the front-end GUI in my .NET apps, I’d use the Winform controls from DevExpress. Generally, this has worked fairly well. As with working with any control library, there’s little quirks that I have to get used to. This control library likes to put most of their functionality under a “Properties” parent property… That’s one of the key things to remember when working with their controls…

Today these quirks with DevExpress’s XtraScheduler control exceeded annoying and went into downright frustrating. I was trying to setup a timeline view to span midnight(some customers of my Employee Scheduling Software will have operating hours that go unto the wee hours of the morning). To do this, I had to create a custom TimelineScale object. This makes sense, but the names of the methods and the logic that I have to implement in them just doesn’t make sense to me… And the documentation on these properties is obscure at best… I finally got things working after a lot of messing around, and I’m glad to finally have it behind me.  Overall, I think using the scheduler control will probably provide useful eye candy to the software while keeping me from having to re-invent the wheel.

WordPress Integration

I’ve known I should be blogging on my sites for years. Recently a friend of mine finally motivated me to just do it. I really wanted to integrate the blog into my websites instead of having some disconnected look. This was difficult, as most blogging software is PHP based, and my websites are generally ASP.NET based. I looked into some .NET solutions such as BlogEngine.NET, but based on some forum posts, it didn’t appear it would integrate with my master pages very well anyways.

What I ended up doing, was creating a simple master-page based ASP.NET file in my ASP.NET project with the appropriate pieces needed for a basic WP Theme. Then, on application startup in the global.asax file, I retrieve it and write it out as index.php in the appropriate theme directory for WP. This means as I change my website’s master file, the theme will automatically be updated… The only bad part of this, is any dynamic portions of my master page will be ‘burned in’ at application startup… The master pages for my product pages aren’t generally too dynamic, so this wasn’t a significant limiting factor for me, but it may be for some.