A new year, a new app – CountDown for Windows Phone 7
2010 was a busy year for me. I spent a lot of time at mflow, learning lots and working hard. I spent 4 weeks on the back of a motorbike touring 5 countries in Europe and 2 weeks riding the Shinkansen up and down Japan. I saw Billy Connolly live, watched Cirque du Soleil in awe at the Royal Albert Hall, ice skated outside the Natural History Museum.
However, today is 1/1/11 which means I’ve got a whole new year ahead of me to fill up with more fun stuff, and I’m excited :)
This morning, my first ever mobile app was published on the Windows Phone Marketplace! It’s not exactly rocket science, nor is it going to make me rich (it’s free) but I’m just happy to have published something. It’s called CountDown and if you have Zune installed, you can have a wee look here.
If you don’t have Zune installed, here’s an awesome screenshot of it in Zune:
As the descriptions says, this is a simple little app that allows you to keep track of various events and other important dates and counts the time remaining until or since each one. Nothing complicated, but it served it’s purpose as a learning experience. Developing for the mobile form factor is really quite different to developing for web or even desktop because the screens are so much smaller and less ‘usable’ than other mediums. The design, layout and usability of the app has to be very well thought through.
Anyway, this year I hope to develop a few more Windows Phone 7 apps as well as maybe try my hand at Android / iPhone / iPad. I do have a brand new MacBook Pro now so I have no excuses anymore :)
Read MoreHackCamp @ Google London
A couple of weekends ago, I was lucky enough to be able to go along to HackCamp at the Google offices in London together with the mflow team. It’s the first ‘hack’ day/camp I’ve been to – and although I didn’t stay for the whole weekend nor did I actively participate in the hacking, I got to see what a hack camp is all about. For those of you who have never heard of this term before, a hack day/camp is basically a congregation of hackers, developers, designers (geeks in other words) who get together and spend 24~48 hours building an application using whatever tools they have at their disposal, in small groups or alone.
There were about 10 or so different speakers presenting their APIs at HackCamp, and although you didn’t have to use those APIs in particular, it was certainly very interesting hearing about what others have to offer. One of the APIs that I thought was a great idea was this one – 0870.me. 0870.me is an API that allows you to plug in a standard 08* number (which mobile networks charge a fortune for here in the UK) and it will return to you a matching non-08* number if it can find one in it’s database. How neat is that??
There were speakers from Twitter, Google AppEngine and Buzz to name a few big ones, but also lots of smaller companies. Tum and Demis from mflow gave a talk about the mflow API.
Once all the hacked-up apps had been submitted, I had a quick look and found this little gem: tron. It is very cool to see that someone has used the mflow API in their app!
Anyway, having had a small taste of these ‘hack’ camps, I may just have to keep my eyes out for another that I can go to coz they sure do look like they could be lots of geeky-fun :)
Read MoreHow to make a text string fit your labels in .NET
In my chosen career, I solve problems everyday. Sometimes the problems I’m given are small and simple to solve, and sometimes they are most definitely not. That, I can deal with. What annoys me is when a problem seems like it should only take five or so minutes to solve and yet somehow, it takes you all day. It’s not that you’re bad at what you do, it’s just that the thing you’re trying to do wasn’t quite as simple as you or anyone else had thought it would be. Or perhaps the framework you’re working with has some nasty little quirks that you weren’t aware of. Or perhaps the thing you’re trying to do just hasn’t been done before, or at least hasn’t been well documented. Whatever the reason, spending all day on a “simple problem” isn’t good for your sanity and makes you feel like you ought to be doing COMP101 all over again.
One such problem that I’ve come across more than once in the last few weeks is how to make a text string fit inside a label or other similar control. If the string is too long to fit, the end should be truncated and replaced by an ellipsis. Sounds pretty straightforward eh? Nope, think again.
After coming up with a few complicated solutions including but not limited to iterating through every character in the string and measuring the length of the string (yes, highly inefficient, I know!), I finally found a solution which seems to do the trick. I feel this amazing solution needs to be shared with everyone so here it is:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | private string textToDraw = "Hello, how are you? Why does this string not fit in the label that I have drawn? Maybe it is because it is too long?"; public Form1() { InitializeComponent(); label1.Text = ShortenString(textToDraw, this.Width - 10, label1.Font); } public string ShortenString(string myString, int width, Font font) { string result = string.Copy(myString); TextRenderer.MeasureText(result, font, new Size(width, 0), TextFormatFlags.EndEllipsis | TextFormatFlags.ModifyString); return result; } private void Form1_ResizeEnd(object sender, EventArgs e) { // Set the width to something - I've just set it to the width of the form - 10 to allow for the ellipsis but // I guess this would need to depend on which control the label is to be displayed inside of int width = this.Width - 10; label1.Text = ShortenString(textToDraw, width, label1.Font); } |
The trick to solving this problem was to use the TextRenderer class and calling its MeasureText function. MeasureText doesn’t seem like the most obvious function to use but it seems to work.
Note that this example is for a C# winforms application. The same could be done for a web application although you’d have to use JavaScript to re-calculate the string when the browser or element is resized.
Has anyone else ever had to solve this particular problem? If so, I’m interested to hear how you did it!
Read MoreGirls in IT
Since I was about 5 years old and got my little hands on my first Commodore 64 in 1986, I’ve been comfortable around computers. At first it was all about the games, and then it was about the BASIC programs that my mum and I wrote after school. Later on it was about mIRC, ICQ and horrible geocities pages. And now computers are my job, hobby and obsession. Computers have been in my life for well over 20 years in one way or another and I totally take them for granted. Oh, and did I mention that I’m a girl?
However, this is not the norm. The norm is that girls don’t play with computers and don’t work in IT. But why? Why are there so few girls in IT?
Well, the answer is that there is no one simple reason. It’s something that Universities and education ministries around the world have struggled with for years. For every 200 guys graduating from Computer Science at University, there is 1 girl. This may not be the same at every University around the world but it’s a pretty sad statistic. The same is true in the IT industry. Basically, girls are under-represented in IT almost everywhere you look.
Anyway, I thought I would list a few of the factors that I believe strongly contribute to why so few women end up in IT:
- Programming is not taught in all-girls high schools
This is obviously a pretty big reason why girls don’t take up computer science at University. I actually experienced this myself when I was told in no uncertain terms that “girls don’t program” after asking what programming languages we’d be learning in our Computer Studies course in an all girls’ college I went to in Wellington, New Zealand. The result of this is that any girls who may be interested in trying Computer Science or Computer Engineering at University are already starting off at a disadvantage, especially compared to boys who apart from being curious and probably having played computer games and scripted for years already, may well have been taught some form of programming in high school, simply because they are boys. - Barbies versus binary
Parents continue to buy their daughters dolls while their sons get computer games and game consoles. I don’t have children but I have friends who do and I have seen this happen time and time again. If children that young are seeing and being made part of this divide, how can we really expect it to be any different when those same children are trying to decide which career to follow? - Working with computers is seen to be nerdy and uncool
There is quite a strong stereotype around geeky computer programmers and it could be possible that a lot of girls, in their formative years, don’t feel that it would be cool to be associated with that sort of image. Peer pressure is a huge motivator for many children and adults, and if that peer pressure is telling girls not to spend time on computers but rather to spend that time reading fashion magazines then that is what they will do.
- Could it be that our brains are just wired different?
I’m no psychologist or doctor so I don’t have the answer to this one. But obviously males and females are different in many other ways so it only follows that our brains probably work differently as well. However, I do believe that this is the last string in the list of reasons why girls aren’t in IT and should most definitely not be used as an excuse for it. As pointed out above, I think there are other reasons why girls don’t pursue IT careers that need to be looked at carefully before we fall back onto a reason that we can’t really prove or do anything about.
Having done a 4 year degree in Computer Science and now having worked in IT for more than 5 years and having quite often been the only girl in my team, I would also like to dispel some of the myths about working in IT.
- You don’t have to be a social outcast to be a girl software developer
There is a stereotype surrounding girls in IT – usually very geeky looking, perhaps overweight, no friends, bad skin, etc etc. This is not true and most of the girls I know in IT are very much the opposite – smart, intelligent and strong women. It doesn’t matter what you look like or how you dress; if you want to be a programmer, go for it. - All guys working in IT are geeky and no fun to hang out with
Again, this is complete rubbish. Guys who work in IT are for the most part smart, funny, kind and caring. I’ve been friends with geeky guys all my life and in my experience, they’ve been way cooler to hang out with than the mindless jocks who don’t even know how to turn a computer on. - As a girl in IT, you’ll never be as good as the guys you work with
Not true. If you’re good at what you do, people will realize that and treat you accordingly. Just make sure you keep up to date with the technologies that you use in your job and don’t be afraid to speak up if you’ve got some ideas you want to share. The guys in your team will come to trust and respect you and trust me, that’s a great feeling.
So if you’re a girl and you’re thinking about getting into IT, here is my advice:
- If you have some geeky friends, ask them for help or advice.
Asking people who already work in IT what it’s like for them may help you get a better idea of what it might be like for you. Ask them if they can show you some of the work they do, or help you get started with a small project of your own. - Set up a blog or a small website for yourself.
Creating a blog for yourself is a great way to start learning about IT. There are plenty of free blogging engines out there like Blogger, WordPress or Textpattern. This is a great introduction into some common but very useful technologies (HTML, JavaScript, CSS) and you’ll end up with a cool blog that you can use to express yourself online. Pretty cool huh? - Keep up with some technologies that interest you by reading online blogs and articles.
Whether you’re interested in web programming, desktop application development or linux scripting, there are many resources out there for you to keep an eye on. It’s always handy to be able to tell interviewers that you actively follow some geeky site – it shows that you’re truly interested in IT. Some good sites to check out are Coding Horror, Joel on Software, MSDN Blogs, however, there are many many more out there. - Go get yourself some IT qualifications.
If possible, go to University and do a Computer Science degree. However, if you can’t or don’t want to do that just yet, do a short course with a polytechnic or some equivalent. A qualification will not only give you the introduction you’ll need to start off in IT, but it will prove to those who interview you that you’re serious about what you want to do and that you’ve got the smarts to pull it off. - Don’t let the lack of women in IT put you off.
For me personally, being in IT has been a lot of fun. I’ve met heaps of really great people and have fit right in with all the development teams I’ve been on. IT guys will treat you like one of them and you’ll never feel left out.
How to develop secure .NET applications using Server SSL Certificates and Client Certificates – PART 4
The following article is part 4 and therefore the last in a 4 part series of articles about developing .NET applications using SSL. Part 1 in this series can be found here, part 2 can be found here and part 3 can be found here.
How to set up a web application to automatically redirect to HTTPS if accessed via HTTP when SSL is required
SSL can be “required” at the site level, folder level or even file level.
If any file that has SSL set to “required” is requested via HTTP, HTTP Error 403;4 “Forbidden” will be returned automatically by IIS. As far as I can tell, there is no simply way to tell IIS to re-direct to the same page via HTTPS. This effect can be achieved in two different ways and if “defence in depth” is the preferred approach then both solutions can be implemented together. Note that both solutions require custom code to be written however.
Redirect with IIS and code:
- Create a new Web Form (aspx) in your Web Application called RedirectToSSL (or similar).
- In the Page_Load event handler, insert the following code:
1 2 3 4 5 6 7 8
string redirectUrl = HttpContext.Current.Request.Url.Query; redirectUrl = redirectUrl.Substring((redirectUrl.LastIndexOf(';')+1) , redirectUrl.Length - (redirectUrl.LastIndexOf(';')+1)); System.UriBuilder secureUrlBuilder = new System.UriBuilder(redirectUrl); secureUrlBuilder.Scheme = System.Uri.UriSchemeHttps; secureUrlBuilder.Port = -1; // Use default port HttpContext.Current.Response.Redirect(secureUrlBuilder.Uri.ToString(), true);
- The aspx needs to be at least 512 bytes, otherwise IIS won’t redirect to it. So make sure you don’t delete everything out of it, it should never get displayed anyway.
- In IIS, right-click your Web Site and go to Properties > Custom Errors.
- Select the “403;4” HTTP error in the list HTTP errors and click the Edit Properties button.
- Select “URL” from the Message type drop-down list and enter “/RedirectToSSL.aspx” into the URL textbox, as shown below.
- Press OK twice to close the dialogs down.
- Restart the website and/or reset IIS to ensure all settings have been applied.
- Open Internet Explorer and go to:
https://<servername>/<securedpage>and verify that you are automatically redirected to the https version of the same page.
Redirect with code alone:
- Insert the following code at the beginning of the Page_Load event handler of every page that needs to be secured:
1 2 3 4 5 6 7 8 9
// Make sure the request has come through SSL (ie that HTTPS has been used) if (!HttpContext.Current.Request.IsSecureConnection) { System.Uri currentUrl = HttpContext.Current.Request.Url; System.UriBuilder secureUrlBuilder = new System.UriBuilder(currentUrl); secureUrlBuilder.Scheme = System.Uri.UriSchemeHttps; secureUrlBuilder.Port = -1; HttpContext.Current.Response.Redirect(secureUrlBuilder.Uri.ToString(), true); }





















