-
-
Imagine Cup participants will have a new technology on their hands this year.
"Old" technologies such as .NET Framework 3.0 (WPF, WCF, WF, and InfoCard) are going "mainstream", since cutting edge technologies are hitting the developers arsenal at the dawn of 2007.
We have LINQ - the "SQL for OO". But even that's almost a year old now.
The new kid on the block is MultiPoint (still at Alpha stage, not yet available). It's about how you can use multiple input method on one computer and not getting confuse with it. You can attach three USB mouse and all three functions independently of each other. Channel9 has the video (it's a whopping 200Mb download, contact me if you need it) demonstrating the first CTP of MultiPoint along with several applications that utilizes it.
Now imagine what you can use it for? Schools in Indonesia (and other developing countries) have trouble maintaining a good student to computer ration. My high school have something around 1:40 student-to-PC ratio, which is quite a good ratio for Indonesia. MultiPoint would be able to reduce that ratio with the cost of a mouse (or a monitor if you need better experience). It's like thin client but cheaper.
Now here's another incentive for you to use this technology at Imagine Cup. The best solution that implements MultiPoint will have an internship opportunity at Microsoft Research India, where MultiPoint was conceived. Neat! What're you waiting for? Start imagining now!
-
-
Not quite, said people from Microsoft PAG.
Enterprise Solution Patterns Using Microsoft .NET provided readers with clear, easy to understand evolution of a web architecture. From single, all-in page code (a.k.a. code beside), evolves to MVC, evolves to Page Controller, evolves to Front Controller, evolves to Intercepting Filter. Add Page Cache, and you'll have an almost complete web framework architecture.
Where's your web framework's at?
(I've been using CakePHP for the last two months, and placed that on the state between Front Controller and Intercepting Filter, although from developer POV, it's still mostly at MVC.)
-
-
It is said that great people have great pet projects. Well, I'm not great, and my projects aren't great, too. But that doesn't stop me from creating one.
My newest project is an Event Tracking System, loosely based on my last day job project. I'm going to release it on Microsoft Community License (Ms-CL)1, to encourage good design and coding practices. I'm still looking for a hosting solution and web source control that is free, light, and integrated with Visual Studio (anyone can help?).
This would be my first real project on ASP.NET (I was focused on Windows Forms), so things will be rough at first. But, that was what refactoring for, right? Smoothing out the rough edges without compromising function.
Depending on what kind of events that will happen on early 2007 (maybe a new job? :D), I'm going to have a major milestone every 2 months for the whole 2007. It'll be simple, since I don't want it to become a silver bullet for every web application solution, easy to learn, and fun experience.
[1] Microsoft Community License is a license that is best used for collaborative development projects. http://www.microsoft.com/resources/sharedsource/licensingbasics/communitylicense.mspx.
-
-
Have you ever wondered how big a (compiled) compiler is?
csc.exe --> 70.556 bytes (C#)
jsc.exe --> 40.960 bytes (JavaScript)
vjc.exe --> 13.496 bytes (J#)
And, guess what?
vbc.exe --> 1.157.120 bytes (VB.NET)
VB guys have a lot more! (on compiler size, nothing else)
-
-
OK, this date a year ago, was the first birthday. This date, two years ago, I've started to blog here.
A lot of things happened this year:
I've also spoken in quite a lot of events during 2006; ITB, UI, Microsoft Indonesia, Maranatha, Unpad, and ST Inten. All of them was a fun experience!
Now, what will happen in the third year? For starter, I might change future posts to Bahasa Indonesia. Why? Well, my readers are mostly use English as a secondary language. So things might be harder to understand. Second, I've changed the blog skin since the Marvin is not compatible with CS2.1 (sigh!), I'm still looking for a good skin (the current one is the default skin). Third, as I'm moving towards working in a software industry, you might want to expect more technical things in this blog (as I would've liked to do that earlier).
Happy birthday!
P.S.: Some links above (esp. the ones before migration to CS2.1) refers to the OLD blog. If you had any link errors, please bear with it. I'm currently updating my blog post database (built on OneNote), I'll update this post when everything is done. You can also find the same post on the new blog (this one!), just use the search function.
-
-
I've enjoyed coding with C# for some time now. It's elegant code fills my heart with Christmas jolly every single day. But, then again, nothing compares to VB when you need a very quick code.
C# fails to show it's ease-of-use when hit by several Interface implementations. As most of you know already, 2.0 brings us the great-goodness of Generics. This feature leads to very flexible structure without losing the strong typedness of the code. FYI, Generics is a foundation for from Generic Strategy Pattern to LINQ!
Imagine there's a Generic Interface like this:
interface SomeInterface<T> {
event SomeDelegate<T> ObjectChanged;
}and there's also a Generic Delegate for the above code like this:
delegate SomeDelegate<T>(List<T> e);
When you implement that Interface in a concrete Class, say like this:
class GenericA {}
class GenericB {}
class SomeClass: SomeInterface<GenericA>, SomeInterface<GenericB> {
...
}
You will need to replace the "..." with explicit interface implementation for the event. Each and every implementation will have it's own explicit interface implementation. Compare with VB (which, I would love to write here), like this:
Class SomeClass
Implements SomeInterface(Of GenericA)
Implements SomeInterface(Of GenericB)
Public Event GenericAChanged(e As List(Of GenericA)) Implements SomeInterface(Of GenericB).ObjectChanged
Public Event GenericBChanged(e As List(Of GenericB)) Implements SomeInterface(Of GenericB).ObjectChanged
End Class
No other code necessary! Phew...
-
-
In the near future, Microsoft will release it's set of design tools, dubbed Microsoft Expression Suite. This tool will compete directly with Adobe (and since Macromedia was bought by Adobe, this become a near duopoly).
Pricing for Expression have been revealed (but it's subject to change, as always).
The estimated retail prices for the United States in US dollars are as follows: Expression Studio $599, Expression Web $299, Expression Blend $499, and Expression Media $299.
We'll take a look at the following table for product-price comparison between the two giants:
Purpose | Microsoft | Adobe |
Web Design | Expression Web US$ 299 | Dreamweaver 8 US$ 399 |
Interactive UI | Expression Blend US$ 499 | Flash Professional 8 US$ 699 |
Graphic Design | Expression Design N/A (bundle only) | Fireworks 8 US$ 299 |
Complete Suite | Expression Studio US$599 | Studio 8 US$ 999 |
So? The choice is yours...
-
-
Well, starting Tuesday until this afternoon, PT Gramedia (the largest Indonesian publisher) were doing some Bursa Buku Murah (cheap book market). Sorry for not announcing earlier, since I just knew this morning.
The place was crowded, very crowded, with people and books everywhere. Some books are sold at Rp1000 each, some other Rp5000 each, but most of them are Rp2000 each. Including the Indonesian translation of Step by Step XML from Microsoft Press. I've picked up that book, apart from other gazillion other computer books ranging from old issues of Chip, PCMedia, Windows 95, Frontpage 97, Windows NT Security (WTF?)...
-
-
Microsoft.com gets a facelift today. The new look is more blue than white, and more AJAXy stuff are there. Check it out!
On the other side of the news, Visual Studio SP1 is out. I've seen SP1 for Express, Team Suite, and TFS. But nothing for Standard and Professional edition. Maybe I should use the Team Suite one? Judging from the size, the patch is equal or larger than the original installation, so there should be a lot of improvement, right?
-
-
One of the most widely used pattern in software design is MVC, short from Model-View-Controller. So what kind of thing is it exactly?
MVC is an architectural pattern, defining how the application will take form. This is a higher level of abstraction than design patterns.
MVC separates the codes into Model, View, and Controller (hence the name). Model contains code about a specific object, from data access to domain logic for the specific object. View contains code for presenting or interacting with useres. Controller is the connector between Model and View, processing changes to Model and feed it to the View.
MVC benefits users when they have a medium-sized application requiring high level of customization/maintainability. For smaller, more static applications, it's quite an overkill to separate the objects, although it is always a good practice to do that (remember the chant "low coupling high cohesion"). For larger, enterprisey applications, sometimes the separation to MVC just doesn't scale, especially when there is a business process between models, controllers, or views. Layered architecture is more flexible when it comes to orchestration between a lot of object.
The other problem with MVC is, it's outdated. A lot have happened between the first MVC concept in 1980s. For example, in WinForms, the View and Controller portion is combined in one place. Controller routes user interaction to the Model, and View reacts to changes within the Model using Observer Pattern (a.k.a. Event Handling).
So, MVC is a good starting point to understand how things (should) work between user and the database, but to make it functional and useful, you should add a lot of other things in between.
-
-
Earlier today, I've put up the first article on Vee6.Org, the Indonesian IPv6 Community, thus marking it the launch of the community. The article was about general overview about IPv6, technical and business perspectives, and where the community is going to.
(if you notice that this launch is a day late from the promised, it's because I had a spotty Internet connection yesterday)
Currently, this community is officially open to several specific groups where you can find IPv6 early-adopters. The opening to the public will be on early 2007, hopefully Jan 1. If you're interested in sharing about IPv6 to the Indonesian community, please send it to artikel@vee6.org. We'll publish it as soon as possible. And yes, the author keeps all the copyright.
-
-
Look no further, it's coming to www.vee6.org on 6 December 2006.
All in Bahasa Indonesia if you're curious. We're also starting up a wiki for everyone to contribute early next year (2007), and will start doing real life IPv6 implementation on the second half of 2007. Interested in joining?
-
-
Forbes.com said IPv6 is "... a next-generation Internet Protocol standard ...".
It's cool. But how can we gain expertise towards this brand new topic? Even better, how can expertise in IPv6 become a competitive advantage for Indonesian? I'm dreaming we can export "consultancy" on IPv6 to neighbouring countries and replace export oil revenue.
Is it too good to be true? Stay tuned to www.vee6.org, launching in 6 December 2006!
-
-
It's A Bird!
No, It's A Plane!
No Way, It's... It's Something BIG!
Tune in daily for updates until launch in 06-12-06... http://www.vee6.org
(P.S. it's 6 December 2006, not 12 June 2006, for you Americans!)