C# 6.0 will change the way you write C#. There are many language features that are so much more efficient you’ll wonder why they weren’t there since the beginning.
Celery is an asynchronous task queue/job queue based on distributed message passing. It allows tasks to be executed concurrently on one or more worker servers to minimize request times and offload intensive processes. Some key benefits are improved user experience through faster responses, scalability by adding more workers as needed, and flexibility through many customization points. Celery uses message brokers like RabbitMQ to handle task routing and can integrate with databases, caching, and other services.
Now that C#6 is officially available, most people will have a look to new features. The purpose of this talk is not only to show you the new feature but also, and mostly to show you how it can improve your code to write it in a better, smaller and more readable way
All Things Open 2014 - Day 2
Thursday, October 23rd, 2014
Doug Turnbull
Search & Big Data Architect for OpenSource Connections
Databases
Stop Worrying & Love the SQL - A Case Study
The document discusses using aspect oriented programming (AOP) in Python to design APIs. It describes how AOP can help separate concerns like security, logging, and serialization into distinct aspects to avoid scattering code across multiple functions. Decorators are proposed as a way to implement aspects for a bioenergy application API. Specific decorator aspects are presented for security, statistics, serialization, and dispatching API calls to core functions. The implementation applies the aspects as decorators to API functions to cleanly separate the concerns.
Video of the presentation: http://www.youtube.com/watch?v=8z3h4Uv9YbE
At LinkedIn, we have started to use the Play Framework to build front-end and back-end services at massive scale. Play does things a little differently: it's a Java and Scala web framework, but it doesn't follow the servlet spec; it's fairly new, but it runs on top of robust technologies like Akka and Netty; it uses a thread pool, but it's built for non-blocking I/O and reactive programming; most importantly, it's high performance, but also high productivity. We've found that the Play Framework is one of the few frameworks that is able to maintain the delicate balance of performance, reliability, and developer productivity. In the Java and Scala world, nothing even comes close. In this talk, I'll share what we've learned so far, including details of rapid iteration with Java and Scala, the story behind async I/O on the JVM, support for real time web apps (comet, WebSockets), and integrating Play into a large existing codebase.
The document discusses several anti-patterns for module testing, including indented test code that violates the "flat is better than nested" rule, including production logic in tests, having too many expectations in mocks, using redundant fixtures, and providing neglected diagnostics in test failures. It recommends practices like writing tests with clear expectations, using stubs instead of mocks, keeping fixtures simple, and formatting failures for clarity.
Swift was originally released in 2014, and Open Sourced by Apple in late 2015. The Open Source release generated an explosion of community interest and support, resulting in ports to other platforms and significant language changes. Swift version 3, which reflects the results of much of this work, was released in September of 2016, bringing with it some significant refinements to the core language and a new package manager.
Swift is a multi-paradigm language, supporting imperative, functional, and object-oriented programming styles. The language is strongly typed but has extensive support for type inference and substantial tooling available in XCode to identify and in some cases automatically fix common programming errors. Swift uses a memory management strategy called automatic reference counting (ARC), freeing programmers from the tedium of manually managing memory allocation. This combination of strong typing, maximal type inference, automatic reference counting (ARC), and excellent tooling results in an experience that can be described as “the Macintosh of programming languages”.
This talk will present some of the history of the development of Swift with emphasis on how the Open Source release of the language kick-started activity, review the basic syntax of Swift (with comparisons to similar languages that attendees may be more familiar with), and describe what tools are available to help learn the language, including XCode, the Swift REPL available from XCode, and the new Swift Playgrounds for iPad that debuted with Swift 3 and iOS10. After attending this talk, an attendee with no previous Swift experience will understand exactly why they should be excited about this relatively new programming language and be up to date on exactly what they need to do to dive into Swift coding for themselves.
The modern web is feature-rich and fast, and Dart gives you a familiar and productive toolchain to scale up your code and apps. Come learn what's new with the Dart project, and how you can use the class-based language, rich built-in libraries, productive editor, package manager, and more. You want more? How about Web Components and a Future-based DOM! You'll see lots of demos, with special attention to the Dart-to-JavaScript compiler.
Celery is an asynchronous task queue/job queue based on distributed message passing. It allows tasks to be executed concurrently on one or more worker servers to minimize request times and offload intensive processes. Some key benefits are improved user experience through faster responses, scalability by adding more workers as needed, and flexibility through many customization points. Celery uses message brokers like RabbitMQ to handle task routing and can integrate with databases, caching, and other services.
Now that C#6 is officially available, most people will have a look to new features. The purpose of this talk is not only to show you the new feature but also, and mostly to show you how it can improve your code to write it in a better, smaller and more readable way
All Things Open 2014 - Day 2
Thursday, October 23rd, 2014
Doug Turnbull
Search & Big Data Architect for OpenSource Connections
Databases
Stop Worrying & Love the SQL - A Case Study
The document discusses using aspect oriented programming (AOP) in Python to design APIs. It describes how AOP can help separate concerns like security, logging, and serialization into distinct aspects to avoid scattering code across multiple functions. Decorators are proposed as a way to implement aspects for a bioenergy application API. Specific decorator aspects are presented for security, statistics, serialization, and dispatching API calls to core functions. The implementation applies the aspects as decorators to API functions to cleanly separate the concerns.
Video of the presentation: http://www.youtube.com/watch?v=8z3h4Uv9YbE
At LinkedIn, we have started to use the Play Framework to build front-end and back-end services at massive scale. Play does things a little differently: it's a Java and Scala web framework, but it doesn't follow the servlet spec; it's fairly new, but it runs on top of robust technologies like Akka and Netty; it uses a thread pool, but it's built for non-blocking I/O and reactive programming; most importantly, it's high performance, but also high productivity. We've found that the Play Framework is one of the few frameworks that is able to maintain the delicate balance of performance, reliability, and developer productivity. In the Java and Scala world, nothing even comes close. In this talk, I'll share what we've learned so far, including details of rapid iteration with Java and Scala, the story behind async I/O on the JVM, support for real time web apps (comet, WebSockets), and integrating Play into a large existing codebase.
The document discusses several anti-patterns for module testing, including indented test code that violates the "flat is better than nested" rule, including production logic in tests, having too many expectations in mocks, using redundant fixtures, and providing neglected diagnostics in test failures. It recommends practices like writing tests with clear expectations, using stubs instead of mocks, keeping fixtures simple, and formatting failures for clarity.
Swift was originally released in 2014, and Open Sourced by Apple in late 2015. The Open Source release generated an explosion of community interest and support, resulting in ports to other platforms and significant language changes. Swift version 3, which reflects the results of much of this work, was released in September of 2016, bringing with it some significant refinements to the core language and a new package manager.
Swift is a multi-paradigm language, supporting imperative, functional, and object-oriented programming styles. The language is strongly typed but has extensive support for type inference and substantial tooling available in XCode to identify and in some cases automatically fix common programming errors. Swift uses a memory management strategy called automatic reference counting (ARC), freeing programmers from the tedium of manually managing memory allocation. This combination of strong typing, maximal type inference, automatic reference counting (ARC), and excellent tooling results in an experience that can be described as “the Macintosh of programming languages”.
This talk will present some of the history of the development of Swift with emphasis on how the Open Source release of the language kick-started activity, review the basic syntax of Swift (with comparisons to similar languages that attendees may be more familiar with), and describe what tools are available to help learn the language, including XCode, the Swift REPL available from XCode, and the new Swift Playgrounds for iPad that debuted with Swift 3 and iOS10. After attending this talk, an attendee with no previous Swift experience will understand exactly why they should be excited about this relatively new programming language and be up to date on exactly what they need to do to dive into Swift coding for themselves.
The modern web is feature-rich and fast, and Dart gives you a familiar and productive toolchain to scale up your code and apps. Come learn what's new with the Dart project, and how you can use the class-based language, rich built-in libraries, productive editor, package manager, and more. You want more? How about Web Components and a Future-based DOM! You'll see lots of demos, with special attention to the Dart-to-JavaScript compiler.
This talk was delivered at JavaOne 2013, together with Andrzej Grzesik. We mention the new Date APIs, changes to Collections as well as Streams APIs and of course... Lambdas!
This is an adaptation of the presentation given at the SpringOne 2008 conference in Hollywood, FL. It contains some updates on project status, and also information about the recently published book "Spring Python 1.1"
This slideshow is licensed under a Creative Commons Attribution 3.0 United States License.
This document provides an overview of quality assurance for PHP projects. It discusses the importance of revision control, documentation, testing, and automation in QA. Revision control systems like SVN and Git are recommended for team development and tracking code versions. PHP Lint is introduced for syntax checking files from the command line. Documenting code with PHPDoc is suggested. Unit testing forms and models is demonstrated using PHPUnit. Validation, filtering, and sanitizing user input is important for protection against exploits. Overall the document promotes establishing strong quality practices like testing, revision control, and documentation for PHP projects.
JavaScript Test-Driven Development with Jasmine 2.0 and Karma Christopher Bartling
This document discusses JavaScript test-driven development using Jasmine 2.0 and Karma. It introduces test-driven development principles and benefits, then covers the Karma test runner, PhantomJS browser, and features of the Jasmine testing framework including describe blocks, expectations, matchers, spies, and custom matchers. It also provides an example of mapping earthquakes and testing color-coded circles using magnitude and discusses code coverage and sustaining test-driven practices.
The document discusses the lifecycle of code under test, including defining inputs and outputs, initial testing with positive and negative cases, handling bugs, refactoring code, adding abstraction, how future work may affect tests, and handling legacy code. It provides an example of a function to add two strings, injecting a bug, and walking through testing the code at different stages of the lifecycle from initial testing to refactoring and abstraction.
Why Your Test Suite Sucks - PHPCon PL 2015CiaranMcNulty
Many teams adopt TDD attracted by the promise of a more productive workflow, fewer regressions and higher code quality. Sometimes this goes wrong and these benefits do not materialise, despite a healthy-seeming test suite. In this talk we will look at what the common pitfalls of testing are, why teams fall into these traps, and they can dig themselves out.
The document provides an overview of the Rest.li development workflow. It describes implementing a simple REST request to retrieve a fortune and outlines the key steps: 1) Write a data schema, 2) Write a REST resource, 3) Write an asynchronous client. The resource and client are modified to use ParSeq for asynchronous and non-blocking request handling by returning and composing tasks. This allows for improved scalability and parallel request processing.
To inject or not to inject - Dependency injection in a Kotlin world (Droidcon...Danny Preussler
Dependency Injection via frameworks like Dagger were present in most modern Android projects. But then Kotlin happened. And since then a bunch of new libraries like Koin or Kodein appeared. Developers are even writing articles how to do DI without any framework. Some argue that those don’t even offer real dependency injection. Let’s look at that argument and compare the approaches. So is there something wrong with Dagger & co. in Kotlin? Are they obsolete? What are the alternatives?
Need for Async: Hot pursuit for scalable applicationsKonrad Malawski
This document discusses asynchronous processing and how it relates to scalability and performance. It begins with an introduction on why asynchronous processing is important for highly parallel systems. It then covers topics like asynchronous I/O, scheduling, latency measurement, concurrent data structures, and techniques for distributed systems like backup requests and combined requests. The overall message is that asynchronous programming allows more efficient use of resources through approaches like non-blocking I/O, and that understanding these principles is key to building scalable applications.
Pycon Colombia 2018
One year ago I joined a team that favours Serverless, since then I’ve been building and maintaining lots of services using Serverless. With a pinch of Skepticism, I sailed through some of the challenges and tooling, I want to share with the community the pains and glory of it.
At this talk we will start from the basics and come shortly to DynamicProxies, generated type-save DynamicObjectAdapterBuilder and more. We will have a deep dive to this pattern group , and I am sure you will like it ;-)
This talk is based on the german book "Dynamic Proxies" written from Dr. Heinz Kabutz and me.
The things we don't see – stories of Software, Scala and AkkaKonrad Malawski
The document discusses some of the unseen aspects of software, programming languages, and distributed systems. It covers topics like tradeoffs that must be made in software but are not visible, the impact of blocking code in Akka applications, and how traits are represented differently in Scala depending on the version. Messages are emphasized as a core abstraction in Akka rather than method calls. Some hidden features of ScalaDoc are also shown.
2019 Pune Data Conference
Software smoke testing is a preliminary level of testing. It makes certain that all of the primary components of a system are functioning correctly. For example, when installing a new secured Hadoop cluster, running a series of quick tests to make sure that things like HDFS and MapReduce are operational can save a lot of headache before enabling Kerberos. Smoke tests can also save you time and embarrassment by making sure that things work before you turn the cluster over to your customer.
In this talk, Michael Arnold will explain the utility of testing Hadoop components after cluster builds and software upgrades. Michael will present code examples that you can use to confirm functionality of Spark, Kudu, HBase, Kafka, MapReduce, etc on your cluster.
Sexy.js is a lightweight JavaScript library that provides parallel request and serial response sequential Ajax functionality. It allows combining and manipulating data from multiple asynchronous sources while maintaining proper callback execution order. Sexy.js makes sequential Ajax patterns cleaner, faster and more scalable compared to traditional serial or parallel patterns. It provides an expressive and chainable API to handle common Ajax requests like JSON, HTML, scripts and more in a sequential manner.
This document provides a summary of the Sexy.js JavaScript library, which allows for parallel asynchronous requests while maintaining proper callback execution order (sequential Ajax). It discusses sequential Ajax patterns that Sexy.js addresses and improves upon. Sexy.js provides a lightweight and expressive API for making Ajax requests in a chained manner, passing data between callbacks implicitly. It also includes methods for bundling multiple script requests into one for faster loading.
- Legacy Perl code is code that uses outdated practices, has no tests or documentation, and is difficult to understand and modify. It often results from organic growth over many years and developers.
- Unit testing legacy code provides safety during refactoring, speeds up development by replacing debugging, and creates regression tests. However, the code's dependencies make it difficult to isolate and test.
- Techniques like dependency injection, sprouting, monkey patching, and temporary object reblessing can help break dependencies and make legacy code more testable. Instrumentation with profilers also aids understanding the code.
Diving into HHVM Extensions (PHPNW Conference 2015)James Titcumb
HHVM is currently gaining popularity at quite a pace, and it's a pretty exciting time for PHP runtimes. Have you ever wondered what is going on beneath this slick and super-speedy engine? I wondered that myself, so I dived into the internals of HHVM, discovering a treasure trove of awesome stuff. In this talk, I'll show you how HHVM itself works with a guided tour of the codebase, demonstrating how it all pieces together. I'll also show you a couple of ways to write your own incredible HHVM extension. You don't need to know C++ to understand this talk - just PHP language knowledge is enough.
C# ist eine Programmiersprache mehrerer Paradigmen. C# war nie rein objektorientiert, schon in der ersten Version als Component-basierte Sprache angepriesen. Mit der Zeit gab es Erweiterungen der deklarativen Programmierung, und auch funktionale Konzepte wurden bei C# übernommen. In welche Richtung entwickelt sich C# weiter? In dieser Session werden neueste Erweiterungen von C# gezeigt. Themen sind dabei die letzten aktuellen Änderungen sowie geplante Erweiterungen wie z. B. die Vermeidung von NullReferenceException mit Non-Nullable Reference Types und die Reduktion von Garbage-Collector-Aufrufen mit Hilfe von Memory-Optimierungen.
This talk was delivered at JavaOne 2013, together with Andrzej Grzesik. We mention the new Date APIs, changes to Collections as well as Streams APIs and of course... Lambdas!
This is an adaptation of the presentation given at the SpringOne 2008 conference in Hollywood, FL. It contains some updates on project status, and also information about the recently published book "Spring Python 1.1"
This slideshow is licensed under a Creative Commons Attribution 3.0 United States License.
This document provides an overview of quality assurance for PHP projects. It discusses the importance of revision control, documentation, testing, and automation in QA. Revision control systems like SVN and Git are recommended for team development and tracking code versions. PHP Lint is introduced for syntax checking files from the command line. Documenting code with PHPDoc is suggested. Unit testing forms and models is demonstrated using PHPUnit. Validation, filtering, and sanitizing user input is important for protection against exploits. Overall the document promotes establishing strong quality practices like testing, revision control, and documentation for PHP projects.
JavaScript Test-Driven Development with Jasmine 2.0 and Karma Christopher Bartling
This document discusses JavaScript test-driven development using Jasmine 2.0 and Karma. It introduces test-driven development principles and benefits, then covers the Karma test runner, PhantomJS browser, and features of the Jasmine testing framework including describe blocks, expectations, matchers, spies, and custom matchers. It also provides an example of mapping earthquakes and testing color-coded circles using magnitude and discusses code coverage and sustaining test-driven practices.
The document discusses the lifecycle of code under test, including defining inputs and outputs, initial testing with positive and negative cases, handling bugs, refactoring code, adding abstraction, how future work may affect tests, and handling legacy code. It provides an example of a function to add two strings, injecting a bug, and walking through testing the code at different stages of the lifecycle from initial testing to refactoring and abstraction.
Why Your Test Suite Sucks - PHPCon PL 2015CiaranMcNulty
Many teams adopt TDD attracted by the promise of a more productive workflow, fewer regressions and higher code quality. Sometimes this goes wrong and these benefits do not materialise, despite a healthy-seeming test suite. In this talk we will look at what the common pitfalls of testing are, why teams fall into these traps, and they can dig themselves out.
The document provides an overview of the Rest.li development workflow. It describes implementing a simple REST request to retrieve a fortune and outlines the key steps: 1) Write a data schema, 2) Write a REST resource, 3) Write an asynchronous client. The resource and client are modified to use ParSeq for asynchronous and non-blocking request handling by returning and composing tasks. This allows for improved scalability and parallel request processing.
To inject or not to inject - Dependency injection in a Kotlin world (Droidcon...Danny Preussler
Dependency Injection via frameworks like Dagger were present in most modern Android projects. But then Kotlin happened. And since then a bunch of new libraries like Koin or Kodein appeared. Developers are even writing articles how to do DI without any framework. Some argue that those don’t even offer real dependency injection. Let’s look at that argument and compare the approaches. So is there something wrong with Dagger & co. in Kotlin? Are they obsolete? What are the alternatives?
Need for Async: Hot pursuit for scalable applicationsKonrad Malawski
This document discusses asynchronous processing and how it relates to scalability and performance. It begins with an introduction on why asynchronous processing is important for highly parallel systems. It then covers topics like asynchronous I/O, scheduling, latency measurement, concurrent data structures, and techniques for distributed systems like backup requests and combined requests. The overall message is that asynchronous programming allows more efficient use of resources through approaches like non-blocking I/O, and that understanding these principles is key to building scalable applications.
Pycon Colombia 2018
One year ago I joined a team that favours Serverless, since then I’ve been building and maintaining lots of services using Serverless. With a pinch of Skepticism, I sailed through some of the challenges and tooling, I want to share with the community the pains and glory of it.
At this talk we will start from the basics and come shortly to DynamicProxies, generated type-save DynamicObjectAdapterBuilder and more. We will have a deep dive to this pattern group , and I am sure you will like it ;-)
This talk is based on the german book "Dynamic Proxies" written from Dr. Heinz Kabutz and me.
The things we don't see – stories of Software, Scala and AkkaKonrad Malawski
The document discusses some of the unseen aspects of software, programming languages, and distributed systems. It covers topics like tradeoffs that must be made in software but are not visible, the impact of blocking code in Akka applications, and how traits are represented differently in Scala depending on the version. Messages are emphasized as a core abstraction in Akka rather than method calls. Some hidden features of ScalaDoc are also shown.
2019 Pune Data Conference
Software smoke testing is a preliminary level of testing. It makes certain that all of the primary components of a system are functioning correctly. For example, when installing a new secured Hadoop cluster, running a series of quick tests to make sure that things like HDFS and MapReduce are operational can save a lot of headache before enabling Kerberos. Smoke tests can also save you time and embarrassment by making sure that things work before you turn the cluster over to your customer.
In this talk, Michael Arnold will explain the utility of testing Hadoop components after cluster builds and software upgrades. Michael will present code examples that you can use to confirm functionality of Spark, Kudu, HBase, Kafka, MapReduce, etc on your cluster.
Sexy.js is a lightweight JavaScript library that provides parallel request and serial response sequential Ajax functionality. It allows combining and manipulating data from multiple asynchronous sources while maintaining proper callback execution order. Sexy.js makes sequential Ajax patterns cleaner, faster and more scalable compared to traditional serial or parallel patterns. It provides an expressive and chainable API to handle common Ajax requests like JSON, HTML, scripts and more in a sequential manner.
This document provides a summary of the Sexy.js JavaScript library, which allows for parallel asynchronous requests while maintaining proper callback execution order (sequential Ajax). It discusses sequential Ajax patterns that Sexy.js addresses and improves upon. Sexy.js provides a lightweight and expressive API for making Ajax requests in a chained manner, passing data between callbacks implicitly. It also includes methods for bundling multiple script requests into one for faster loading.
- Legacy Perl code is code that uses outdated practices, has no tests or documentation, and is difficult to understand and modify. It often results from organic growth over many years and developers.
- Unit testing legacy code provides safety during refactoring, speeds up development by replacing debugging, and creates regression tests. However, the code's dependencies make it difficult to isolate and test.
- Techniques like dependency injection, sprouting, monkey patching, and temporary object reblessing can help break dependencies and make legacy code more testable. Instrumentation with profilers also aids understanding the code.
Diving into HHVM Extensions (PHPNW Conference 2015)James Titcumb
HHVM is currently gaining popularity at quite a pace, and it's a pretty exciting time for PHP runtimes. Have you ever wondered what is going on beneath this slick and super-speedy engine? I wondered that myself, so I dived into the internals of HHVM, discovering a treasure trove of awesome stuff. In this talk, I'll show you how HHVM itself works with a guided tour of the codebase, demonstrating how it all pieces together. I'll also show you a couple of ways to write your own incredible HHVM extension. You don't need to know C++ to understand this talk - just PHP language knowledge is enough.
C# ist eine Programmiersprache mehrerer Paradigmen. C# war nie rein objektorientiert, schon in der ersten Version als Component-basierte Sprache angepriesen. Mit der Zeit gab es Erweiterungen der deklarativen Programmierung, und auch funktionale Konzepte wurden bei C# übernommen. In welche Richtung entwickelt sich C# weiter? In dieser Session werden neueste Erweiterungen von C# gezeigt. Themen sind dabei die letzten aktuellen Änderungen sowie geplante Erweiterungen wie z. B. die Vermeidung von NullReferenceException mit Non-Nullable Reference Types und die Reduktion von Garbage-Collector-Aufrufen mit Hilfe von Memory-Optimierungen.
Free The Enterprise With Ruby & Master Your Own DomainKen Collins
On the heals of Luis Lavena's RailsConf talk "Infiltrating Ruby Onto The Enterprise Death Star Using Guerilla Tactics" comes a local and frank talk about the current state of Open Source Software (OSS) participation from Windows developers. Learn what OSS is, what motivates its contributors, and how OSS can make you a stronger developer. Be prepared to fall in love with writing software again!
We will start off with a 101 introduction to both the Ruby programming language and the Ruby on Rails web application framework. You will learn about ActiveRecord, a powerful ORM that maps rich objects to your databases, and the latest components to use it with SQL Server. As a Rails core contributor and author of the SQL Server stack, I will give you a modern insight into both that will allow you to leverage your legacy data with Ruby.
Lastly, I will review the bleeding edge tools being actively created for Windows developers to ease the transition to Ruby, Rails and OSS from a POSIX driven world. Many things have changed. It is time to learn and perform some occupational maintenance.
A code kata in C# to help practice techniques for safely removing dependencies form legacy code and creating unit tests. Questions? Suggestions? Contact @dubmun.
The PVS-Studio team is now actively developing a static analyzer for C# code. The first version is expected by the end of 2015. And for now my task is to write a few articles to attract C# programmers' attention to our tool in advance. I've got an updated installer today, so we can now install PVS-Studio with C#-support enabled and even analyze some source code. Without further hesitation, I decided to scan whichever program I had at hand. This happened to be the Umbraco project. Of course we can't expect too much of the current version of the analyzer, but its functionality has been enough to allow me to write this small article.
This document provides an overview of an introductory C# programming course. The course covers C# fundamentals like setting up a development environment, data types, conditionals, loops, object-oriented programming concepts, and data structures. It includes topics like installing Visual Studio, writing a "Hello World" program, built-in data types like string, integer, boolean, and more. The document also outlines sample code solutions for exercises on command line arguments, integer operations, leap year finder, and powers of two.
He will start you at the beginning and cover prerequisites; setting up your development environment first. Afterward, you will use npm to install react-native-cli. The CLI is our go to tool. We use it to create and deploy our app.
Next, you will explore the code. React Native will look familiar to all React developers since it is React. The main difference between React on the browser and a mobile device is the lack of a DOM. We take a look a many of the different UI components that are available.
With React Native you have access to all of the devices hardware features like cameras, GPS, fingerprint reader and more. So we'll show some JavaScript code samples demonstrating it. We will wrap up the evening by deploying our app to both iOS and Android devices and with tips on getting ready for both devices stores.
This document provides a summary of C# versions and new features introduced in C# 7.0, 7.1, 7.2, and 7.3. It discusses features such as binary literals, digit separators, local functions, out variables, tuples, deconstruction, discards, ref returns and locals, pattern matching, expression-bodied members, throw expressions, and more. It also briefly previews some planned features for C# 8.0 like asynchronous streams/sequences, records, ranges, and nullable reference types.
Crossing the Bridge: Connecting Rails and your Front-end FrameworkDaniel Spector
1. The document discusses integrating front-end frameworks like Angular, Ember, and React with Rails by constructing JSON APIs, preloading data to avoid loading screens, and server-side rendering for SEO and performance.
2. It provides code examples for building a TODO application with each framework, including using ngResource and factories in Angular, Ember conventions like Ember Data, and building isolated React components.
3. Server-side rendering is highlighted as the future for isomorphic JavaScript, providing benefits like prerendering on initial page load.
The document contains the first 30 questions from a list of top 150 JavaScript interview questions. It covers topics like the differences between Java and JavaScript, data types in JavaScript, how to create arrays and objects, variable declaration keywords like var, let and const, and other fundamental concepts like functions, closures, promises and more.
This document provides answers to 15 questions from a final exam on Angular. The questions cover topics like the defer attribute, comparison operators, variable scoping, strict mode, the DOM, adding events, event bubbling, timeouts vs intervals, JSON parsing, AJAX calls, coding style guidelines, and more. For each question, a concise answer is provided explaining the key concept or resolving the example code provided.
The document discusses an architecture proposal for building Android applications that work offline. It begins by explaining why offline functionality is important for user experience. It then evaluates different approaches like using plain Java objects, services, and sync adapters before proposing an architecture based on loaders, job schedulers, and repositories to manage local and remote data sources. The proposal is demonstrated through a sample use case of articles and comments working offline. Finally, code examples are provided for key classes like activities, loaders, repositories, services, and sync tasks to synchronize data when network is available.
Fast as C: How to Write Really Terrible JavaCharles Nutter
For years we’ve been told that the JVM’s amazing optimizers can take your running code and make it “fast” or “as fast as C++” or “as fast as C”…or sometimes “faster than C”. And yet we don’t often see this happen in practice, due in large part to (good and bad) development patterns that have taken hold in the Java world.
In this talk, we’ll explore the main reasons why Java code rarely runs as fast as C or C++ and how you can write really bad Java code that the JVM will do a better job of optimizing. We’ll take some popular microbenchmarks and burn them to the ground, monitoring JIT logs and assembly dumps along the way.
Rafael Bagmanov «Scala in a wild enterprise»e-Legion
This document discusses Scala adoption in the enterprise. It describes how Scala was used to build OpenGenesis, an open-source deployment orchestration tool that was successfully deployed in a large financial institution. While Scala works well with common J2EE patterns like Spring MVC, Spring, and JPA/Squeryl, there are challenges around hiring Scala developers and establishing coding standards. The greatest challenges are cultural and involve people.
This document discusses integration testing of ColdBox applications using TestBox and MockBox. It defines integration testing as testing individual units combined as a group to expose faults in their interaction. The key benefits outlined are that integration tests allow testing of real use cases faster than end-to-end tests. The document recommends always integration testing as part of the development process and provides an overview of how to set up and run integration tests for a ColdBox application using TestBox.
Once upon a time, there was a poor, innocent language. It was friendly and kind. Everything could have been nice and peaceful, but there was another language that was grumpy and mean. One day they met and started to argue about who the better language was…. This session compares the Java language with TypeScript. It discusses how common problems are solved with these languages. At the end, you’ll see who is the beauty and who is the beast.
“There is no doubt AngularJS is one of the hottest JavaScript and Single Page Application (SPA) frameworks in use today. Is Angular just a bunch of hype, or is there substance behind its promise of teaching HTML new tricks? Join iVision principal architect Jeremy Likness when he shares his hands-on experience developing a massive Angular enterprise application with globally distributed teams of dozens developers over a period of several years. See practical examples of Angular and learn about the various concepts that make it a useful framework that isn’t as opinionated as other options in the market. Beginners will benefit from understanding what Angular does and how it impacts the bottom line of technology, people and process and experienced developers will learn best practices and advanced techniques from Jeremy’s extensive Angular experience. There’s something for everyone so be sure to RSVP now!”
SenchaCon 2016: Learn the Top 10 Best ES2015 Features - Lee Boonstra Sencha
In this session, Lee will cover the top 10 new features of ECMAScript 2015, their benefits, and go through code examples of how to use them. She will also talk about ECMAScript 2015 compatibilities and incompatibilities with the most widely used browsers today, and how you should plan on developing your applications with ECMAScript 2015.
Similar to Why you should be using the shiny new C# 6.0 features now! (20)
Transform Your Communication with Cloud-Based IVR SolutionsTheSMSPoint
Discover the power of Cloud-Based IVR Solutions to streamline communication processes. Embrace scalability and cost-efficiency while enhancing customer experiences with features like automated call routing and voice recognition. Accessible from anywhere, these solutions integrate seamlessly with existing systems, providing real-time analytics for continuous improvement. Revolutionize your communication strategy today with Cloud-Based IVR Solutions. Learn more at: https://thesmspoint.com/channel/cloud-telephony
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeAftab Hussain
Understanding variable roles in code has been found to be helpful by students
in learning programming -- could variable roles help deep neural models in
performing coding tasks? We do an exploratory study.
- These are slides of the talk given at InteNSE'23: The 1st International Workshop on Interpretability and Robustness in Neural Software Engineering, co-located with the 45th International Conference on Software Engineering, ICSE 2023, Melbourne Australia
Takashi Kobayashi and Hironori Washizaki, "SWEBOK Guide and Future of SE Education," First International Symposium on the Future of Software Engineering (FUSE), June 3-6, 2024, Okinawa, Japan
DDS Security Version 1.2 was adopted in 2024. This revision strengthens support for long runnings systems adding new cryptographic algorithms, certificate revocation, and hardness against DoS attacks.
Zoom is a comprehensive platform designed to connect individuals and teams efficiently. With its user-friendly interface and powerful features, Zoom has become a go-to solution for virtual communication and collaboration. It offers a range of tools, including virtual meetings, team chat, VoIP phone systems, online whiteboards, and AI companions, to streamline workflows and enhance productivity.
What is Augmented Reality Image Trackingpavan998932
Augmented Reality (AR) Image Tracking is a technology that enables AR applications to recognize and track images in the real world, overlaying digital content onto them. This enhances the user's interaction with their environment by providing additional information and interactive elements directly tied to physical images.
SOCRadar's Aviation Industry Q1 Incident Report is out now!
The aviation industry has always been a prime target for cybercriminals due to its critical infrastructure and high stakes. In the first quarter of 2024, the sector faced an alarming surge in cybersecurity threats, revealing its vulnerabilities and the relentless sophistication of cyber attackers.
SOCRadar’s Aviation Industry, Quarterly Incident Report, provides an in-depth analysis of these threats, detected and examined through our extensive monitoring of hacker forums, Telegram channels, and dark web platforms.
E-commerce Application Development Company.pdfHornet Dynamics
Your business can reach new heights with our assistance as we design solutions that are specifically appropriate for your goals and vision. Our eCommerce application solutions can digitally coordinate all retail operations processes to meet the demands of the marketplace while maintaining business continuity.
Mobile App Development Company In Noida | Drona InfotechDrona Infotech
Looking for a reliable mobile app development company in Noida? Look no further than Drona Infotech. We specialize in creating customized apps for your business needs.
Visit Us For : https://www.dronainfotech.com/mobile-application-development/
Software Engineering, Software Consulting, Tech Lead, Spring Boot, Spring Cloud, Spring Core, Spring JDBC, Spring Transaction, Spring MVC, OpenShift Cloud Platform, Kafka, REST, SOAP, LLD & HLD.
Artificia Intellicence and XPath Extension FunctionsOctavian Nadolu
The purpose of this presentation is to provide an overview of how you can use AI from XSLT, XQuery, Schematron, or XML Refactoring operations, the potential benefits of using AI, and some of the challenges we face.
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxrickgrimesss22
Discover the essential features to incorporate in your Winzo clone app to boost business growth, enhance user engagement, and drive revenue. Learn how to create a compelling gaming experience that stands out in the competitive market.
May Marketo Masterclass, London MUG May 22 2024.pdfAdele Miller
Can't make Adobe Summit in Vegas? No sweat because the EMEA Marketo Engage Champions are coming to London to share their Summit sessions, insights and more!
This is a MUG with a twist you don't want to miss.
Enterprise Resource Planning System includes various modules that reduce any business's workload. Additionally, it organizes the workflows, which drives towards enhancing productivity. Here are a detailed explanation of the ERP modules. Going through the points will help you understand how the software is changing the work dynamics.
To know more details here: https://blogs.nyggs.com/nyggs/enterprise-resource-planning-erp-system-modules/
7. History
• 2002 - C# 1.0 released with .NET 1.0 and VS2002
• 2003 - C# 1.2 released with .NET 1.1 and VS2003
• First version to call Dispose on IEnumerators which
implemented IDisposable. A few other small features.
• 2005 - C# 2.0 released with .NET 2.0 and VS2005
• Generics, anonymous methods, nullable types, iterator blocks
Credit to Jon Skeet - http://stackoverflow.com/a/247623
8. History
• 2007 - C# 3.0 released with .NET 3.5 and VS2008
• Lambda expressions, extension methods, expression trees, anonymous types,
implicit typing (var), query expressions
• 2010 - C# 4.0 released with .NET 4 and VS2010
• Late binding (dynamic), delegate and interface generic variance, more COM
support, named arguments, tuple data type and optional parameters
• 2012 - C# 5.0 released with .NET 4.5 and VS2012
• Async programming, caller info attributes. Breaking change: loop variable closure.
10. 1. Auto Property Initializers
Join the Conversation #DevSuperPowers @EricPhan
11. Currently
public class Developer
{
public Developer()
{
DrinksCoffee = true;
}
public bool DrinksCoffee { get; set; }
}
C# 6.0
public class Developer
{
public bool DrinksCoffee { get; set; } = true;
}
Auto Property Initializers
Join the Conversation #DevSuperPowers @EricPhan
12. Auto Property Initializers
• Puts the defaults along with the declaration
• Cleans up the constructor
Join the Conversation #DevSuperPowers @EricPhan
14. When I was a kid…
var devSkills =
new Dictionary<string, bool>();
devSkills["C#"] = true;
devSkills["VB.NET"] = true;
devSkills["AngularJS"] = true;
devSkills["Angular2"] = false;
Dictionary Initializers
VS2013 C# 5.0
var devSkills = new
Dictionary<string, bool>()
{
{ "C#", true },
{ "VB.NET", true },
{ "AngularJS", true },
{ "Angular2", false},
};
VS2015 C# 6.0
var devSkills =
new Dictionary<string, bool>()
{
["C#"] = true,
["VB.NET"] = true,
["AngularJS"] = true,
["Angular2"] = false
};
Join the Conversation #DevSuperPowers @EricPhan
15. Dictionary Initializers
• Cleaner, less ‘{‘ and ‘}’ to try and match
• More like how you would actually use a Dictionary
• devSkills["C#"] = true;
Join the Conversation #DevSuperPowers @EricPhan
17. Bad:
var firstName = "Eric";
var lastName = "Phan";
var jobTitle = "Chief Architect";
var company = "SSW";
var display = firstName + " " + lastName + ", " + jobTitle + " @ " + company;
String Interpolation
Better:
var firstName = "Eric";
var lastName = "Phan";
var jobTitle = "Chief Architect";
var company = "SSW";
var display = string.Format("{0} {1}, {3} @ {2}", firstName, lastName, company, jobTitle);
Join the Conversation #DevSuperPowers @EricPhan
18. String Interpolation
• Much clearer as you can see what variables are being
used inline
• Can do formatting inline too
• {startDate:dd/MMM/yy}
• {totalAmount:c2}
Join the Conversation #DevSuperPowers @EricPhan
20. public string[] GenerateCoffeeOrder(Coffee[] favCoffee)
{
var order = favCoffee.Select(x => $"{x.Name} - {x.Size}").ToArray();
return order;
}
Null Conditional Operator
What’s wrong with the above code?
21. public string[] GenerateCoffeeOrder(Coffee[] favCoffee)
{
if (favCoffee == null)
{
return null;
}
var order = favCoffee.Select(x => $"{x.Name} - {x.Size}").ToArray();
return order;
}
C# 6.0
public string[] GenerateCoffeeOrder(Coffee[] favCoffee)
{
var order = favCoffee?.Select(x => $"{x.Name} - {x.Size}").ToArray();
return order;
}
Null Conditional Operator
Fix by adding a null check
Join the Conversation #DevSuperPowers @EricPhan
22. Null Conditional Operator
• <Variable>?.<SomePropertyOrMethod>
• “?” If the variable is null, then return null
• Otherwise execute whatever is after the “.”
• Similar to the ternary operation (conditional operator)
• var tax = hasGST
? subtotal * 1.1
: subtotal;
• Saves you many lines of null checking with just one simple character.
Join the Conversation #DevSuperPowers @EricPhan
25. nameOf Expression
• In the previous example, it would probably be better
to throw an exception if the parameter was null
Join the Conversation #DevSuperPowers @EricPhan
public string[] GenerateCoffeeOrder(Coffee[] favCoffee)
{
if (favCoffee == null)
{
throw new ArgumentNullException("favCoffee");
}
var order = favCoffee.Select(x => $"{x.Name} - {x.Size}").ToArray();
return order;
}
26. nameOf Expression
• What’s the problem?
• Refactor name change
• Change favCoffee to coffeeOrders
Join the Conversation #DevSuperPowers @EricPhan
public string[] GenerateCoffeeOrder(Coffee[] coffeeOrders)
{
if (coffeeOrders == null)
{
throw new ArgumentNullException("favCoffee");
}
var order = coffeeOrders => $"{x.Name} - {x.Size}").ToArray();
return order;
}
Not Renamed!
27. nameOf Expression
Join the Conversation #DevSuperPowers @EricPhan
C# 6.0
public string[] GenerateCoffeeOrder(Coffee[] coffeeOrders)
{
if (coffeeOrders == null)
{
throw new ArgumentNullException(nameOf(coffeeOrders));
}
var order = favCoffee.Select(x => $"{x.Name} - {x.Size}").ToArray();
return order;
}
28. nameOf Expression
• Gives you compile time checking whenever you need
to refer to the name of a parameter
Join the Conversation #DevSuperPowers @EricPhan
30. Join the Conversation #DevSuperPowers @EricPhan
Expression Bodied Functions & Properties
Currently
public class Coffee {
public string Name { get; set; }
public string Size { get; set; }
public string OrderDescription {
get {
return string.Format("{0} - {1}", Name, Size);
}
}
}
C# 6.0
public class Coffee {
public string Name { get; set; }
public string Size { get; set; }
public string OrderDescription => $"{Name} - {Size}";
}
31. C# 6.0
public class Coffee {
public string Name { get; set; }
public string Size { get; set; }
public string OrderDescription => $"{Name} - {Size}";
}
Join the Conversation #DevSuperPowers @EricPhan
Expression Bodied Functions & Properties
public class Coffee {
name: string;
size: string;
orderDescription: () => string;
constructor() {
this.orderDescription = () => `${this.name} - ${this.size}`;
}
}
TypeScript
What language is this?
34. Exception Filters
• Gets rid of all the if statements
• Nice contained blocks to handle specific exception cases
Join the Conversation #DevSuperPowers @EricPhan
Hot Tip: Special peaceful weekends exception filter*
catch (SqlException ex) when (HttpContext.Current.Identity.Name == "Boss Man"
|| DateTime.Now.DayOfWeek == DayOfWeek.Saturday
|| DateTime.Now.DayOfWeek == DayOfWeek.Sunday) {
// Do nothing
} * Disclaimer: Don’t do this
36. C# 6.0
using static System.Math;
public double GetArea(double radius)
{
return PI * Pow(radius, 2);
}
Currently
public double GetArea(double radius)
{
return Math.PI * Math.Pow(radius, 2);
}
Static Using
Join the Conversation #DevSuperPowers @EricPhan
37. Static Using
• Gets rid of the duplicate static class namespace
• Cleaner code
• Like using the With in VB.NET
Join the Conversation #DevSuperPowers @EricPhan
38. There’s more too…
Await in Catch and Finally Blocks
Extension Add in Collection Initializers
Join the Conversation #DevSuperPowers @EricPhan
40. Summary
• Start using these features now!
• VS 2013 + “Install-Package Microsoft.Net.Compilers”
• VS 2015 – Out of the box
• For Build server – Microsoft Build Tools 2015 or
reference the NuGet Package
41. With all these goodies…
• You should be 350% more productive at coding
• Get reminded about using these cool features with
ReSharper