Document dependent inline forms
In Notes client applications we are used to opening any document from a view and get it redered with the form specified in the
Modern applications however expect a Single page application behavior, where only parts of the screen are replaced with new information. The XPages Extension library makes this easy, by providing the InPlace Form custom control.
Looking at the source code of the example page, it looks easy enough. However a real life application needs a few more considerations:
The code above is the event handler that goes into the link or button that triggers the edit action. In my case inside a repeat based on a view. The code to find the form is simple.
The snippet of code that determines what control to load lists all possible forms. To make this useful you should stick to the
The last 2 pieces in the puzzle are the save button and the mechanism that hides the inline form again. The button is simple:
While the JS code is a little trickier. The control doesn't "know" that it is in a inline edit form, nor does it know the name, so a "getComponent" would be a wild guess. It might work for convention over code, but I opted for a different approach: travel up the component tree until I hit a
There are a few variations one could think of: provide the control name as component parameter, provide another parameter for the (partial update - which would need to be the repeat control) and general layout considerations. From an interaction view, the inline forms beat any dialog, because users are not limited to have only one form open at a time.
As usual YMMV
Form
(or the view's form formula). XPages behaves in a similar fashion when using the view control. However both approached open a new page (a tab in the Notes client, replaceing the current window in a browser).
Modern applications however expect a Single page application behavior, where only parts of the screen are replaced with new information. The XPages Extension library makes this easy, by providing the InPlace Form custom control.
Looking at the source code of the example page, it looks easy enough. However a real life application needs a few more considerations:
- I want to open a (different) form depending on the current document
- That form needs to be stored in its own control, so it can be reused
- It is OK to enumerate the possible forms in the page (not fully flexible)
- When saving an edit the form needs to disappear
<xp:eventHandler event="onclick"
submit="true" refreshMode="partial"
refreshId="dynamicCell">
<xp:this.action><![CDATA[#{javascript:var formId = getSubform(aViewEntry);
getComponent(formId).toggle();}]]>
</xp:this.action>
</xp:eventHandler>
The code above is the event handler that goes into the link or button that triggers the edit action. In my case inside a repeat based on a view. The code to find the form is simple.
function getSubform(ve:NotesXspViewEntry) {
// Put real logic here, like looking at the form
// var form = ve.getDocument().getItemValueString("Form");
// return "inPlace"+form;
var fruit = ve.getColumnValue("Subject");
var subform = ("Durian"===fruit) ? "inPlaceDurian" : "inPlaceFruit";
return subform;
}
The snippet of code that determines what control to load lists all possible forms. To make this useful you should stick to the
inPlace
and inLine
prefixes. The former lives only inside your page, but the later would be a distinct control. Also note, that I hand over the documentUniqueId, so my control can load the appropriate document.
<xp:td id="dynamicCell" colspan="3">
<xe:inPlaceForm id="inPlaceFruit" partialEvents="true">
<xc:inlineFruit fruitID="#{javascript:fruitList.getUniversalID();}">
</xc:inlineFruit>
</xe:inPlaceForm>
<xe:inPlaceForm id="inPlaceDurian" partialEvents="true">
<xc:inlineDurian fruitID="#{javascript:fruitList.getUniversalID();}">
</xc:inlineDurian>
</xe:inPlaceForm>
</xp:td>
The last 2 pieces in the puzzle are the save button and the mechanism that hides the inline form again. The button is simple:
<xp:button value="Save" id="button1">
<xp:eventHandler event="onclick" submit="true"
refreshMode="partial" refreshId="oneRecord">
<xp:this.action><![CDATA[#{javascript:saveAndClose(document1, this);}]]></xp:this.action>
</xp:eventHandler>
</xp:button>
While the JS code is a little trickier. The control doesn't "know" that it is in a inline edit form, nor does it know the name, so a "getComponent" would be a wild guess. It might work for convention over code, but I opted for a different approach: travel up the component tree until I hit a
com.ibm.xsp.extlib.component.dynamiccontent.UIInPlaceForm
and if I find it, toggle it:
function saveAndClose(doc:NotesXspDocument, uiControl) {
doc.save();
var parent = uiControl.getParent();
while (parent != null && parent.getClass().getName() !=
"com.ibm.xsp.extlib.component.dynamiccontent.UIInPlaceForm") {
parent = parent.getParent();
}
if (parent != null) {
parent.toggle();
}
}
There are a few variations one could think of: provide the control name as component parameter, provide another parameter for the (partial update - which would need to be the repeat control) and general layout considerations. From an interaction view, the inline forms beat any dialog, because users are not limited to have only one form open at a time.
As usual YMMV
Posted by Stephan H Wissel on 02 January 2015 | Comments (0) | categories: XPages


Product name
Crispy intro
Select date and time of your conference
Conference room 1
Friends
Select Conference Room
Conference room 2
Friends
Select Conference Room
Conference room 3
Friends
Select Conference Room
Conference room 4
Friends
Select Conference Room
Conference room 5
Friends
Select Conference Room
Confirmation details
Name of Conference Hall:
Conference date:
Conference time:
Number of seats available:
Projector availability:
Verify and Proceed


Banksy exhibit coming next week to Las Vegas Strip
by Las Vegas Review-JournalA collection of more than 70 original works by street artist Banksy will open Thanksgiving weekend on the Las Vegas Strip.
The U.S. debut of “Banksy: Genius or Vandal?” will be on display at Immersion Vegas, on the first floor of Fashion Show mall, through April 5.
The dozens of works from private collectors will include the 700-pound “Stop Esso,” “Rose Trap,” “Heavy Weaponry” and “Holocaust Lipstick.” Limited editions, photos, video installations and a multi-media presentation will be included.
Banksy is internationally known for his witty and ironic takes on politics, war, capitalism and mortality.
Tickets for the exhibit are $29, $15 for children 11 and younger, plus fees. Exhibit hours are 10 a.m. to 9 p.m. (final admission at 8 p.m.) Monday through Saturday and 11 a.m. to 7 p.m. (final admission at 6 p.m.) Sunday. Merchandise including personal “Vandal Kits” and print-on-demand items will be available.
For more on the exhibit, go to banksy.vegas.


Responsive Images
Note: New filter as of <IP_ADDRESS>
Configuration
The 'Responsive Images' filter requires the 'Resize Images' filter; these filters are enabled by specifying:
- Apache:
ModPagespeedEnableFilters responsive_images,resize_images
- Nginx:
pagespeed EnableFilters responsive_images,resize_images;
in the configuration file. An additional zoom feature can be enabled by specifying:
- Apache:
ModPagespeedEnableFilters responsive_images_zoom
- Nginx:
pagespeed EnableFilters responsive_images_zoom;
The 'Responsive Images' filter won't optimize an image if it has
the data-pagespeed-no-transform
or pagespeed_no_transform
attribute. Usage:

Description
This filter makes images responsive by adding srcset
attributes
which provide multiple versions for different pixel density screens.
If responsive_images_zoom
is enabled, it also extends the
default srcset functionality by loading higher resolution images when the
user zooms in.
In order to take advantage of this filter, the original image must
explicitly specify height
and width
attributes
and src must be a high enough resolution image (at least 2x larger than
these height and width values).
Example
For example, if the original HTML looks like this:

and foo.png
is 1000x1000, then PageSpeed will rewrite it into:

Which will load the normal 100x100 image on standard displays, higher-resolution 150x150, 200x200 or 300x300 image on 1.5x, 2x, or 3x displays, or the full original 1000x1000 image when users zoom in enough.
If foo.png
is 200x200, no 3x or higher version will be added to
srcset.
If foo.png
is only 100x100, no srcset will be added at all.
Online Example
You can see the filter in action at www.modpagespeed.com
.
Limitations
- Before <IP_ADDRESS>, PageSpeed would not optimize images referenced in
existing
srcset
attributes. - Images must have explicit
height
andwidth
attributes and src must refer to a higher resolution image. - PageSpeed does not mix inline images with
srcset
s. If the largest size image is inlinable, we just inline that. Otherwise we do not inline any of the images and use asrcset
instead. - The Responsive Images filter is not compatible with the Local Storage Cache filter. Images modified by the Responsive Images filter will not be stored in Local Storage.
- PageSpeed's default memory limits keep it from processing images larger than 8 million pixels (8MP). If you have images larger than this, it won't be able to resize them to generate the lower resolution versions. See ImageResolutionLimitBytes for more details on increasing this limit or resizing source images to be under the limit.
Risks
This filter will increase cache usage by 4x for all images which have
explicit width
and height
attributes.
(This is true even if the original image is only 1x.) If this pushes
your cache over the FileCacheSize
,
then you may experience cache churn which makes PageSpeed much less effective.
This filter has the same risks inherent in the 'Resize Images' filter. See Optimize Images - Risks for more information.
This filter adds a srcset
attribute to images. This will break
any JavaScript which changes images by modifying their src
attribute. On high-density displays, modifying the src
attribute
will not actually change the image. As a work-around, you can add a
data-pagespeed-no-transform
attribute to any
tag to prevent PageSpeed from adding
a srcset
.
If using responsive_images_zoom
, the JavaScript used to
implement that feature may conflict with other JS on the page.


Settlement patterns
Settlement patterns refer to the physical shape of a settlement and its position in relation to other settlements.
| Nucleated settlement pattern | Dispersed settlement pattern | Linear Settlement patterns |
|---|---|---|
| Settlements and buildings are situated close to each other. | Individual settlements or buildings are placed far apart from each other. | Settlements and buildings are placed in a line such as along a road, river or coastline. |


Vision
What is the most important thing or the biggest challenge to the students who are about to graduate from universities? Definitely finding a satisfactory job! However, in fact, it is not easy, and students actually spend much time to try to get jobs. What can we do now to help students finding jobs and starting their career? In general, we search jobs on some websites which publish jobs for all people who are looking for jobs. These websites include Seek, SJS, TradeMe, etc. Some students know more about these websites, and other students only know a few. As we known, some websites also can automatically search jobs information based on keywords and send it to the user's mailbox, and some websites not.
We would like to develop a tool that can help the students to automatically search job information according to what they have learned and the skills they are good at; and push these job information to the mailboxes of the students; it should be very convenient and useful. At the same time, the job information that some students have got can also be shared with their good friends or other students through the tool; thus the students can get more accurate job information in time. To the corporations, they can also publish job information; and the information can be automatically matched with the students who have suitable skills, and pushed directly to the students. This tool would be a win-win outcome for both sides of the job information.
Group Members: YUTAO WANG, YU XIAO, XIANZE HE and YANG GAO.


--- layout: page title: About header-img: "img/about-bg.png" ---
Crazy about headphones, burritos, personal wellness


Publications
Journal Publications
Weatherholtz, K. & Jaeger, T. F. (accepted). Speech perception and generalization across talkers and accents. Oxford Research Encyclopedia in Linguistics. [draft ms open for comments on Academia.edu]
Weatherholtz, K., Campbell-Kibler, K., & Jaeger, T. F. (2014). Socially-mediated syntactic alignment. Language Variation and Change, 26(3), 387-420. doi: 10.1017/S0954394514000155.
Submitted manuscripts
Weatherholtz, K., Seifelden, M., Kleinschmidt, D. F., Kurumada, C., & Jaeger, T. F. (submitted). Language processing as probabilistic inference under uncertainty based on social-indexical knowledge. Language and Linguistics Compass.
Thesis
Select Presentations
Weatherholtz, K., Campbell-Kibler, K, & Jaeger, T. F. (2014). Syntactic alignment and the mediating role of social perception and higher-order social cognition. Poster presented at the International Workshop on Language Production, Geneva, July 16-18th. [poster]
Weatherholtz, K., Walker, A., Melvin, S., Royer, A., & Clopper, C. G. (2014). Effects of experience and expectations on adaptation to dialect variation in noise. Poster presented at the 27th Annual CUNY Conference on Human Sentence Processing, Columbus, OH, March 14-15th. [poster]


Spider-Man Far From Home Blu-ray special features: Are they worth a look?
Spider-Man Far From Home is out on Blu-ray now - but do the special features provide all that a fan desires
by Lewis Knight, https://www.mirror.co.uk/authors/lewis-knight/The latest Spidey outing was very popular with MCU fans.
Spider-Man Far From Home continued the story of Tom Holland as Spider-Man/Peter Parker and saw him join MJ (Zendaya) and his friends go on a trip around Europe but face disaster from the inter-dimensional threat of The Elementals.
However, the threat seemed to face being extinguished by the actions of Mysterio/Quentin Beck (Jake Gyllenhaal).
But this new hero wasn't all he seemed.
The reviews were glowing for the film, but does the new Blu-ray release provide anything extra to the experience for Spider-Man fans?
Here's what you need to know about the special features.
Spider-Man Far From Home Blu-ray special features
Original Short: “Peter’s To-Do List”: A special short film that takes place during Far From Home and sees Peter run some errands before the class trip.
"Teacher’s Travel Tips" Featurette: Mr. Harrington & Mr. Dell give a guide to travelling around Europe.
"Far, Far, Far From Home" Featurette: Go behind the scenes on all the exciting locations in the film and how they played such an important role.
"It Takes Two" Featurette: Looking at the chemistry between director Jon Watts and Tom Holland.
"Fury & Hill" Featurette: MCU regulars Cobie Smulders and Samuel L. Jackson look at the return of Agent Maria Hill & Nick Fury - or do they?!
"The Ginter-Riva Effect" Featurette: How character William Ginter-Riva ties Spider-Man: Far From Home all the way back to the beginning of the MCU.
"Thank You, Mrs. Parker" Featurette: The journey of adapting the character of Aunt May, as played by Marisa Tomei.
"Stepping Up" Featurette: Tom Holland explores how Spider-Man was introduced into the MCU and where the character goes next.
"Suit Up" Featurette: A special look at all the costumes Spidey wears in the film
"The Brother’s Trust" Featurette: A look at the charity The Brother's Trust and the work of Tom Holland and his brothers with it.
"The Jump-Off" Featurette: The cast and crew go behind the scenes on the stunt work." “Now You See Me” Featurette: The evolution of Mysterio and casting Jake Gyllenhaal.
Stealthy Easter Eggs: E.D.I.T.H. reveals some of the hidden Easter Eggs you may have missed!
Select Scene Pre-Vis: A side-by-side comparison of the Pre-Vis with the film.
Gag Reel & Outtakes
Never-Before-Seen Alternate & Extended Scenes
Are they worth it?
If you are a fan of Spider-Man, particularly Tom Holland's iteration of Peter Parker then this will be a must-have.
“Peter’s To-Do List” is a particularly fun little episode of Parker’s everyday double-life as Spider-Man, as Peter goes about errands for his upcoming trip, but we are then also treated to a colourful action scene previously only glimpsed in trailers. Seeing Spidey interact with the police is also a fun change-up and explores the cockier side of the character.
Of the many featurettes on the disc, we also get the informative and intriguing discussions in “Stepping Up” which see Marvel Studios chief Kevin Feige, Tom Holland, and other architects of this version of Spider-Man discuss his place in the Marvel Cinematic Universe going into Far From Home and where the character will go next. This future that is teased by Holland and co also feels more gratifying now that we know his place in the MCU is assured.
Some of the other clips are exactly what they say on the tin, but it is exciting for fans of characters such as Aunt May Parker and Mysterio aka Quentin Beck get attention from producers and actors as they discuss their transition from comics to the film.
Sadly, the features are let down by rather forgettable deleted scenes which expand on some of the comedy elements but provide no extra insight into plot or character.

Overall, the Spider-Man Far From Home will be worth purchasing for fans of MCU Spidey as they will get the latest chapter of his story alongside a whole host of features that will add to understanding the web-slinger's adventure and its characters.
Spider-Man Far From Home is available on Blu-ray now.
Are you a fan of Spider-Man Far From Home? Let us know in the comments below.


{% include "structures/modals/fitting_gfx.html" %}
{% translate "Hull" %}
{% include "structures/modals/fitting_asset.html" with asset=structure %}
{% include "structures/modals/fitting_assets.html" with slot_name="High Slots" asset_list=slot_assets.high_slots %}
{% include "structures/modals/fitting_assets.html" with slot_name="Medium Slots" asset_list=slot_assets.med_slots %}
{% include "structures/modals/fitting_assets.html" with slot_name="Low Slots" asset_list=slot_assets.low_slots %}
{% include "structures/modals/fitting_assets.html" with slot_name="Rig Slots" asset_list=slot_assets.rig_slots %}
{% include "structures/modals/fitting_assets.html" with slot_name="Service Slots" asset_list=slot_assets.service_slots %}
{% include "structures/modals/fitting_assets.html" with slot_name="Ammo Hold" asset_list=assets_grouped.ammo_hold %}
{% include "structures/modals/fitting_assets.html" with slot_name="Fuel Bay" asset_list=assets_grouped.fuel_bay %}
{% include "structures/modals/fitting_assets.html" with slot_name="Fighter Bay" asset_list=assets_grouped.fighter_bay %}
{% include "structures/modals/fitting_assets.html" with slot_name="Fighter Tubes" asset_list=slot_assets.fighter_tubes %}
Last updated {{ last_updated|naturaltime|default:"?" }}


A quote is required!!
Author's name is required!!
Your name is required!!
Creation date is required!!


Favicon made by Freepik from www.flaticon.com
Not found image for 404 links taken from files.paredro.com
Loading animation was taken from loading.io
File and folder icons made by DinosoftLabs from www.flaticon.com


Quickstarts (or examples, or samples) for JBoss AS. There are a number of rules for quickstarts:
dist/src/main/assembly/README.md
and pom.xml
(the 'modules' section).You can find the documentation at https://docs.jboss.org/author/display/AS7/Documentation.
If you add a quickstart, don't forget to update dist/src/main/assembly/README.md
.
The 'dist' folder contains Maven scripts to build a zip of the quickstarts.
The quickstart code is licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0.html
If your quickstarts are stored in another repository, you may wish to merge them in from there, rather than contribute them from source. If you plan to do this, discuss first with the JBoss AS Quickstarts team, as they will want to review all commits to your repo going forward.
To do this
Add the other repo as a remote
git remote add -f
Merge from the tag in the other repo that you wish to use. It is important to use a tag, to make tracking of history easier. We use a recursive merge strategy, always preferring changes from the other repo, in effect overwriting what we have locally.
git merge
The merge is not committed, so any updates to the README.md and parent POM can be made. Having made these, perform the merge.


In this article, we focus our attention on the DevOps.
What is DevOps? How is it different from Agile? What are the popular DevOps Tools? What is the role of Docker, Kubernetes and Azure DevOps in DevOps. Let’s get started with a simple usecase.
You will learn
- What is DevOps?
- Why do we need DevOps?
- How is DevOps different from Agile?
- What are the important DevOps tools?
- How does Docker help DevOps?
- How does Kubernetes help DevOps?
- How does Azure DevOps help DevOps?
- What is Continuous Integration, Continuous Delivery?
- What is Infrastructure as Code?
- How do Terraform and Ansible help DevOps?
What is DevOps?
As with most buzzwords around software development, there is no accepted definition for DevOps.
Definitions vary from simple ones, like these two, to complex definitions that last a complete page of a book.
DevOps is the combination of cultural philosophies, practices, and tools that increases an organization’s ability to deliver applications and services at high velocity - Amazon Web Services(AWS)
DevOps is a collaborative and multidisciplinary effort within an organization to automate continuous delivery of new software versions, while guaranteeing their correctness and reliability - A Survey of DevOps Concepts and Challenges - L Leite
Instead of trying define DevOps, let’s understand how Software Development evolved to DevOps.
Waterfall Model
First few decades of software development was centered around the water fall model.
Waterfall model approached software development the same way that you would approach building a real estate project - for example, building an amazing bridge.
You will build software in multiple phases that can go on for a period any where between a few weeks to a few months.
In most waterfall projects, it would be months before the business sees a working version of an application.
Key Elements to Build Great Software
While working in the waterfall model for a few decades, we understood a few key elements around developing great software:
- Communication
- Feedback
- Automation
Importance of Communication
Software Development is a multi disciplinary effort involving a variety of skills.
Communication between people is essential for the success of a software project.
In the waterfall model, we tried to enhance communication by trying to prepare 1000 page documents on Requirements, Design, Architecture and Deployment.
But, over a period of time, we understood that
- The best way to enhance communication within the team, is to get the team together. Get a variety of skills in the same team.
- Cross functional teams - with wide range of skills - work great.
Importance of Early Feedback
Getting Feedback Quickly is important. Building great software is all about getting quick feedback.
Are we building an application which meets the business expections?
You cannot wait for months to get feedback. You would want to know quickly.
Will your application have problems if it is deployed to production?
You don’t want to know it after a few months. You want to find it out as early as possible.
The earlier we find a problem, the easier it is to fix it.
We found that the best software teams are structured to enable quick feedback. Anything I’m working on, I would like to know if I’m doing the right thing as early as possible .
Importance of Automation
Automation is critical. Software Development involves a wide range of activities. Doing things manually is slow and error prone. We understood that it’s essential to always look for opportunities to introduce Automation.
Having understood the key elements to develop great software, lets look at how we evolved to Agile and DevOps.
Evolution to Agile
Agile was the first step in evolution towards implementing our learnings with enhanced communication between teams, getting feedback and bringing in automation.
Agile brought the business and development teams together into one team which works to build great software in small iterations called sprints.
Instead of spending weeks or months on each phase of development, agile focuses on taking small requirements called user stories through the development cycle within a few days, sometimes within the same day.
How did Agile enhance communication between teams?
Agile brought the business and development teams together.
- Business is responsible for defining what to build? What are the requirements?
- Development is responsible for building a product that meets the requirements. Development includes everybody involved in Design, Coding, Testing and Packaging of your software.
In Agile, a representative from Business, called a Product Owner, is always present with the team, the team understands the business objectives clearly.
When the development team does not understand the requirements well and is going in a wrong path, Product Owner helps them do course correction and stay on the correct path.
Result : The final product the team builds is something that the business wants.
Another important factor is that Agile Teams have cross functional skills - coding skills - front end, api and databases, testing skills and business skills. This enhances communication between people that have to work together to build great software.
Agile and Automation
What are the Automation areas where Agile Teams focused on?
Software Products can have a variety of defects.
- Functional Defects mean the product does not work as expected.
- Technical Defects make the maintainence of the software difficult. For example, code quality problems.
In general, agile teams were focused on using automation to find technical and functional defects as early as possible.
Agile teams focused on automation tests. Writing great unit tests to test your methods and classes. Writing great integration tests to test your modules and applications. Agile teams also focused extensively on code quality. Tools like SONAR were used to assess the code quality of applications.
Is it sufficient if you have great automation tests and great code quality checks? You would want to run them as often as possible. Agile Teams focused on Continuous Integration.  Your Unit Tests, Automation Tests and Code Quality Checks were automatically executed in a Continuous Integration Pipeline. Most popular CI/CD tool during the early agile time period was Jenkins.
How did Agile promote immediate feedback?
Most important factor is that Business does not need to wait for months to see the final product. At the end of every sprint, the product is demoed to all stakeholders including Architecture and Business Teams. All feedback is taken in while prioritizing user stories for the next sprint. Result : The final product the team builds is something that the business wants.
Another important factor that enables immediate feedback is continuous integration. Let’s say I commit some code into version control. Within 30 minutes, I get feedback if my code causes a unit test failure or a integration test failure. I will get feedback if my code does not meet code quality standards or does not have enough code coverage in the unit tests.
Was agile successful? Yes. For sure. By focusing on improving the communication between business and development teams, and focusing on finding a variety of defects early, Agile took software development to the next level.
I, personally, had a wonderful experience working with some amazing teams in the Agile model. Software Engineering, which for me represents all the efforts in building software from requirements to taking applications live, for the first time, was as enjoyable as programming.
But, does evolution stop? Nope.
New challenges emerged.
Evolution of Microservices Architectures
We started moving towards a microservices architecture and we started building a number of small api’s instead of building large monolith applications.
What was the new challenge?
Operations becomes more important. Instead of doing 1 monolith release a month, you are doing hundreds of small microservice releases every week. Debugging problems across microservices and getting visibility into what’s happening with the microservices became important.
It was time for a new buzzword in software development. DevOps.
Emergence of DevOps
What was the focus of DevOps?
Focus of DevOps was on enhancing the communication between the Development and the Operations Team.
- How do we make deployments easier?
- How do we make the work operations team does more visible to the development team?
How did DevOps enhance communication between teams?
DevOps brought Operations Teams closer to the Development Teams.
- In more mature enterprises, Development and Operations Teams worked as one Team. They started sharing common goals and both teams started to understand the challenges the other team faces.
- In enterprises in the early stages of devops evolution, a representative from the operations team can be involved in the sprints - standups and retrospectives.
What are the Automation areas where DevOps Teams focused on?
In addition to the focus areas of agile - Continuous Integration and Test Automation, the DevOps teams were focused on helping automate several of the Operation Teams Activities - Provisioning Servers, Configuring Software on Servers, Deploying Applications and Monitoring Production Environments. A few key terminology are Continuous Deployment, Continuous Delivery and Infrastructure as Code.
Continuous Deployment is all about continuously deploying new version of software on Test Environments. In even more mature organizations like Google, Facebook, Continuous Delivery helps in continuously deploying software to production - maybe hundreds of production deployments per day.
 You create your infrastructure - servers, load balancers and database - in an automated way using configuration. You would version control your infrastructure - so that you can track your infrastructure changes over a period of time.
How did DevOps promote immediate feedback?
DevOps brings Operations and Development Teams Together. Because Operations and Development are part of the same team, the entire team understands the challenges associated with Operations and Development.
- Any operational problems get quick attention of the developers.
- Any challenges in taking software live get early attention of operations team.
DevOps encouraged Continuous Integration, Continuous Delivery and Infrastructure as Code.
- Because of Continous Delivery, If I make a code change or a configuration change that might break a test or a staging environment, I would know it within a few hours.
- Because of Infrastructure As Code, Developers can self provision environments, deploy code and find problems on their own, without any help from operations team.
While we talk as if agile and devops are two different things to make things simple, in reality, there is no accepted definition for what devops means.
I see agile and devops as two phases that helped us improve how build great software. They don’t compete against each other but together they help us build amazing software products.
As far as iam concerned the objective of Agile and DevOps together is to do things that
- Promote Communication and Feedback between Business, Development and Operations Teams
- Ease the painpoints with Automation. We will discuss about Unit Tests, Integration Tests, Code Quality Checks, Continuous Integration, Continuous Delivery, Infrastructure as Code and Standardization through Containerization during this amazing journey in this course.
A DevOps Story
Here’s an amazing story:
You are the star developer in a team and you would need to make a quick fix. You go to a github repository!
You quickly checkout the project.
You quickly create your local environment.
You make a change. You test it. You update the unit and automation tests.
You commit it.
You get an email saying it is deployed to QA.
A few integration tests are automatically run.
Your QA team gets an email asking for approval. They do a manual test and approve.
Your code is live in production in a few minutes.
You might think this is an ideal scenario. But, do you know that this is what is happening in innovative enterprises like Netflix, Amazon and Google day in and day out!
This is the story of DevOps.
DevOps = Development + Operations
DevOps is a Natural Evolution of Software Development. DevOps is NOT JUST a tool, a framework or just automation. It is a combination of all these.
DevOps focuses on People, Process and Products. People aspects of DevOps are all about Culture and Create a Great Mindset. A culture which promotes open communication and values quick feedback. A culture that value high quality software.
Agile helped in bridging the gap between the business and development teams. Development Teams understood the priorities of the business and worked with the business to deliver the stories providing most value first. However, the Dev and Ops teams were not aligned.
They had different goals.
The goal of Dev team is to take as many new features to production as possible.
The goal of Ops team was to keep the production environment as stable as possible.
As you can see, if taking things to production is difficult, dev and ops are unaligned.
DevOps aims to align the Dev and Ops teams with shared goals.
Dev team works with the Ops team to understand and solve operational challenges. Ops team is part of the scrum team and understands the features under development.
How can we make this possible?
Break down the wall between Dev and Ops!
Getting Dev and Ops Together - Option 1
In matured Dev Ops enterprises, Dev and Ops work as part of the same scrum team and share each other responsibilities.
Getting Dev and Ops Together - Option 2
However, if you are in the early stages of devops evolution, how can you get Dev and Ops have common objectives and work together?
Here are some of the things you can do:
- One of the things you can start with is to have the development team share some of the responsibilities of the operation team. For example, the dev team can take the responsibility of new release for the first week after production deployment. This helps the development team understand the challenges faced by operations in taking new releases live and help them come together and find better solutions.
- Other thing you can do is to involve a representative of the operations team in the Scrum activities. Involve them in Standups and Retrospectives of the team.
- The next thing you can do is to make the challenges faced by Operations team more visible to the Development team. When you face any challenges in operations, make development teams part of the teams working on solutions.
Which way you take, find ways of breaking the wall and get the Development and Operations team together.
Another interesting option emerges because of automation. By using Infrastructure as Code and enabling Self Provisioning for Developers, You can create common language that operations and development teams understand - code. More about this in the next couple of steps.
A DevOps Use Case
Consider the picture below:
This picture show cases two simple workflows
- No 1 : Infrastructure as Code using Terraform and Azure DevOps to provision Kubernetes Clusters
- No 2 : Continuous Deployment of Microservices using Azure DevOps to build and deploy Docker images for microservices into Kubernetes Clusters
Does this sound complex?
Let’s break it down and try and understand them.
Let’s start with No 2 - Continuous Deployment first.
No 2 : DevOps Continuous Deployment with Azure DevOps and Jenkins
What is the use of having great tests and code quality checks if you don’t run them often?
What is the use of deployment automation if you dont deploy software often enough?
As soon as a developer commits code into the version control system, the following steps are executed:
- Unit Tests
- Code Quality Checks
- Integration Tests
- Application Packaging - Building a deployable version of application. Tools - Maven, Gradle, Docker
- Application Deployment - Putting new applications or new versions of application live.
- An email to the testing team to test the application.
As soon as there is an approval from the test team, the app is immediately deployed to the Next Environment.
This is called Continuous Deployment. If you continuously deploy upto production, it is called Continuous Delivery.
The most popular CI CD Tools are Azure DevOps and Jenkins
No 1 : DevOps Infrastructure as Code with Terraform
In older days, we used to create environments and deploy applications manually.
Everytime you create a server, this needs to be done manually.
- What if Java version needs to be updated?
- A security patch needs to be applied?
You do it manually.
What is the result of this?
- High Chance of Errors.
- Replication environments is difficult.
Infrastructure as Code
Infrastructure as Code - Treat Infrastructure the same way as application code
Here are some of the important things to understand with Infastructure as Code
- Infra team focuses on value added work (instead of routine work)
- Less Errors and Quick Recovery from Failures
- Servers are Consistent (Avoids Configuration Drift)
The most popular IaC tools are Ansible and Terraform.
Typically these are the steps in IaC
- Provision Servers(Enabled by Cloud) from a Template
- Install Software
- Configure Software
Server Provisioning
Typically Provisioning Tools are used to provision servers and get new server ready with networking capabilities. The most popular provisioning tools are CloudFormation and Terraform.
Using Terraform, you can provision servers and rest of your infrastructure, like load balancers, databases, networking configuration, etc. You can create servers using precreated images created using tools like Packer and AMI (Amazon Machine Image).
Configuration Management
Configuration Management tools are used to
- Install Software
- Configure Software
Popular Configuration management tools are Chef, Puppet, Ansible, and SaltStack. These are designed to install and manage software on existing servers.
Role of Docker and Kubernetes in DevOps
What is the role of Docker and Kubernetes in DevOps?
In the microservices world, a few microservices might be built with Java, a few with Python and a few with JavaScript.
Different microservices will have different ways of building applications and deploying them to servers.
This makes operations team’s job difficult.
How can we have similar way of deploying multiple types of applications? Enter Containers and Docker.
Using Docker you can build images of microservices - irrespective of their language - Java, Python or JavaScript. You can run these images the same way on any infrastructure.
This simplifies operations.
Kubernetes adds on to this by helping to orchestrate different types of containers and deploying them to clusters.
Kubernetes also provides
- Service Discovery
- Load Balancing
- Centralized Configuration
Docker and Kubernetes make DevOps easy.
Important DevOps Metrics
Following are some of the important DevOps metrics you can track and improve over a period of time.
- Deployment Frequency - How often are applications deployed to production?
- Time To Market - How long do you need to take a feature from coding to production?
- Failure Rate of New Releases - How many of your releases fail?
- Lead Time to Fixes - How long do you need to make a production fix and release it to production?
- Mean Time to Recovery - How long do you take to recover your production environment from a major issue?
DevOps Best Practices
Following are some of the best practices with DevOps
- Standardization
- Teams with Cross Function Skills
- Focus on Culture
- Automate, Automate and ..
- Immutable Infrastructure
- Dev Prod Parity
- Version Control Everything
- Self Provisioning
DevOps Maturity Signals
How do you measure the maturity of your DevOps Implementations. Here are some of the important questions to ask.
Development
- Does every commit trigger automated tests and automated code quality checks?
- Is your code continuously delivered to production?
- Do you use pair programming?
- Do you use TDD and BDD?
- Do you have a lot of re-usable modules?
- Can development teams self provision environments?
- How long does it take to deliver a quick fix to production?
Test
- Are your tests full automated with high quality production like test data?
- Does your builds fail when your automated tests fail?
- Are your testing cycles small?
- Do you have automated NFR tests?
Deployment
- Do you have Dev Prod Parity?
- Do you use A/B Testing?
- Do you use canary deployments?
- Can you deploy at the click of a button?
- Can you rollback at the click of a button?
- Can you provision and release infrastructure at the click of a button?
- Do you use IAC and version control your infrastructure?
Monitoring
- Does the team use a centralized monitoring system?
- Can development team get access to logs at the click of a button?
- Does the team get an automated alert if something goes wrong in production?
Teams and Processes
- Is the team looking to continuously improve?
- Does the team have all the skills it needs from Business, Development and Operations?
- Does the team track the key devops metrics and improve on them?
- Do you have the culture of take Local Discoveries and using them to make Global Improvements?
DevOps Transformation Best Practices
- Leadership Buy-in is Critical
- Involves Upfront Costs
- Setup COEs to help teams
- Choose the right application and team
- Start Small
- Sharing Learings (Newsletters, Communication, COEs)
- Encourage People with Exploration and Automation Mindset
- Recognize DevOps Teams


Bind Self Tests
First name is:
First name is:
Last name is:
Last name is:
Model2 Email is:
Model3 Email is:


A Synchronous View of Loosely Time-Triggered Architecture
Guillaume Baudart, Albert Benveniste and Timothy Bourke
To appear at EMSOFT 2015
Loosely Time-Triggered Architectures (LTTAs) are a proposal for constructing distributed embedded control systems. They build on the quasi-periodic architecture, where computing units execute 'almost periodically', by adding a thin layer of middleware that facilitates the implementation of synchronous applications.
In this paper, we show how the deployment of a synchronous application on a quasi-periodic architecture can be modeled using a synchronous formalism. Then we detail two protocols, Back-Pressure LTTA, reminiscent of elastic circuits, Time-Based LTTA based on time. Compared to previous work, we present a less restrictive version of the Time-Based protocol that does not require broadcast communication and controller models that can be compiled for execution. We also compare the LTTA approach with architectures based on clock synchronization.
You can find here the submitted paper and the associated source code.


--- title: Lesson 1 - Pets keywords: fastai sidebar: home_sidebar nb_path: "nbs/course2020/vision/01_Pets.ipynb" ---
Today we will be using the basics
, callback
, and vision
libraries as we have a vision task
from fastai.basics import *
from fastai.vision.all import *
from fastai.callback.all import *
Below you will find the exact imports for everything we use today
import numpy as np
from fastcore.xtras import Path # @patch'd properties to the Pathlib module
from fastai.callback.fp16 import to_fp16
from fastai.callback.schedule import fit_one_cycle, lr_find
from fastai.data.block import CategoryBlock, DataBlock
from fastai.data.external import untar_data, URLs
from fastai.data.transforms import get_image_files, Normalize, RandomSplitter, RegexLabeller
from fastai.interpret import ClassificationInterpretation
from fastai.learner import Learner # imports @patch'd properties to Learner including `save`, `load`, `freeze`, and `unfreeze`
from fastai.metrics import error_rate
from fastai.vision.augment import aug_transforms, RandomResizedCrop
from fastai.vision.core import imagenet_stats
from fastai.vision.data import ImageDataLoaders, ImageBlock
from fastai.vision.learner import cnn_learner
from torchvision.models.resnet import resnet34, resnet50
Overall process using machine learning models and fastai:
DataLoaders
Learner
with some "equipment"We'll be trying to identify between 12 species of cats and 25 species of dogs (37 in total). Five years ago, the best was 59% with seperate classifications for the image, head, and body of the animal. Let's try just doing one image for everything.
But before anything, we need data!
If we call help
on untar_data
we can see it's doc description
help(untar_data)
We can also pull up the source code by adding a ??
at the end:
untar_data??
Let's download the PETS
dataset
path = untar_data(URLs.PETS)
And set our seed
np.random.seed(2)
How will our data look?
path.ls()[:3]
Let's build a DataLoaders
. First we'll need the path
to our data, some filenames, and the regex pattern to extract our labels:
path = untar_data(URLs.PETS)
fnames = get_image_files(path/'images')
pat = r'(.+)_\d+.jpg$'
Some basic transforms for getting all of our images the same size (item_tfms
), and some augmentations and Normalization to be done on the GPU (batch_tfms
)
item_tfms = RandomResizedCrop(460, min_scale=0.75, ratio=(1.,1.))
batch_tfms = [*aug_transforms(size=224, max_warp=0), Normalize.from_stats(*imagenet_stats)]
bs=64
ImageDataBunch
(renamed to ImageDataLoaders) - highest level API
dls = ImageDataLoaders.from_name_re(path, fnames, pat, batch_tfms=batch_tfms,
item_tfms=item_tfms, bs=bs)
What is the API?
Let's rebuild using the DataBlock
API
We'll need to define what our input and outputs should be (An Image
and a Category
for classification), how to get our items, how to split our data, how to extract our labels, and our augmentation as before
pets = DataBlock(blocks=(ImageBlock, CategoryBlock),
get_items=get_image_files,
splitter=RandomSplitter(),
get_y=RegexLabeller(pat = r'/([^/]+)_\d+.*'),
item_tfms=item_tfms,
batch_tfms=batch_tfms)
path_im = path/'images'
dls = pets.dataloaders(path_im, bs=bs)
We can take a look at a batch of our images using show_batch
and pass in a aximum number of images to show, and how large we want to view them as
dls.show_batch(max_n=9, figsize=(6,7))
If we want to see how many classes we have, and the names of them we can simply call dls.vocab
. The first is the number of classes, the second is the names of our classes. You may notice this looks a bit odd, that's because this L
is a new invention of Jeremy and Sylvian. Essentially it's a Python list taken to the extreme.
Before if we wanted to grab the index for the name of a class (eg. our model output 0 as our class), we would need to use data.c2i
to grab the Class2Index mapping. This is still here, it lives in dls.vocab.o2i
dls.vocab
dls.vocab.o2i
We will be using a convolutional neural network backbone and a fully connected head with a single hidden layer as our classifier.  Right now, just know this: we are piggybacking off of a model to help us classify images into 37 categories.
First, we need to make our Neural Network and our Learner
like before.
A Learner
needs (on a base level):
DataLoaders
We'll also use mixed_precision
(fp16
)
learn = cnn_learner(dls, resnet34, pretrained=True, metrics=error_rate).to_fp16()
Some assumptions being made here:
CrossEntropyFlat
Now, we can train it! We will train it for four cycles through all our data
learn.fit_one_cycle(4)
learn.save('stage_1')
With the model trained, let's look at where our it might've messed up. What species did it have trouble differentiating between? So long as the misidentifications are not too crazy, our model is actually working.
Let's plot our losses and make a confusion matrix to visualize this. Below checks to make sure that all pieces we need are available
interp = ClassificationInterpretation.from_learner(learn)
losses,idxs = interp.top_losses()
len(dls.valid_ds)==len(losses)==len(idxs)
plot_top_losses
needs x
number of images to use, and a figure size.
interp.plot_top_losses(9, figsize=(15,10))
plot_confusion_matrix
just needs a figure size. dpi adjusts the quality
interp.plot_confusion_matrix(figsize=(12,12), dpi=60)
We can also directly grab our most confused (A raw version of the confusion matrix), and pass in a threshold
interp.most_confused(min_val=3)
So, we have the model. Let's fine tune it. First, we need to load our model back in.
learn.load('stage_1');
Now we will unfreeze and train more
learn.unfreeze()
learn.fit_one_cycle(4)
Now when we unfreeze
, we unfreeze all the layers. So to show how a difference of a proper learning rate looks, let's load in those old weights and try using lr_find()
learn.load('stage_1');
learn.lr_find()
Alright so if we look here, we don't start really spiking our losses until ~10^-2 so a good spot is between 1e-6 and 1e-4, let's do that!
learn.unfreeze()
learn.fit_one_cycle(4, lr_max=slice(1e-6, 1e-4))
We can see that picking a proper learning rate can help speed things up!
learn.save('stage_2')
pets = DataBlock(blocks=(ImageBlock, CategoryBlock),
get_items=get_image_files,
splitter=RandomSplitter(),
get_y=RegexLabeller(pat = r'/([^/]+)_\d+.*'),
item_tfms=item_tfms,
batch_tfms=batch_tfms)
dls = pets.dataloaders(untar_data(URLs.PETS)/"images", bs=32)
Go ahead and try running the below code yourself. You should see a higher increase in accuracy!
Steps to try:
learn = cnn_learner(data, resnet50, pretrained=True, metrics=error_rate)
learn.lr_find()
learn.fit_one_cycle(5, lr_max=slice(3e-4, 3e-3))
learn.save('resnet50')
learn.load('resnet50')
learn.unfreeze()
learn.fit_one_cycle(2, max_lr=4e-4)
learn.save('resnet50')


Threatspec is an open source project that aims to close the gap between development and security by bringing the threat modelling process further into the development process. This is achieved by having developers and security engineers write threat specifications alongside code, then dynamically generating reports and data-flow diagrams from the code. This allows engineers to capture the security context of the code they write, as they write it.
// @accepts arbitrary file writes to WebApp:FileSystem with filename restrictions
// @mitigates WebApp:FileSystem against unauthorised access with strict file permissions
func (p *Page) save() error {
filename := p.Title + ".txt"
return ioutil.WriteFile(filename, p.Body, 0600)
}
$ threatspec run
$ threatspec report


I'm A Celebrity Video: Kate Garraway has nightmare in hellish Bushtucker trial
I’m A Celebrity…
After almost being blown off a sky scraper before she’d even made it into the jungle last night, Good Morning Britain presenter Kate is having another nightmare as she goes up against the former Olympian.
The rivals are hoping to win stars for their respective camps by dropping balls into moving holes while descending in the air with a swarm of cockroaches to keep them company.
Caitlyn is impressively cool, calm and collected on one end of the spectrum while Kate, however, couldn’t be more hysterical without being actual Gillian McKeith.
Advertisement Advertisement
But who will come out on top?
Last night ITV launched the 19th series of I’m A Celebrity… Get Me Out of Here! with what is without a doubt the best line-up in almost two decades of the show.
Caitlyn has already seen her odds slashed to become Queen of the Jungle after an impressive opening night, while she’s closely followed by Rak-Su singer Myles Stephenson, who is hoping for ‘a second chance’ with the superstar’ supermodel daughter, Kendall Jenner. When was the first?
And fans were delighted by the return of Ant McPartlin as he was reunited with Declan Donnelly after missing last year’s I’m A Celebrity while he continued his recovery following an arrest for drink-driving.
The pair kicked off the night with a timely dig at Prince Andrew and his miraculous powers to swerve heavy sweating, which was just one of the extraordinary revelations to come from the royal’s car crash Newsnight interview on Saturday night.
I’m A Celebrity… Get Me Out of Here! continues tonight at 9pm on ITV.
Got a showbiz story?
If you've got a story, video or pictures get in touch with the Metro.co.uk Entertainment team by emailing us<EMAIL_ADDRESS>calling 020 3615 2145 or by visiting our Submit Stuff page - we'd love to hear from you.


jQuery Events
Choose your favorite food
Meatball Pizza
Margherita Pizza
Pepperoni Pizza
Cheese Pizza
Check this box if you like Pizza