För några veckor sedan intervjuade jag Emil Cardell om AngularJS, som är Googles ramverk för att underlätta skrivandet av webbapplikationer. Jag blev väldigt intresserad av att kolla vidare på andra ramverk som också hjälper till för att skapa webbapplikationer, och speciellt Single-page Applications. Till min hjälp för att få en rundvandring mellan ett antal olika har jag i det här avsnittet bjudit in Anders Bratland som min guide.
Vi kommer att diskutera bland annat följande ramverk: KnockoutJS, AngularJS, Breeze, DurandalJS, EmberJS, Hot Towel.
LÄNKAR
Posted at 11.48 in devcast | Permalink | Comments (0)
Det finns stora möjligheter skriva sin app för flera microsoftplattformar eftersom .NET är själva grundplattformen. Det kommer fler och fler appar som utnyttjar detta och på det sättet får en mycket större publik. Vissa av apparna går hela vägen och kommer ut på Windows Phone, Windows 8 och XBox, medan andra väljer två av dem, vanligtvis de två första.
Nedan ser ni ett urval av appar som har gjort detta.
Det finns mycket hjälp för utvecklare att bygga appar som stödjer flera plattformar.
Här är en onlinekurs som går igenom detta: Build Apps for Both Windows 8 and Windows Phone 8 Jump Start
Posted at 08.47 in .NET, Windows 8, WindowsPhone | Permalink | Comments (0)
I think it was three years ago that I last did an interview with Julie Lerman on Entity Framework. At the time, it had just released version 2.0 and started to take up the fight against NHibernate. Now, three years later, I wonder what's happened since then? Does Entity Framework maturity in a good way, or has it been abandoned by Microsoft? The short answer is that Entity Framework is alive and well and that it is now open source.
Links
Posted at 11.49 | Permalink | Comments (0)
Jag har aldrig varit bra på plattformsspel, men har gärna velat skapa ett eget. Tre creativa företag har samverkat för att skapa en mall som gör det möjligt för mig att göra detta, Woot Studio, McFunkypants & PlexiPixel.
Huvudsidan för mallen finns här
Processen är enkel:
Det finns redan färdiga grafiska resurser för oss som inte är så artistiskt grafiska.
Helt plötsligt händer det. En stor gul boll uppenbarar sig på himlen. Människorna börjar söka sig ut, provar försiktig att knäppa upp sina vinterkläder och vända ansiktet emot ljuset. Både människor och natur vaknar så sakta ur sin vinterdvala, ruskar på sig och börjar ta nya tag. Det är vår!
Många av oss som utvecklare blir på våren som flyttfåglar som känner ett inre tryck att att gå vidare, lära sig nya saker, få nya perspektiv, lyfta sin blick förbi skärmens grå-vita ljus. Detta kan exempelvis vara att åka på en konferens eller anta en ny utmaning i en tävling. Här är några förslag ifrån mig.
Konferenser, som presenteras under våren, är många och bra. Här är några av dem som jag har koll på. (Observera att detta är endast en liten del av utbudet.) DevSum 2013, dev:mobile, TechEd Europe 2013 och, kanske kronan på verket, Build 2013. Förutom dessa stora konferenser så blir det vanliga och vanliga med mindre konferenser, eller skall vi säga träffar, såsom hackatons och dylikt.
Det finns naturligtvis andra sätt att få nya perspektiv och lära sig nya saker. Ett sätt som jag själv gillar är att ta sig an en utmaning där man har ett klart mål som man kämpa emot för att uppfylla. Att vara med och vinna i en tävling är ett sådant mål som jag skulle kunna anta.
Dev.Battle är en sådan utmaning som jag verkligen skulle vilja anta, om jag inte var Microsoftanställd. Att skapa några appar och ha stor chans att vinna både en telefon och en platta. Och till dig som tänker, jag är inte intresserad av att skapa appar, säger jag dig att du skall tänka om. Det handlar inte bara om att skapa appar, det handlar om att ta sig an och lära sig nya funktioner i .NET och nya mönster, såsom asynkron programmering, vilket du kan använda dig av i helt andra projekt senare. Det som just är så bra med appar är att de är små projekt som är klart avgränsade vilket gör att man verkligen hinner göra klart det.
Vi ses vid Hornborgasjön, (Live)
Posted at 08.34 | Permalink | Comments (1)
Statistiska centralbyrån, SCB, har samlat väldigt mycket information under en lång tid. Dessa har sedan analyserats och publicerats på olika sätt. Men fram tills nu har det inte varit möjligt att, på ett lätt sätt, hämta deras data för att kunna göra egna analyser på. Men nu har det hänt. Nu har SCB släppt en betaversion av sitt API emot deras statistikdatabas. Jag bara dreglar över hur mycket spännande saker man kan göra med det.
Extra spännande är också att det går att bygga kommersiella tjänster och appar med detta API.
Ja, det får du. SCB:s statistikdatabas är fritt tillgänglig utan avgift och får fritt bearbetas och vidareutnyttjas utan att något särskilt medgivande eller avtal krävs.
Posted at 11.09 | Permalink | Comments (0)
Nothing has changed! Everything has changed!
Microsoft and the open source community has often been seen as cats and dogs, enemies to each other. While it may have been so before, a lot had happened in the past few years. Microsoft has released its own projects, such as F#, Entity Framework, ASP.NET MVC, Web API and Web Pages. However, not only that, Microsoft is also involved in other open source projects, such as JQuery and Node.js, to name a few.
In this podcast, I interview Glenn Block, from Microsoft, about all this and even more things around Microsoft and Open Source. Enjoy!
Posted at 10.27 in devcast | Permalink | Comments (0) | TrackBack (0)
I have thought that in the future to write more posts in English. I know that all my Swedish readers have no problem with it.
Sometimes you want more flexibility to adapt the user interface for the data you download from a Web service. With dynamic loading of XAML one can both send data and a description of how this data should be displayed. With templates, you do not build the user interface and insert the data in the on the server side. One can instead bind the user interface and the data on the client side.
In this article I will show you how to load XAML from a local xml file. (In reality, this xml obviously come from a Web service.) I also want to show you how to get bindings to work to show the data.
The important method to get this to work is called XamlReader.Load, which takes a string of valid XAML code and creates an object structure of it.
With valid XAML code means:
One can make use of well-formed XML to describe XAML. In my example, it means that I create a standard XML document and this creates my XAML.
I would emphasize again that one needs to have the attribute xmlns = http://schemas.microsoft.com/winfx/2006/xaml/presentation in the root element object.
1: <?xml version="1.0" encoding="utf-8" ?>
2: <Border xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
3: ...
4: </Border>
1: <Border xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" Padding="10, 7, 10, 10" BorderBrush="#FF4F6261" BorderThickness="1.5">
2: <StackPanel>
3: <Border Background="#FF070709" CornerRadius="2" BorderThickness="2" BorderBrush="#FF2D3A3A">
4: <TextBlock Text="{Binding Station}" Foreground="#FFFBFDFE" TextWrapping="Wrap" FontWeight="Bold" TextAlignment="Center" />
5: </Border>
6: <ItemsControl ItemsSource="{Binding Items}">
7: <ItemsControl.ItemTemplate>
8: <DataTemplate>
9: <Grid>
10: <Grid.ColumnDefinitions>
11: <ColumnDefinition Width="10"/>
12: <ColumnDefinition Width="*"/>
13: </Grid.ColumnDefinitions>
14: <Rectangle Grid.Column="0" Fill="LightGreen" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="0,13,4,4" />
15: <Border Grid.Column="1" Margin="0,10,0,0">
16: <TextBlock Foreground="#FFD6CB46" FontWeight="Bold" TextAlignment="Left" FontFamily="Segoe WP Bold" Padding="4" FontSize="15">
17: <Run Text="{Binding Next}"/>
18: <LineBreak/>
19: <Run Text="{Binding Later}"/>
20: </TextBlock>
21: </Border>
22: </Grid>
23: </DataTemplate>
24: </ItemsControl.ItemTemplate>
25: </ItemsControl>
26: </StackPanel>
27: </Border>
1: private string loadXamlFromFile()
2: {
3: StreamResourceInfo strm = Application.GetResourceStream(new Uri("xamltemplates/metro.xml", UriKind.Relative));
4:
5: XElement x = XElement.Load(strm.Stream);
6:
7: return x.ToString();
8: }
Reading of the XML file is encapsulated in a method named loadXamlFromFile. It returns string because XmlReader.Load reads a string.
This is done in a simple way. The information consists of two classes, one of the station (StationData) and one for the traffic (TraficInformation).
1: public class StationData
2: {
3: public string Station { get; set; }
4: public ObservableCollection<TraficInformation> Items { get; set; }
5: }
6:
7: public class TraficInformation
8: {
9: public string Next { get; set; }
10: public string Later { get; set; }
11: }
1: StationData vm = new StationData()
2: {
3: Station = "Humlegården",
4: Items = new ObservableCollection<TraficInformation>()
5: {
6: new TraficInformation() { Next = "18 Farsta Strand 1 min", Later="19 Hagsätra 5 min"},
7: new TraficInformation() { Next= "19 Hässelby str.", Later = "18 Vällingby 5 min, 19 Hässelby str. 8 min"}
8: }
9: };
And store it in a variable with the name of vm, for ViewModel.
The app has an event handler registered (commandLoadDynamicUI) for a buttons click event.
1: private void commandLoadDynamicUI_Click(object sender, RoutedEventArgs e)
2: {
3: string metroTemplate = loadXamlFromFile();
4: var metroXaml = XamlReader.Load(metroTemplate);
5:
6: StationData vm = new StationData()
7: {
8: Station = "Humlegården",
9: Items = new ObservableCollection<TraficInformation>()
10: {
11: new TraficInformation() { Next = "18 Farsta Strand 1 min", Later="19 Hagsätra 5 min"},
12: new TraficInformation() { Next= "19 Hässelby str.", Later = "18 Vällingby 5 min, 19 Hässelby str. 8 min"}
13: }
14: };
15:
16: (metroXaml as FrameworkElement).DataContext = vm;
17: gridOfContent.Children.Add(metroXaml as UIElement);
18: }
[3] call the method that loads the XML file and returns a string which is saved into the variable metroTemplate. At row [4] we call XamlReader.Load with that string and we get an Object variable is returned. [6 - 14] is the loading of the data that I described before.
At row [17] I add the XAML object structure, that XamlReader.Load returned, into an existing object tree. I have chosen to use a Grid as this object, but you can use any xaml objects that have a Children property.
Row [16] sets the DataContext for the root element object that was defined in the XML file.
Posted at 07.49 in English, WindowsPhone | Permalink | Comments (0)
Det var endast några veckor sedan som Visual Studio 2012 Update 2 släpptes och redan nu finns en CTP av Update 3. Här går det undan och det visar väldigt konkret hur snabbt nya versionen av Visual Studio släpps. Jag gillar det.
Posted at 07.24 in Visual Studio, VS2012 | Permalink | Comments (0)
Ånyo har jag fått besök i min virtuella studio av Marcus Hammarberg, en av mina open source korrespondenter, för att diskutera ett ramverk som heter Simple.Data. Och frågan är om det räcker med ett sådant ramverk istället för de OR-mappers som har varit populära under de senaste åren, främst NHibernate och Entity Framework.
Posted at 08.04 in devcast | Permalink | Comments (3)
Recent Comments