This repository has been archived by the owner on Jun 2, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
buzz.txt
1380 lines (495 loc) · 93.2 KB
/
buzz.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Spring Java Config is cool. Writing it in Scala makes it sexy!
Moving from Java to Scala sometimes feels scary. To make the transition a little bit easier it might help to keep some of the existing Java frameworks your company have experience in using. At least that is our theory when we chose to keep SpringMVC as web framework in my current Scala project. Time will tell if we are right or wrong in that theory :)
But I did stumble upon a nice little side effect. That Scala could make Spring Java Config go from cool to great.
In this lightning talk I will show how a Spring config could look in Scala, and how we could use Scala's features to create very readable and type safe Spring configuration.
3 Case Studies in NoSQL, Java and the Real World
Not-only-SQL systems can be applied in a large number of problem domains. In general, it's safe to say that NoSQL is a contender against traditional RDBMSs if data storage and retrieval needs aren't transactional. This presentation covers three case studies where traditional RDBMS approaches had been taken, and ultimately abandoned in favor of NoSQL document databases and massive, fast-access storage mechanisms. The presentation covers Java, mongoDB, HBase, GridFS, and HDFS, and provides insights into how each of of the applications were designed, deployed, refactored, and launched in production.
A Deep Dive into Spring's IoC Support, in 2011, and in the Future
The Spring framework has served people well for years, but few have exploited the incredible power of the framework's core IoC support and component model, including the Java-only configuration model, the annotation support, the native support for JSR's 250 and 330, and the incredible AOP and meta-framework support that the other Spring frameworks - Spring Batch, MVC, Integration - etc., all exploit. This talk introduces viewers to the powerful technologies including in the core Spring framework that can be used to meet any challenge - from component-level use cases to low-level framework-building scenarios.
AST Transformations
AST Transformations are how many language features are implemented, and is the magic behind frameworks like Lombok, Groovy, Mirah, IDEA Inspections, CodeNarc, Spock, and Groovy++. This session reviews these approaches including examples of how and why we'd want to do this. Come see the newest language tools, look in-depth at production deployed AST Transforms, and view libraries based on these techniques.
Above the Clouds: Introducing Akka
We believe that one should never have to choose between productivity and scalability, which has been the case with traditional approaches to concurrency and distribution. The cause of that has been the wrong tools and the wrong layer of abstraction — and Akka is here to change that. Akka is using the Actors together with Software Transactional Memory (STM) to create a unified runtime and programming model for scaling both UP (utilizing multi-core processors) and OUT (utilizing the grid/cloud). Akka provides location and network transparency by abstracting away both these tangents of scalability by turning them into an operations and configuration task. This gives the Akka runtime freedom to do adaptive automatic load-balancing, cluster rebalancing, replication and partitioning. In this talk you will learn what Akka is and how it can be used to solve hard scalability problems. Akka is available at http://akka.io (under Apache 2 license).
Addicted to Scala
You don't yet speak Scala? Then let us invite you to a journey on which we will explore the outstanding features of this programming language for the Java Virtual Machine. As an intoduction we will breifly talk about Scala's key characteristics. The following live coding demo will illustrate the aforementioned and unveil the addictive nature of Scala. As a finalizer we will outline the future directions.
Android eller iOs? Hva skal jeg velge?
Android eller iOs? En informert fremstilling av forskjeller og likheter mellom disse to plattformene. Hva passer deg best som sluttbruker? Hvilken plattform bør man utvikle for? Sesjonen vil være aktuell både for sluttbrukere og for utviklere.
Android for baksideutviklere
Veien til mobilutvikling kan virke kort for Java "EE" utviklere. Java er jo bare Java, right?
Når man kommer i gang, finner man fort ut at ting er snudd på hodet. Klienten betaler for datatrafikken, man har ikke ubegrenset med strøm og lagringsplass er blitt en begrenset ressurs.
I denne lyntalen ønsker jeg å dele mine erfaringer med andre serversideutviklere som ønsker å komme i gang med Android. Fokuset vil være på de utfordringene kan vil støte på når man går inn i mobilutvikling med mest server-side erfaring.
Arkitektur på vondt og godt - og et kritisk blikk på DIFIs arkitekturprinsipper
Arkitektur kan gjøre mer skade enn nytte, på tross av arkitektenes gode intensjoner. I etterpåklokskapens tildels pinlig klare lys presenteres arkitekturerfaringer fra over ti år med Java-prosjekter, og trekker slutninger om hva som har fungert eller vært en fiasko. Med dette som bakteppe ser vi med kritisk blikk på DIFIs arkitekturprinsipper som statlige virksomheter skal følge, og vurderer om dette er arkitektur på vondt eller godt. Ikke minst ser vi på hvilke prinsipper som glimrer med sitt fravær.
Automated Android testing using Jenkins CI
A hands-on introduction to automated Android application testing using Jenkins CI.
During this lightning talk we will create Android application and test projects and setup Jenkins to run continuous integration tests automatically from a code repository.
The tests can run on either a physically connected device or an emulator, enabling a real-life scenario for the tests.
Bakoverkompatibilitet på databasenivå
Hva gjør man når det er over 20 systemer som er direkte integrert på databasenivå og man ønsker å endre datamodellen? Dette er ikke et umulig problem, løsningen er å gjøre endringen bakoverkompatibel!
Vi ser på én mulig løsning: Bruk av view og "instead of"-triggere.
Beheading the Software Beast
For any code base there comes a time when you want to change it. But if you just steam ahead making changes that break the code and then fixing errors, a common situation is that every fix or change creates several more errors. It feels as if you have picked a fight with a beast, the Software Hydra - for every scary head you cut of, two more grows out!
Instead, come learn The Mikado Method (http://mikadomethod.wordpress.com), a systematic approach to beat the Hydra and change the code in a safe way. The method helps you visualize, prepare and perform business-value-focused changes while delivering continuously, and without having a broken code-base in the process. It enhances team communication, collaboration and learning, and helps individuals stay on track.
Breaking the [Amdahl's] law! Effective use of the fork-join framework in Java SE 7
The reality of today's chip architectures s that rather than seeing ever increasing clock speeds we now see ever increasing core counts. This has a significant impact on how we write efficient code since we now need to design for parallel operations to get the best from our hardware. Concurrent programming is hard to get right, especially when faced with early Java support in the form of the sleep, interrupt, wait and notify methods along with synchronised blocks and methods with a single monitor per object. Java SE 5 started the process of enhancing Java's support for parallel programming with the concurrency APIs. Java SE 7 includes the latest revisions to this in the form of the fork-join framework (also known as JSR-166y).
This session will look at how the fork-join framework can greatly simplify the code required to process a set of tasks that can be distributed among a number of parallel processing units. We'll look at some good examples for effective use of the framework as well as one that is not suited and provide some hints on what to do in this case.
Bruk Object Mother og Builder for å forenkle testene dine
Å skrive tester har blitt nesten like viktig som å skrive selve produksjonskoden. Etter hvert som systemene blir større er det en tendens til at det blir mer og mer komplisert å skrive tester for koden. For å kunne teste spesifikke deler av koden så må systemet ofte settes i en riktig tilstand, og dette kan kreve mye “boiler-plate”-kode i testene.
Jeg vil i denne lyntalen gå igjennom to patterns som jeg bruker for å forenkle måten vi skriver tester på, mer spesifikt hvordan vi oppretter domene-objekter. Disse er Object Mother og Builder. Ved å bruke disse får du økt gjenbruk, mindre testklasser, det blir enklere å gjøre endringer i koden og du får enhetlige testdata i testene dine.
Building for the Cloud
Netflix has moved its production services from being completely datacenter-based, to being primarily cloud-based in a little over a year. This talk will briefly explain why we did it and why we chose Amazon's AWS. The talk will then delve into the evolution of our build and deployment architecture, starting with how our orignal monolithic DC-based SQL-tied webapp was built and deployed, and then detailing the evolution of our continuous integration systems which helped prepare us for the cloud move. And finally, it will cover our current full build pipeline and deployment system which keeps us agile in the cloud now by providing quick turnaround, and rapid roll-out and recovery.
Bytecode for discriminating developers
If you never goofed around with assembler or machine code Java bytecode can seem an obscure piece of low-level magic. But sometimes things go really wrong and understanding that bit may be what stands between you and solving the problem at hand. Looking to deepen you Java programming skills? Understanding bytecodes is necessary to solve performance issues, some classloading issues and to generate code at runtime. And some things you can do are just plain freakin' cool. This talk will introduce you the JVM and bytecode basics using live coding examples. It's my hope that you'll walk out armed for the next battle with low-level issues. From the basics, to more advanced gotchas:
* How to obtain the bytecode listings
* How to read the bytecode
* How the language constructs are mirrored by the compiler: local variables, method calls, optimizations, autoboxing, exception handling, etc
* insight to some bytecode manipulation libraries (ASM, Javassist)
Caching abstraction in Spring 3.1
Quick overview of the new caching abstraction added in Spring 3.1
Cascading through Hadoop: A DSL for Simpler MapReduce
Hadoop is a MapReduce framework that has literally sprung into the vernacular of "big data" developers everywhere. But coding to the raw Hadoop APIs can be a real chore. Data analysts can express what they want in more English-like vocabularies, but it seems the Hadoop APIs require us to be the translator to a less comprehensible functional and data-centric DSL.
The Cascading framework gives developers a convenient higher level abstraction for querying and scheduling complex jobs on a Hadoop cluster. Programmers can think more holistically about the questions being asked of the data and the flow that such data will take without concern for the minutia.
We'll explore how to set up, code to, and leverage the Cascading API on top of a Hadoop cluster for a more effective way to code MapReduce applications all while being able to think in a more natural (less than fully MapReduce) way.
During this presentation, we'll also explore Cascading's Clojure-based derivative, Cascalog, and how functional programming paradigms and language syntax are emerging as the next important step in big-data thinking and processing.
Clojure - JVM språket som er "multi-core ready"
Denne presentasjonen vil gi deg innsikt i hvordan Clojure som programmeringsspråk håndterer tilstand. Dette gjøres på en helt annnen måte enn hva vi er vant til fra objektorienterte språk. Ved å utvikle programmer på denne måten blir samtidighet og parallellitet mindre problematisk.
Presentasjonen vil introdusere Clojure som språk. I tillegg vil vil det tydelig defineres Clojures syn på verdier, tilstand, identitet og tid. Clojure's innebygde typer og datastrukturer gjør det mulig å se verden på en enklere og bedre måte.
Close that queue-connection!
Programming mistakes never make it past code reviews, extensive testing and continous integration, right? Unfortunately not. Programming mistakes go live and cause downtime. So, what are the typical mistakes that sneak past testing, and end up frustrating both customers and operation crews? In my experience, poor connection handling when dealing with queues and topics are overrepresented. In this lightning talk I focus on a few situations where connection mistakes lead to serious incidents. I also briefly go through the Spring JMS Template. This framework is a good starting point for making sure your application isn't too greedy with the connections.
Code Entropy and Physics of Software
Ved å studere hvordan en kodebase endrer seg over tid kan man observere hvordan svake og sterke krefter beveger koden i bestemte retninger. Det er særlig summen av de små endringene som er interessante. Vi har studert et par kjente open-source prosjekter for å identifisere noen av de rådende kreftene. I denne sesjonen vil vi først introdusere konseptet "code entropy" for så å vurdere og diskutere tilstanden til sammenlignbare kodesnutter.
Code Reviews - One Thing Every Programmer Should Know
You should do code reviews. Why? Because they increase code quality and reduce defect rate. But not necessarily for the reasons you might think.
Code Templates - The unknown superhero
IIn my experience many java-developers is not aware of the many features included in their IDE. Code templates are one such undiscovered feature. In this talk I will demonstrate how code templates can be used. I will code a real life example and use code templates both to generate code for test code and production code.
The demonstration will be performed in Eclipse, but I will also describe how the same features can be used in other IDEs - such as Intelij.
After attending the talk you will have learned how you can use existing code templates in your IDE and how you can create your own.
CoffeeScript: JavaScript without the Fail
JavaScript. Love it or hate it, in the web development world it's impossible to avoid it. It was designed in one week by one man at Netscape, just to keep the browser from standardising on something even worse -- and it shows. Oh, it's not all bad, but the Good Parts -- which actually make up a pretty neat language -- are well hidden in among all the Bad Parts, which are there to make you, the JavaScript developer, suffer.
CoffeeScript is a language designed to take the Good Parts out of JavaScript and make a new, concise and beautiful language out of them. It runs anywhere JavaScript does -- in fact, it compiles to fairly readable JavaScript -- so you can already use it in your web applications and wherever else you've been stuck with JavaScript. In this talk, you'll learn what CoffeeScript looks like, how it relates to the JavaScript you know, and what new features it has to offer. In fact, if you already know JavaScript well, you'll probably be perfectly fluent in CoffeeScript after this -- it's that easy. And trust me, your life will be so much better for it.
Comparing Asynchronous Web Techniques
The world is all about the asynchronous web these days. There are an increasing number of options for Java developers. In this presentation we'll cover 3 such options: comet, servlet 3, and websockets. We'll look at code and discuss pros and cons of each approach. We'll also cover any updates that come with Servlet 3.1 (which will likely still be a work in progress.) We'll look briefly at possible mitigation approaches when you find yourself bound to a particular approach. This session assumes at least a passing familiarity with the concepts as there won't be too much time to deep dive into each approach.
Complexity Theory and Software Development
Some systems are too large to be understood entirely by any one human mind. They are composed of a diverse array of individual components capable of interacting with each other and adapting to a changing environment. As systems, they produce behavior that differs in kind from the behavior of their components. Complexity Theory is an emerging discipline that seeks to describe such phenomena previously encountered in biology, sociology, economics, and other disciplines.
Beyond new ways of looking at ant colonies, fashion trends, and national economies, complexity theory promises powerful insights to software development. The Internet—perhaps the most valuable piece of computing infrastructure of the present day—may fit the description of a complex system. Large corporate organizations in which developers are employed have complex characteristics. In this session, we'll explore what makes a complex system, what advantages complexity has to offer us, and how to harness these in the systems we build.
Context awareness with Android
Context aware applications allow simpler user interaction by automatically adapting to the user's current situation. Simple user interaction is very important for smart phone applications, since they are used on small screens by people on the run.
The Android SDK includes a rich java API for using GPS, motion sensors etc.
How can this be used to create context aware mobile front ends to modern information system architecture?
This presentation gives an introduction to the Android programming model with emphasis on APIs for allowing context awareness and commutation with the web.
Continous delivery
Continous delivery best practices
Cool Code
In most disciplines built on skill and knowledge, from art to architecture, from creative writing to structural engineering, there is a strong emphasis on studying existing work. Exemplary pieces from past and present are examined and discussed in order to provoke thinking and learn techniques for the present and the future. Although programming is a discipline with a very large canon of existing work to draw from, the only code most programmers read is the code they maintain. They rarely look outside the code directly affecting their work. This talk examines some examples of code that are interesting because of historical significance, profound concepts, impressive technique, exemplary style or just sheer geekiness.
Cucumber now with JVM improvements
Cucumber-jvm is a rewrite of the JVM support. It is now written in a native Java-API, which compiles down to fast JVM bytecode. It enables many JVM capabilities and makes it even easier to integrate with your Java applications.
Deklarativ konfigurasjonsstyring med Puppet
Det er mye buzz rundt konfigurasjonsstyring i DevOps-sfæren. Puppet er fri programvare for å deklarativt styre konfigurasjon av servere, miljøer og infrastruktur. Vi går gjennom sentrale konsepter, Puppets arkitektur, infrastruktur som kode, automatisere oppsett og reproduserbar konfigurasjon av servere og applikasjoner, forbedret feilsøking og reduksjon av feilkilder; og ikke minst hvordan reproduserbar konfigurasjon av infrastruktur kan føre til mer effektiv styring. Etter foredraget vil du forhåpentligvis ha grunnlag nok til å starte prosessen for implementasjon konfigurasjonsstyring på ditt prosjekt. Foredraget er generelt og baserer seg på konkrete erfaringer fra bruk i store bedrifter og åpne nettløsninger.
Dependency Injection Options in Scala
This session will explore the dependency injection options available to developers using Scala. It will cover several options including Java frameworks like Spring and Guice, and Scala language approaches such as the Cake pattern.
Along the way, the pros and cons of each option will be discussed, for example Guice provides a nice binding DSL, but also relies on annotations and factories, leaving a non-Scala taste in your mouth when using it. Meanwhile the Cake pattern is all Scala, but self types can be confusing for people new to Scala, as can any kind of guidance for binding injections to variables.
The culmination of the talk will focus on a new open source library for dependency injection which has been developed for Scala in a real world application setting, based on picking the best of the Java and Scala approaches.
The talk will be technical in nature, with plenty of code examples and a cookbook of recipes for different dependency injection usages.
Dependency injection when you only have one dependency
If you're like most projects these days, you probably use Spring, Guice or another dependency framework. But how many dependencies do you really have? By exploiting the fact that you probably only have a very few number of real dependencies in your project, you can greatly simplify your application.
Deploying Apps on Heroku
Heroku provides a Cloud Application Platform where app deployment is just a "git push" away. Through code and demos you will learn how to deploy apps on Heroku, scale them, and manage them.
Derfor er GUI-design en lagøvelse
Brukervennlighetserfaringer fra et smidig prosjekt:
Hva gjør man når brukergrensesnittet ikke forankres godt nok, det er for mange uavklarte detaljer, fremdriften er for lav og kvaliteten for dårlig?
Til tross for gode hensikter ble ikke designet av UI godt nok forankret hos prosjektdeltakerne. Det dukket opp for mange endringer i løpet av hver enkelt sprint som resulterte i lav utviklingsfart og mye frustrasjon blant utviklerne.
Konsekvensen var at vi etablerte en åpen og mer formell GUI prosess. Vi inkludert et bredere spekter av prosjektdeltakerne og oppmuntret dem til å tegne, skisse, diskutere og kritisere ulike løsninger for brukergrensesnittet.
Ved å gjøre det på denne måten distribuerer vi bedre eierskap og engasjement til skjermbildedesignet, og brukergrensesnittet blir både bedre forankret og spesifisert. Målet er å redusere frustrasjon blant designere (for ikke å vite hvilke behov som faktisk gjelder) blant utviklerne (for ikke å vite hva de skal utvikle), og blant prosjektledere, produkteiere etc. på grunn av dårlig fremdrift og lav kvalitet.
Do I still hate SOA?
At JavaZone 2005, I gave a talk with the title "Why I hate SOA". In the talk, I outlined several weaknesses with the then much-hyped term Service Oriented Architecture. Six years have passed, and I have learned much. The question is: Has SOA learned the same things?
In this talk, I will outline the real value proposition of Service Oriented Architecture: That of focusing on the services your business provides, both to human and computer users. By focusing on the business services, small, feature-oriented teams can deliver value. The thinking and tools of SOA can be used to serve the customers of the business or they can distract a project for its real goals.
I will examine three shortcomings in many approaches to SOA: The focus on tools, the focus on reuse, and the use of SOA as an application architecture. Tools, reuse and application architecture have their place, but once they take the driver seat instead of delivering services to the user of the business, things can go wrong.
The integration tools of SOA, when applied wrong, conceal the reality of most projects: 90% of integration problems can only be solved by people talking together. The reuse vision of SOA, when applied wrong, conceal the reality of most projects: Reuse is a most often trap, not an opportunity. Using SOA as an application architecture conceal the reality of most projects: Organizing developers as mindless cogs will force them to behave mindlessly.
The talk will be filled with real world examples.
Do distribute! Fallacies of Distributed Computing meets the Cloud...
In 1994 Peter Deutsch (Sun Microsystems) published the first 7 Fallacies of Distributed Computing. In 2009 Tim Bray published a discussion about how these fallacies apply to the Web. In this talk, I'll attempt to continue this discussion in terms of Cloud Computing, recently made relevant by the long Amazon AWS failure. The talk will also provide example Cloud architectures (exemplified by a set of AWS services) to discuss the different fallacies so the audience will know how to build resilient systems.
Domain Driven Security Code Kata
Since 2004 Injection Flaws and Cross-Site Scripting (XSS) has topped the OWASP Top Ten of most harmful vulnerabilities. Time to do something about it. In this code kata we address both Injection Flaw as well as XSS by applying techniques from Domain Driven Design - thus Domain Driven Security. In specific we use DDD context mapping to understand what the problem really is and DDD value objects to shape up our module APIs to make these vulnerabilities go away by enforcing indata validation and outdata encoding in a way that feels natural for the developers.
Er Apache Camel riktig valg for deg? Lytt til erfarne Camel spotters.
I fjor høst bestemte vi oss etter mye vurdering å bruke apache camel i noen av våre (nye) produkter. Vi vil gjerne fortelle litt om hvorfor, hvordan og ikke minst hva vi har lært av å implementere reelle systemer med camel.
Camel er et integrasjonsrammeverk basert på enterprise integration patterns. Camel har en java DSL og en enkel spring integrasjon. Camel gir svært mye kraft i lite kode, det gjør det lett å implementere enkle og kompliserte integrasjonsløsninger, men det gjør det også lett å gjøre betydelige feil som kan koste deg dyrt. Hva skjer når du skal angripe reelle problemer som ikke passer like godt med mikkemuseksemplene i camel tutorials, eller når du trenger ekte infrastruktur og ikke tåler at data mistes ved en strømstans? Hva med transaksjoner, asynkronitet og tråder, ytelse og minnebruk?
Vi vil bruke en problemløsende fremgangsmåte med delvis live koding for å presentere integrasjonsrammeverket Camel brukt i reelle problemstillinger, samt gi en inføring i enterprise utvikling og integrasjon. Presentasjonen bygges naturlig opp gjennom å utvikle et konkret eksempelsystem hvor vi starter enkelt og gradvis kommer innom flere vanskelige problemer underveis.
Erfaringer med Scala i en Java-stack
Vi i Basefarm startet i 2010 å utvikle vårt nye fagsystem. Etter å ha vurdert flere programmeringsspråk falt valget på Scala. Vi valgte Scala blant annet fordi Scala er typesikkert og vi må skrive mye mindre boilerplate-kode enn i Java, samtidig som man kan dra nytte av de tallrike og velutprøvde Java-bibliotekene som allerede finnes.
Av rammeverk endte vi opp med Hibernate, Spring og Spring MVC, som alle Java-programmerere er kjent med. I tillegg bruker vi Akka, som er et Scala-bibliotek som hjelper oss å håndtere concurrency, bl.a. ved hjelp av actors. Vi fant raskt ut at selv om det fungerer bra å bruke Java-rammeverkene fra Scala, så kan det oppleves som en skikkelig kulturkrasj fordi Scala gjerne lener seg mer mot funksjonell programmering enn Java.
I dette foredraget får du et innblikk i hvordan det fungerer å bruke Scala og Java sammen, hvilke fordeler det gir oss å bruke Scala, hvilke hindre vi har møtt på og hva vi ville gjort annerledes dersom vi skulle gjort dette om igjen.
Extreme Cleverness: Functional Data Structures in Scala
This talk will cover the theory and implementation of 6 unique functional data structures in Scala. We'll start out with the concept of functional persistence and then dive right into actual data structures. Each data structure will be motivated and built up by the associated theory and ideas. All of these will be illustrated (with requisite colorful diagrams) and implemented with the necessary trappings to be a first-class Scala Collection. Finally, we'll look at some of the real-world constraints imposed by hardware architecture and the JVM itself, touching on how these constraints affect data structure design in ways that the theory doesn't show.
Extreme Performance Testing
XP developers follow a certain way of life. Take something good and turn it up to the extreme. Extreme Performance Testing is born out of ten years experience working with XP, with the goal of further integrating performance testing into a normal XP development process. No longer will you need to treat performance testing as just another stage towards production. Taking performance testing to the extreme is often viewed as difficult requiring special skills, extra resources, and much more time.
In this talk, we'll look at Extreme Performance Testing's key practices, effectively translating the agile values and principles into a different set of practices. We'll look at real world examples that demonstrate these practices in action, understanding their positive impact on projects. We'll also explore the prerequisites for making Extreme Performance Testing most effective, and the reinforcing practices that amplify their positive effects.
You'll come away from this talk with concrete advice on how to better integrate performance testing into classic agile methods and how to apply Extreme Performance Testing to your projects.
Facts and speculation about noSQL
The “no-SQL” movement seems to be growing in popularity worldwide; especially as cloud computing is becoming more widespread. It seems that many developers believe we are facing a paradigm change in respect to how we store the information from our applications. But it is quite clear that the opportunities and consequences are not quite clear for everyone as this topic is becoming more hyped up. So what is the deal about “no-SQL”?
First of all, we need to understand what a database is, and what kind of services the database provides us with. Also we need to apply lessons from history to many of the claims regarding non-SQL databases such as; you don’t need a schema when you’re not using SQL. But is this true?
In this short presentation we will analyze what a database actually is and put this up towards various claims, facts and speculation surrounding the SQL/no-SQL debate
Forbedre brukeropplevelsen ved hjelp av sensorlyttere
Vi forventer i dag å få servert enkle og intuitive brukergrensesnitt. I løpet av de siste årene er dette ofte realisert ved å ta bruk av touch-teknologi. Ved å innlemme fysisk sensorlyttere, er det mulig å introdusere ny intuitiv atferd for å forbedre brukeropplevelsen enda mer. Androidtjenester gjør det svært enkelt å legge til denne funksjonaliteten. Denne talen er en introduksjon til Androids sensortjenester og hvordan man, ved å ta i bruk dette enkle verktøyet, kan berike brukeropplevelsen.
Fra 1 uke til 16 timer: Ytelsesforbedringer med Spring Batch
I forbindelse med pensjonsreformen har Statens pensjonskasse (SPK) skrevet om batchen som reberegner alle ytelser i forbindelse med regulering av folketrygdens grunnbeløp. Den tidligere batchen var skrevet i C og brukte en uke på kjøringen. I denne presentasjonen vil jeg vise hvordan den nye versjonen skrevet med java og med Spring Batch gjør beregningen på godt under et døgn. I tillegg til Spring Batch står Hibernate og Jdbc sentralt i batchen, noe som fører til en del utfordringer. I jakten på bedre ytelse stod vi stadig fast i problemer knyttet til for eksempel deadlocks og retries, hibernate og misforstått feilhåndtering. Presentasjonen fokuserer først og fremst på endringene som ble gjort på javasiden, men vil også nevne endringer gjort på databasesiden for å bedre ytelsen.
Functional Thinking
Learning the syntax of a new language is easy, but learning to think under a different paradigm is hard. This session helps you transition from a Java writing imperative programmer to a functional programmer, using Java, Clojure and Scala for examples. This session takes common topics from imperative languages and looks at alternative ways of solving those problems in functional languages. As a Java developer, you know how to achieve code-reuse via mechanisms like inheritance and polymorphism. Code reuse is possible in functional languages as well, using high-order functions, composition, and multi-methods. I take a variety of common practices in OOP languages and show the corresponding mechanisms in functional languages. Expect your mind to be bent, but you’ll leave with a much better understanding of both the syntax and semantics of functional languages.
Fungerer IPv6 og Java?
IPv4 er på overtid, og IPv6 kommer for fullt. Den 8. juni 2011 hadde Google, Facebook og en rekke andre store internettaktører en 24-timers testflight på IPv6, og det er all grunn til å tro at også Javaprogrammerere vil komme til å få stadig mer kontakt med IPv6 i hverdagen.
Java skal i prinsippet støtte IPv6, men etter å ha jobbet på et prosjekt hvor det var et krav at IPv6 skulle støttes, så jeg at det ikke alltid stemmer. Enhver som antar at "it just works", vil fort kunne få en overraskelse.
Jeg vil presentere hva jeg lærte.
Git deploy!
Git er etterhvert et kjent og kjært versjonskontrollsystem for mange, men mulighetene med Git er mange.
Vi har tatt i bruk Git som repository for distribusjon av artefakter til en JBoss ESB server.
Aldri mer overføring til FTP-servere, utpakking og konfigurasjon på andre siden som feiler, osv. - bare push og pull!
Dette lar oss blant annet enkelt skille mellom release og distribusjon av endringer på ene siden og
aktivering av disse på den andre, ved hjelp av spesialtilpassede server-scripts. Samtidig kan
driftsansvarlige lett rulle tilbake til tidligere versjoner ved behov, da all historikk ligger lokalt.
Goal-directed web applications with Scala
Prototypical applications found in industry today are heavily orientated toward solving the relevant problem, with a UI that is designed for simply satisfying input to the domain objects; resulting in UIs that often leave the user with little specific information on what the primary intent of the display is.
Goal-directed design however can greatly assist in these scenarios by placing the user experience in a central place during the inception of any given system. Goal-directed design is orientated toward capturing user intention and sending messages (or commands) back to the server, rather than mutated transformation objects (DTOs) that are simply persisted by the system, with little appreciation for what specifically changed or what the user was achieving.
This notion of sending messages has a strong synergy with actor based messaging. This session shows you how to model goal direction and task definition as small, manageable chunks of application functionality which are both far easier to reason about and far more convenient to scale compared to the mass of plumbing found in many enterprise applications.
Groovy.DSLs(from: beginner, to: expert)
There have been many attempts to create languages which allow us to express our problems in higher-level languages: from COBOL to Object-Oriented languages, from Logic processing languages and SQL to rules engines. All have taken us forward in leaps and bounds but have failed to get very close to the language of the subject matter expert. This talk looks mostly at Groovy's features to see how far we have come with a general purpose programming language for writing DSLs.
HTML 5 Fact and Fiction
For the last few years, the web has been all a-twitter about web 2.0 (and even the occasional reference to web 3.0.) Yes, the days of static web applications are officially over and while libraries like jQuery and Prototype make it easier to build modern applications, ultimately they are papering over issues in the web standards (and the browsers that implement them.) Today we're building to standards that are from the paleolithic era of web design but that's changing - and HTML 5 is a large part of that. In this talk, we'll discus just what HTML 5 is and why it matters. We'll show how you can build to HTML 5 today and which browsers support what. Thankfully, after many years of stagnation, the future of web applications looks bright!
HTML5 an introduction - What can HTML5 be used for and how HTML5 can solve real problems.
HTML5 are here with a big bunch of sister and brother specifications and a lot of these can be used already today. A lot of these specifications will also change a lot of the way we design our web solutions and it does also open completely new doors for web development and how we do architecture.
The attendee will be take on a tour trough the history of HTML5, the HTML5 specification and its sister and brother specifications.
Hacking - in the real world
Hackers can pose a serious threat to businesses if the threats they pose are left unhandled. We will show a scenario where a malicious hacker attacks a website and how he leverages the advanced techniques available to him in order to get what he wants while remaining undetected. We will explore what an attack may consist of and look at the different stages of a given targeted attack. The purpose of this presentation is to give the audience insight into the parts that make up an attack on a website.
Hibernate should be to programmers what cake mixes are to bakers: beneath their dignity.
Cake mixes consist of a mix of things you already have in your cupboard plus a load of unnecessary, potentially harmful preservatives. They cost more than making cake from scratch, the resulting cake tastes worse, they take away people's confidence in their ability to make their own cakes, and they don't even save you any time. Hibernate has the same misperceived benefits and the same draw-backs.
Gordon Ramsay wouldn't be caught dead using any cake mix. As professional programmers, we should be more sceptical of generic frameworks like hibernate.
High Five Driven Development!
Lyst til at jobben skal være en lek? Dårlig motivasjon på jobben? Lyntalen kommer til å kort gå inn på hva High Five Driven Development er og hvordan den utføres, samt andre enkle metoder for å øke motivasjonen på jobb. Dette er enkel coaching for ikke-coachere.
High Wizardry in the Land of Scala
Scala is an intensely powerful language. One of the most obvious ways in which this manifests is the syntax, which is wonderfully amenable to internal DSLs and flexible APIs (not to mention endless reams of obfuscated sources and fanciful operators). However, despite the superficial flash of Scala’s syntactic skin, its true power lies in the type system and in the language’s deep semantic constructs.
This talk will dive into some of the more remote regions of the kingdom of Scala. Specifically, we will cover the following topics:
Higher-Kinds (what they are and how they can be applied)
Type-Level Encodings (really exploiting Scala’s type system)
Typeclasses (just like Haskell...except not)
Delimited Continuations (and you thought kinds were confusing!)
Please note that this is an advanced talk targeted at the Scala practitioner who is already fairly comfortable with the language. With that said, we hope the talk will remain reasonably accessible to the Scala beginner – so long as they don’t object to the presentation of odd and esoteric language features with disturbing enthusiasm.
How Java will not die
In the context of a number of high profile additions to the choices of programming language in the developers arsenal, some recent surveys have seen the Java language's lead over other languages erode in recent years. In addition, the days of the rapid buildout of the platform APIs is over.
How will Java avoid the fate of becoming the Cobol of the 20-teens ? What trends in hardware and systems technology is being factored into the ongoing evolution of the Java platform to stave off its untimely death ?
What are the key technologies that are going to keep Java at the top of the heap for the next 25 years ?
In this session, we will take a look at the major trends in application and systems development, such as multiple languages, parallel programming, application frameworks, and see successfully Java is staying ahead of the curve.
How to make your own nosql cloud
Whether it's HBase, Cassandra or one of the many others, you've probably already hears about NoSQL. Perhaps you've wanted to try it out, but don't have the infrastructure or expertise to setup an elaborate clustered environment.
During this talk, you'll see how to make your own NoSQL platform using infrastructure clouds such as Amazon EC2 or GoGrid. We'll demonstrate how you can use Whirr to start up your own configurable cluster with just a couple of commands, and how you can integrate this into your automation for to achieve, for example, continuous testing flows.
We'll also show how Whirr uses jclouds for node management, and how you can easily add additional services using the underlying jclouds ComputeService interface.
Hva alle utviklere må vite om tegnsettenkoding
Tegnsettenkoding er noe du finner i alle lag av enhver applikasjon. Har du strenger, så har du enkoding. Hvis du ikke har kontroll på enkoding vil du ofte ende opp med rare tegn på websiden, databasen vil ikke sortere norske tegn rett, og du ender av og til opp med filer med en god blanding av enkodinger som føles umulig å nøste opp i uten å fikse alle de rare tegnene manuelt.
Etter denne lyntalen skal du ha en god forståelse av tegnsettenkoding, slik at du ikke må strø "charset=utf-8" tilsynelatende tilfeldig utover kodebasen din i håp om å få rett sluttresultat.
Hva skal bli mitt neste programmeringsspråk?
Leter du etter et nytt programmeringspråk, men vet ikke helt hva du skal velge? Da er dette lyntalen for deg! I denne lyntalen vil jeg presentere det jeg mener er de viktigste kriteriene for å velge sitt neste språk. Overraskende nok er det ikke nødvendigvis Scala!
Hvis du ikke leverer kontinuerlig, så er du ikke smidig!
Manifestet for smidig programvareutvikling sitt første prinsipp sier at; det å levere programvare av verdi kontinuerlig, er vår høyeste prioritet. Dette er ofte lettere sagt enn gjort, fordi det forutsetter masse hard jobbing med å komme frem til en infrastruktur og en prosess som støtter en rask flyt fra idé til produksjon.
Jeg vil gi et innblikk i hvordan teamet som utvikler Digipost gradvis har utviklet evnen til å kontinuerlig levere programvare av høy kvalitet til produksjon når vi vil, og ekstremt raskt. Du vil også få vite hvilke fordeler dette gir, utover rask ledetid fra idé til produksjon, og hvorfor det er smidigere. Det er ganske sikkert flere grunner enn du tror.
Hvordan bruke @Rules til å forbedre din teststrategi
Sliter dere med å få rask feedback fra tester ? Har dere prøvd å kategorisere tester men endt opp med å flytte de vekk fra kildekoden de hører sammen med ?
Rune vil med denne lyntalen bringe fokus på en ny funksjonalitet i Junit som gjør deg i stand til med enkle grep å kategorisere dine tester uten at det går på bekostning av ansvarsflytting, oppdeling av prosjekter eller massiv konfigurasjon i byggeskript
Hvordan gjøre alle fornøyd? Lever kvalitet til alle.
Systemutviklingsprosjekter har tradisjonelt vært flinke til å fokusere på, og levere, kvalitet til sluttbrukeren. De siste årene er det i tillegg blitt et økt fokus på hva driftspersonell ønsker fra et system. Men sluttbrukere og driftere er ikke de eneste interessentene som har en oppfatning av hva kvalitet er. Det finnes overraskende mange interessenter i et systemutviklingsprosjekt og de har alle hver sin oppfatning av kvalitet. Hvordan kan man sikre at du selv, alle interessenter og organisasjonen som helhet blir fornøyd med det du har vært med på å lage?
Hvordan mislykkes med Drools
Vi innførte Drools for å erstatte en "hjemmesnekret" regelmotor.
Motivasjonen for å ta i bruk en regelmotor var time2marked, gjøre det enklere å skrive forretningslogikk, erstatte
hjemmelaget med kommersiell tredjeparts-kode, og et ønske om å kunne bruke reglene på tvers av produktsystemene.
I dette lynforedraget går jeg igjennom våre erfaringer med
innføring av Drools i et prosjekt. Jeg snakker også om hvorfor vi
til slutt valgte å gå helt bort ifra regelmotorer og hva vi gjør nå.
Hvordan programmere som en Mann
Feigheten rår.
Allment adopterte konvensjoner for hvordan vi skriver kode er feige, og reduserer oss til et minste felles multiplum av hva vi tror andre programmerere kan. Vi skal sprekke hull på feighetsbyllen, og se hva slags deilig kode som kommer krypende ut.
Hvordan tjene penger på annonser i mobil apps?
Har du laget en app men er usikker på hvordan tjene penger på den? Et alternativ er å vise annonser i appen. Google, Microsoft og Apple har alle egne annonsenettverk som enkelt lar seg integrere i appen din. I denne lyntalen får du en introduksjon til begreper som eCPM, CTR, fill rate og impressions. Du vil og få en oversikt over likheter og forskjeller mellom de forskjellige annonsenettverkene. Jeg vil og dele egne erfaringer med bruk av annonser i mobile apps på WP7, iOS og Android.
Hvorfor Gradle gjorde oss til lykkeligere utviklere
Gradle er et fleksibelt og kraftig byggesystem hvor byggescript skrives i Groovy. Hvordan gjøre overgangen fra ditt gamle byggsystem så smidig som mulig?
Vi har tatt i bruk Gradle som en erstatter for Maven. Dette foredraget tar for seg noen av utfordringene vi møtte ved å bytte ut Maven med Gradle, og hvordan vi løste disse. Foredraget tar også for seg det vi har erfart er de største styrkene og svakhetene ved Gradle. Vi vil også fokusere på hva vi som utviklere har vunnet på å ta i bruk Gradle.
Hypermedia Design and REST
What is a hypermedia format? This talk will define what a hypermedia format is.
We will look at different types of formats, and try to create our own using design patterns commonly found in existing formats. We will also look at how the 7th constraint of REST applies (HATEOAS or the hypermedia constraint) to hypermedia and its use.
Hyppige produksjonssettinger i forvaltningsprosjekter er mulig!
Hvis du starter med blanke ark, er hyppige produksjonssettinger greit å få til. Men hva om applikasjonen har vært i produksjon en stund, og muligheten til å gjøre endringer er begrenset? Denne lyntalen tar for seg noen enkle grep du kan gjøre i ditt prosjekt for å komme nærmere visjonen om kontinuerlig leveranse. Det handler ikke bare om automatisering, men også hvordan du ved å tenke gjennom hvordan applikasjonen brukes kan gjøre det mulig å endre den uten å påvirke brukerne. Resultatet er hyppigere og tryggere produksjonssettinger – i vanlig arbeidstid!
Ikke stol på kravspesifikasjonen!
De siste tiårene er det blitt gjort store forbedringer innen programmeringsspråk, testing, systemutviklingsmetoder, m.m. Likevel er restulatet av sytemutviklingsprosjekter ofte skuffende. Løsningene virker ikke som forventet, de er unødig dyre og noen ganger tilogmed farlige å bruke. Vitenskapelige studier viser at underliggende årsker til at prosjekter feiler ofte kan spores tilbake til kravene, dette trass i et stadig økende fokus på områder som smidig utvikling, prototyping, kommunikasjon med klienter og inkrementell utvikling. I dette foredraget ser vi på noen sentale problemstillinger innenfor kravspesifisering og går gjennom prinsipper og teknikker som er vi har funnet nyttige, blant annet innovation games og user story mapping. Foredraget er basert på egne erfaringer, “best practise” og forskningsresultater.
Information Alchemy: Presentation Patterns & Anti-Patterns
Creating and delivering technical presentations is not just the realm of conference speakers anymore. Let’s face it: if you have to give a technical presentation and it’s boring, you’re not going to make much of an impact. However, if you can make it entertaining and informative, you sell your ideas much better. This session takes a different approach to how to build presentations, by providing patterns and anti-patterns you can use to make sure you’re getting the most leverage from your presentations. Don’t take a knife to a gunfight! The ability to create compelling presentations that explain your point is one of the things that keeps your job from disappearing.
Introducing Apache Wicket
Apache Wicket is a component oriented Java web framework. With proper mark-up/logic separation, a POJO data model, and a refreshing lack of XML, Wicket makes developing web-apps simple and enjoyable again.
This talk provides a short introduction to the framework's concepts: components, behaviors and models. We'll take a short look at integrating with Spring and integrating with JQuery. For the test infected we'll cover testing your web pages with Wicket's internal test framework. But most importantly we'll take a look at the new Wicket release 1.5 and see what has changed for the better and worse.
Java 8 - Closures, Extension Methods, SAMs, Method Handles, Oh My!
Vi gjennomgår et enkelt standardproblem i Java - hvordan sortere en liste? - og ser hvordan vi kan gjøre det mye mer konsist og lettere å lese via de nye språkmekanismene som kommer i Java 8.
Java Concurrent Animated
This presentation consists of a series of animations that visualize the functionality of the components in the java.util.concurrent library.
Each animation features buttons that correspond to the method calls in that component. Each click of a button shows how the threads interact in real time. The animations are controlled by the actual Java concurrent component they are illustrating, so the animation is not only a visual demonstration, it's also a code sample.
Key points covered will be
- An explanation of the use case for each of 14 concurrent components.
- Description of the design pattern handled by the component
- How the concurrent component handles the use case
- Visualization through animation of the use case.
Components covered include
- Executors (non-fair & fair)
- Runnable/Callable
- Semaphore
- Future
- Reentrant Lock
- ReadWriteLock
- Condition
- BlockingQueue
- CyclicBarrier
- CountDownLatch
- CompletionService
- ConcurrentHashMap
- Fork & join
- Compare & Swap
If you’re still using constructs like Thread.start or wait/notify, you'll want to attend this meeting.
The presentation is packaged as a self-executable Java Archive (JAR) file and is available for download. It'll serve as a valuable reference for any Java practitioner.
Java i Azure
Presentasjonen gir en praktisk innføring i javautvikling på Microsofts Azure platform. I løpet av sesjonen utvikler vi en java applikasjon som vi bygger og deployer til Microsoft Azure. Det vil bli presentert nyttige tips og triks for de som ønsker å utvikle Java-applikasjoner som skal kjøre i nettskyen til Microsoft.
JavaScript design and architecture
Increasingly complex web applications require proper planning and design to work well. In this session I will walk you through a selection of idiomatic JavaScript design patterns that emphasise testability, performance and extensibility. Leave your Java tunnel vision at the door and join me in discovering designs that play to JavaScript's strengths rather than poorly emulate SDK's of the nineties.
Jeg er møkk lei utviklere som ikke kan skrive ordentlige tester!
"Enhetstester er lett. Integrasjonstester er vanskelig." er en vanlig holdning blant norske utviklere. Det reelle problemet er egentlig ikke hvorvidt man tester enheter eller integrasjoner, men at mange utviklere ikke har peiling på hvordan de skal gå frem for å skrive skikkelige tester.
Erfaringsmessig har det vist seg viktigere å bygge kompetanse på problemanalyse enn å pugge konkrete oppskrifter. Fremgangsmåte og prioriteringene som må gjøres for å skrive gode tester står derfor i sentrum, men også teknologi- og verktøyalternativer vil bli diskutert.
Foredraget vil være case-orientert, med utgangspunkt i testing av et større logistikksystem.
Jobbe i skyen, hva kan verden gjøre med din WAR app?
Utvikling skaper verdi, hvorfor kommer driftsoppgaver i veien for at du kan gjøre nok av det?
Dette er en praktisk presentasjon av våre erfaringer med utvikling, utrulling, forvaltning og drift av 3 applikasjoner i skyen. Ikke noe salg kun våre egne erfaringer. I denne presentasjonen kommer jeg til å gå gjennom prosessen fra valget av skyleverandør, gjennom utvikling, første utrulling, forvaltning og drift applikasjonene.
Jeg kommer til å sette de forskjellige leverandørene opp mot hverandre på egenskaper som utrulling, skalering av ytelse, økonomi, åpenhet/innsyn og monitorereing. Jeg kommer så med våre erfaring med å leve i og utvikle for skyen. Erfaringene kommer fra 3 ruby on rails applikasjoner. Erfaringene er generelle innenfor bruk av PaaS og er lett overførbare til WAR og Jvm.
Presentasjonen avsluttes med en introduksjon til hvordan du kan flytte inn i skyen og leve der. Dette gjøres gjennom en introduksjon til WAR-formatet og hvorfor dette er en styrke for Jvm og Java. Når man nå har en WAR ønsker jeg å vise hvordan de forskjellige leverandørene lar deg rulle denne ut på deres tjenester. Dette er en rask introduksjon på hvordan komme igang i skyen.
Har du en WAR kan skyen kjøren den!
Kjenn ditt domene - bruk av verdiobjekter
Å ha en god forståelse for forretningsdomenet en jobber med er essensielt i forhold til å greie og levere gode løsninger for kunden.
Som en byggekloss i domenet ditt, kan du benytte verdiobjekter. Det gir deg en rekke fordeler, både når det gjelder det funksjonelle (forståelsen av domenet) og det tekniske.
Dessverre virker det som om få vet hva et verdiobjekt er, og ser mulighetene de gir.
Jeg vil i min presentasjon gi en kort introduksjon til hva et verdiobjekt er, og deretter bruke resten av tiden til å overbevise deg om hvorfor du bør sjekke ut verdiobjektet nærmere.
Kontinuerlige leveranser krever kontinuerlig testing
TBA
Living with Git and Subversion in Parallel
Our company Subversion repository recently rounded 100.000 revisions. Our main product now counts over 50.000 files, in a workspace of several gigabytes. The pains of tending to a project of this size is made worse by Subversion. Updates and commits take a long while, working with branches is unbearable, and the workspace itself is immensely slowed down by the thousands of miniscule .svn folders powdered around in each directory.
At the same time, we haven't been able to make the switch to Git, for the same reason as many others: Lack of tooling, Windows-friendliness, learning curve - these are all excuses that can and will be overcome, some day. But for now, we had to come up with something different..
We decided that those of us who want to make the switch to distributed SCM should not have to wait for it. For over a year, more and more of the development team have joined in on doing SCM via our Git-SVN mirror. Setting up this kind of infrastructure is not trivial, but in this talk I’ll guide you through all the steps, as well as a few more you should make when you finally want to leave SVN behind.
This talk is slide free! Be prepared for a lot of command-line action!
Long term value of acceptance tests
Most of the discussion on automated acceptance tests focuses on
immediate benefits in development and defect detection or regression
testing. But that's not nearly all you can get from your tests. While
working on his new book, Gojko interviewed more than 50 teams that got
big pay-offs from automated acceptance tests, including some that have
been using agile acceptance testing for six or seven years. In the
long term, most of these teams got quite unexpected benefits, such as
being able to support their system easier, significantly change their
business models or survive the absence of key business people. Gojko
will talk about these long term benefits of acceptance tests and what
you need to do to get them.
Meet the Java Posse
This year Dick Wall and Carl Quinn of the Java Posse podcast will visit JavaZone. They will do a Java Posse recording during the last slot on Wednesday, just before AweZone. The session will cover the top topics and questions suggested at their webpage.
Be early – there’s refreshing liquid surprises to the first 300+ attendees!
Men så hør da! Du bruker det feil (dust)
"Du bruker det feil!" - er kanskje en av de mest brukte, og minst nyttige forklaring på hvorfor akkurat du sliter med å få det skinnende nye rammeverket til å fungere i din applikasjon.
Er det slik at det er vi som bruker rammeverket som er mindre begavet? eller er det utviklerene av rammeverkene som er det ?
Skal vi være ærlige med oss selv så må vi vel inrømme at det ofte er en kombinasjon.
Hva kan vi så gjøre for å redusere risikoen for å få problemer med rammeverkene vi bruker ?
Svaret ligger i historien. Ved analyse av konsekvensene av tidligere valg, kan vi identifisere en del suksesskriterier og
risiko oppførsel.
Dette fordraget vil oppsummere hva jeg har konkludert etter å ha opparbeidet mye egen erfaring, samt det jeg har samlet av andres erfaringer i bruk av diverse rammeverk og verktøy.
MongoDB and the JVM: Bringing NoSQL and the Java Platform Together
MongoDB is a scalable, high-performance, open source, document-oriented NoSQL database. It features document-oriented, JSON-based document storage and dynamic schemas providing simplicity, power and flexibility, combined with full indexes similar to what a traditional RDBMS user would expect. MongoDB also provides solid replication & high availability features as well as an auto-sharding system for transparent horizontal scalability.
This talk introduces MongoDB for developers who aren't familiar with it, and discusses various integration points for MongoDB & the JVM including Spring's "Spring Data" component for MongoDB, the Morphia Object Mapper for Java, MongoDB's Scala Drivers (Casbah, as well as a new experimental Asynchronous driver), Akka Durable Mailboxes, Lift's MongoDB Active-Record integration, and MongoDB's Hadoop integration.
Moving Java Forward: Java SE 7 has been released, what about Java SE 8?
Java SE 7 was launched officially on 28th of July this year; the first new version of the Java platform in nearly five years. Now that various issues have been resolved, Oracle are keen to maintain the momentum of Java as a platform. In this session we'll talk briefly about Java SE 7 before discussing some the changes being made to the JCP to provide a more transparent development of new Java specifications. We'll then talk about the planned features for Java SE 8 discussing modularity and lamba expressions as well as other ideas that are being proposed for inclusion.
Mythbusters: JavaScript edition
JavaScript is in an unfortunate position. Everywhere, people spread bad, misinformed advice about the language and how to apply it to browser scripting/web applications. We'll debunk some common myths about JavaScript programming and learn more suitable alternatives. Expect to gain insight in what makes JavaScript such a unique and beautiful programming language and learn how to better your client-side code.
Nagios i norges største SOA-prosjekt
Mange organisasjoner bruker overvåkningsverkøyet Nagios fordi det er open source og lett å komme i gang med. Det har også blitt brukt for overvåkning av servere og tjenester i norges største SOA-prosjekt, Pensjonsprogrammet, og her presenteres noen erfaringer med Nagios i denne sammenhengen.
Nagios har overvåket helsen til over 3000 målepunkter fordelt på over 150 servere, fordelt på rundt 20 separate test- og utviklingsmiljøer. Nagios har også blitt utvidet med egenutviklede plugins som gjør det mulig å teste webservices og andre typer tjenester, mot tjenestebuss eller direkte mot baksystemer.
Oracle JVM Convergence: 1 + 1 = 1
As a result of the merge between Sun Microsystems and Oracle the
combined company has got not one but two industrial-strength Java
Virtual Machines (JVMs). What will Oracle's future JVM be like?
Over the past few years HotSpot has released a number of new
innovative features: NUMA-aware GC, string concatenation optimization,
Garbage-First GC, SSE 4.2 support that is particularly useful in array
data manipulations, effective escape analysis, etc.
In the meantime JRockit is well known for its speed, innovative
Deterministic GC, and impressive monitoring tools such as Mission
Control, Flight Recorder, improved JMX agent, native memory tracking, etc.
There were many possibilities considered for Oracle's future JVM. The
path that was chosen should make happy both the existing as well as
any new JVM users. Oracle has been assembling a single JVM taking the
best features and characteristics from HotSpot and JRockit. The future
converged JVM will have a source base derived from Hotspot but heavily
enhanced with all the important and popular JRockit features: Mission
Control and Flight Recorder support, native memory tracking, soft
real-time GC, and many many more.
Persistens i Scala
I Scala "funker" alle rammeverkene vi kjenner fra Java. Men ikke alle fungerer like bra, og vi mister en del på veien. I java-verden er det en "opplest og vedtatt sannhet" at man bruker JPA når man jobber mot en database. Men liker vi egentlig de begrensingene som JPA setter? Hva om vi vil ha mer kontroll på når - og hvordan SQL kjøres? Må vi virkelig bruke tekstlige spørringer som gir oss feil først i kjøretid? Hva om vi vil ha _mer_?
Denne presentasjonen vil kikke på ulike måter å jobbe mot en database fra Scala, fra rå JDBC via JPA og JPA med scala-overbygg til rene Scalarammeverk i form av Squeryl og ScalaQuery.
Play! Framework: to infinity and beyond
The Play! framework is more than just yet another web framework in the Java eco-system: it is also another way of developing web applications. Like RoR, Django, it encourages fast and expressive development, with a clean and pragmatic API. Most importantly, perhaps, it brings simplicity and fun to the Java world. However, simplicity does not mean being limited to simple web applications. The framework gives you enough power to actually create just anything you can think off: with continuation, web socket support, asynchronous call it is one of the first framework to empower you. We will dive into details on how to use those features and realize that it is actually quite simple, Scala might even be part of the program... Infinity and beyond are now reachable to Java Web developers!
Polyglot persistence for Java developers - moving out of the relational comfort zone
Relational databases have long been considered the one true way to persist enterprise data. But today, NoSQL databases are emerging as a viable alternative for many applications. They can simplify the persistence of complex data models and offer significantly better scalability, and performance. But using NoSQL databases is very different than the ACID/SQL/JDBC/JPA world that we have become accustomed to. They have different and unfamiliar APIs and a very different and usually limited transaction model. In this presentation, we describe some popular NoSQL databases – Redis, MongoDB, and Cassandra. We will compare and contrast each database’s data model and Java API using NoSQL versions of a use case from the book POJOs in Action. We describe the benefits and drawbacks with using NoSQL databases. Finally, you will learn how the Spring Data project simplifies the development of Java applications that use NoSQL databases.
Polyglot-JVM-programmerere, slutt å sutre!
Java-språket får hard medfart og utallige sleivspark i Twitter-sfæren fra utviklere som ønsker like mye frihet og uttrykkskraft som tilbys av andre språk. Jeg vil vise hvordan man med et Collections-bibliotek kan bruke funksjonell stil også i Java, og oppnå snasen, lesbar og gjenbrukbar kode.
Programmer's Survival Kit: Code Injection for Troubleshooting
This presentation is aimed at giving you the knowledge of code injection that you may (or I should rather say "will") need and at persuading you that learning basics of code injection is really worth the little of your time that it takes. I'll present three different real-world cases where code injection came to my rescue, solving each one with a different tool, fitting best the constraints at hand. I'll also provide you with resources to learn the basics and tools easily and quickly.
This is a practical presentation; we won't introduce AOP and will explain code injection only briefly, plunging right into the tools and how they can help you.
Pump It Up: Maximizing the Value of an Existing Investment in Java with Ruby
With half a million Ruby developers worldwide, there’s no denying the success and speed of development this language provides. In this interactive session, Thomas Enebo, JRuby developer at Engine Yard, will present how to tap into Ruby to complement an existing investment in Java. It will offer attendees a deep-dive of JRuby, a Java implementation of the Ruby programming language, which allows organizations to build secure, high-performance application functionality with Ruby while utilizing existing Java code and the JVM. Learn how adding JRuby to your development environment will not only help you build applications faster but will also be a fun experience. Find out why Ruby and Rails are grabbing the attention of enterprise developers.
Push for Android - Sett fra et fugleperspektiv
Informasjon levert på sekundet er noe brukere forventer i større grad enn før. På mobile enheter løses dette gjennom push-teknologi. Det er flere mulige måter å implementere pushteknologi til Android-plattformen, fra helt hjemmesnekra kommunikasjon over protokoller som XMPP og MQTT, til tredjepartsløsninger og Googles egen push-løsning C2DM. Lyntalen vil gi en konsis oversikt over muligheter som ligger i de ulike implementasjonene, hvordan de fungerer, og hva de egner seg til.
På tide å utfordre Prosjektet
Smidig begynner å bli veletablert, men for å komme videre må fortsette å utfordre det etablerte. Vår default mentale modell er fremdeles "Prosjekt" - og her ligger også den største hindringen for å bli smidige. Her ligger også synderen som fører til dårlig kvalitet og misfornøyde brukere. Er Smidig Prosjektstyring egentlig en selvmotsigelse?
REST + sikkerhet = sant
Posten Norge lanserte Digipost våren 2011. I tiden etter dette har det blitt jobbet mye med ulike integrasjonsløsninger for bedrifter. Sist ut av løsningene er et flunkende nytt REST-API som ble lansert i august. I denne lyntalen ser vi på hvordan vi har designet og implementert en sikkerhetsmekanisme som lar API’et håndtere innhold med høyeste sikkerhetskrav. Vi ser også på hvordan denne sikkerhetsmekanismen lar seg implementere uten at det går på bekostning av prinsippene bak et RESTful design.
RIA Security - Broken By Design
Rich Internet Applications (RIA) provide desktop-like usability with web deployment model. The benefits of this combination are obvious and RIA is now common a choice for the presentation layer in many applications. Unfortunately, moving logic from the server to an untrusted client may open up security holes that would not be present in the page-oriented "Web 1.0" architecture. In this presentation we will take a look at client- and server-side RIA architectures from the security angle, identify some of the most common security problems and discuss strategies for avoiding them. We'll go through an example application implemented in both architectures and demonstrate the problems. Java-based RIA frameworks, Google Web Toolkit and Vaadin, are used in the examples, but the demonstrated principles are applicable to most other frameworks and languages as well.