February is already here and I've been meaning to write this for quite a while.
This year I want to have tried some new tech by the end of the year, it's very common for me to want to try different technologies but a little less common that I actually give myself a goal with a deadline.
So I guess this will be the first time.
The tech I want to have tried:
Monogame: I want to have made a game with this, not sure on which platforms I want to be able to run it yet.
So what tech do you think I should try in 2012?
Introduction
Serving
files from a website is easy just link to them and you're done.
Serving files from your website in the most optimal way isn't that easy, first
you have to think about things like making sure that the caching is right and
if the files are being used a lot on other sites.
If files
are being used a lot on other sites then it could be that the user already has
a copy of this file lying around, let's say you use jQuery on your site. You're
not the only one using this library there are a lot of other websites that are
using this library which means that the people coming to your site might
already have jQuery running, to make sure these people don't need to get yet
another copy of jQuery this can be
The
advantages
Localized
delivery: people in America will get it from local servers and so will people
from Europe or Asia
Cached
delivery: people who already have gotten the CDN version of that library won't
need to download it again.
It's free:
it actually costs your server a bit of time to handle the requests, it also
costs you a bit of bandwidth it costs you nothing to use a CDN.
The players
Google
Libraries which has:
Chrome Frame
Dojo
Ext Core
jQuery
jQuery UI
MooTools
Prototype
script_aculo_us
SWFObject
Yahoo! User Interface Library (YUI)
WebFont Loader
Microsoft
Ajax Content Delivery Network has:
ASP.NET Ajax
jQuery
jQuery UI
jQuery Validation
jQuery Mobile
jQuery Templates
jQuery Cycle
Modernizr
Ajax Control Toolkit
ASP.NET MVC
CDN JS has
even more libraries out there which the other ones don't have examples:
coffee-script
json2
less.js
require.js
Exceptions
There are a
couple of reasons not to use a CDN in specific circumstances.
Local
applications hosted on a network: it's always good in these cases to use local
files because you don't need the internet to run this application.
When
combining compressing your JavaScript files: if you have a lot of JavaScript
files then it is best practice to combine and minify these files in some cases
this can render better results than using a CDN.
Conclusion
It's almost
always good to use a CDN, above is a list of CDN's which are widely used and
reliable so there is no excuse not to use these.
I just read:
Version Control by Example
It's a free
printed book which can be shipped to your home for free by filling out a page
full of questions.
If you want the details on how to get it shipped to your home or have any
questions about it find out the details here.
Quick review of
the book:
Introduction
The book gives you
a quick intro about version control systems, it tells you about the history of
version control systems and how they got here.
What the different
commands are for the version control systems and how they work in the specific
version control systems examined in the book.
It then goes into
how you can use the different version control systems through the command line
interface, so that you can see the differences on how to handle increasingly
complex situations.
The version control systems it gives the examples for are:
- Subversion
- Mercurial
- Git
- Veracity (SourceGears product)
There is also a
bit about the differences between DVCS and CVCS, distributed version control
systems and centralized version control systems.
My Opinions
I really like the
way the book looks, it's pretty so it leaves a good first impression.
In talking about
the differences between DVCS and CVCS I think it goes a long way to take away a
bit of the fear surrounding DVCS.
By focusing on the
command line clients of the different VCS systems you're looking at the basics
which are great because it gives you the feeling of actually knowing what you're
doing.
The reality for a developer like me working with VCS is someone not working
with command line clients but mostly using IDE / Explorer integration to
get the job done.
So the quality of integration and the tooling available around the VCS'es
becomes very important to the way I use VCS, still not talking about this makes
perfect sense to me because the tooling landscape is very adaptive and
will change over time and the VCS which is on top now can easily be on the
bottom when the next generation comes.
The book has quite
a bit of depth where it is needed, but it
also manages to keeps it short and simple in the examples.
There is a bit of
humor in the book, I like it and it keeps the book from getting a bit dry.
Conclusion
The book does its job in educating about VCS and also providing a reference.
Nowhere in the
book does it come over as a too much of a sales pitch for the product that the
writer has created which is a very impressive thing because of the bias one has
when talking about the product that he has created.
So go get it, it's
free :)
Disclaimer
I'm not associated with SourceGear in any way.
About a month ago I started diving into the world of Rails again. As I said in that blog post, Rails has always had much thought leadership and has always been a hip way to develop.
Now 2 of the main new technologies that where discussed in that blog post have made it into the .NET world in a very polished way.
Mindscape, the folks who made the wonderful LightSpeed ORM, have made the free Web Workbench, which supports LESS, SASS and CoffeeScript. I wrote a little bit about SASS and CoffeeScript in my previous post. LESS is the main competition for SASS, a comparison between these two in terms of syntax can be found here. One of the main differences is that LESS can also be interpreted on the client side within the browser with JavaScript.
Web Workbench features:
- Code highlighting for all of these technologies.
- Code generation for SASS and CoffeeScript which just works by saving the files your editing.
- Intellisense for SASS and LESS.
This is a pretty clean way of being able to use these technologies in your next .NET web project.
Of course there are other ways, but that might be a story for a new blog post.
Mindscape also created a nice making of blog post for Web Workbench for which they used: F#, IronRuby, Jurassic and bits of Node.JS. This sounds like a pretty hard-to-cook recipe but it looks like they pulled it off.
As a bonus, here is a debate about LESS and SASS
Let the fun begin
Ok diving into Rails after not having touched it in a while feels a bit painful to be honest.
Getting Started
Using the guide on: http://rubyonrails.org/download I got off to a good start.
Picking the latest version of Ruby + the rails 3.1 RC.
Then the first problem seems to be going after the database.
Sqlite3.dll needs to be downloaded and put into the rubypath\bin directory.
Easy step to do just head over to sqlite.org/download to get that.
Now I tried getting MySql to work with this rails version, but after trying to use a specific (older) version of the mysql2 gem and using some compiling options I still didn’t get it to work.
This feels rather painful
Scaffolding
The way Rails wants me to work is a little different from what I’m used to doing.
What I’m used to doing:
Model database (MySQL, MSSQL … )
Generate scaffold
Make the actual screens.
Rails does it differently.
I want my views generated from my model, this can be done in Rails by using the command line not through using files in which you set up the database.
The Rails way –> Use Command line –> create migration + controller + view
Not:
Create Model, either in database of code –> generate views
Now it can be achieved to get the views without regenerating by using something like nifty scaffolds, but this won’t give you the starting point in terms of forms etc which you can then edit.
To be Continued …
I’m sure there will be more fun in trying the Rails way again and that there will be some things which will be harder because I’m trying an RC release and not a safe stable version.
Introduction
I’m finally granting myself some time again to write about the interesting things that I run across in development.
Its always interesting to see what the Rails world is doing to see what's hip in development, because the Rails folks are hipsters and innovators.
This however isn’t always true.
Prepared statements are only now being built into Rails. This is quite surprising to me.
Prepared statements have long been a pretty good way of guarding against SQL injection.
So its a very good thing that they are being implemented.
CoffeeScript and SASS defaults now
CoffeeScript is a form of shorthand notation for JavaScript which compiles into JavaScript.
SASS is an extended version of CSS, which adds nesting, variables and selector inheritance.
jQuery default now
This is a good thing, everywhere in the industry jQuery is popping up as the default JavaScript framework.
Reversible migrations
Migrations (used for database changes) can be generated and no longer needs an up and down by default. Up and down are now ‘change’ and the down part will be inferred from the change command, wherever possible.
Assets
There wasn’t really a nice way to structure your JavaScript by default. Now there is and it has dependency management.
Things are divided into:
App, Lib, vendor
and into:
images, style sheets and JavaScript.
so:
app/assets/images
etc.
Sprockets
This handles JavaScript dependencies, concatenating and minifying for all the asset files.
Conclusion
Looking forward to seeing how development will go with ROR, I will probably try to see how things will go with ROR and then try to see how things will go doing the same application with ASP.NET MVC.
At time of writing the market share of Safari and Google Chrome is around 5% each.
Firefox is around 30% and the rest is IE and Opera and some other browsers with a small market share.
The rising stars
Safari’s market share has risen quite fast.
From around 3% in June 2009 to 5% around January 2010
Chrome did it’s thing even faster.
Going from 0,5% in mid 2008 to 5.5% around January 2010
Off course Firefox has also been increasing in market share but not by as much.
Going from 20% in mid 2008 to 25% around January 2010
Firefox’s market share is off course a lot larger then that of Safari / Chrome.
But it’s growth is slowing down and I think it will stop growing soon I think.
The why they will keep rising
Safari is the default browser for Macs and also the default browser for iPhones, iPads and it’s also available on windows.
Apple is a premium brand at the moment, most of the hardware products coming out of Apple are sexy and that will probably help pushing Safari a little bit on other platforms.
Chrome on the other hand has something else pushing it, Google is putting quite a bit of muscle behind it. It has been doing ad campaigns it’s been putting advertisements on Gmail to migrate people away from IE and will probably be doing a lot more of this.
Google is also a company people respect and it’s a brand which inspires confidence.
Google won’t stop pushing it’s browser, because it makes sense for them to get as many people on the internet using it a lot more internet applications watching more videos online etc etc.
This is because their main business is selling ads and their main brand is internet search.
The best way to push these things is getting the web surfing experience as good as possible.
Google is also putting out 2 OS’es Android and Chrome OS, which might also provide a larger market share for it’s browser.
Conclusion
Together the current market share of Safari / Chrome is now around 10 – 11% I think in 2 years this will be at least 30%
This market share will probably be coming out of Firefox’s market share.
Together with market share from IE6.
A while back I predicted that motion detection would be the future of gaming.
I think we can say that with Sony and Microsoft heavily investing in motion detection and have some big projects down the line.
Microsoft with Project Natal and Sony with the Wand Controller.
My prediction for 2010 is that this is the year where people actually start using E-readers a lot.
There are a couple of different companies which will enter the market with new shiny Tablet computers.
Apple just recently presented the iPad (Apple’s take on Tablets) which has gotten a lot of press.
A short recap of the news surrounding it:
$499 starter model + $130 for 3g communication.
More expensive models available for more storage.
There will be an E-Book reader installed, amongst other things it will run almost all of the applications which are currently on sale for the iPhone / IPod Touch.
I have been using an iPhone for a little while now and it’s funny how much vendor lock there is.
Want to use applications or games, download those in apples AppStore, want music get it in iTunes, with the iPad there will also be an iBookstore.
Want to use your iPhone / iPad / iPod etc with a computer then you can synchronize between 1 computer and your iDevice.
You also can only install software on it which comes from the AppStore, so all the software needs to be approved by Apple itself.
Which means that some applications will never see the light of day.
It also means that Apple will be getting a fair amount of profit from these applications. Since Apple receives one third of all sales from the AppStore.
Recently they announced the 2 billionth downloaded application from the AppStore. This probably translates into quite a bit of cash for Apple.
Ok so the iPad with it’s pricing will probably be a big hit. It will also invite others to do the same trick and try to do it even cheaper.
This means that there will be a few very nicely priced Tablets floating around soon.
One of the main uses of these Tablets will probably be reading e-books/comics/magazines.
So prediction nr 1 for 2010:
E-readers and off course Tablets will become a big thing in 2010.
Predication nr 2 for 2010:
People will be using internet even more on phones and unlimited internet access for phones will become very common.
A couple of days ago my girlfriend called me that the files she stored at MediaFire where gone. A little after that I tried to login to MediaFire to have a look at how my files where doing.
I was quite surprised to see my own files deleted as well.
After that I came across a FAQ entry on the website
“There is currently no time limit on how long uploaded files will be stored as long as you access your account (i.e. login to your account) at least once every 60 days OR at least one of your files is accessed (i.e. downloaded) every 30 days. If your account is not accessed within the time limit, then the files in your account will be cleared. MediaPro subscribers’ uploaded files will remain forever as long as the account is active.
If you are a Mediafire free user and your files were deleted due to inactivity, they are deleted from all servers and cannot be retrieved.“
This means that files stored on MediaFire will be deleted without any kind of notification if you don’t log in every 2 months. This is something which is quite scary to me.
So be careful when using MediaFire and don’t store any files on there which you haven’t stored anywhere else, or be sure to use your account enough to not get your files deleted.
“Je bent bekender dan je denkt”
This is a dutch subject which is sent around by the government which alerts you to the dangers of having an online profile.
By creating a video clip using an online profile on the hyves site which is sort of a dutch MySpace / facebook.
This uses images from your “friends” and integrates them in the video.
It’s quite interesting that these things can so easily be done nowadays.
It’s getting harder and harder to stay anonymous. When you have an online presence.
_why aka Why the lucky stiff
_why is someone who has an online persona but who didn’t want to be recognized under his own name.
He has created numerous projects, mostly written in and for Ruby,
August 19th 2009 he decided to remove his online accounts and projects.
This started a small wave in blog land with some pretty prolific people writing about it.
It also meant that people where going to try and find out what was the identity of this person in a huge way.
As you can read up on in the link above the effort made to find out who someone is by reading up on what he has done online can be huge.
And there is a huge amount of information you leave behind even if your a smart person.
Hacking of Sites
One would think that if your a smart person then you wouldn’t have to worry as much about these things. Actually it seems to be a sport to get to smart people.
For example Perl Monks (a perl programming site) got hacked and had all passwords of it’s members stolen, the annoying part is that the passwords where all stored in plain text which means that there wasn’t even any decryption necessary to view the passwords.
Jeff Atwood (the man behind CodingHorror.com) got his account hacked for the Stackoverflow site
This means that your passwords from sites you use on the web might be in danger.
1 way to help this is password storing engines.
Password protection programs
There are quite a few password protection programs out there. Some are online some are offline and some are both.
One of the ones which is good to have is Keepass password safe.
there are also quite complete solutions for handling this problem like thycotic secret server.
Conclusion
Don’t think your safe, almost nobody is safe.
But do try to make an effort to stay safe it’s pretty hard.
Good luck.
This week there are 3 pieces of candy which are all sort of related, they are all talking about ruby
Candy nr 1: Faster ruby
Ruby for windows has long been available as a 1 click installer, this one click installer is based on Visual C++ version 6 which came out in 1998.
There is an effort going on to update this installer to a newer version of Mingw + GCC.
The new installer is called Rubyinstaller and can be found here.
How much faster is it?
Benchmarks can be found here.
Candy nr 2: Iron ruby
IronRuby has been around for quite some time, it’s now up to it’s 0.9 release.
Which would seem to be getting closer to the 1.0 mark. It has reached most of it’s compatibility goals and it’s main focus now seems to be performance.
For those of you wondering what IronRuby is:
IronRuby is a .Net implementation of Ruby based on the DLR, the dynamic brother of the CLR on which most of the regular .Net languages are based.
IronRuby is both available on windows and on Mono.
More information can be found on it’s about page.
Candy nr 3: Browser ruby
Last piece of candy is Gestalt. Gestalt is a way of using Ruby / Python / XAML in the browser by leveraging the Silverlight plugin.
This means that it will work on any browser which has the Silverlight plugin installed.
It can be called by placing a reference to the gestalt.js file which can be downloaded from the downloads page.
This means that DOM manipulation, animation etc is possible by using Ruby or Python.
Conclusion
I Hope you enjoyed these pieces of Ruby candy hopefully I will be back again soon with more candy.
A while back a colleague of mine used to send out emails every once in a while called candy of the week.
This little piece of candy usually was a pretty picture or website which lightened up everyone's day.
I was thinking about moving this concept to my blog and to go with a developer theme. To make things interesting for my Developer readers.
Which I’m going to assume most of you are.
My first post will be some double candy:
Candy nr 1:
ExtJS is a JavaScript library and UI framework to make setting up AJAX forms with validation and a whole lot more a breeze compared to the other offerings out there. There is a wide array of samples and demo’s available on the website so you can see how little effort is actually required to make forms and other UI components work together.
This framework + JavaScript library has just released version 3.0, which adds charting support, data binding support and Ext Direct a remoting / data streaming effort.
A slight warning should be placed here, ExtJS is a dual licensed project:
GPL + payed except for Ext Core which is licensed under and MIT license.
Candy nr 2:
The Coolite Toolkit is a set of AJAX enabled .Net Controls which use ExtJS to perform it’s magic. As can be seen from the examples these controls make it very easy to integrate ASP.NET with ExtJS in a way that is very clean and takes away most of the JavaScript and puts it into nicely wrapped controls.
About SubSonic
Let me start off by saying that SubSonic is great, it's my DAL of choice for most projects.
It's small it's fast to set up and it has a whole lot of functionality and elegance out of the box.
You can tell I was pretty exited about it by reading my previous entry about SubSonic.
That said there are a couple of things that in my humble opinion can still be improved upon in the project.
Stored Procedures VS Other Data Access in SubSonic
Data can be inserted / Updated in the following fashion in SubSonic.
Insert a new order for instance could be done like this:
Dim order As New Generated.Orders
order.Name = "My Name"
order.ProductID = 1
order.Isactive = True
order.Save()
dim newOrderID as integer = order.Id
Now if there are columns which are not set through the object all will still work out and the object will still be created.
Stored Procedures are called like this:
sps.CreateOrder("My Name", 1, Nothing, True).Execute()
It would offcourse be great if the Stored Procedures would have the same approach as the SubSonic Object but with some extra's:
Dim order As New sps.CreateOrder
order.Name = "My Name"
order.Ordernr = 1
order.Isactive = True
order.Execute()
With some other parts ready to be used:
dim ReturnValue as integer = order.ReturnValue
dim Output1 as integer = order.NamedOutputParameter
dim Output2 as string = order.NamedOutputParameter2
This way the existing functionality surrounding Stored Procedures would have:
A sexy way of dealing with optional parameters.
A good way to set up parameters out of order with the Stored Procedures.
Some very nice ways of communicating with the output parameters / return value.
Alas I seem to be a little late with this blog post since Subsonic 3.0 has already been released.
And released and released and err, updated.
Offcourse I still hope this can be added to a new version of Subsonic.
So that it can get even better.
Introduction
A while ago there was quite the discussion about what the differences where between VB.NET and C# and what people should use.
After a while it seems that most things where said and it became clear that the C# camp had the most zealous advocates.
Now things have quieted down a lot and it would seem that most people have made their choice and perhaps even changed it in between.
At the time that I wrote my previous post about the subject the statistics where telling us that the usage was about equally divided between VB.NET and C#.
The state today
Today there is a different picture, most of the highly visible people who where actively supporting the VB.NET language have switched to C#.
That probably means that the usage of VB.NET has now dropped a great deal compared to C#.
Looking at job postings etc. it would also seem that C# has won the race.
Which is something which probably isn't that surprising.
A poll by Telerik shows: 69% C# vs 30% VB.NET.
Last year it was: 63% to 34%.
Why did C# win the race
- VB.NET got a bad name by being associated with VB6 and it's predecessors, which most wouldn't really consider a respectable language.
- C# Has a good name because of the fact that it's modeled by Andreas Helberg the creator of amongst others the Delphi language.
- C# has been modeled after more respectable look a like languages: Java / C / C++, which are all languages which are well respected.
- Because of the points above there are more job openings for C#.
- It seems like a lot less typing to get the same thing done.
- More and more projects are done in C# in comparison to VB.NET.
- C# pays more money.
- People migrating from VB6 sometimes choose C# instead of VB.NET because of a lot of the above reasons.
- Almost no people who migrate from Java / C++ are considering VB.NET as a language.
What is happening now
Things are getting worse for VB.NET.
My favorite .NET books (ASP.NET Unleashed) have gone from VB.NET to VB.NET + C# to C# only.
People who use to be prolific VB.NET programmers are also migrating.
What are the current differences in the languages
Taken from wikipedia:
Features of Visual Basic .NET not found in C#
- Variables can be declared using the
WithEvents construct. This construct is available so that a programmer may select an object from the Class Name drop down list and then select a method from the Declarations drop down list to have the Method signature automatically inserted
- Auto-wireup of events, VB.NET has the
Handles syntax for events
- Support for optional variables (this will also be available in C# beginning in version 4.0). This is typically used to provide easy interoperability with native code
- Marshalling an object for multiple actions using an unqualified dot reference. This is done using the
With ... End With structure
IsNumeric evaluates whether a string can be cast into a numeric value (the equivalent for C# requires using int.TryParse)
- XML Literals
- Inline date declarations by using
#1/1/2000# syntax.
Features of C# not found in Visual Basic .NET
- Allows blocks of unsafe code (like C++/CLI) via the
unsafe keyword
- Partial Interfaces
- Iterators and the
yield keyword
- Multi-line comments (note that the Visual Studio IDE supports multi-line commenting for Visual Basic .NET)
- Static classes (Classes which cannot contain any non-static members, although VB's Modules are essentially sealed static classes with additional semantics)
- Can use
checked and unchecked contexts for fine-grained control of overflow/underflow checking
- Auto-Implemented Properties (as of C# 3.0[4])
- Implicitly Typed Arrays
Other characteristics of Visual Basic .NET not applicable to C#
- Conversion of Boolean value True to Integer may yield -1 or 1 depending on the conversion used
- Assigning and comparing variables uses the same token,
=. Whereas C# has separate tokens, == for comparison and = to assign a value.
- VB.NET is case-insensitive.
- Type checking is less strict by default. If the default is left in place, It will auto convert type without notifying programmer, for example:
Dim i As Integer = 1
Dim j As String = "1"
If i = j Then
MessageBox.Show("Bad comparison")
End If
It should be noted that changing this default (known as 'Option Strict') is widely considered best practice for VB development.
Other characteristics of C# not applicable to Visual Basic .NET
- By default, numeric operations are not checked. This results in slightly faster code, at the risk that numeric overflows will not be detected. However, the programmer can place arithmetic operations into a checked context to activate overflow checking.
- Addition and string concatenation use the same token, +. Whereas Visual Basic .NET has separate tokens, + for addition, and & for concatenation.
- In Visual Basic .NET property methods may take parameters
- C# is case-sensitive.
- C# does not allow optional parameters (this will be available in C# beginning in version 4.0[2]).
Conclusion
The fight is over and C# won, not that VB.NET isn’t a valid option.
As you can see from my list I think that technical superiority isn’t the reason that C# is winning the race.
It still has my vote for a lot of things. But I don’t expect to be programming in VB.NET a lot in coming jobs.
The folks of ajaxian where so kind to give us some videos with some beginner and advanced Jquery content covering both Jquery and Jquery UI.
These folks have also given us a nice web based editor / IDE a few days back.
Which is something really weird when you think about it.
More Posts
Next page »