Friday, November 03, 2006

moving to linux

I've been clearing off space from my laptop recently so i can install ubuntu as a dual boot, with a view to using it as my primary os/ home development environment. I'm ready to do it now i just need to pluck up the courage to do it. (historically i've always managed to f-up any sort of os/hardware changes)

I code in c#.net mainly, but i get the impression that the mono project is a bit too beta for me to consider coding with it (although i'd miss all the things you get for free with asp.net)


so if/when i get ubuntu installed i think i'll experiment with java (similar syntax and i used it for a couple of ou courses i did). i've found this site

http://www.javapassion.com/j2ee/

which seems to provide a nice ease into j2ee.

google apps for a domain

signed up to this yesterday during a bored period. the suite is v basic at the moment, email/calendering/google talk and thats about it. but it did get me thinking.

Could a start up really reduce its start up costs using stuff like this?

no need for a mailserver, change your mx record so that you use gmail, use google docs and spreadsheets.

what about other communication mediums? don't want to pay for a phone system? use skypein/skypeout, costs money, but not much and the bonus is, you phone system goes where you go (as long as there is inet access).

For a micro isv or startup these tools do offer as near to zero cost as you could hope to get.

Tuesday, October 24, 2006

ubuntu, it just works

had a play with booting ubuntu from the cd last night. went really well, everything i tried just worked. only issue was american keyboard and the brightness on my laptop screen was set to "burn the fuckers eyes out" tried rdcing to my work pc (windows xp) and that worked fine, although oddly all the l's were converted to j's (jog in rather than login for example) bit weird but still useable.

the original reason i started looking at ubuntu was after readin a couple of articles about amazons elastic cloud (ec3) web services where you can provision linux servers via a webservice. this got my mind racing about possible applications that could be run, but since (at the mo) its only linux based it got me thinking about learning how to use/administrate linux. A while back i had a job that involved admin of apache on some aix servers, never really got into the whole command line thing, but i guess its never too late.

So the plan is to clear some space on my laptop and attempt (gulp) to get ubuntu running a a dual boot, for my home needs the excercise last night proved that i could do nearly 100% of what i use my pc for on linux as opposed to windows web browsing, instant messenging, rdc to work, all work out of the box. the only other thing i do is code. There are obviously numerous options open to me in this area, i mainly code in c# so the mono project on linux looks like a cool option if i want to code c# on linux. the other obvious option (because of its similarities to c#, and portability) is java. If i manage to get a dual boot working, i think getting a dev environment for each of these set up will be the number one priority.

more to come.

Thursday, October 12, 2006

whats in a name?

I've been racking my brain recently for a name for the web ide. my first thought was w.i.d.e.
as in web ide, but thats already taken. then i thought about "collide" (collaborative ide) but al those domains are taken. Last night i was thinking along the lines of using a non word as the name of the app. i was flicking thru "boo hoo" the story of boo.com and read the bit where the swedish entrepeneurs ran an online book seller in sweden called "bokus" which is'nt a swedish word but is spelt nearly like the swedish word for book.
Following this tangent i thought of "coodaa" as the name for the app not quite sure whether i like it yet or not but it definitel has an advantage over all the other names i've thought of in that nearly all the domains are available for it (i guess thats the benefit of making up a word).

Tuesday, October 03, 2006

update

i've been concentrating on sorting out a proper data and business layer for my app and every so often get myself in a muddle. if i have an class called File and a class called Project and i want to add a create a file in a project, should the method be in the File or the Project class.

To start with i put it the method in the File class, but then i changed my mind and put it in Project
I reckon that is right, but its little things like that, that i';ve been fiddling with recently.

Also discovered the ObjectDataSource which i think is really cool. so you can binder a control to a business object and still maintain a tiered structure.

The membership/roles functionality is pretty much sorted and working properly with the asp.net providers has changed my opinion of the new provider model. its perfect what i want to do for this site. quickly and easily add basic membership and roles. However if i ever wanted to query and personalisation info i'd be a bit fooked, but i don't so its perfect.

I'm just going through a hitlist at the moment now users can create a project, add developers to a project, hopefully later on today they'll be able to add files to a project. next i'll need to add delete/archive/view history on files in a project. I haven't quite decided whether to let all develoers add a file to a project or just let the admin do it.

For the main code window the next big thing to do is sort out the file and developer tabs. i plan to have a webservice that returns a collection of file objects and then in javascript create the html for entries in the "file" accordion pane. rather than get bogged down with generating html on the server side. I plan to use a similar approach to this when populating the list of developers code to view.

One big thing i've yet to decide on is how to deal with developers working concurrently on a file
should i implenebnt a check in, check out system where anyone can get a copy but only the person with the file checked out can commit his changes, or should i allow anyone to save a copy of the file and rely on the ability to resurrect and archived file to resolve issues of source being overwritten?

Wednesday, September 13, 2006

collapsible panel

Given the limited real estate on my web ide i was looking for a method to hide sections of content,
for example do you always need to see the list of files in a project?

I've come across this link
http://atlas.asp.net/atlastoolkit/PanelExtenders/CollapsiblePanel.aspx

to an atlas collapsible panel, this could be very useful, especially if i can update the html within the panel using a client side webservice call, which is what i do with standard .net panels at the moment so i can't see it being a problem.

ide

made a small bit of progress of imperceptible progress last night and today basically readin up on the membership and role providers, to a tets solution set up apart from my pet project so i can fiddle around with roles etc.

I was thinking about wrapping the ide page in a loginview control, no0t sure about the whole hardcoding separate role views withint the control. this would be good if you can programmatically say on the load "you can view this, you can't and neither can you", but the stuff i was reading only mentioned declaring the role elements within the loginview control at design time, which would be a bit useless, considering users could be adding new roles all the time, sop any hardcoded roles would quickly become out of date.

Also started implementing some of the database design, the pain (i foresee) is going to be marrying up my schema to the membership (and profile if i use it) schema. we shall see.

Tuesday, September 12, 2006

web ide pet project progress

well i've been making slow but sure progress on my new pet project in my lunch hours.
I've got the first bit of functionality woring pretty much how i want. you can now enter code in pretty much any language i can think of, click a button and it will be higlighted and displayed to you so that you continue editing.

Im pretty happy with this apart from the fact that the fckeditor rich text box that i use seems to be defaulting to a specific size. and no matter how i manipulate the html around it, it won't get any bigger.

I've got most of the layout sorted now, its basically 4 table cells. one for your code, one to display all the other people cwatching you code, one to display the code of someone you have selected from the list of watchers and finaly one to display "other stuff", at the moment this may just be a list of files associated with the project.

Which brings me onto the next thing i'm thinking about, really getting down my db design. i've been thinking it'd be nice if you could have a Project, which could have many files (maybe classes, maybe not) related to it.

i've also been thinking about how the relationships between developers and projects will work. that seems to be a many to many relationship (a developer can work on many projects and a project may have many developers) so it'll need what i call an intermediary table.

But the bit i'm not sure how to implement is the idea of having public and private projects, a developer may start a projects and not care who watches, on the flip side a developer may start up a project and only want specific people to be able to participate on the project.
maybe this is getting into role based territory, if you are authenticated and in a specific role then you can view the project?

but then who assigns the roles? maybe when a developer creates a project they get presented with a list of developers, from that they themselves can assign the roles?

which then moves me onto the another thign i'll have to tackle. i've yet to get to grips with the whole asp.net 2 role/membership/profile providers model. mainly cos i think its a bit wank, in terms of blobfying the data, so you can't write queries against it. but maybe this is the answer for what i need to do.

i think i feel some reading coming on

Monday, September 04, 2006

New pet project

I have started work on an online coding/collaboration tool written in c# 2005 and using atlas.
I started thinking about this after reading thru wilco's code for a multi language syntax highlighter
(see last blog post for link).

My idea is to have a pane in which you write your code "MyCode" , a pane displaying people who are watching you code "Watchers" and another pane which will display a Watcher's code that you have selected from the "Watchers" pane.

The idea is that you can write code, click a button to get the syntax highlighted, other people can see your code as you submit it to be higlighted, the watchers can comment on your code, you can see their suggestions in near realtime (the time it takes to save their code to the database and for a the javascript timer to call a webservice to retrieve and display the results from the database)

I think this could be sueful in a distributed team environment, if one of your team are stuck on a problem.

So far i've got the basic layout that i want (using tables i know i should use css for positioning but it is a mock up). I've also got the basic javascript calls to the main webservices sorted (they just return strings at the moment). One thing that i compleletly didn't think about, that i've now sorted is how i'm going to display the code. the syntax higlighting code i will be using returns strings of code with html formatting, i was originally going to use a textarea to allow the display and editing of code until i realised that you can't display html within a textarea doh!

a few hours googling and i've come up with http://www.fckeditor.net
a really nice, very customizable, open source, rich text box.
I've managed to get rid of all the unwanted toolbars (i want it to look just like a textarea)
and worked out how to programmatically (in javascript cos this apps all ajax'd up the wazoo) add text, return the html and return the content without the html using the browser's dom,
this last one is really important as the syntax highlighting will be carried out in the following way:

1-user types in some code

2-user clicks button (or keyboard shortcut, i might add this in as a nice to have) to get syntax highlighted.

3-button click fires javascript function

4-javascript function passes contents of textbox to asp.net webservice (registered vioa atlas scriptmanager control)

5-webservice parses code and returns a string of html (the formatted code)

If the string of code contains html then i would have to write something to enable the webservice to remove the html from the string before i could highlight the syntax. yeah this is doable, with a bit of regex, but all the regex examples i've seen never work 100% on html
so its nice to know i don't have to worry about it and that a simple function call to the fckeditor gets me exactly what i want.

Next up is to integrate the fckeditor fully into my ui then i can start work on a simple database model (i've sketched the basic concepts and relationships out, i just need to decide on the datatypes), after the db design is done i can then start writing the stored procedures and data access code, then code the fully functioning webservices that will be called by the ajax client.

its probably at that point that i'll realise how much this app canes the database when you've got
several coder hacking away, expecting near realtime updates on what the other coders are doing. For now i'm happy to use this project as an excuse to fiddle around more with the atlas controls (i've alerady decided the timer control is shite because it only seems to fire server side events (involving a postback) and i can't get it to call a javascript function, so i've stopped using it in favour of the bog standard javascript timer, which does the job perfectly.

Wednesday, August 23, 2006

vb and c syntax higlighter

http://www.wilcob.com/Wilco/News/SyntaxHighlighterUpdate.aspx

Tuesday, August 22, 2006

another asp.net 1.1 tutorial

http://support.microsoft.com/kb/301240/

asp.net 1.1 authentication quick tutorial

brief run thru of basic forms authentication in 1.1

http://www.howtodothings.com/computers/a792-aspnet-forms-authentication-with-roles.html

Wednesday, August 16, 2006

the contingency of truth

i've been thinking recently about the role of truth on the net, specifically related to search engines and wikipedia.

This sort of harks back to my 3rd year philosophy days reading Richard rorty's "Contingency, irony and solidarity" that (whether intended or not) always made me think of contingent truth as a layer of tectonic plates obscuring the real and uknowable truth below.

That sounds like a load of shit, but the image makes sense to me.

Reading an article on some guy who had been the victim of character assasination via wikipedia. (the bloke had been the subject of an article saying that he was involved in the shotting of jfk).

also got me thinking about truth on the web. the blokes entry was edited after he complained, but only because the editor thought he knew that the original entry was not accurate. he thought he "knew" the truth.

Wikipedia to some extent does rely on a democratisation or herding of truth. if i edit the entry on bill gates
to refer to bill gates as a wanted paedo the majority of readers will believe this to be false and the entry will be edited. In this way the "truth" is maintained by the democracy.

But what if i was refering to another bill gates who is a wanted paedo, my truth will have been trampled under the majority understanding.

Where am i going with this? well ages ago i thought about creating an online community whereby people voted on laws and values for the society. thinking baou this again in the context of what i've written it would be interesting to apply the principal of a community votng on the truth.

users could put forward propositions (the earth is flat true or false) then users could vote on them.

eventually a whole contingent truth could be created by people putting forwards and answering propositions. the truth would change over time as well, users could see what was last weeks truth, how does it differ from last years, what is users x's truth.

it would be interesting to see how things change over time. especially related to current events
would the answer to "the war in iraq is wrong?" be different now than it would have been 2 years ago. would certain demographics be more inclined to vote a certain way. if we captured user demographics (although aslo allow non registered users to vote) it migth be possible to see regional variations in truth.

quite a few possibilities from a pretty simple idea.

this will probably bee added to the long list of fiddled with and then gave up ideas.

Friday, July 07, 2006

i'm the scrum master, twisted scrum master

i am now (as of 5th july) a certified scrum master. woohoo!

Tuesday, June 20, 2006

atlas

as an exercise in mucking around with atlas i've started coding a search engine aggregator. the new controls does make it very easy to call webservices from javascript asynchronously, which in turn makes it easier to make the ui more responsive. i did have to get my hands dirty with javascript which i am shite at. but i managed to get a test page behaving how i'd like.

the www.asp.net site does have some useful atlas tutorials and quite a responsive forum for questions. as to the responsiveness of the site, well its very slow i do find it funny that a site to help those using new microsoft tech, built using microsoft tech can be so slow.

next step for my app is to actually return some proper results from search engines/web services.
i'll start off by parsing and displaying standard google results, which is a good excuse to finally teach myself regex. i've downloaded regexbuddy and the regulator (which seems better) to help me.

reading through a c# book at home it looks like the most performant way to use regex is to compile the regex to a separate assembly that can then be re-used within the application. that means though that writing the regex code will probably have to be a 2 step process. when coding/debugging the app use regex as normal then when testing move compile the regex out to a separate assembly, then change the calling code to execute the compiled regex.

bit of a palava, but i need to write the most performant code possible for this app, so its the price i have to pay.

Friday, June 16, 2006

astoring asp.net profiles unblobbied

http://www.asp.net/sandbox/samp_profiles.aspx?tabindex=0&tabid=1

Thursday, June 15, 2006

and another

http://atlas.asp.net/docs/default.aspx

another atlas url

http://atlas.asp.net/docs/atlas/doc/services/consuming.aspx#simple

atlas

just downloaded the april ctp of atlas and have started having a muck around.
There is definitely some interesting stuff to be playing with, especially in terms of making a web app mroe responsive to a user.

i've started working on a new idea, which poses an issue of how to deal with calling several long running functions, an interesting use of atlas would be to allow functions return their data separately rather than having to postback the entire page and then wait for all the functions to return before returning the page.

http://atlas.asp.net/docs/atlas/doc/services/exposing.aspx

Friday, April 28, 2006

yahoo maps

Well. i've nearly finished writing the basic functionality that will allow me to switch between using the google or yahoo maps api. this would have given me real flexibilty in terms of outages to either service, or api changes. however whilst testing the yahoo code i've come to the realisation that actually, yahoo maps doesn't cover the uk. oh bugger.

its not all bad though. rejigging the code to aloow for both apis has forced me to refactor some stuff
which i probably would have left. and it now means i can concentrate on sorting the google functionality safe in the knoweldge that if/when yahoo decide to open up maps to the uk i'll be able to take advantage of it.

When implementing the yahoo maps api i decided to go down the ajax route and wrote a getoverlay page that returned a valid georss document. There is no reason why i can't code the google ajax code to simply read the same file (code reuse, oh yes). so that is the next step really.

once that is done, i'll need to think about images for the icons. and i'll also need to rewrite the overlay code so that i can pass the price range parameters in the ajax call. This also means i need to create a ddl of house prices, then work out the javascript code (really easy probably but i'm shite at javascript) that can get the selected value from the ddl and the place name from the textbox.

Tuesday, April 18, 2006

whats new

made some progress on adding properties to the database

read a article about the new beta of yaho maps. got me thinking that maybe i should try and build the "mapmove" (don't like the name but its shorter than, "google maps rightmove competitor idea") site so that it will work with either yahoo or googles api. I guess this is the sort decision that needs to be made when you use thrid party web services. its all very well developing an app to use a service, but you are then completely dependent upon the unguarranteed service working.

Writing the site so that i can switch between the two (maybe just a flag in the web.config) would be really useful, espeically i either api changes radically or stops.

I'll have to read this stuff:
http://developer.yahoo.com/maps/

Wednesday, April 12, 2006

longitude and latitude fun

when i first set wrote the screenscrape i chucked up a database for it to write to with the lat and lng being saved as varchar s. obviously this is shite so i started looking at the corrcet data type to store them as.

Eventually after much pain and fannying around with floats (bad idea leave them alone) i have a latitude and longitude field in my database with the following data type

Decimal(9) with a scale of 6 and a precision of 18 (the default).

Tuesday, April 11, 2006

maps maps maps

making slow but steady progress on the mapmove (as i've badly named it) idea. noconsultant now being completely sidelined.

i've been working on the basic adding a property functionality. to be used by agents. they enter property details (price, postcode, etc) that gets saved to a table, and then kicks off the screenscraper to get the lng and lat values for the postcode whcih are then added to the proprty table.

Also been reading up on using ajax with the maps api. originally i was thinking i'd have to dynamically generate loads of javascript to create the overlays for the properties on the map. but instead i'll asyncronously call a .aspx from the javascript which will return an xml document containing the properties and their coordinates.

Friday, April 07, 2006

google maps etc

i've been continuing poc on the idea to use google maps to plot houses for sale. not an original idea it turns out as theres a ssimilar thing done in the us with craigslist.

obstacles so far have been post office being nazi's and owning the copyright to postcodes. but i've written a really simple screenscraper that scrapes google maps to get the latitude and longitude values. postcodes are important not for the user but for estate agents to be able to add a property.
i expect users to just search by place names.

so far i've got this:
1) screenscraper
2) list of uk towns and cities and their lat and long values
3) thought about how the ui would work
4) created a basic generic da class

Tuesday, March 28, 2006

another idea

i've been trying to buy a house recently and have spent a lot of time using rightmove.co.uk as well as lots of other shite property websites. i was thinking the other day how i put in my search criteria and get a list of houses, 99% of which aren't even in an area i would consider buying in.
Would'nt it be nice to be able to view a map which showed the houses for sale (or rent for that matter) in your price range. so you could simply zoom into your preferred area and not have to look at a huge list of houses in shitty areas that just happen to be in your price range.

I've already started doing some work on this and it may end up taking precedent over noconsultant.com

Thursday, March 23, 2006

more useful links for asp.net 2.0 providers

I still haven't got round to sorting the membership stuff. in fact i haven't got round tomuch site wise this week. Here are a few more useful links for when i finally pull my finger out and write some code for this site.

A microsoft bloke's blog. lots of useful links on this

http://weblogs.asp.net/scottgu/archive/2006/02/24/438953.aspx


One of the links of this blog is an article on customer membership providers
http://www.devx.com/asp/Article/29256

Wednesday, March 22, 2006

this week i've mostly been readin

Just got this book off amazon.

http://www.amazon.co.uk/exec/obidos/ASIN/0764576100/qid=1143033598/sr=2-1/ref=sr_2_3_1/026-6867934-0908452

I'm normally a bit reticent to buy a programming book when a bit of googling will normally get you want you want for free. but this book gives a nice overview of asp.net 2.0 (now if only i could think of a reason to write a mobile web app).

Monday, March 20, 2006

curved boxes

I've been thinking about about the visual design of the site (as a break from the database/app design)

I've been thinking about using rounded corners on the main content boxes on the site, i've found this article that goes thru the basics of achieving this using css.

http://www.sitepoint.com/article/css-round-corners-boxes-curves

Saturday, March 18, 2006

useful articles

One of the main reasons i set up this blog is to provide myself with a single place to look for links to useful articles i've found whilst researching for noconsultant. Rather than have to keep my work and home bookmarks synchronised by mailing my email account every time i find something useful, so. here is a list of useful articles i've found.

I'll need to write a custom membership provider for my site, here are some useful links:

http://blogs.dotnetgerman.com/alexonasp.net/PermaLink,guid,669e2dc5-a623-4e21-bb16-63bb66cb5be9.aspx
http://imar.spaanjaars.com/QuickDocId.aspx?QUICKDOC=380
http://www.aspnetresources.com/blog/utility_of_provider_model.aspx
http://msdn.microsoft.com/asp.net/default.aspx?pull=/library/en-us/dnaspp/html/ASPNETProvMod_Prt5.asp
http://msdn.microsoft.com/asp.net/default.aspx?pull=/library/en-us/dnaspp/html/ASPNETProvMod_Intro.asp
http://www.dotnetbips.com/articles/displayarticle.aspx?id=494
http://www.devx.com/asp/Article/29256/0/page/3
http://msdn.microsoft.com/msdnmag/issues/05/11/Membership/
http://msdn.microsoft.com/msdnmag/issues/06/00/ASPNET20Overview/default.aspx
http://msdn.microsoft.com/asp.net/

I'm just in the process of finishing off the database design on a sql server 2000 server. I found this link quite useful for helping me work out what data types to use for my tables:

http://www.databasejournal.com/features/mssql/article.phpr/2212141

I intend to use a bit of ajax for a few of the pages cos
A) the way i'll use it will really speed up what the user has to do
and
B) Its a good excuse to learn about it.

Below are some links that i found useful when researching ajax and how i could implement it on my site:
http://adamstiles.com/2004/12/hacking_google_/
http://serversideguy.blogspot.com/2004/12/google-suggest-dissected.html
http://www.codeproject.com/Ajax/ajaxnet_lookup_control.asp

Friday, March 17, 2006

testing testing 1 2

when have you done enough testing. at what point can you say "i have tested this completely there isn nothing left i can test" ?

Thursday, March 16, 2006

The idea, the story so far

I'm a coder and i'm always coming up with (bad) business ideas that i normally start developing just as learning excercises, before getting bored/disenchanted and moving onto the next one.

A while ago i thought of creating an IT job site with a difference, one that removed the need (if there ever was one) for recruitment consultants. This idea is mainly born out of my dislike of recruitment consultants. In a skills based industry like IT i really can't see how recruitment consultant "add value" (to use wanky business speak) to the process of matching jobseekers to employers. In my experience recruitment consultant are unknowledgable (yeah they want a developer with sequel server c#.net and .net). I've also experienced them lying.

Thinking from an employers perspective i guess a good recruitment consultant should act as (for wont of a better term) shit filter, giving the employer the right candidates for the job. I guess the question is how many good recrutment consultants there are out there?. I know a lto of people who have interviewed completely unsuitable people for jobs that have been provided by recruitment consultants. so my answer to the question would be not many and not enough

dts doh!


I have found why my dts didn't work. in the copy tab of the copy object task there is a check box for use default options. i had kept that checked.
If you untick it and click the "options" button you then get a new form with a "copy database users and database roles" checkbox that is selected by default.

Oh well thats something i've learnt today (along with the existence of a goggomobile http://www.motorbase.com/vehicle/by-id/114/ )

sql server 2000 dts copy object pain

task is simple enough, copy a table (and its contents) from one database server to another.
So i create a dts copy object, uncheck "copy all", uncheck "copy related objects" select the specific table and bobs your uncle, or not. for some reason the dts is trying to copy a user over as well. so i get a "user xxx does not exist in the database" error. ok, thats fine, if i'd even selected that i wanted to copy the user. What a pain in the arse.

Luckily i have an application that updates a replica of this table, and with a quick connection string change i started updating the table (altho this will take 10 times as long as the dts would have).

I'm not saying the dts copy object is shite, obviously i'm dong somethign a bit stupid, but surely if you are allowed to select the specific database objects to copy the dts should only copy those specific database objects?

Wednesday, March 15, 2006

What is the point of blogging?

well, i intend to use this blog to record my progress thru developing an asp.net 2 based web site.
A by product of this will hopefully be a useful resource for me to look back on my progess (or lack of) and a place to keep all the articles/useful links that i will collect during my research. (maybe this will be useful for others who are doing similar things.) Or simply an opportunity for people to laugh at the stupid programmer making stupid mistakes (and not learning from them).

thats the primary point anyway. the secondary (for now) point will be to allow me to rant about whatever i'd like to rant about (normally idiotic work colleagues)